Listing the Children of a Context

A common JNDI operation is retrieving the list of names of an object’s children. For example, an application might get the names of Enterprise JavaBeans in a Java application server or list the names of user profile information in an LDAP server in order to populate a Swing JTree component in an address book application. You list the names of an object’s children using the list() method of Context:

NamingEnumeration children = initialContext.list("");

The list() method returns a javax.naming.NamingEnumeration of javax.naming.NameClassPair objects; each NameClassPair contains the name and class of a single child of the Context. Note that the NameClassPair is not the child itself. Its getName() method, however, enables us to learn the name of the child while getClassName() lets us access the child’s class name. NamingEnumeration implements the java.util.Enumeration interface, so it allows us to loop through the results of calling list() using the familiar enumeration methods. JNDI actually uses NamingEnumeration as the return type of a number of naming operations; the actual objects in the enumeration vary depending on the operation.

Example 9-6 shows the implementation of a list command for our NamingShell. Because executing list() requires a current Context, the execute() method queries the shell to determine whether one exists. If there is no current Context, the method throws an exception.

Example 9-6. The list command

import java.util.Vector; ...

Get Java Enterprise in a Nutshell, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.