User: oberg   
  Date: 00/11/02 07:14:07

  Modified:    src/main/org/jnp/interfaces Naming.java NamingContext.java
  Log:
  Added support for listBindings.
  
  Revision  Changes    Path
  1.2       +5 -2      jnp/src/main/org/jnp/interfaces/Naming.java
  
  Index: Naming.java
  ===================================================================
  RCS file: /products/cvs/ejboss/jnp/src/main/org/jnp/interfaces/Naming.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Naming.java       2000/10/10 12:42:34     1.1
  +++ Naming.java       2000/11/02 15:14:07     1.2
  @@ -21,7 +21,7 @@
    *      
    *   @see <related>
    *   @author $Author: oberg $
  - *   @version $Revision: 1.1 $
  + *   @version $Revision: 1.2 $
    */
   public interface Naming
      extends Remote
  @@ -42,6 +42,9 @@
      public Collection list(Name name)
         throws NamingException, RemoteException;
   
  +   public Collection listBindings(Name name)
  +      throws NamingException, RemoteException;
  +      
      public Context createSubcontext(Name name)
         throws NamingException, RemoteException;
   }
  
  
  
  1.3       +67 -16    jnp/src/main/org/jnp/interfaces/NamingContext.java
  
  Index: NamingContext.java
  ===================================================================
  RCS file: /products/cvs/ejboss/jnp/src/main/org/jnp/interfaces/NamingContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NamingContext.java        2000/10/25 08:59:12     1.2
  +++ NamingContext.java        2000/11/02 15:14:07     1.3
  @@ -15,6 +15,9 @@
   import java.rmi.MarshalledObject;
   import java.rmi.RemoteException;
   import java.rmi.server.UnicastRemoteObject;
  +import java.util.Collection;
  +import java.util.ArrayList;
  +import java.util.Iterator;
   import java.util.Hashtable;
   import java.util.Enumeration;
   import java.util.StringTokenizer;
  @@ -29,7 +32,7 @@
    *      
    *   @see <related>
    *   @author $Author: oberg $
  - *   @version $Revision: 1.2 $
  + *   @version $Revision: 1.3 $
    */
   public class NamingContext
      implements Context, java.io.Serializable
  @@ -487,6 +490,63 @@
         }
      }
   
  +   public NamingEnumeration listBindings(String name)
  +      throws NamingException 
  +   {
  +      return listBindings(getNameParser(name).parse(name));
  +   }
  +
  +   public NamingEnumeration listBindings(Name name)
  +      throws NamingException 
  +   {
  +      Hashtable env = getEnv(name);
  +      checkRef(env);
  +      
  +      try
  +      {
  +         // Get list
  +         Collection bindings = naming.listBindings(getAbsoluteName(name));
  +         Collection realBindings = new ArrayList(bindings.size());
  +         
  +         // Convert marshalled objects
  +         Iterator enum = bindings.iterator();
  +         while (enum.hasNext())
  +         {
  +            Binding binding = (Binding)enum.next();
  +            System.out.println(binding);
  +            Object obj = binding.getObject();
  +            if (obj instanceof MarshalledObject)
  +            {
  +               try
  +               {
  +                  obj = ((MarshalledObject)obj).get();
  +               } catch (ClassNotFoundException e)
  +               {
  +                  NamingException ex = new CommunicationException();
  +                  ex.setRootCause(e);
  +                  throw ex;
  +               }
  +            }
  +            realBindings.add(new Binding(binding.getName(), binding.getClassName(), 
obj));
  +         }
  +         
  +         // Return transformed list of bindings
  +         return new NamingEnumerationImpl(realBindings);
  +      } catch (CannotProceedException cpe)
  +      {
  +         cpe.setEnvironment(env);
  +         Context cctx = NamingManager.getContinuationContext(cpe);
  +         return cctx.listBindings(cpe.getRemainingName());
  +      } catch (IOException e)
  +      {
  +         naming = null;
  +         removeServer(env);
  +         NamingException ex = new CommunicationException();
  +         ex.setRootCause(e);
  +         throw ex;
  +      }
  +   }
  +   
      public String composeName(String name, String prefix)
         throws NamingException 
      {
  @@ -578,21 +638,6 @@
         return prefix.toString();
      }
   
  -   // NYI
  -         
  -
  -   public NamingEnumeration listBindings(String name)
  -      throws NamingException 
  -   {
  -      throw new OperationNotSupportedException();
  -   }
  -
  -   public NamingEnumeration listBindings(Name name)
  -      throws NamingException 
  -   {
  -      throw new OperationNotSupportedException();
  -   }
  -
      public void destroySubcontext(String name)
         throws NamingException 
      {
  @@ -651,6 +696,12 @@
            {
                // Use server in same JVM
                                naming = localServer;
  +            
  +            if (naming == null)
  +            {
  +               // Local, but no local JNDI provider found!
  +               throw new ConfigurationException("Provider URL missing");
  +            }
            }
         }
      }
  
  
  

Reply via email to