Author: jbonofre
Date: Sun Dec 15 05:36:39 2013
New Revision: 1551000

URL: http://svn.apache.org/r1551000
Log:
Fix jndi contexts list

Modified:
    karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/JndiMBean.java
    
karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiMBeanImpl.java
    
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/JndiMBean.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/JndiMBean.java?rev=1551000&r1=1550999&r2=1551000&view=diff
==============================================================================
--- karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/JndiMBean.java 
(original)
+++ karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/JndiMBean.java 
Sun Dec 15 05:36:39 2013
@@ -34,21 +34,21 @@ public interface JndiMBean {
     public Map<String, String> getNames() throws MBeanException;
 
     /**
-     * Get a map of JNDI names/class names children of a given base context.
+     * Get a list of JNDI sub-contexts (as attribute).
      *
-     * @param context the base context.
-     * @return the map of names/class names.
+     * @return the MBean attribute containing the list of sub-contexts.
      * @throws MBeanException
      */
-    public Map<String, String> getNames(String context) throws MBeanException;
+    public List<String> getContexts() throws MBeanException;
 
     /**
-     * Get a list of JNDI sub-contexts (as attribute).
+     * Get a map of JNDI names/class names children of a given base context.
      *
-     * @return the MBean attribute containing the list of sub-contexts.
+     * @param context the base context.
+     * @return the map of names/class names.
      * @throws MBeanException
      */
-    public List<String> getContexts() throws MBeanException;
+    public Map<String, String> getNames(String context) throws MBeanException;
 
     /**
      * Get a list of JNDI sub-contexts children of a given base context.

Modified: 
karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiMBeanImpl.java?rev=1551000&r1=1550999&r2=1551000&view=diff
==============================================================================
--- 
karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiMBeanImpl.java
 (original)
+++ 
karaf/trunk/jndi/core/src/main/java/org/apache/karaf/jndi/internal/JndiMBeanImpl.java
 Sun Dec 15 05:36:39 2013
@@ -40,18 +40,18 @@ public class JndiMBeanImpl implements Jn
     }
 
     @Override
-    public Map<String, String> getNames(String context) throws MBeanException {
+    public List<String> getContexts() throws MBeanException {
         try {
-            return this.jndiService.names(context);
+            return this.jndiService.contexts();
         } catch (Throwable t) {
             throw new MBeanException(null, t.getMessage());
         }
     }
 
     @Override
-    public List<String> getContexts() throws MBeanException {
+    public Map<String, String> getNames(String context) throws MBeanException {
         try {
-            return this.jndiService.contexts();
+            return this.jndiService.names(context);
         } catch (Throwable t) {
             throw new MBeanException(null, t.getMessage());
         }

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=1551000&r1=1550999&r2=1551000&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
 Sun Dec 15 05:36:39 2013
@@ -112,22 +112,25 @@ public class JndiServiceImpl implements 
             if (o instanceof Context) {
                 StringBuilder sb = new StringBuilder();
                 sb.append(pair.getName());
-                contexts((Context) o, sb);
-                contexts.add(sb.toString());
+                contexts((Context) o, sb, contexts);
             }
         }
         return contexts;
     }
 
-    private void contexts(Context context, StringBuilder sb) throws Exception {
+    private void contexts(Context context, StringBuilder sb, List<String> 
contexts) throws Exception {
         NamingEnumeration list = context.listBindings("");
         while (list.hasMore()) {
             Binding item = (Binding) list.next();
             String name = item.getName();
             Object o = item.getObject();
             if (o instanceof Context) {
-                sb.append("/").append(name);
-                contexts((Context) o, sb);
+                if (((Context) o).list("").hasMoreElements()) {
+                    sb.append("/").append(name);
+                    contexts((Context) o, sb, contexts);
+                } else {
+                    contexts.add(sb.toString() + "/" + name);
+                }
             }
         }
     }


Reply via email to