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");
+ }
}
}
}