Project JXTA

net.jxta.impl.id.binaryID
Class ModuleClassBinaryID

java.lang.Object
  extended by net.jxta.id.ID
      extended by net.jxta.platform.ModuleClassID
          extended by net.jxta.impl.id.binaryID.ModuleClassBinaryID
All Implemented Interfaces:
Serializable

public final class ModuleClassBinaryID
extends ModuleClassID

This interface defines a Module Class Identifier. A ModuleClassID uniquely identifies a particular local behaviour, that is, a specific API for each execution environment for which an implementation exists.

A ModuleClassID has two components: A base class identifier, and a role identifier. The role identifier may be zero. By convention the API uses the ModuleClassID with a zero role identifier to designate the base class in contexts where only the base class is significant. Nonetheless, a ModuleClassID with a zero role identifier is a valid ModulesClassID wherever a full ModuleClassID is expected. In many cases, only one role in a given class is ever used. Using role zero in such cases is an optimization because it may make the string representation of the ModuleClassID shorter.

Each service of a group, that is, the role it plays in the group, is uniquely identified per the group definition. This identifier may be used by other modules in the group to designate this one, or by the service itself to identify its parameters in a PeerAdvertisement. In addition, by combining its PeerGroupID with its own ModuleClassID, a service may create a predictible identifier unique on their peer, suitable for registering listeners with the EndpointService or other services with similar listener interfaces.

The standard PeerGroup implementation of the java reference implementation assigns to each service its ModuleClassID as its unique service identifier. Most of the times this ModuleClassID is a base classID, but groups that use the same Module Class for more than one service (same behaviour but playing a different role in the group, such as, for example, a data base engine with a different data base), may define multiple roles identified by the same base class identifier but different role identifiers. The standard PeerGroup implementation of the java reference implementation has the notion of main application: a default application which may be started automatically upon instantiating the group. This application implements Module and, therefore, is assigned a ModuleClassID. However applications are not expected to play any specific role in the group. As a result, they are assigned a role identifier allocated at run-time as need to garantee local unicity. As a result main applications cannot expect a predictible ClassID.

A ModuleClassID is optionaly described by a published ModuleClassAdvertisement.

There may be any number of embodiements of a module class. These are module specifications. A module specification represent the network behaviour of a module while its class represents its local behaviour. Different groups may use a common subset of classes, for example, the basic set defined by the platform should always be part of it. Each group may use different and network-incompatible specifications for common classes, optimized for various purposes. The local API of a given class on a given JXTA implementation will be invariant per the spec being used. Therefore, the difference will be transparent to applications which do not depend on the possibly different quality of service.

A ModuleSpecID embeds a base class identifier, which permits to verify that a given Module specification is suitable for its intended use.

Author:
Daniel Brookshier turbogeek@cluck.com
See Also:
PeerGroup, Module, ModuleClassID, PeerAdvertisement, ModuleSpecAdvertisement, ModuleClassAdvertisement, EndpointService, ID, Serialized Form

Field Summary
protected  BinaryID classID
          The id data
protected  BinaryID parentClassID
           
protected  PeerGroupID peerGroupID
           
protected  BinaryID roleID
           
 
Fields inherited from class net.jxta.id.ID
nullID, URIEncodingName, URNNamespace
 
Constructor Summary
  ModuleClassBinaryID()
          Constructor for creating a new ModuleClassID.
protected ModuleClassBinaryID(BinaryID classID, BinaryID parentClassID, BinaryID roleID, BinaryID peerGroupID)
           
protected ModuleClassBinaryID(BinaryID classID, BinaryID parentClassID, BinaryID roleID, PeerGroupID peerGroupID)
          Constructor.
protected ModuleClassBinaryID(String id)
          Constructor.
 
Method Summary
 boolean equals(Object target)
          
 ModuleClassID getBaseClass()
          
 BinaryID getBaseClassID()
          Getter for property parentClassID.
 BinaryID getClassID()
          get the class' unique id
protected  String getID()
          returns the coded ID without the binaryid tag.
 String getIDFormat()
          
 ID getPeerGroupID()
          
 BinaryID getRoleID()
          get the role unique id
 Object getUniqueValue()
          
 URL getURL()
          
 int hashCode()
          
 boolean isOfSameBaseClass(ModuleClassID classId)
          
 boolean isOfSameBaseClass(ModuleSpecID specId)
          
 
Methods inherited from class net.jxta.id.ID
clone, create, toString, toURI
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

classID

protected BinaryID classID
The id data


parentClassID

protected BinaryID parentClassID

roleID

protected BinaryID roleID

peerGroupID

protected PeerGroupID peerGroupID
Constructor Detail

ModuleClassBinaryID

protected ModuleClassBinaryID(String id)
Constructor. Intializes contents from provided ID.

Parameters:
id - the ID data
Since:
JXTA 1.0

ModuleClassBinaryID

protected ModuleClassBinaryID(BinaryID classID,
                              BinaryID parentClassID,
                              BinaryID roleID,
                              PeerGroupID peerGroupID)
Constructor. Creates a ModuleClassID in a given class, with a given class unique id. A BinaryID of a class and another BinaryID are provided.

Parameters:
classBinaryID - the class to which this will belong.
roleBinaryID - the unique id of this role in that class.
Since:
JXTA 1.0

ModuleClassBinaryID

protected ModuleClassBinaryID(BinaryID classID,
                              BinaryID parentClassID,
                              BinaryID roleID,
                              BinaryID peerGroupID)

ModuleClassBinaryID

public ModuleClassBinaryID()
Constructor for creating a new ModuleClassID. A new class BinaryID is created. The role ID is left null. This is the only way to create a new class without supplying a new BinaryID explicitly. To create a new role in an existing class, one must use one of the other constructors. Note that a null role is just as valid as any other, it just has a shorter string representation. So it is not mandatory to create a new role in a new class.

Since:
JXTA 1.0
Method Detail

equals

public boolean equals(Object target)

Overrides:
equals in class Object

hashCode

public int hashCode()

Overrides:
hashCode in class Object

getIDFormat

public String getIDFormat()

Specified by:
getIDFormat in class ID

getUniqueValue

public Object getUniqueValue()

Specified by:
getUniqueValue in class ID

getURL

public URL getURL()

Specified by:
getURL in class ID

getPeerGroupID

public ID getPeerGroupID()


getID

protected String getID()
returns the coded ID without the binaryid tag.

Returns:
string of the contents

getBaseClass

public ModuleClassID getBaseClass()

Specified by:
getBaseClass in class ModuleClassID

isOfSameBaseClass

public boolean isOfSameBaseClass(ModuleClassID classId)

Specified by:
isOfSameBaseClass in class ModuleClassID

isOfSameBaseClass

public boolean isOfSameBaseClass(ModuleSpecID specId)

Specified by:
isOfSameBaseClass in class ModuleClassID

getClassID

public BinaryID getClassID()
get the class' unique id

Returns:
BinaryID module class' unique id
Since:
JXTA 1.0

getRoleID

public BinaryID getRoleID()
get the role unique id

Returns:
Module role unique id.
Since:
JXTA 1.0

getBaseClassID

public BinaryID getBaseClassID()
Getter for property parentClassID.

Returns:
Value of property parentClassID.

JXTA J2SE