package org.jacorb.test.bugs.bug923; import java.util.HashMap; import org.omg.CORBA.LocalObject; import org.omg.CORBA.OBJECT_NOT_EXIST; import org.omg.PortableServer.POA; import org.omg.PortableServer.Servant; import org.omg.PortableServer.ServantLocator; class ServantLocatorImpl extends LocalObject implements ServantLocator { private POA poa; private HashMap<String,Servant> m_activateObjectMap = new HashMap<String,Servant>(); ServantLocatorImpl(org.omg.CORBA.ORB orb, POA poa) { this.poa = poa; } public Servant preinvoke(byte[] oid, POA adapter, String operation , org.omg.PortableServer.ServantLocatorPackage.CookieHolder the_cookie) throws org.omg.PortableServer.ForwardRequest { String strOid = new String(oid); // Search for the servant that handles this strOid Servant servant = m_activateObjectMap.get(strOid); if (null == servant) { throw new OBJECT_NOT_EXIST(); } return servant; } public void postinvoke(byte[] oid, POA adapter, String operation , java.lang.Object the_cookie, Servant the_servant) { } public org.omg.CORBA.Object registerObject(String strOid, String typeId, Servant servant) throws org.omg.PortableServer.POAPackage.WrongPolicy { byte[] oidAsBytes = strOid.getBytes(); org.omg.CORBA.Object obj = poa.create_reference_with_id(oidAsBytes, typeId); // save in aom m_activateObjectMap.put(strOid, servant); return obj; } }