package org.jacorb.test.orb; import org.jacorb.config.Configurable; import org.jacorb.config.Configuration; import org.jacorb.config.ConfigurationException; import org.jacorb.orb.iiop.IIOPAddress; import org.jacorb.test.IIOPAddressServerPOA; import org.jacorb.test.Sample; import org.jacorb.test.SampleHelper; import org.omg.PortableServer.POA; /** * @author Andre Spiegel */ public class IIOPAddressServerImpl extends IIOPAddressServerPOA implements Configurable { private Configuration config = null; public void configure (Configuration c) { config = c; } public void setSocketAddress(String host, int port) { config.setAttribute ("OAIAddr",host); if (port != -1) { config.setAttribute ("OAPort", port); } try { config.getORB().configure(config); } catch( ConfigurationException ce ) { throw new org.omg.CORBA.INTERNAL("ConfigurationException: " + ce.getMessage()); } } public void setSocketProtAddr(String protaddr) { config.setAttribute ("OAAddress",protaddr); try { config.getORB().configure(config); } catch( ConfigurationException ce ) { throw new org.omg.CORBA.INTERNAL("ConfigurationException: " + ce.getMessage()); } } public void clearSocketAddress() { config.setAttribute ("OAIAddr", null); config.setAttribute ("OAPort", -1); config.setAttribute ("OAAddress",null); try { config.getORB().configure(config); } catch( ConfigurationException ce ) { throw new org.omg.CORBA.INTERNAL("ConfigurationException: " + ce.getMessage()); } } public void setIORAddress(String host, int port) { config.setAttribute ("jacorb.ior_proxy_host", host); if (port != -1) { config.setAttribute ("jacorb.ior_proxy_port", port); } try { config.getORB().configure(config); } catch( ConfigurationException ce ) { throw new org.omg.CORBA.INTERNAL("ConfigurationException: " + ce.getMessage()); } } public void setIORProtAddr(String protaddr) { config.setAttribute ("jacorb.ior_proxy_address", protaddr); try { config.getORB().configure(config); } catch( ConfigurationException ce ) { throw new org.omg.CORBA.INTERNAL("ConfigurationException: " + ce.getMessage()); } } public void clearIORAddress() { config.setAttribute ("jacorb.ior_proxy_host", null); config.setAttribute ("jacorb.ior_proxy_port", -1); config.setAttribute ("jacorb.ior_proxy_address", null); try { config.getORB().configure(config); } catch( ConfigurationException ce ) { throw new org.omg.CORBA.INTERNAL("ConfigurationException: " + ce.getMessage()); } } public void addAlternateAddress(String host, int port) { IIOPAddressInterceptor.alternateAddresses.add (new IIOPAddress (host, port)); } public void clearAlternateAddresses() { IIOPAddressInterceptor.alternateAddresses.clear(); } /** * Returns a sample object, using a new POA so that the address settings * we made are incorporated into the IOR. */ public Sample getObject() { try { SampleImpl result = new SampleImpl(); POA poa = _default_POA().create_POA("poa-" + System.currentTimeMillis(), null, null); poa.the_POAManager().activate(); poa.activate_object(result); org.omg.CORBA.Object obj = poa.servant_to_reference (result); return SampleHelper.narrow (obj); } catch (Exception ex) { throw new RuntimeException ("Exception creating result object: " + ex); } } }