You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2013/12/13 06:40:16 UTC

svn commit: r1550649 - /karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java

Author: jbonofre
Date: Fri Dec 13 05:40:15 2013
New Revision: 1550649

URL: http://svn.apache.org/r1550649
Log:
[KARAF-2549] Improve automatic creation of JNDI sub-contexts

Modified:
    karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java

Modified: karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java?rev=1550649&r1=1550648&r2=1550649&view=diff
==============================================================================
--- karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java (original)
+++ karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiServiceImpl.java Fri Dec 13 05:40:15 2013
@@ -105,13 +105,12 @@ public class JndiServiceImpl implements 
             Binding item = (Binding) list.next();
             String className = item.getClassName();
             String name = item.getName();
-            sb.append("/");
-            sb.append(name);
             Object o = item.getObject();
             if (o instanceof Context) {
+                sb.append("/").append(name);
                 list((Context) o, sb, map);
             } else {
-                map.put(sb.toString(), className);
+                map.put(sb.toString() + "/" + name, className);
             }
         }
     }
@@ -153,7 +152,14 @@ public class JndiServiceImpl implements 
                             String[] splitted = name.split("/");
                             if (splitted.length > 0) {
                                 for (int i = 0; i < splitted.length - 1; i++) {
-                                    context.createSubcontext(splitted[i]);
+                                    try {
+                                        Object o = context.lookup(splitted[i]);
+                                        if (!(o instanceof Context)) {
+                                            throw new NamingException("Name " + splitted[i] + " already exists");
+                                        }
+                                    } catch (NameNotFoundException nnfe) {
+                                        context.createSubcontext(splitted[i]);
+                                    }
                                     context = (Context) context.lookup(splitted[i]);
                                 }
                                 name = splitted[splitted.length - 1];
@@ -187,7 +193,14 @@ public class JndiServiceImpl implements 
                                 String[] splitted = alias.split("/");
                                 if (splitted.length > 0) {
                                     for (int i = 0; i < splitted.length - 1; i++) {
-                                        context.createSubcontext(splitted[i]);
+                                        try {
+                                            Object o = context.lookup(splitted[i]);
+                                            if (!(o instanceof Context)) {
+                                                throw new NamingException("Name " + splitted[i] + " already exists");
+                                            }
+                                        } catch (NameNotFoundException nnfe) {
+                                            context.createSubcontext(splitted[i]);
+                                        }
                                         context = (Context) context.lookup(splitted[i]);
                                     }
                                     alias = splitted[splitted.length -1];
@@ -205,7 +218,14 @@ public class JndiServiceImpl implements 
             String[] splitted = alias.split("/");
             if (splitted.length > 0) {
                 for (int i = 0; i < splitted.length - 1; i++) {
-                    context.createSubcontext(splitted[i]);
+                    try {
+                        Object o = context.lookup(splitted[i]);
+                        if (!(o instanceof Context)) {
+                            throw new NamingException("Name " + splitted[i] + " already exists");
+                        }
+                    } catch (NameNotFoundException nnfe) {
+                        context.createSubcontext(splitted[i]);
+                    }
                     context = (Context) context.lookup(splitted[i]);
                 }
                 alias = splitted[splitted.length - 1];