import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.Binding;
import javax.naming.NamingEnumeration;
import javax.naming.NameClassPair;
import com.novell.utility.naming.Environment;
import com.novell.service.file.nw.NetwareVolume;
import com.novell.service.file.nw.NetwareDirectory;
import com.novell.service.file.nw.NetwareFile;
public class FileList
{
public static void main(String args[])
{
if (args.length < 1)
{
help();
}
String url = args[0];
Hashtable systemProps = new Hashtable();
systemProps.put(
Context.INITIAL_CONTEXT_FACTORY,
Environment.FS_INITIAL_CONTEXT_FACTORY);
systemProps.put(Context.PROVIDER_URL, url);
try
{
Object obj = new InitialContext(systemProps).lookup("");
System.out.println("\nListing bindings for directory: " + url + "\n");
NamingEnumeration ncEnum = ((Context)obj).list("");
NamingEnumeration bindingEnum = ((Context)obj).listBindings("");
while (ncEnum.hasMore())
{
NameClassPair ncPair = (NameClassPair)ncEnum.next();
Binding binding = (Binding)bindingEnum.next();
obj = binding.getObject();
Class[] interfaces = obj.getClass().getInterfaces();
boolean volume = false;
boolean directory = false;
boolean file = false;
for (int i=0; i < interfaces.length; i++)
{
if (interfaces[i].getName().equals("com.novell.service.file.nw.NetwareVolume"))
{
volume = true;
break;
}
if (interfaces[i].getName().equals("com.novell.service.file.nw.NetwareDirectory"))
{
directory = true;
break;
}
if (interfaces[i].getName().equals("com.novell.service.file.nw.NetwareFile"))
{
file = true;
break;
}
}
if (volume)
{
System.out.println("<" + ncPair.getName());
}
else
if (directory)
{
System.out.println("[" + ncPair.getName());
}
else
if (file)
{
System.out.println(ncPair.getName());
}
else
{
System.out.println("{" + ncPair.getName());
}
}
}
catch (javax.naming.NamingException e)
{
System.out.println("\nException thrown: " + e);
e.printStackTrace();
System.exit(-1);
}
System.exit(0);
}
private static void help()
{
System.out.println(
"\nTo use this example program enter the following:\n");
System.out.println("\tjava FileList <url>\n");
System.out.println(
"\t\turl = name of the File System Context to list binding names on");
System.out.println("\t\t my_server/my_volume/my_dir");
System.out.println("");
System.out.println("results are:\n");
System.out.println("file");
System.out.println("[directory]");
System.out.println("<volume>");
System.out.println("{explicit_binding}");
System.exit(-1);
}
}