tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rmannibu...@apache.org
Subject svn commit: r1297428 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Date Tue, 06 Mar 2012 11:19:07 GMT
Author: rmannibucau
Date: Tue Mar  6 11:19:07 2012
New Revision: 1297428

URL: http://svn.apache.org/viewvc?rev=1297428&view=rev
Log:
multiple persistence.xml can be found in a webapp but getresourcesmap return maximum one persistence.xml
so hacking to let it work

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1297428&r1=1297427&r2=1297428&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
(original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Tue Mar  6 11:19:07 2012
@@ -201,11 +201,25 @@ public class DeploymentLoader implements
                 final AppModule appModule = new AppModule(getOpenEJBClassLoader(baseUrl),
file.getAbsolutePath(), new Application(), true);
                 addWebModule(appModule, baseUrl, getOpenEJBClassLoader(baseUrl), getContextRoot(),
getModuleName());
 
-                final Map<String, URL> otherDD;
+                final Map<String, Object> otherDD = new HashMap<String, Object>();
                 final WebModule webModule = appModule.getWebModules().iterator().next();
                 final List<URL> urls = webModule.getScannableUrls();
                 final ResourceFinder finder = new ResourceFinder("", urls.toArray(new URL[urls.size()]));
-                otherDD = getDescriptors(finder, false);
+                otherDD.putAll(getDescriptors(finder, false));
+
+                // "persistence.xml" is done separately since we mange alist of url and not
s single url
+                try {
+                    final List<URL> persistenceXmls = finder.findAll(ddDir + "persistence.xml");
+                    if (persistenceXmls.size() > 1) {
+                        final URL old = (URL) otherDD.get("persistence.xml");
+                        if (old != null && !persistenceXmls.contains(old)) {
+                            persistenceXmls.add(old);
+                        }
+                        otherDD.put("persistence.xml", persistenceXmls);
+                    }
+                } catch (IOException e) {
+                    // ignored
+                }
 
                 addWebPersistenceDD("persistence.xml", otherDD, appModule);
                 addWebPersistenceDD("persistence-fragment.xml", otherDD, appModule);
@@ -246,7 +260,7 @@ public class DeploymentLoader implements
         }
     }
 
-    private void addWebPersistenceDD(final String name, final Map<String, URL> otherDD,
final AppModule appModule) {
+    private void addWebPersistenceDD(final String name, final Map<String, Object> otherDD,
final AppModule appModule) {
         if (otherDD.containsKey(name)) {
             List<URL> persistenceUrls = (List<URL>) appModule.getAltDDs().get(name);
             if (persistenceUrls == null) {
@@ -255,9 +269,16 @@ public class DeploymentLoader implements
             }
 
             if (otherDD.containsKey(name)) {
-                final URL otherUrl = otherDD.get(name);
-                if (!persistenceUrls.contains(otherUrl)) {
-                    persistenceUrls.add(otherUrl);
+                final Object otherUrl = otherDD.get(name);
+                if (otherUrl instanceof URL && !persistenceUrls.contains(otherUrl))
{
+                    persistenceUrls.add((URL) otherUrl);
+                } else if (otherUrl instanceof List) {
+                    final List<URL> otherList = (List<URL>) otherDD.get(name);
+                    for (URL url : otherList) {
+                        if (!persistenceUrls.contains(url)) {
+                            persistenceUrls.add(url);
+                        }
+                    }
                 }
             }
         }



Mime
View raw message