gnu.java.rmi.activation

Class ActivationSystemTransient

Implemented Interfaces:
ActivationMonitor, ActivationSystem, Activator, Remote

public class ActivationSystemTransient
extends DefaultActivationSystem
implements ActivationSystem, ActivationMonitor, Activator

Provides the default transient activation system.

Field Summary

protected Map<K,V>
activatedObjects
The cache of the activated objects, maps activation ids to remote object stubs.
static boolean
debug
Set to true to print the event messages to console.
protected BidiTable
descriptions
Maps object identifiers into object activation descriptions
protected BidiTable
groupDescs
Maps group identifiers into group descriptions.
protected Map<K,V>
groupInstantiators
Maps group identifiers into already activated groups.

Fields inherited from interface java.rmi.activation.ActivationSystem

SYSTEM_PORT

Constructor Summary

ActivationSystemTransient()
Creates the group with transient maps.
ActivationSystemTransient(BidiTable objectDescriptions, BidiTable groupDescriptiopns)
Creates the group which uses the given maps to store the data.

Method Summary

MarshalledObject<T>
activate(ActivationID id, boolean force)
Activate the given object (try cache first if force = false)
ActivationMonitor
activeGroup(ActivationGroupID id, ActivationInstantiator group, long incarnation)
Returns the activation monitor (THIS) and remebers the instantiator, used by that group.
void
activeObject(ActivationID id, MarshalledObject<T> obj)
Put the object into active object map.
ActivationDesc
getActivationDesc(ActivationID id)
Get the activation descriptor for the given activation id.
ActivationGroupDesc
getActivationGroupDesc(ActivationGroupID groupId)
Get the descriptor of the given activation group.
static ActivationSystem
getInstance()
void
inactiveGroup(ActivationGroupID groupId, long incarnation)
Check if the group is known.
void
inactiveObject(ActivationID id)
Removes this id from the active object cache.
ActivationGroupID
registerGroup(ActivationGroupDesc groupDesc)
Create the activation group id and put this id-descriptor combination into the group map.
ActivationID
registerObject(ActivationDesc desc)
Create the object activation id and put this id-descriptor combination into the group map.
ActivationDesc
setActivationDesc(ActivationID id, ActivationDesc desc)
Replace the activation descriptor, return the previous descriptor.
ActivationGroupDesc
setActivationGroupDesc(ActivationGroupID groupId, ActivationGroupDesc groupDesc)
Replace the activation group descriptor, return the previous descriptor.
void
shutdown()
Calls .shutdown on all bidirectional tables (has no effect if these table are not persistent).
void
unregisterGroup(ActivationGroupID groupId)
Remove the group from the group map
void
unregisterObject(ActivationID id)
Remove the object id from the active object and description maps.

Methods inherited from class gnu.java.rmi.activation.DefaultActivationSystem

get

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

activatedObjects

protected final Map<K,V> activatedObjects
The cache of the activated objects, maps activation ids to remote object stubs.

debug

public static boolean debug
Set to true to print the event messages to console.

descriptions

protected final BidiTable descriptions
Maps object identifiers into object activation descriptions

groupDescs

protected final BidiTable groupDescs
Maps group identifiers into group descriptions.

groupInstantiators

protected final Map<K,V> groupInstantiators
Maps group identifiers into already activated groups.

Constructor Details

ActivationSystemTransient

protected ActivationSystemTransient()
Creates the group with transient maps.

ActivationSystemTransient

protected ActivationSystemTransient(BidiTable objectDescriptions,
                                    BidiTable groupDescriptiopns)
Creates the group which uses the given maps to store the data.

Method Details

activate

public MarshalledObject<T> activate(ActivationID id,
                                 boolean force)
            throws ActivationException,
                   UnknownObjectException,
                   RemoteException
Activate the given object (try cache first if force = false)

activeGroup

