module examples.addressbook; import java.util.Hashtable; import java.util.Enumeration; // Address book implementation taken from CORBA examples // in Sun's Java CORBA Tutorial. // // // AddressBook // // This behavior is responsible for implementing // three message handlers // // * String getEmail ( String email ); // * String getName ( String name ); // * boolean addUser ( String name, String email ); // // behavior AddressBook implements ActorService { private Hashtable name2email; AddressBook() { // Create a new hashtable to store name & email name2email = new Hashtable(); } // Get the name of this email user String getName(String email) { System.err.println("getting name by email: " + email); if (name2email.contains(email)) { // Begin search for that name Enumeration e = name2email.keys(); while(e.hasMoreElements()) { String name = (String) e.nextElement(); String e_mail = (String) name2email.get(name); // Match on email? if (email.compareTo(e_mail) == 0) { return name; } } } return new String("Unknown user"); } // Get the email of this person String getEmail(String name) { System.err.println("Getting email by name: " + name); // If user exists if (name2email.containsKey(name)) { // Return email address return (String) name2email.get(name); } // User doesn't exist return new String("Unknown user"); } // Add a new user to the system, returns success boolean addUser (String name, String email) { System.err.println("added user: " + name + ", " + email); // Is the user already listed if (name2email.containsKey(name) || name2email.contains(email)) { // If so, return false return false; } // Add to our hash table name2email.put(name, email); return true; } void act(String args[]) { try{ if (args.length != 0) { standardOutput<-println( "Usage: salsa -Duan= -Dual= examples.addressbook.AddressBook" ); return; } } catch (Exception e) { standardOutput<-println("AddressBook at: ") @ standardOutput<-println("\tuan: " + getUAN()) @ standardOutput<-println("\tual: " + getUAL()); } } }