JXTA

net.jxta.impl.peergroup
Class GenericPeerGroup

java.lang.Object
  extended by net.jxta.impl.peergroup.GenericPeerGroup
All Implemented Interfaces:
PeerGroup, Module, Service
Direct Known Subclasses:
StdPeerGroup

public abstract class GenericPeerGroup
extends Object
implements PeerGroup

Provides common services for most peer group implementations.


Nested Class Summary
(package private) static class GenericPeerGroup.PeerGroupThreadFactory
          Our thread factory that adds the threads to our thread group and names the thread to something recognizable.
 
Nested classes/interfaces inherited from interface net.jxta.peergroup.PeerGroup
PeerGroup.GlobalRegistry
 
Field Summary
protected  ConfigParams configAdvertisement
          This peer's config advertisement.
protected  ModuleImplAdvertisement implAdvertisement
          This group's implAdvertisement.
protected  boolean initComplete
          Is set to true when init() is completed enough that it makes sense to perform ref-counting.
protected  URI jxtaHome
          The location of our store
protected  PeerGroup parentGroup
          This service implements a group but, being a Service, it runs inside of some group.
 
Fields inherited from interface net.jxta.peergroup.PeerGroup
accessClassID, allPurposePeerGroupSpecID, applicationClassID, Both, DEFAULT_EXPIRATION, DEFAULT_LIFETIME, discoveryClassID, endpointClassID, FromParent, globalRegistry, Here, httpProtoClassID, membershipClassID, peerGroupClassID, peerinfoClassID, pipeClassID, proxyClassID, refAccessSpecID, refDiscoverySpecID, refEndpointSpecID, refHttpProtoSpecID, refMembershipSpecID, refNetPeerGroupSpecID, refPeerinfoSpecID, refPipeSpecID, refPlatformSpecID, refProxySpecID, refRelayProtoSpecID, refRendezvousSpecID, refResolverSpecID, refRouterProtoSpecID, refShellSpecID, refTcpProtoSpecID, refTlsProtoSpecID, relayProtoClassID, rendezvousClassID, resolverClassID, routerProtoClassID, tcpProtoClassID, tlsProtoClassID, WK_ID_PREFIX
 
Fields inherited from interface net.jxta.platform.Module
START_AGAIN_PROGRESS, START_AGAIN_STALLED, START_DISABLED, START_OK
 
Constructor Summary
GenericPeerGroup()
           
 
Method Summary
protected  void addService(ModuleClassID mcid, Service service)
          Add a service to the collection of known services.
protected  void checkServices()
          check that all required core services are registered
protected  void decRefCount()
          Called every time an interface object that refers to this group goes away, either by being finalized or by its unref() method being invoked explicitly.
 boolean equals(Object target)
          
 AccessService getAccessService()
          Return the Access Service for this Peer Group.
 ConfigParams getConfigAdvertisement()
          Returns the config advertisement for this peer in this group (if any).
 DiscoveryService getDiscoveryService()
          Return the Discovery Service for this Peer Group.
 EndpointService getEndpointService()
          Return the Endpoint Service for this Peer Group.
 Executor getExecutor()
          Returns the executor pool
 ThreadGroup getHomeThreadGroup()
          Returns the Thread Group in which threads for this peer group will live.
 ModuleImplAdvertisement getImplAdvertisement()
          Returns the advertisement for this service.
 Service getInterface()
          Service objects are not manipulated directly to protect usage of the service.
