package sample_consumers;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.SearchResult;
import javax.naming.directory.Attributes;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.DirContext;
import java.util.Hashtable;
public class Search
{
public static void main(String[] args)
{
if (args.length != 5)
{
System.err.print ("Usage: java sample_consumers.Search ");
System.err.print ("<url to host> <login dn> <password> ");
System.err.println("<dn to search> <search filter>");
System.err.println("Example:");
System.err.print ("java sample_consumers.Search ");
System.err.print ("http://Acme.com:8080/novell-dsml/stream ");
System.err.print ("\"cn=admin,o=Acme\" \"secret\" \"o=Acme\" ");
System.err.println("\"(objectclass=*)\"");
System.exit(0);
}
String url = args[0];
String loginDN = args[1];
String password = args[2];
String searchDN = args[3];
String searchFilter = args[4];
String factory = null;
DirContext ctx = null;
NamingEnumeration results = null;
Hashtable env = null;
try
{
env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.dsmlv2.soap.DsmlSoapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_PRINCIPAL, loginDN);
env.put(Context.SECURITY_CREDENTIALS, password);
ctx = new InitialDirContext(env);
System.out.println("*** Searching on: " +
searchDN +
" with search Filter: " +
searchFilter + " ***");
results = ctx.search(searchDN, searchFilter, null);
while (results.hasMore()) {
SearchResult result = (SearchResult)results.next();
System.out.println("\nEntry name: " + result.getName());
System.out.println(" Attributes:");
Attributes attrs = result.getAttributes();
NamingEnumeration ids = attrs.getIDs();
while(ids.hasMore()) {
String id = (String)ids.next();
System.out.println(" " + attrs.get(id));
}
}
}
catch (Exception e)
{
System.out.println(e);
e.printStackTrace();
}
}
}