public ActivationMonitor activeGroup(ActivationGroupID id,
                                     ActivationInstantiator group,
                                     long incarnation)
            throws UnknownGroupException,
                   ActivationException,
                   RemoteException
Returns the activation monitor (THIS) and remebers the instantiator, used by that group.
Specified by:
activeGroup in interface ActivationSystem

activeObject

public void activeObject(ActivationID id,
                         MarshalledObject<T> obj)
            throws UnknownObjectException,
                   RemoteException
Put the object into active object map.

getActivationDesc

public ActivationDesc getActivationDesc(ActivationID id)
            throws ActivationException,
                   UnknownObjectException,
                   RemoteException
Get the activation descriptor for the given activation id.
Specified by:
getActivationDesc in interface ActivationSystem
Returns:
the activation descriptor, never null.
Throws:
UnknownObjectException - if such object is unknown.

getActivationGroupDesc

public ActivationGroupDesc getActivationGroupDesc(ActivationGroupID groupId)
            throws ActivationException,
                   UnknownGroupException,
                   RemoteException
Get the descriptor of the given activation group.
Specified by:
getActivationGroupDesc in interface ActivationSystem
Returns:
the activation group descriptor, never null.
Throws:
UnknownGroupException - if such group is unknown

getInstance

public static ActivationSystem getInstance()

inactiveGroup

public void inactiveGroup(ActivationGroupID groupId,
                          long incarnation)
            throws UnknownGroupException,
                   RemoteException
Check if the group is known. Remove all active objects, belonging to that group, from the active object cache.
Specified by:
inactiveGroup in interface ActivationMonitor

inactiveObject

public void inactiveObject(ActivationID id)
            throws UnknownObjectException,
                   RemoteException
Removes this id from the active object cache.
Specified by:
inactiveObject in interface ActivationMonitor

registerGroup

public ActivationGroupID registerGroup(ActivationGroupDesc groupDesc)
            throws ActivationException,
                   RemoteException
Create the activation group id and put this id-descriptor combination into the group map. The new ID will only be created if this description has not already been registered, otherwise the id of the registered description will be returned.
Specified by:
registerGroup in interface ActivationSystem

registerObject

public ActivationID registerObject(ActivationDesc desc)
            throws ActivationException,
                   UnknownGroupException,
                   RemoteException
Create the object activation id and put this id-descriptor combination into the group map. The new ID will only be created if this description has not already been registered, otherwise the id of the registered description will be returned.
Specified by:
registerObject in interface ActivationSystem

setActivationDesc

public ActivationDesc setActivationDesc(ActivationID id,
                                        ActivationDesc desc)
            throws ActivationException,
                   UnknownObjectException,
                   UnknownGroupException,
                   RemoteException
Replace the activation descriptor, return the previous descriptor.
Specified by:
setActivationDesc in interface ActivationSystem

setActivationGroupDesc

public ActivationGroupDesc setActivationGroupDesc(ActivationGroupID groupId,
                                                  ActivationGroupDesc groupDesc)
            throws ActivationException,
                   UnknownGroupException,
                   RemoteException
Replace the activation group descriptor, return the previous descriptor.
Specified by:
setActivationGroupDesc in interface ActivationSystem

shutdown

public void shutdown()
            throws RemoteException
Calls .shutdown on all bidirectional tables (has no effect if these table are not persistent).
Specified by:
shutdown in interface ActivationSystem

unregisterGroup

public void unregisterGroup(ActivationGroupID groupId)
            throws ActivationException,
                   UnknownGroupException,
                   RemoteException
Remove the group from the group map
Specified by:
unregisterGroup in interface ActivationSystem

unregisterObject

public void unregisterObject(ActivationID id)
            throws ActivationException,
                   UnknownObjectException,
                   RemoteException
Remove the object id from the active object and description maps.
Specified by:
unregisterObject in interface ActivationSystem

ActivationSystemTransient.java -- The transient RMI object activation system. Copyright (C) 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.