 
import net.jini.discovery.*;
import net.jini.core.lookup.*;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;

public class TestGetPut implements DiscoveryListener {
    protected ServiceTemplate template;
    protected LookupDiscovery disco;
    
    public static void main(String[] argv) {
	   new TestGetPut();
	   try {
	     Thread.currentThread().sleep(100000L);
           }
	   catch(java.lang.InterruptedException e) {}
	}
    public TestGetPut() {
	    System.setSecurityManager(new RMISecurityManager());
     	    LookupDiscovery discover = null;
	    try {
		  
                  // debug
                  System.out.println("Constructor ");
                  //end debug

               discover = new LookupDiscovery(
		            LookupDiscovery.ALL_GROUPS);
	    }
	    catch(Exception e) 
	        { System.err.println(""+e);
		  System.exit(1);
		}
	
            discover.addDiscoveryListener(this);
     }
		 
     public void discovered(DiscoveryEvent ev) {
         ServiceRegistrar[] newregs = ev.getRegistrars();
         // debug
          System.out.println("entered discovered ");
         // end debug
         Class [] classes = new Class[]{GetPut.class};
		 GetPut o = null;
		 ServiceTemplate template = 
		    new ServiceTemplate(null, classes, null);
		 for (int i=0 ; i<newregs.length ; i++) {
		    ServiceRegistrar r = newregs[i];
		    try {
			  o = (GetPut) r.lookup(template);
		    }
	  	    catch(java.rmi.RemoteException e) {
			   e.printStackTrace();
			   System.exit(2);
		    }
		    if(o == null) {
                       //debug
                       System.out.println("Continuing search ");
                       continue;
                       }
		    try {
			   o.isAt("Carlisle", "Dunstan");
			   String t = o.whereIs("Carlisle");
			   System.out.println(t);
                    }
		    catch(java.rmi.RemoteException e) {
			    System.err.println(""+e);
		    }
		  }
        }
        public void discarded(DiscoveryEvent ev) {}
    }
    
    

