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/18 06:36:42 UTC
svn commit: r1172195 -
/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MergeWebappJndiContext.java
Author: dblevins
Date: Sun Sep 18 04:36:41 2011
New Revision: 1172195
URL: http://svn.apache.org/viewvc?rev=1172195&view=rev
Log:
Simply don't merge "private" resources rather than removing them afterwards. Consider UserTransaction a private resource
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=1172195&r1=1172194&r2=1172195&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 Sun Sep 18 04:36:41 2011
@@ -24,10 +24,13 @@ 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 javax.ejb.EJBContext;
+import javax.ejb.EntityContext;
import javax.ejb.MessageDrivenContext;
import javax.ejb.SessionContext;
+import javax.transaction.UserTransaction;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Iterator;
@@ -63,8 +66,6 @@ public class MergeWebappJndiContext impl
private void merge(EjbModule ejbModule, WebModule webModule) {
final JndiConsumer webApp = webModule.getWebApp();
- removePrivateReferences(webApp);
-
final EjbJar ejbJar = ejbModule.getEjbJar();
for (EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
@@ -98,7 +99,6 @@ public class MergeWebappJndiContext impl
}
}
- removePrivateReferences(webApp);
}
/**
@@ -115,6 +115,9 @@ public class MergeWebappJndiContext impl
private <R extends JndiReference> void copy(Map<String, R> from, Map<String, R> to) {
for (R a : from.values()) {
+
+ if (isPrivateReference(a)) continue;
+
final R b = to.get(a.getKey());
// New entry
@@ -144,23 +147,19 @@ public class MergeWebappJndiContext impl
}
}
- private void removePrivateReferences(JndiConsumer webApp) {
- Class[] types = {EJBContext.class, SessionContext.class, MessageDrivenContext.class};
- final Iterator<ResourceEnvRef> refs = webApp.getResourceEnvRef().iterator();
- while (refs.hasNext()) {
- final ResourceEnvRef ref = refs.next();
- if (isInvalid(types, ref)) refs.remove();
- }
- }
+ private <R extends JndiReference> boolean isPrivateReference(R a) {
+ if (!isResourceRef(a)) return false;
+
+ Class[] types = {EJBContext.class, EntityContext.class, SessionContext.class, MessageDrivenContext.class, UserTransaction.class};
- private boolean isInvalid(Class[] types, ResourceEnvRef ref) {
- boolean invalid = false;
for (Class type : types) {
- if (type.getName().equals(ref.getType())) {
- invalid= true;
- break;
- }
+ if (type.getName().equals(a.getType())) return true;
}
- return invalid;
+
+ return false;
+ }
+
+ private <R extends JndiReference> boolean isResourceRef(R a) {
+ return a instanceof ResourceRef || a instanceof ResourceEnvRef;
}
}