import java.util.Hashtable;
import javax.naming.NamingException;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NameClassPair;
import javax.naming.directory.DirContext;
import javax.naming.ldap.InitialLdapContext;
public class ListSchema {
public static void main(String[] args) {
if (args.length != 1) {
usage();
}
String hostURL = args[0];
try {
Hashtable env = new Hashtable(5, 0.75f);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, hostURL);
DirContext ctx = new InitialLdapContext( env, null );
DirContext schema = ctx.getSchema( "" );
NamingEnumeration schemaList = schema.list( "" );
while ( schemaList != null && schemaList.hasMore()) {
NameClassPair nameClassPairs = (NameClassPair )schemaList.next();
System.out.println( nameClassPairs.getClassName());
System.out.println( nameClassPairs.getName());
}
System.out.println(schema.getAttributes("AttributeDefinition/sn"));
System.out.println(schema.getAttributes("AttributeDefinition/cn"));
System.out.println(schema.getAttributes("AttributeDefinition/mail"));
System.out.println(schema.getAttributes("ClassDefinition/top"));
System.out.println(schema.getAttributes("ClassDefinition/person"));
}
catch (NamingException e) {
System.err.println("ListSchema example failed.");
e.printStackTrace();
}
finally {
System.exit(0);
}
}
public static void usage() {
System.out.println("\n Usage: java ListSchema <host URL>"
+ "\n\n Example: java ListSchema ldap://acme.com:389");
System.exit(1);
}
}