You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/05/14 18:19:17 UTC

svn commit: r1482421 - /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java

Author: rmannibucau
Date: Tue May 14 16:19:17 2013
New Revision: 1482421

URL: http://svn.apache.org/r1482421
Log:
TOMEE-935 persistence.xml handling in webapp is not complete

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

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1482421&r1=1482420&r2=1482421&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Tue May 14 16:19:17 2013
@@ -577,14 +577,37 @@ public class DeploymentLoader implements
             DeploymentsResolver.loadFromClasspath(base, filteredUrls, appModule.getClassLoader());
             addPersistenceUnits(appModule, filteredUrls.toArray(new URL[filteredUrls.size()]));
 
+            final Object pXmls = appModule.getAltDDs().get("persistence.xml");
+
             for (final WebModule webModule : appModule.getWebModules()) {
-                final List<URL> scannableUrls = webModule.getScannableUrls();
                 final List<URL> foundRootUrls = new ArrayList<URL>();
+                final List<URL> scannableUrls = webModule.getScannableUrls();
                 for (final URL url : scannableUrls) {
                     if (!addPersistenceUnits(appModule, url).isEmpty()) {
                         foundRootUrls.add(url);
                     }
                 }
+
+                if (pXmls != null && Collection.class.isInstance(pXmls)) {
+                    final File webapp = webModule.getFile();
+                    if (webapp == null) {
+                        continue;
+                    }
+                    final String webappAbsolutePath = webapp.getAbsolutePath();
+
+                    final Collection<URL> list = Collection.class.cast(pXmls);
+                    for (final URL url : list) {
+                        try {
+                            final File file = URLs.toFile(url);
+                            if (file.getAbsolutePath().startsWith(webappAbsolutePath)) {
+                                foundRootUrls.add(url);
+                            }
+                        } catch (final IllegalArgumentException iae) {
+                            // no-op
+                        }
+                    }
+                }
+
                 webModule.getAltDDs().put(EAR_WEBAPP_PERSISTENCE_XML_JARS, foundRootUrls);
             }