You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by da...@apache.org on 2007/03/10 03:25:25 UTC

svn commit: r516641 - /geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractContext.java

Author: dain
Date: Fri Mar  9 18:25:24 2007
New Revision: 516641

URL: http://svn.apache.org/viewvc?view=rev&rev=516641
Log:
Add simple check for recursive calls

Modified:
    geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractContext.java

Modified: geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractContext.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractContext.java?view=diff&rev=516641&r1=516640&r2=516641
==============================================================================
--- geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractContext.java (original)
+++ geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractContext.java Fri Mar  9 18:25:24 2007
@@ -40,6 +40,7 @@
     private final Name parsedNameInNamespace;
     private final ContextAccess contextAccess;
     private final boolean modifiable;
+    private final ThreadLocal inCall = new ThreadLocal();
 
     protected AbstractContext(String nameInNamespace) {
         this(nameInNamespace, ContextAccess.MODIFIABLE);
@@ -171,12 +172,15 @@
      * @return the value or null if no fault value could be found
      */
     protected Object faultLookup(String stringName, Name parsedName) {
-        if (stringName.indexOf(':') > 0) {
+        if (!stringName.startsWith(nameInNamespace) && stringName.indexOf(':') > 0 && inCall.get() == null) {
+            inCall.set(parsedName);
             try {
                 Context ctx = new InitialContext();
                 return ctx.lookup(parsedName);
             } catch (NamingException ignored) {
                 // thrown below
+            } finally {
+                inCall.set(null);                
             }
         }
         return null;