import rock.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
import java.util.*;
import java.io.*;
import java.applet.*;

public class Connection{

  public Connection() { }

  public ORB getORB(Applet myapplet) {
    ORB orb = ORB.init(myapplet, null);
    return orb;
  }
	
  public ORB getORB(String args[], Properties props) {
    ORB orb = ORB.init(args, props);
    return orb;
  }

  public org.omg.CORBA.Object getObjectReference(ORB orb, NameComponent[] name) throws Exception {
    try {
      System.out.println("Connection::getObjectReference: Initializing the Naming Service...");
      org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
      System.out.println("Object" + objRef);
      if (objRef == null) System.out.println("Connection::getObjectReference: Name Service Object is null");
      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
      if (ncRef == null) System.out.println("Connection::getObjectReference: NameService Context is null");
      org.omg.CORBA.Object obj = ncRef.resolve(name);
      return obj;
    } catch (Exception e) {
      System.err.println("Connection::getObjectReference: " + e);
      throw e;
    }
  }

  public rock.RockFactory getdRockFactory(ORB orb) throws Exception {
    try {

      NameComponent name1 = new NameComponent("rock", "context");
      NameComponent name2 = new NameComponent("RockFactory", "object");	 
      NameComponent name[] = {name1, name2};

      org.omg.CORBA.Object x = getObjectReference(orb, name);

      RockFactory rFactory = rock.RockFactoryHelper.narrow(x);
      if (rFactory == null) System.out.println("Connection::getdRockFactory: Object reference is not a rock::RockFactory");
      return rFactory;
    } catch (Exception e) {
      System.err.println("Connection::getdRockFactory: " + e);
      throw e;
    }
  }

 public rock.RockManager getdRockManager(ORB orb) throws Exception {
   try {
     NameComponent name3 = new NameComponent("rock", "context");
     NameComponent name4 = new NameComponent("RockManager", "object");
     NameComponent[] name5 = {name3, name4};

     org.omg.CORBA.Object y = getObjectReference(orb, name5);
     RockManager rManager = rock.RockManagerHelper.narrow(y);
     if (rManager == null) System.out.println("Connection::getdRockManager: Object reference is not a rock::RockManager");
     return rManager;
   } catch (Exception e) {
     System.err.println("Connection::getdRockManager: " + e);
     throw e;
   }
 }

}