static JxtaLoader getJxtaLoader()
          
 JxtaLoader getLoader()
          Returns the class loader for this group.
 MembershipService getMembershipService()
          Return the Membership Service for this Peer Group.
 PeerGroup getParentGroup()
          Returns the parent group of this group.
 PeerAdvertisement getPeerAdvertisement()
          Return the PeerAdvertisement of the local Peer within this Peer Group.
 PeerGroupAdvertisement getPeerGroupAdvertisement()
          Return the PeerGroupAdvertisement for this group.
 PeerGroupID getPeerGroupID()
          Return the Peer Group ID of this Peer Group.
 String getPeerGroupName()
          Return the Name of this group.
 PeerID getPeerID()
          Return the Peer ID by which this Peer is known within this Peer Group.
 PeerInfoService getPeerInfoService()
          Return the PeerInfo Service for this Peer Group.
 String getPeerName()
          Return the name of the local peer within this group.
 PipeService getPipeService()
          Return the Pipe Service for this Peer Group.
 RendezVousService getRendezVousService()
          Return the Rendezvous Service for this Peer Group.
 ResolverService getResolverService()
          Return the Resolver Service for this Peer Group.
 Iterator getRoleMap(ID name)
          Returns the map of the assigned IDs currently associated with the given ModuleClassID by this PeerGroup object.
 ScheduledExecutorService getScheduledExecutor()
          Returns the scheduled executor.
 URI getStoreHome()
          Returns the location of the parent of all items that this peer group is using for persistently storing its preferences, cache, persistent store, properties, etc.
 PeerGroup getWeakInterface()
          Returns a weak interface object that represents this group.
 int hashCode()
          
 void init(PeerGroup homeGroup, ID assignedID, Advertisement impl)
          Initialize the module, passing it its peer group and advertisement.
protected  void initFirst(PeerGroup homeGroup, ID assignedID, Advertisement impl)
          Performs all initialization steps that need to be performed before any subclass initialization is performed.
protected  void initLast()
          Perform all initialization steps that need to be performed after any subclass initialization is performed.
 boolean isRendezvous()
          Returns the whether the group member is a Rendezvous peer for the group.
 Module loadModule(ID assigned, Advertisement impl)
          Load a Module from a ModuleImplAdv.
protected  Module loadModule(ID assigned, ModuleImplAdvertisement implAdv, boolean privileged)
          Load a Module from a ModuleImplAdv.
 Module loadModule(ID assigned, ModuleSpecID specID, int where)
          Load a module from a ModuleSpecID

Advertisement is sought, compatibility is checked on all candidates and load is attempted.

protected  Module loadModule(ID assignedID, ModuleSpecID specID, int where, boolean privileged)
          Load a module from a ModuleSpecID

Advertisement is sought, compatibility is checked on all candidates and load is attempted.

 Service lookupService(ID mcid)
          Lookup for a service by name.
 Service lookupService(ID mcid, int roleIndex)
          Lookup for a service by class ID and index in a map.
 PeerGroup newGroup(Advertisement pgAdv)
          Instantiate a peer group from the provided advertisement.
 PeerGroup newGroup(PeerGroupID gid)
          Instantiate a group from its Peer Group ID only.
 PeerGroup newGroup(PeerGroupID gid, Advertisement impl, String name, String description)
          Instantiates a peer group from its elementary pieces and publishes the corresponding PeerGroupAdvertisement.
 void publishGroup(String name, String description)
          Publish this group's Peer Group Advertisement.
protected  void removeService(ModuleClassID mcid)
          Ask a group to unregister and unload a service
protected  void setConfigAdvertisement(ConfigParams config)
          Sets the configuration advertisement for this peer group.
static void setGroupConfigAdvertisement(ID groupid, ConfigParams params)
          Adds configuration parameters for the specified group.
protected  void setStoreHome(URI newHome)
          Sets the root location for the store to be used by this peergroup.
 int startApp(String[] arg)
          Complete any remaining initialization of the module.
 void stopApp()
          Stop a module.
 String toString()
          

An implementation suitable for debugging.

 void unref()
          Explicitly notifies a group interface that it will no-longer be used (similar to dispose).
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.jxta.peergroup.PeerGroup
compatible, getAllPurposePeerGroupImplAdvertisement
 

Field Detail

implAdvertisement

protected ModuleImplAdvertisement implAdvertisement
This group's implAdvertisement.


configAdvertisement

