Author: rmannibucau
Date: Sun Dec  2 13:20:57 2012
New Revision: 1416173

URL: http://svn.apache.org/viewvc?rev=1416173&view=rev
Log:
trying to make MergeWebappJndiContext deployment faster - main point: get 
regressions on TCKs to be able to work on

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

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java?rev=1416173&r1=1416172&r2=1416173&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
 Sun Dec  2 13:20:57 2012
@@ -26,6 +26,7 @@ import org.apache.openejb.jee.Persistenc
 import org.apache.openejb.jee.PersistenceContextType;
 import org.apache.openejb.jee.ResourceEnvRef;
 import org.apache.openejb.jee.ResourceRef;
+import org.apache.openejb.jee.SessionBean;
 import org.apache.openejb.jee.TransactionType;
 
 import javax.ejb.EJBContext;
@@ -84,34 +85,38 @@ public class MergeWebappJndiContext impl
             mergeUserTransaction(webApp.getResourceEnvRefMap(), 
bean.getResourceEnvRefMap(), bean);
         }
 
+        final SessionBean aggregator = new SessionBean(); // easy way to get a 
JndiConsumer
+
         for (EnterpriseBean a : ejbJar.getEnterpriseBeans()) {
+            aggregator.getEnvEntryMap().putAll(a.getEnvEntryMap());
+            aggregator.getEjbRefMap().putAll(a.getEjbRefMap());
+            aggregator.getEjbLocalRefMap().putAll(a.getEjbLocalRefMap());
+            aggregator.getServiceRefMap().putAll(a.getServiceRefMap());
+            aggregator.getResourceRefMap().putAll(a.getResourceRefMap());
+            aggregator.getResourceEnvRefMap().putAll(a.getResourceEnvRefMap());
+            
aggregator.getMessageDestinationRefMap().putAll(a.getMessageDestinationRefMap());
+            
aggregator.getPersistenceContextRefMap().putAll(a.getPersistenceContextRefMap());
+            
aggregator.getPersistenceUnitRefMap().putAll(a.getPersistenceUnitRefMap());
+        }
 
-            // Merge the bean namespaces together too
-            for (EnterpriseBean b : ejbJar.getEnterpriseBeans()) {
-                if (a == b) continue;
-
-                merge(a.getEnvEntryMap(), b.getEnvEntryMap());
-                merge(a.getEjbRefMap(), b.getEjbRefMap());
-                merge(a.getEjbLocalRefMap(), b.getEjbLocalRefMap());
-                merge(a.getServiceRefMap(), b.getServiceRefMap());
-                merge(a.getResourceRefMap(), b.getResourceRefMap());
-                merge(a.getResourceEnvRefMap(), b.getResourceEnvRefMap());
-                merge(a.getMessageDestinationRefMap(), 
b.getMessageDestinationRefMap());
-                merge(a.getPersistenceContextRefMap(), 
b.getPersistenceContextRefMap());
-                merge(a.getPersistenceUnitRefMap(), 
b.getPersistenceUnitRefMap());
+        for (EnterpriseBean a : ejbJar.getEnterpriseBeans()) {
+            merge(a.getEnvEntryMap(), aggregator.getEnvEntryMap());
+            merge(a.getEjbRefMap(), aggregator.getEjbRefMap());
+            merge(a.getEjbLocalRefMap(), aggregator.getEjbLocalRefMap());
+            merge(a.getServiceRefMap(), aggregator.getServiceRefMap());
+            merge(a.getResourceRefMap(), aggregator.getResourceRefMap());
+            merge(a.getResourceEnvRefMap(), aggregator.getResourceEnvRefMap());
+            merge(a.getMessageDestinationRefMap(), 
aggregator.getMessageDestinationRefMap());
+            merge(a.getPersistenceContextRefMap(), 
aggregator.getPersistenceContextRefMap());
+            merge(a.getPersistenceUnitRefMap(), 
aggregator.getPersistenceUnitRefMap());
 
-                mergeUserTransaction(a.getResourceRefMap(), 
b.getResourceRefMap(), b);
-                mergeUserTransaction(a.getResourceEnvRefMap(), 
b.getResourceEnvRefMap(), b);
-            }
+            mergeUserTransaction(aggregator.getResourceRefMap(), 
a.getResourceRefMap(), a);
+            mergeUserTransaction(aggregator.getResourceEnvRefMap(), 
a.getResourceEnvRefMap(), a);
         }
     }
 
     /**
      * Bidirectional a-b merge
-     *
-     * @param a
-     * @param b
-     * @param <R>
      */
     private <R extends JndiReference> void merge(Map<String, R> a, Map<String, 
R> b) {
         copy(a, b);


Reply via email to