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);
> +                        }
> +                    }
>                 }
>             }
>         }
> 
> 
> 

Reply via email to