You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2015/10/26 08:22:23 UTC

tomee git commit: fixing NameNode in case subtree has been unbound

Repository: tomee
Updated Branches:
  refs/heads/master a702d89d2 -> 5055c7fe5


fixing NameNode in case subtree has been unbound


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/5055c7fe
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/5055c7fe
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/5055c7fe

Branch: refs/heads/master
Commit: 5055c7fe59145a78a5b8d35ca0ca20fe960dfb12
Parents: a702d89
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Mon Oct 26 08:22:10 2015 +0100
Committer: Romain Manni-Bucau <rm...@gmail.com>
Committed: Mon Oct 26 08:22:10 2015 +0100

----------------------------------------------------------------------
 .../apache/openejb/core/ivm/naming/NameNode.java    | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/5055c7fe/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/NameNode.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/NameNode.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/NameNode.java
index cb728e1..46e6766 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/NameNode.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/NameNode.java
@@ -38,6 +38,7 @@ public class NameNode implements Serializable {
     private Object myObject;
     private transient IvmContext myContext;
     private boolean unbound;
+    private boolean subTreeUnbound;
 
     public NameNode(final NameNode parent, final ParsedName name, final Object obj, final NameNode parentTree) {
         atomicName = name.getComponent();
@@ -74,7 +75,7 @@ public class NameNode implements Serializable {
         NameNotFoundException n = null;
         final int pos = name.getPos();
         if (compareResult == ParsedName.IS_EQUAL && name.getComponent().equals(atomicName)) {
-            // hashcodes and String valuse are equal
+            // hashcodes and String values are equal
             if (name.next()) {
                 if (subTree != null) {
                     try {
@@ -82,9 +83,9 @@ public class NameNode implements Serializable {
                     } catch (final NameNotFoundException e) {
                         n = e;
                     }
-                } else if (!unbound && myObject == null) {
+                } else if (!subTreeUnbound && !unbound && myContext != null) {
                     try {
-                        return IvmContext.class.cast(getBinding()).mynode.resolve(name);
+                        return myContext.mynode.resolve(name);
                     } catch (final NameNotFoundException e) {
                         n = e;
                     }
@@ -143,6 +144,7 @@ public class NameNode implements Serializable {
                 }
                 if (subTree == null) {
                     subTree = new NameNode(this, name, obj, this);
+                    subTreeUnbound = false;
                 } else {
                     subTree.bind(name, obj);
                 }
@@ -228,6 +230,7 @@ public class NameNode implements Serializable {
         if (compareResult == ParsedName.IS_EQUAL) {
             if (subTree == null) {
                 subTree = node;
+                subTreeUnbound = false;
                 subTree.parentTree = this;
             } else {
                 subTree.bind(node);
@@ -277,17 +280,18 @@ public class NameNode implements Serializable {
     private void unbind(final NameNode node) {
         if (subTree == node) {
             subTree = null;
+            subTreeUnbound = true;
         } else if (grtrTree == node) {
             grtrTree = null;
         } else if (lessTree == node) {
             lessTree = null;
         }
-        rebalance(this, node);
+        rebalance(node);
     }
 
-    private void rebalance(final NameNode tree, final NameNode node) {
+    private void rebalance(final NameNode node) {
         if (node.subTree != null) {
-            tree.bind(node.subTree);
+            this.bind(node.subTree);
         }
         if (node.lessTree != null) {
             this.bind(node.lessTree);