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];