package edu.sc.seis.sod; import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import edu.iris.Fissures.model.AllVTFactory; import edu.sc.seis.fissuresUtil.namingService.FissuresNamingService; /** * CommonAccess.java * * * Created: Wed Mar 20 14:00:32 2002 * * @author Srinivasa Telukutla */ public class CommonAccess { private static final String NAME_SERVICE_ADDRESS = "/NameService"; private static final String CORBALOC_DESC = "corbaloc:iiop:"; private CommonAccess() {} public static ClassLoader getLoader() { return CommonAccess.class.getClassLoader(); } public static FissuresNamingService getNameService() { logger.info("getNameService() returnes "+ns); if (ns == null) { throw new RuntimeException("Name service is null, init has not yet been called"); } return ns; } public static String getNameServiceAddress() { return ns.getNameServiceCorbaLoc(); } public static org.omg.CORBA_2_3.ORB getORB() { return orb; } public static synchronized void initialize(Properties props, String[] args) throws UserConfigurationException { logger.info("CommonAccess.initialize"); if(orb != null) { throw new RuntimeException("Initialize should only be called once on CommonAccess"); } vetNSLoc(props); // Initialize the ORB. orb = (org.omg.CORBA_2_3.ORB)org.omg.CORBA.ORB.init(args, props); logger.info("ORB class is " + orb.getClass().getName()); new AllVTFactory().register(orb); //Initialize the NS ns = new FissuresNamingService(getORB()); ns.setNameServiceCorbaLoc(nsLoc); } private static void vetNSLoc(Properties props) throws UserConfigurationException { if(props.containsKey(FissuresNamingService.CORBALOC_PROP)) { nsLoc = (String)props.get(FissuresNamingService.CORBALOC_PROP); } else if(System.getProperties() .containsKey(FissuresNamingService.CORBALOC_PROP)) { nsLoc = (String)System.getProperties() .get(FissuresNamingService.CORBALOC_PROP); } else { // use DMC as this is most likely anyway logger.info("Using IRIS DMC Name service: "+DMC_NSLOC); nsLoc = DMC_NSLOC; } if(!nsLoc.startsWith(CORBALOC_DESC) || !nsLoc.endsWith(NAME_SERVICE_ADDRESS)) { throw new UserConfigurationException(FissuresNamingService.CORBALOC_PROP + " must start with " + CORBALOC_DESC + " and end with " + NAME_SERVICE_ADDRESS + " but " + nsLoc + " was supplied in the properties"); } } private static org.omg.CORBA_2_3.ORB orb; private static FissuresNamingService ns; private static final String DMC_NSLOC = "corbaloc:iiop:dmc.iris.washington.edu:6371/NameService"; private static String nsLoc; private static Logger logger = LoggerFactory.getLogger(CommonAccess.class); }// CommonAccess