You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2017/06/29 08:59:07 UTC
tomee git commit: List IvmContext should list all of its federated
context bindings
Repository: tomee
Updated Branches:
refs/heads/master f42a82af3 -> dbaf157d2
List IvmContext should list all of its federated context bindings
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/dbaf157d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/dbaf157d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/dbaf157d
Branch: refs/heads/master
Commit: dbaf157d210458ae83bb7bd1fb5083f0030c945d
Parents: f42a82a
Author: Katya Todorova <ka...@gmail.com>
Authored: Thu Jun 29 11:35:32 2017 +0300
Committer: Todorova, Katya <ka...@sap.com>
Committed: Thu Jun 29 11:37:31 2017 +0300
----------------------------------------------------------------------
.../openejb/core/ivm/naming/IvmContext.java | 18 +++++------
.../openejb/core/ivm/naming/IvmContextTest.java | 33 ++++++++++++++++++++
2 files changed, 42 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/dbaf157d/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
index 574ea11..078071d 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
@@ -571,25 +571,25 @@ public class IvmContext implements Context, Serializable {
vect.addElement(node);
}
- gatherNodes(node, vect);
+ gatherNodes(mynode, node, vect);
buildEnumeration(vect);
}
protected abstract void buildEnumeration(Vector<NameNode> vect);
- protected void gatherNodes(final NameNode node, final Vector vect) {
- addInListIfNeeded(mynode, node.getLessTree(), vect);
- addInListIfNeeded(mynode, node.getGrtrTree(), vect);
- addInListIfNeeded(mynode, node.getSubTree(), vect);
- if (NameNode.Federation.class.isInstance(mynode.getObject())) { // tomcat mainly
- for (final Context c : NameNode.Federation.class.cast(mynode.getObject())) {
+ protected void gatherNodes(NameNode initiallyRequestedNode, final NameNode node, final Vector vect) {
+ addInListIfNeeded(initiallyRequestedNode, node.getLessTree(), vect);
+ addInListIfNeeded(initiallyRequestedNode, node.getGrtrTree(), vect);
+ addInListIfNeeded(initiallyRequestedNode, node.getSubTree(), vect);
+ if (NameNode.Federation.class.isInstance(node.getObject())) { // tomcat mainly
+ for (final Context c : NameNode.Federation.class.cast(initiallyRequestedNode.getObject())) {
if (c == IvmContext.this || !IvmContext.class.isInstance(c)) {
continue;
}
final IvmContext ctx = IvmContext.class.cast(c);
- if (ctx.mynode == mynode || vect.contains(ctx.mynode)) {
+ if (ctx.mynode == node || vect.contains(ctx.mynode)) {
continue;
}
@@ -605,7 +605,7 @@ public class IvmContext implements Context, Serializable {
return;
}
vect.addElement(node);
- gatherNodes(node, vect);
+ gatherNodes(parent, node, vect);
}
private boolean isMyChild(final NameNode parent, final NameNode node) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/dbaf157d/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java
index 9549ba2..6b8b1cf 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java
@@ -29,6 +29,9 @@ import java.util.Map;
import java.util.TreeMap;
import javax.naming.OperationNotSupportedException;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.SystemException;
+import javax.naming.NameClassPair;
+import javax.naming.NamingEnumeration;
/**
* @version $Rev$ $Date$
@@ -353,6 +356,36 @@ public class IvmContextTest extends TestCase {
//ok
}
}
+
+ public void testListContextListsAllFederatedContextBindings() throws SystemException, NamingException {
+ //mimic logic from EnterpriseBeanBuilder.build, create compJndiContext and bind in it module, app, global
+ Context compContext = new IvmContext();
+ compContext.bind("java:comp/env/dummy", "dummy");
+
+ Context moduleContext = new IvmContext();
+ moduleContext.bind("module/env/test", String.class);
+ moduleContext.bind("module/env/sub/test2", String.class);
+ Context originalModuleSubContext = (IvmContext)moduleContext.lookup("module");
+ compContext.bind("module", originalModuleSubContext);
+
+ Context referencedModuleEnvSubContext = (IvmContext)compContext.lookup("module/env");
+ NamingEnumeration<NameClassPair> referencedEnvLookupResult = referencedModuleEnvSubContext.list("");
+
+ boolean testFound= false;
+ boolean subFound = false;
+ while(referencedEnvLookupResult.hasMore()) {
+ String currentName = referencedEnvLookupResult.next().getName();
+ if("test".equals(currentName)) {
+ testFound = true;
+ } else if("sub".equals(currentName)) {
+ subFound = true;
+ } else {
+ fail();
+ }
+ }
+ assertTrue(testFound);
+ assertTrue(subFound);
+ }
private void assertContextEntry(final Context context, final String s, final Object expected) throws javax.naming.NamingException {
assertLookup(context, s, expected);