What issue does this fix? -David
On Mar 6, 2012, at 5:19 AM, [email protected] wrote: > 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); > + } > + } > } > } > } > > >
