public class ChainOfR<T,V,S> extends java.lang.Object implements Copyable
Modifier and Type | Class and Description |
---|---|
static class |
ChainOfR.DuplicateIndexException |
static class |
ChainOfR.IndexNotFoundException |
static interface |
ChainOfR.RequestHandler<V,S> |
Constructor and Description |
---|
ChainOfR(ChainOfR.RequestHandler<V,S> handler) |
Modifier and Type | Method and Description |
---|---|
void |
add(T chainIndex,
T chainParentIndex,
V userObject)
Adds a new User Object to a chain.
|
java.lang.Object |
copyTo(java.lang.Object target)
Shallow copies the data structure that implements the ChainOfR pattern.
|
protected void |
copyToImpl(ChainOfR<T,V,S> copy) |
V |
get(T chainIndex) |
V |
getHandlingObject(T startNodeIndex,
S request)
Same as handle(), but return the user object that handled the request.
|
V |
getParent(T chainIndex) |
T |
getParentLabel(T chainIndex) |
boolean |
handle(T startNodeIndex,
S request)
Handle the command, starting from a certain node and traversing
referred nodes.
|
void |
purge()
Delete all nodes in this chain, intended for testing.
|
void |
replace(T chainIndex,
V userObject)
Replace an existing User Object with a new one.
|
public ChainOfR(ChainOfR.RequestHandler<V,S> handler)
public boolean handle(T startNodeIndex, S request) throws java.lang.Exception
ChainOfR.IndexNotFoundException
- if the starting index cannot be found.java.lang.Exception
- any other exception raised when handling the request.public V getHandlingObject(T startNodeIndex, S request) throws java.lang.Exception
ChainOfR.IndexNotFoundException
- if startNodeIndex is not foundjava.lang.Exception
- if an error occurs when processing the request.public void add(T chainIndex, T chainParentIndex, V userObject) throws ChainOfR.DuplicateIndexException, MetadataException
chainIndex
- a label for the new handlerchainParentIndex
- label for the parent for this handleruserObject
- a user object that should be associated with this handlerMetadataException
- if chainIndex, or chainParentIndex cannot be found.ChainOfR.DuplicateIndexException
public void replace(T chainIndex, V userObject) throws MetadataException
chainIndex
- userObject
- MetadataException
- if chainIndex is not foundpublic T getParentLabel(T chainIndex) throws ChainOfR.IndexNotFoundException
ChainOfR.IndexNotFoundException
public V getParent(T chainIndex) throws ChainOfR.IndexNotFoundException
ChainOfR.IndexNotFoundException
public V get(T chainIndex) throws ChainOfR.IndexNotFoundException
ChainOfR.IndexNotFoundException
public void purge()
public java.lang.Object copyTo(java.lang.Object target)