/* * @(#)POAPolicyMediator.java 1.23 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package com.sun.corba.se.impl.oa.poa ; import org.omg.PortableServer.Servant ; import org.omg.PortableServer.ServantManager ; import org.omg.PortableServer.ForwardRequest ; import org.omg.PortableServer.POAPackage.ObjectAlreadyActive ; import org.omg.PortableServer.POAPackage.ServantAlreadyActive ; import org.omg.PortableServer.POAPackage.ServantNotActive ; import org.omg.PortableServer.POAPackage.NoServant ; import org.omg.PortableServer.POAPackage.WrongPolicy ; import org.omg.PortableServer.POAPackage.ObjectNotActive ; /** POAPolicyMediator defines an interface to which the POA delegates all * policy specific operations. This permits code paths for different * policies to be optimized by creating the correct code at POA creation * time. Also note that as much as possible, this interface does not * do any concurrency control, except as noted. The POA is responsible * for concurrency control. */ public interface POAPolicyMediator { /** Return the policies object that was used to create this * POAPolicyMediator. */ Policies getPolicies() ; /** Return the subcontract ID to use in the IIOP profile in IORs * created by this POAPolicyMediator's POA. This is initialized * according to the policies and the POA used to construct this * POAPolicyMediator in the POAPolicyMediatorFactory. */ int getScid() ; /** Return the server ID to use in the IIOP profile in IORs * created by this POAPolicyMediator's POA. This is initialized * according to the policies and the POA used to construct this * POAPolicyMediator in the POAPolicyMediatorFactory. */ int getServerId() ; /** Get the servant to use for an invocation with the * given id and operation. * @param id the object ID for which we are requesting a servant * @param operation the name of the operation to be performed on * the servant * @return the resulting Servant. */ java.lang.Object getInvocationServant( byte[] id, String operation ) throws ForwardRequest ; /** Release a servant that was obtained from getInvocationServant. */ void returnServant() ; /** Etherealize all servants associated with this POAPolicyMediator. * Does nothing if the retention policy is non-retain. */ void etherealizeAll() ; /** Delete everything in the active object map. */ void clearAOM() ; /** Return the servant manager. Will throw WrongPolicy * if the request processing policy is not USE_SERVANT_MANAGER. */ ServantManager getServantManager() throws WrongPolicy ; /** Set the servant manager. Will throw WrongPolicy * if the request processing policy is not USE_SERVANT_MANAGER. */ void setServantManager( ServantManager servantManager ) throws WrongPolicy ; /** Return the default servant. Will throw WrongPolicy * if the request processing policy is not USE_DEFAULT_SERVANT. */ Servant getDefaultServant() throws NoServant, WrongPolicy ; /** Set the default servant. Will throw WrongPolicy * if the request processing policy is not USE_DEFAULT_SERVANT. */ void setDefaultServant( Servant servant ) throws WrongPolicy ; void activateObject( byte[] id, Servant servant ) throws ObjectAlreadyActive, ServantAlreadyActive, WrongPolicy ; /** Deactivate the object that is associated with the given id. * Returns the servant for id. */ Servant deactivateObject( byte[] id ) throws ObjectNotActive, WrongPolicy ; /** Allocate a new, unique system ID. Requires the ID assignment policy * to be SYSTEM. */ byte[] newSystemId() throws WrongPolicy ; byte[] servantToId( Servant servant ) throws ServantNotActive, WrongPolicy ; Servant idToServant( byte[] id ) throws ObjectNotActive, WrongPolicy ; }