protected ConfigParams configAdvertisement
This peer's config advertisement.


parentGroup

protected PeerGroup parentGroup
This service implements a group but, being a Service, it runs inside of some group. That's its home group.

Exception: The platform peer group does not have a parent group. It has to be entirely self sufficient.


jxtaHome

protected URI jxtaHome
The location of our store


initComplete

protected volatile boolean initComplete
Is set to true when init() is completed enough that it makes sense to perform ref-counting.

Constructor Detail

GenericPeerGroup

public GenericPeerGroup()
Method Detail

getParentGroup

public PeerGroup getParentGroup()
Returns the parent group of this group. Not all groups have parents and some implementations may not reveal their parents.

We do not want to count on the invoker to properly unreference the group object that we return; this call is often used in a loop and it is silly to increment and decrement ref-counts for references that are sure to live shorter than the referee.

On the other hand it is dangerous for us to share our reference object to the parent group. That's where weak interface objects come in handy. We can safely make one and give it away.

Specified by:
getParentGroup in interface PeerGroup
Returns:
PeerGroup the parent group or null if a parent group if not available.

getStoreHome

public URI getStoreHome()
Returns the location of the parent of all items that this peer group is using for persistently storing its preferences, cache, persistent store, properties, etc. May be null if the peergroup has no defined location for storing persistent data.

Specified by:
getStoreHome in interface PeerGroup
Returns:
The location of the parent of all persistent items stored by this peer group.

setStoreHome

protected void setStoreHome(URI newHome)
Sets the root location for the store to be used by this peergroup.

This should be set early in the peer group's life and then never changed.

Parameters:
newHome - The new store location.

getJxtaLoader

public static JxtaLoader getJxtaLoader()


equals

public boolean equals(Object target)

Overrides:
equals in class Object

hashCode

public int hashCode()

Overrides:
hashCode in class Object

toString

public String toString()

An implementation suitable for debugging. Don't try to parse this string! All of the information is available from other sources.

Overrides:
toString in class Object

getHomeThreadGroup

public ThreadGroup getHomeThreadGroup()
Returns the Thread Group in which threads for this peer group will live. This is currently used only for debugging purposes so that the source of a thread can be determined.

Specified by:
getHomeThreadGroup in interface PeerGroup
Returns:
ThreadGroup

addService

protected void addService(ModuleClassID mcid,
                          Service service)
Add a service to the collection of known services.

Parameters:
mcid - The Module Class ID of the service.
service - The service instance to set as the shortcut or

lookupService

public Service lookupService(ID mcid)
                      throws ServiceNotFoundException
Lookup for a service by name.

Specified by:
lookupService in interface PeerGroup
Parameters:
mcid - the service identifier.
Returns:
Service, the Service registered by that name
Throws:
ServiceNotFoundException - could not find the service requested

lookupService

public Service lookupService(ID mcid,
                             int roleIndex)
                      throws ServiceNotFoundException
Lookup for a service by class ID and index in a map.

More than one service in a group may be of a given ModuleClass. However each of them has a unique assigned ID which serves as the index in the map of services. In most cases, there is only one service of each given Module Class, and the ID of that Module Class is the assigned ID. Otherwise, the group may have a list of existing assigned ID per base class. This routine may be used to retrieve services of the given Module Class and index in that list. In the absence of a mapping, index 0 is still valid and corresponds to the service which assigned ID is exactly the given ID. Group objects with a map are normally wrappers tailored specially by the loader of a module (often the group itself) in order to provide a map appropriate for that module. Modules that do not use more than one service of a given base class normally never need to call this method; lookupService(ID) is equivalent to lookupService(ID, 0) and will transparently remap index 0 to whatever the group's structure defines as the default for the invoking service.

Note: traditionally, the given ID is expected to be a base Module Class ID, and the assigned ID of a Module is a Class ID of the same base class with a role suffix to make it unique. If the given ID already contains a role suffix, there may exist an entry for it in the map anyway, if not (which is the expected use pattern), then only index 0 exists and the given ID is used whole and untranslated.

