You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/09/22 17:37:31 UTC

svn commit: r1174211 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java

Author: dblevins
Date: Thu Sep 22 15:37:31 2011
New Revision: 1174211

URL: http://svn.apache.org/viewvc?rev=1174211&view=rev
Log:
Merge UserTransaction references from beans into the webapp

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

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java?rev=1174211&r1=1174210&r2=1174211&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java Thu Sep 22 15:37:31 2011
@@ -24,7 +24,7 @@ import org.apache.openejb.jee.InjectionT
 import org.apache.openejb.jee.JndiConsumer;
 import org.apache.openejb.jee.JndiReference;
 import org.apache.openejb.jee.ResourceEnvRef;
-import org.apache.openejb.jee.sun.ResourceRef;
+import org.apache.openejb.jee.ResourceRef;
 
 import javax.ejb.EJBContext;
 import javax.ejb.EntityContext;
@@ -99,6 +99,11 @@ public class MergeWebappJndiContext impl
             }
         }
 
+        for (EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
+            mergeUserTransaction(bean.getResourceRefMap(), webApp.getResourceRefMap());
+            mergeUserTransaction(bean.getResourceEnvRefMap(), webApp.getResourceEnvRefMap());
+        }
+
     }
 
     /**
@@ -162,4 +167,25 @@ public class MergeWebappJndiContext impl
     private <R extends JndiReference> boolean isResourceRef(R a) {
         return a instanceof ResourceRef || a instanceof ResourceEnvRef;
     }
+
+    private <R extends JndiReference> void mergeUserTransaction(Map<String, R> from, Map<String, R> to) {
+        for (R a : from.values()) {
+
+            if (!UserTransaction.class.getName().equals(a.getType())) continue;
+
+            final R b = to.get(a.getKey());
+
+            // New entry
+            if (b == null) {
+                to.put(a.getKey(), a);
+                continue;
+            }
+
+            // Update existing entry
+            // merge injection points
+            b.getInjectionTarget().addAll(a.getInjectionTarget());
+        }
+    }
+
+
 }