Defines the operations, applicable to the POA.
activate_object
public byte[] activate_object(Servant a_servant)
throws ServantAlreadyActive,
WrongPolicy
Generate the Object Id for the given servant and add the servant to
the Active Object Map using this Id a a key. If the servant
activator is set, its incarnate method will be called. In this case,
the passed servant in this method can be null; in this case, the servant,
returned by
ServantActivatorOperations.incarnate(byte[],POA)
will
be used.
a_servant
- a servant that would serve the object with the
returned Object Id.
- the generated objert Id for the given servant.
ServantAlreadyActive
- if this servant is already in the
Active Object Map and the UNIQUE_ID policy applies.WrongPolicy
- if the required policies SYSTEM_ID and RETAIN
do not apply to this POA.
activate_object_with_id
public void activate_object_with_id(byte[] an_Object_Id,
Servant a_servant)
throws ServantAlreadyActive,
ObjectAlreadyActive,
WrongPolicy
Add the given servant to the Active Object Map as a servant for the
object with the provided Object Id. If the servant activator is
set, its incarnate method will be called. In this case,
the passed servant in this method can be null; in this case, the servant,
returned by
ServantActivatorOperations.incarnate(byte[],POA)
will
be used.
an_Object_Id
- an object id for the given object.a_servant
- a servant that will serve the object with the given
Object Id.
ObjectAlreadyActive
- if the given object id is already in the
Active Object Map.WrongPolicy
- if the required RETAIN policy does not apply to
this POA.BAD_PARAM
- if the passed object id is invalid due any reason.
create_POA
public POA create_POA(String child_name,
POAManager manager,
Policy[] policies)
throws AdapterAlreadyExists,
InvalidPolicy
Creates a new POA as a child of the target POA.
child_name
- the name of the child POA being created.manager
- the manager that will control the new POA. If this parameter
is null, a new POA manager is created and associated with the new POA.policies
- the policies, applicable for the parent POA. Policies
are not inherited from the parent POA. If some policy type
is missing in the array (or the zero size array is passed), the missing
policies obtain the default values from the table, specified
in the POA
documentation header.
- an newly created POA. The POA will be intially in the holding
state and must be activated to start processing requests.
AdapterAlreadyExists
- if the child with the given child_name
already exists for the current POA.InvalidPolicy
- if the policies conflict with each other or are
otherwise inappropriate.
create_reference
public Object create_reference(String a_repository_id)
throws WrongPolicy
Create the object reference, encapsulating the given repository Id and
the Object Id, generated by this POA. The returned object will not be
activated by default and may be activated on the first invocation by
the servant manager (if it is set and if policies are applicable).
The returned object can also be narrowed by helper and used locally.
In this case, the servant will be activated on the first local call of
any method. The methods on returned object can also be invoked by
name, using
Request
.
a_repository_id
- the repository id for the given object. When
narrowing the returned object with some helper, it will be checked for
equality with value, returned by the the helper id().
WrongPolicy
- if the required SYSTEM_ID policy does not apply to
this POA.
create_reference_with_id
public Object create_reference_with_id(byte[] an_object_id,
String a_repository_id)
Create the object reference, encapsulating the given repository Id and
the given Object Id. The returned object will not be
activated by default and may be activated on the first invocation by
the servant manager (if it is set and if policies are applicable).
The returned object can also be narrowed by helper and used locally.
In this case, the servant will be activated on the first local call of
any method. The methods on returned object can also be invoked by
name, using
Request
.
an_object_id
- the object id for the object being created.
If the POA uses the SYSTEM_ID policy, the portable application
must only supply ids, generated by that POA.a_repository_id
- the repository id for the given object. When
narrowing the returned object with some helper, it will be checked for
equality with value, returned by the the helper id().
deactivate_object
public void deactivate_object(byte[] the_Object_Id)
throws ObjectNotActive,
WrongPolicy
Deactivate object with the given id. Client, trying to call
method on the deactivated object will either receive the remote
exception (
OBJECT_NOT_EXIST
, minor 0x535503ec),
incomplete) or the object will be reactivated and serve the request.
The object can be reactivated only if the implicit activation
policy applies and the servant activator is set.
The deactivated object will continue to process requests that arrived
before decativation.
If this POA has the associated servant manager, a
ServantActivatorOperations.etherealize(byte[],POA,Servant,boolean,boolean)
is
immediately
invoked on the passed id. The deactivated object can be reactivated
by
activate_object_with_id(byte[],Servant)
.
The deactivation will not release thread, port or memory resources,
taken by that object. This is due requirement to make the
object reactivation possible at any time. To release the resources,
you must destroy the POA.
WrongPolicy
- if the required RETAIN policy does not apply to
this POA.
destroy
public void destroy(boolean etherealize_objects,
boolean wait_for_completion)
etherealize_objects
- if true, and POA has RETAIN policy, and the
servant manager is available, the servant manager method
ServantActivatorOperations.etherealize(byte[],POA,Servant,boolean,boolean)
is called for each
active object in the Active Object Map. This method should not
try to access POA being destroyed. If destroy
is called
multiple times before the destruction completes,
the etherialization should be invoked only once.wait_for_completion
- if true, the method waits till the POA being
destroyed completes all current requests and etherialization. If false,
the method returns immediately.
find_POA
public POA find_POA(String poa_name,
boolean activate_it)
throws AdapterNonExistent
Find and optionally activate the child POA with the given name.
poa_name
- the name of the POA to find.activate_it
- if the child with the specified name is not found
or inactive and this parameter is true, the target POA activator is
invoked to activate that child. If this succeeds, that child POA
is returned.
AdapterNonExistent
- if no active child with the given name
is found and one of the following is true:
a) the target POA has no associated
AdapterActivator
. b) that activator fails to activate the
child POA. c) activate_id
= false.
get_servant
public Servant get_servant()
throws NoServant,
WrongPolicy
Returns a default servant for this POA.
- a servant that will be used for requests for
which no servant is found in the Active Object Map.
NoServant
- if there is no default servant associated with this POA.WrongPolicy
- if the USE_DEFAULT_SERVANT policy is not active.
get_servant_manager
public ServantManager get_servant_manager()
throws WrongPolicy
Get the servant manager, associated with this POA.
- the associated servant manager or null if it has
been previously set.
WrongPolicy
- if the required USE_SERVANT_MANAGER policy does not
apply to this POA.
id
public byte[] id()
Get the unique Id of the POA in the process in which it is created.
This Id is needed by portable interceptors. The id is unique
for the life span of the POA in the process. For persistent
POAs, if a POA is created in the same path with the same name as
another POA, these POAs are identical have the same id. All transient
POAs are assumed unique.
id_to_servant
public Servant id_to_servant(byte[] the_Object_Id)
throws ObjectNotActive,
WrongPolicy
Returns the servant that serves the active object with the given Id.
the_Object_Id
- the object id.
ObjectNotActive
- if there is no active object with such Id.WrongPolicy
- This method requires either RETAIN or
USE_DEFAULT_SERVANT policies and reaises the WrongPolicy if none of them
apply to this POA.
reference_to_id
public byte[] reference_to_id(Object the_Object)
throws WrongAdapter,
WrongPolicy
Returns the Object Id, encapsulated in the given object reference.
the_Object
- the object that has been previously created with this
POA. It need not be active.
WrongAdapter
- if the passed object has not been previously created
with this POA.WrongPolicy
- never (declared for the future extensions only).
reference_to_servant
public Servant reference_to_servant(Object the_Object)
throws ObjectNotActive,
WrongPolicy,
WrongAdapter
Returns the servant that is serving this object.
- if the RETAIN policy applies and the object is in the Active
Object Map, the method returns the servant, associated with this object.
Otherwise, if the USE_DEFAULT_SERVANT policy applies, the method returns
the default servant (if one was set).
ObjectNotActive
- if none of the conditions above are satisfied.WrongAdapter
- if the object reference was not created with this POA.WrongPolicy
- This method requires either RETAIN or
USE_DEFAULT_SERVANT policies and reaises the WrongPolicy if none of them
apply to this POA.
servant_to_id
public byte[] servant_to_id(Servant the_Servant)
throws ServantNotActive,
WrongPolicy
Returns the id of the object, served by the given servant. The id is found
in one of the following ways.
- If the POA has both the RETAIN and the UNIQUE_ID policy and
the specified servant is active, the method return the Object Id associated
with that servant.
-
If the POA has both the RETAIN and the IMPLICIT_ACTIVATION policy and
either the POA has the MULTIPLE_ID policy or the specified servant is
inactive, the method activates the servant using a POA-generated Object Id
and the Interface Id associated with the servant, and returns that
Object Id.
- If the POA has the USE_DEFAULT_SERVANT policy, the servant specified
is the default servant, and the method is being invoked in the context o
f executing a request on the default servant, the method returns the
ObjectId associated with the current invocation.
ServantNotActive
- in all cases, not listed in the list above.WrongPolicy
- The method requres USE_DEFAULT_SERVANT policy or
a combination of the RETAIN policy and either the UNIQUE_ID or
IMPLICIT_ACTIVATION policies and throws the WrongPolicy if these conditions
are not satisfied.
servant_to_reference
public Object servant_to_reference(Servant the_Servant)
throws ServantNotActive,
WrongPolicy
Converts the given servant to the object reference.
The servant will serve all methods, invoked on the returned object.
The returned object reference can be passed to the remote client,
enabling remote invocations.
If the specified servant already serves some active object, that
object is returned. Otherwise,
if the POA has the IMPLICIT_ACTIVATION policy the method activates
the servant, creating an new object with the POA-generated Object Id.
In this case, if the servant activator is set, the
ServantActivatorOperations.incarnate(byte[],POA)
method will be called.
- the object, exposing the given servant in the context of this POA.
ServantNotActive
- if the servant is inactive and no
IMPLICIT_ACTIVATION policy applies.WrongPolicy
- This method needs the RETAIN policy and either the
UNIQUE_ID or IMPLICIT_ACTIVATION policies.
set_servant
public void set_servant(Servant a_servant)
throws WrongPolicy
Sets the default servant for this POA.
a_servant
- a servant that will be used for requests for
which no servant is found in the Active Object Map.
WrongPolicy
- if the USE_DEFAULT_SERVANT policy is not active.
the_POAManager
public POAManager the_POAManager()
Return the POA manager, associated with this POA.
- the associated POA manager (always available).
the_activator
public AdapterActivator the_activator()
Returns the adapter activator, associated with this POA.
The newly created POA has no activator (null would be
returned). The ORB root POA also initially has no activator.
- tha adapter activator or null if this POA has no
associated adapter activator.
the_children
public POA[] the_children()
The children of this POA.
- the array of all childs for this POA.
the_name
public String the_name()
Return the name of this POA.
- the name of POA, relative to its parent.
the_parent
public POA the_parent()
Return the parent of this POA.
- the parent POA or
null
if this is a root POA.
POAOperations.java --
Copyright (C) 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.