Group implementations do not have to support mapping. it would be nice to separate better Interfaces, so that Interface Objects can do things that the real service does not have to implement.

Specified by:
lookupService in interface PeerGroup
Parameters:
mcid - the service identifier
roleIndex - the index in the list of assigned IDs that match that identifier.
Returns:
Service, the corresponding Service
Throws:
ServiceNotFoundException - Could not find the service requested.

getRoleMap

public Iterator getRoleMap(ID name)
Returns the map of the assigned IDs currently associated with the given ModuleClassID by this PeerGroup object. The IDs are returned in the order of their index in the map. So the first ID returned will be identical to what would be returned by the lookup method for the given ID and index 0. If there is no explicit such map, this method will return a singleton containing the given ID as this is the default mapping. There is no guarantee that any of the returned IDs correspond to an actually registered service. This method only maps IDs.

Specified by:
getRoleMap in interface PeerGroup
Parameters:
name - The ModuleClassID for which the map is desired.
Returns:
Iterator An iterator on a collection of the IDs to which the given ID maps.

checkServices

protected void checkServices()
                      throws ServiceNotFoundException
check that all required core services are registered

Throws:
ServiceNotFoundException - If a required service was not found.

removeService

protected void removeService(ModuleClassID mcid)
                      throws ServiceNotFoundException
Ask a group to unregister and unload a service

Parameters:
mcid - The service to be removed.
Throws:
ServiceNotFoundException - if service is not found

loadModule

public Module loadModule(ID assigned,
                         Advertisement impl)
                  throws ProtocolNotSupportedException,
                         PeerGroupException
Load a Module from a ModuleImplAdv.

Compatibility is checked and load is attempted. If compatible and loaded successfully, the resulting Module is initialized and returned. In most cases the other loadModule() method should be preferred, since unlike this one, it will seek many compatible implementation advertisements and try them all until one works. The home group of the new module (its' parent group if the new Module is a group) will be this group.

Specified by:
loadModule in interface PeerGroup
Parameters:
assigned - Id to be assigned to that module (usually its ClassID).
impl - An implementation advertisement for that module.
Returns:
Module the module loaded and initialized.
Throws:
ProtocolNotSupportedException - The implementation described by the advertisement is incompatible with this peer. The module cannot be loaded.
PeerGroupException - The module could not be loaded or initialized

loadModule

protected Module loadModule(ID assigned,
                            ModuleImplAdvertisement implAdv,
                            boolean privileged)
                     throws ProtocolNotSupportedException,
                            PeerGroupException
Load a Module from a ModuleImplAdv.

Compatibility is checked and load is attempted. If compatible and loaded successfully, the resulting Module is initialized and returned. In most cases the other loadModule() method should be preferred, since unlike this one, it will seek many compatible implementation advertisements and try them all until one works. The home group of the new module (its' parent group if the new Module is a group) will be this group.

Parameters:
assigned - Id to be assigned to that module (usually its ClassID).
implAdv - An implementation advertisement for that module.
privileged - If true then the module is provided the true group obj instead of just an interface to the group object. This is normally used only for the group's defined services and applications.
Returns:
Module the module loaded and initialized.
Throws:
ProtocolNotSupportedException - The module is incompatible.
PeerGroupException - The module could not be loaded or initialized

loadModule

public Module loadModule(ID assigned,
                         ModuleSpecID specID,
                         int where)
Load a module from a ModuleSpecID

Advertisement is sought, compatibility is checked on all candidates and load is attempted. The first one that is compatible and loads successfully is initialized and returned.

Specified by:
loadModule in interface PeerGroup
Parameters:
assigned - Id to be assigned to that module (usually its ClassID).
specID - The specID of this module.
where - May be one of: Here, FromParent, or Both, meaning that the implementation advertisement will be searched in this group, its parent or both. As a general guideline, the implementation advertisements of a group should be searched in its prospective parent (that is Here), the implementation advertisements of a group standard service should be searched in the same group than where this group's advertisement was found (that is, FromParent), while applications may be sought more freely (Both).
Returns:
Module the new module, or null if no usable implementation was found.

loadModule

protected Module loadModule(ID assignedID,
                            ModuleSpecID specID,
                            int where,
                            boolean privileged)
Load a module from a ModuleSpecID

Advertisement is sought, compatibility is checked on all candidates and load is attempted. The first one that is compatible and loads successfully is initialized and returned.

Parameters:
assignedID - Id to be assigned to that module (usually its ClassID).
specID - The specID of this module.
where - May be one of: Here, FromParent, or Both, meaning that the implementation advertisement will be searched in this group, its parent or both. As a general guideline, the implementation advertisements of a group should be searched in its prospective parent (that is Here), the implementation advertisements of a group standard service should be searched in the same group than where this group's advertisement was found (that is, FromParent), while applications may be sought more freely (Both).
privileged - If true then the module is provided the true group obj instead of just an interface to the group object. This is normally used only for the group's defined services and applications.
Returns:
Module the new module, or null if no usable implementation was found.

getConfigAdvertisement

public ConfigParams getConfigAdvertisement()
Returns the config advertisement for this peer in this group (if any).

Specified by:
getConfigAdvertisement in interface PeerGroup
Returns:
The advertisement or null if none is available.

setConfigAdvertisement

protected void setConfigAdvertisement(ConfigParams config)
Sets the configuration advertisement for this peer group.

Parameters:
config - The configuration advertisement which will be used for this peer group or null if no configuration advertisement is to be used.

setGroupConfigAdvertisement

public static void setGroupConfigAdvertisement(ID groupid,
                                               ConfigParams params)
Adds configuration parameters for the specified group. The configuration parameters remain cached until either the specified group is started or the parameters are replaced.

Parameters:
groupid - The group for who's params are being provided.
params - The parameters to be provided to the peer group when it is created.

init

public void init(PeerGroup homeGroup,
                 ID assignedID,
                 Advertisement impl)
          throws PeerGroupException
Initialize the module, passing it its peer group and advertisement.

Note: when subclassing one of the existing PeerGroup implementations (which implement Module), it may not be recommended to overload the init method. See the documentation of the PeerGroup class being subclassed.

It is not recommended to overload this method. Instead, subclassers should overload either or both of initFirst(PeerGroup,ID,Advertisement) and initLast(). If this method is to be overloaded, the overloading method must invoke super.init.

This method invokes initFirst with identical parameters. initLast does not take parameters since the relevant information can be obtained from the group following completion of the initFirst phase. The resulting values may be different from the parameters to initFirst since initFirst may be overLoaded and the overloading method may modify these parameters when calling super.initFirst. (See Platform for an example of such a case).

Upon completion, the group object is marked as completely initialized in all cases. Once a group object is completely initialized, it becomes sensitive to reference counting.

In the future this method may become final.

Specified by:
init in interface Module
Parameters:
homeGroup - The PeerGroup from which this Module can obtain services. If this module is a Service, this is also the PeerGroup of which this module is a service.
assignedID - Identity of Module within group. modules can use it as a the root of their namespace to create names that are unique within the group but predictable by the same module on another peer. This is normally the ModuleClassID which is also the name under which the module is known by other modules. For a group it is the PeerGroupID itself. The parameters of a service, in the Peer configuration, are indexed by the assignedID of that service, and a Service must publish its run-time parameters in the Peer Advertisement under its assigned ID.
impl - The implementation advertisement for this Module. It is permissible to pass null if no implementation advertisement is available. This may happen if the implementation was selected by explicit class name rather than by following an implementation advertisement. Modules are not required to support that style of loading, but if they do, then their documentation should mention it.
Throws:
PeerGroupException - This module failed to initialize.

initFirst

protected void initFirst(PeerGroup homeGroup,
                         ID assignedID,
                         Advertisement impl)
                  throws PeerGroupException
Performs all initialization steps that need to be performed before any subclass initialization is performed.

Classes that override this method should always call super.initFirst() before doing any of their own work.

Parameters:
homeGroup - The group that serves as a parent to this group.
assignedID - The unique ID assigned to this module. For group this is the group ID or null if a group ID has not yet been assigned. If null is passed, GenericPeerGroup will generate a new group ID.
impl - The ModuleImplAdvertisement which defines this group's implementation.
Throws:
PeerGroupException - if a group initialization error occurs

initLast

protected void initLast()
                 throws PeerGroupException
Perform all initialization steps that need to be performed after any subclass initialization is performed.

Classes that override this method should always call super.initLast after doing any of their own work.

Throws:
PeerGroupException - if a group initialization error occurs

startApp

public int startApp(String[] arg)
Complete any remaining initialization of the module. The module should be fully functional after startApp() is completed. That is also the opportunity to supply arbitrary arguments (mostly to applications).

If this module is a PeerGroup service, it may be invoked several times depending on its return value.

Specified by:
startApp in interface Module
Parameters:
arg - An array of Strings forming the parameters for this Module.
Returns:
int A status indication which may be one of Module.START_OK, Module.START_AGAIN_PROGRESS, Module.START_AGAIN_STALLED, which indicates partial or complete success, or any other value (negative values are recommended for future compatibility), which indicates failure.

stopApp

public void stopApp()
Stop a module. This may be called any time after init() completes and should not assume that startApp() has been called or completed.

The Module cannot be forced to comply, but in the future we might be able to deny it access to anything after some timeout.

PeerGroupInterface's stopApp() does nothing. Only a real reference to the group object permits to stop it without going through ref counting.

Specified by:
stopApp in interface Module

unref

public void unref()
Explicitly notifies a group interface that it will no-longer be used (similar to dispose). Does nothing to a real group object, only has an effect on a group interface.

May be called by a module which has a direct reference to the group object and wants to notify its abandoning it. Has no effect on the real group object.

Specified by:
unref in interface PeerGroup

decRefCount

protected void decRefCount()
Called every time an interface object that refers to this group goes away, either by being finalized or by its unref() method being invoked explicitly.


getInterface

public Service getInterface()
Service objects are not manipulated directly to protect usage of the service. A Service interface is returned to access the service methods.

Specified by:
getInterface in interface Service
Returns:
Service public interface of the service

getWeakInterface

public PeerGroup getWeakInterface()
Returns a weak interface object that represents this group.

A weak interface object has no life-cycle privileges over the group that it represents and therefore its users have no accountability. A weak interface object is safe to give away but holds no promise of sustained validity.

Whatever code gave away a weak interface object retains the power of terminating the group object from which it was obtained, thereby making the weak interface object invalid.

A weak interface object is immutable; its unref and stopApp methods do nothing. Its validity is exactly that of the group or interface object from which it was obtained.

A weak interface object can be obtained from an interface object, or from a real group object, or from a weak interface object. In the later case, the object returned may be the original weak interface object since such objects are immutable.

Whatever code obtains a weak interface object from a group object or regular interface object, remains entirely liable for invoking unref on the initial object before discarding it. Giving away a weak interface object is not equivalent to transferring ownership of the original.

Specified by:
getWeakInterface in interface PeerGroup
Returns:
PeerGroup A weak interface object that represents this PeerGroup object.

getImplAdvertisement

public ModuleImplAdvertisement getImplAdvertisement()
Returns the advertisement for this service.

Specified by:
getImplAdvertisement in interface Service
Returns:
Advertisement the advertisement. This is always a ModuleImplAdvertisement.

publishGroup

public void publishGroup(String name,
                         String description)
                  throws IOException
Publish this group's Peer Group Advertisement. The Advertisement will be published using the parent peer group's Discovery service.

Calling this method is only useful if the group is being created from scratch and the PeerGroup advertisement has not been created beforehand. In such a case, the group has never been named or described. Therefore this information has to be supplied here.

Specified by:
publishGroup in interface PeerGroup
Parameters:
name - The name of this group.
description - The description of this group.
Throws:
IOException - The publication could not be accomplished because of a network or storage failure.

newGroup

public PeerGroup newGroup(Advertisement pgAdv)
                   throws PeerGroupException
Instantiate a peer group from the provided advertisement. This peer group will be the parent of the newly instantiated peer group.

The pgAdv itself may be all new and unpublished. Therefore, the two typical uses of this routine are:

  • Creating an all new group with a new ID while using an existing and published implementation. (Possibly a new one published for that purpose). The information should first be gathered in a new PeerGroupAdvertisement which is then passed to this method.
  • Instantiating a group which advertisement has already been discovered (therefore there is no need to find it by groupID again).

Specified by:
newGroup in interface PeerGroup
Parameters:
pgAdv - The advertisement for the group to be instantiated.
Returns:
PeerGroup the initialized (but not started) peergroup.
Throws:
PeerGroupException - For problems instantiating the peer group.

newGroup

public PeerGroup newGroup(PeerGroupID gid,
                          Advertisement impl,
                          String name,
                          String description)
                   throws PeerGroupException
Instantiates a peer group from its elementary pieces and publishes the corresponding PeerGroupAdvertisement. The pieces are: the groups implementation adv, the group id, the name and description.

The typical use of this routine is creating a whole new group based on a newly created and possibly unpublished implementation adv.

This is a convenience method equivalent to either:

 newGrp = thisGroup.loadModule(gid, impl);
 newGrp.publishGroup(name, description);
 
or, but only if the implementation advertisement has been published:

 newPGAdv = AdvertisementFactory.newAdvertisement(
                 PeerGroupAdvertisement.getAdvertisementType());
 newPGAdv.setPeerGroupID(gid);
 newPGAdv.setModuleSpecID(impl.getModuleSpecID());
 newPGAdv.setName(name);
 newPGAdv.setDescription(description);
 newGrp = thisGroup.newGroup(newPGAdv);
 

Specified by:
newGroup in interface PeerGroup
Parameters:
gid - The ID of that group. If null then a new group ID will be chosen.
impl - The advertisement of the implementation to be used.
name - The name of the group.
description - A description of this group.
Returns:
PeerGroup the initialized (but not started) peergroup.
Throws:
PeerGroupException - Thrown if the group could not be instantiated.

newGroup

public PeerGroup newGroup(PeerGroupID gid)
                   throws PeerGroupException
Instantiate a group from its Peer Group ID only. Use this when using a group that has already been published and discovered.

The typical uses of this routine are therefore:

  • Instantiating a peer group which is assumed to exist and whose Peer Group ID is already known.
  • Creating a new peer group instance using an already published Group advertisement, typically published for that purpose. All other referenced advertisements must also be available.

To create a group from a known implAdv, just use PeerGroup.loadModule(ID,Advertisement) or even:

grp = new GroupSubClass(); grp.init(parentGroup, gid, impladv);

then, REMEMBER TO PUBLISH THE GROUP IF IT IS ALL NEW.

Specified by:
newGroup in interface PeerGroup
Parameters:
gid - the groupID.
Returns:
PeerGroup the initialized (but not started) peergroup.
Throws:
PeerGroupException - Thrown if the group could not be instantiated.

getLoader

public JxtaLoader getLoader()
Returns the class loader for this group.

Specified by:
getLoader in interface PeerGroup
Returns:
JxtaLoader The JXTA Class loader used by this group.

getPeerName

public String getPeerName()
Return the name of the local peer within this group. This name is not canonical, meaning that there may be other peers with the same name.

Specified by:
getPeerName in interface PeerGroup
Returns:
String This peer's name or null if no name was specified.

getPeerGroupName

public String getPeerGroupName()
Return the Name of this group. This name is not canonical, meaning that there may be other groups with the same name.

Specified by:
getPeerGroupName in interface PeerGroup
Returns:
String This groups's name or null if no name was specified.

getPeerGroupID

public PeerGroupID getPeerGroupID()
Return the Peer Group ID of this Peer Group.

Specified by:
getPeerGroupID in interface PeerGroup
Returns:
PeerGroupId The Peer Group ID of this Peer Group.

getPeerID

public PeerID getPeerID()
Return the Peer ID by which this Peer is known within this Peer Group.

Specified by:
getPeerID in interface PeerGroup
Returns:
the Peer ID by which this Peer is known within this Peer Group.

getPeerAdvertisement

public PeerAdvertisement getPeerAdvertisement()
Return the PeerAdvertisement of the local Peer within this Peer Group.

Specified by:
getPeerAdvertisement in interface PeerGroup
Returns:
the PeerAdvertisement of the local Peer within this Peer Group.

getPeerGroupAdvertisement

public PeerGroupAdvertisement getPeerGroupAdvertisement()
Return the PeerGroupAdvertisement for this group.

Specified by:
getPeerGroupAdvertisement in interface PeerGroup
Returns:
PeerGroupAdvertisement this Group's advertisement.

isRendezvous

public boolean isRendezvous()
Returns the whether the group member is a Rendezvous peer for the group.

Specified by:
isRendezvous in interface PeerGroup
Returns:
boolean true if the peer is a rendezvous for the group.

getEndpointService

public EndpointService getEndpointService()
Return the Endpoint Service for this Peer Group. This service is present in every Peer Group.

Specified by:
getEndpointService in interface PeerGroup
Returns:
EndpointService The Endpoint Service for this Peer Group.

getResolverService

public ResolverService getResolverService()
Return the Resolver Service for this Peer Group. This service is present in every Peer Group.

Specified by:
getResolverService in interface PeerGroup
Returns:
ResolverService The Resolver Service for this Peer Group.

getDiscoveryService

public DiscoveryService getDiscoveryService()
Return the Discovery Service for this Peer Group.

Specified by:
getDiscoveryService in interface PeerGroup
Returns:
The Discovery Service for this Peer Group or null if there is no PeerInfo Service in this Peer Group.

getPeerInfoService

public PeerInfoService getPeerInfoService()
Return the PeerInfo Service for this Peer Group.

Specified by:
getPeerInfoService in interface PeerGroup
Returns:
The PeerInfo Service for this Peer Group or null if there is no PeerInfo Service in this Peer Group.

getMembershipService

public MembershipService getMembershipService()
Return the Membership Service for this Peer Group. This service is present in every Peer Group.

Specified by:
getMembershipService in interface PeerGroup
Returns:
MembershipService The Membership Service for this Peer Group.

getPipeService

public PipeService getPipeService()
Return the Pipe Service for this Peer Group.

Specified by:
getPipeService in interface PeerGroup
Returns:
The Pipe Service for this Peer Group or null if there is no Pipe Service in this Peer Group.

getRendezVousService

public RendezVousService getRendezVousService()
Return the Rendezvous Service for this Peer Group. This service is optional and may not be present in all groups.

Specified by:
getRendezVousService in interface PeerGroup
Returns:
The Rendezvous Service for this Peer Group or null if there is no Rendezvous Service in this Peer Group.

getAccessService

public AccessService getAccessService()
Return the Access Service for this Peer Group. This service is present in every Peer Group.

Specified by:
getAccessService in interface PeerGroup
Returns:
AccessService The Access Service for this Peer Group.

getExecutor

public Executor getExecutor()
Returns the executor pool

Returns:
the executor pool

getScheduledExecutor

public ScheduledExecutorService getScheduledExecutor()
Returns the scheduled executor. The

Returns:
the scheduled executor

JXSE