Package org.infinispan.tree
Interface Node<K,V>
-
@ThreadSafe public interface Node<K,V>A Node is anamedlogical grouping of data in theTreeCacheAPI of JBossCache. A node should be used to contain data for a single data record, for example information about a particular person or account. One purpose of grouping cache data into separate nodes is to minimize transaction locking interference, and increase concurrency. So for example, when multiple threads or possibly distributed caches are accessing different accounts simultaneously. A node has references to its children, parent (each node except the root - defined byFqn.ROOT- has a single parent) and data contained within the node (as key/value pairs). The data access methods are similar to the collectionsMapinterface, but some are read-only or return copies of the underlying data.- Since:
- 4.0
- Author:
- Manik Surtani (manik AT jboss DOT org)
- See Also:
TreeCache
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Node<K,V>addChild(Fqn f)Adds a child node with the givenFqnunder the current node.Node<K,V>addChild(Fqn f, Flag... flags)voidclearData()Removes all mappings from the node's data map.voidclearData(Flag... flags)intdataSize()intdataSize(Flag... flags)Vget(K key)Returns the value to which this node maps the specified key.Vget(K key, Flag... flags)Node<K,V>getChild(java.lang.Object name)Node<K,V>getChild(java.lang.Object name, Flag... flags)Node<K,V>getChild(Fqn f)Returns the child nodeNode<K,V>getChild(Fqn f, Flag... flags)java.util.Set<Node<K,V>>getChildren()Returns an immutable set of children nodes.java.util.Set<Node<K,V>>getChildren(Flag... flags)java.util.Set<java.lang.Object>getChildrenNames()Returns an immutable set of children node names.java.util.Set<java.lang.Object>getChildrenNames(Flag... flags)java.util.Map<K,V>getData()Returns a map containing the data in thisNode.java.util.Map<K,V>getData(Flag... flags)FqngetFqn()java.util.Set<K>getKeys()Returns aSetcontaining the data in thisNode.java.util.Set<K>getKeys(Flag... flags)Node<K,V>getParent()Returns the parent node.Node<K,V>getParent(Flag... flags)booleanhasChild(java.lang.Object o)Returns true if the child node denoted by the Object name passed in exists.booleanhasChild(java.lang.Object o, Flag... flags)booleanhasChild(Fqn f)Returns true if the child node denoted by the relativeFqnpassed in exists.booleanhasChild(Fqn f, Flag... flags)booleanisValid()Tests if a node reference is still valid.Vput(K key, V value)Associates the specified value with the specified key for this node.Vput(K key, V value, Flag... flags)voidputAll(java.util.Map<? extends K,? extends V> map)Copies all of the mappings from the specified map to this node's map.voidputAll(java.util.Map<? extends K,? extends V> map, Flag... flags)VputIfAbsent(K key, V value)If the specified key is not already associated with a value, associate it with the given value, and returns the Object (if any) that occupied the space, or null.VputIfAbsent(K key, V value, Flag... flags)Vremove(K key)Removes the mapping for this key from this node if it is present.Vremove(K key, Flag... flags)booleanremoveChild(java.lang.Object childName)Removes a child node specified by the given name.booleanremoveChild(java.lang.Object childName, Flag... flags)booleanremoveChild(Fqn f)Removes a child node specified by the given relativeFqn.booleanremoveChild(Fqn f, Flag... flags)voidremoveChildren()voidremoveChildren(Flag... flags)Vreplace(K key, V value)Replace entry for key only if currently mapped to some value.Vreplace(K key, V value, Flag... flags)booleanreplace(K key, V oldValue, V newValue)Replace entry for key only if currently mapped to given value.booleanreplace(K key, V oldValue, V newValue, Flag... flags)voidreplaceAll(java.util.Map<? extends K,? extends V> map)Similar toputAll(java.util.Map)except that it removes any entries that exists in the data map first.voidreplaceAll(java.util.Map<? extends K,? extends V> map, Flag... flags)
-
-
-
Method Detail
-
getParent
Node<K,V> getParent()
Returns the parent node. If this is the root node, this method returnsthis.- Returns:
- the parent node, or self if this is the root node
-
getChildren
java.util.Set<Node<K,V>> getChildren()
Returns an immutable set of children nodes.- Returns:
- an immutable
Setof child nodes. EmptySetif there aren't any children.
-
getChildrenNames
java.util.Set<java.lang.Object> getChildrenNames()
Returns an immutable set of children node names.- Returns:
- an immutable
Setof child node names. EmptySetif there aren't any children.
-
getChildrenNames
java.util.Set<java.lang.Object> getChildrenNames(Flag... flags)
-
getData
java.util.Map<K,V> getData()
Returns a map containing the data in thisNode.- Returns:
- a
Mapcontaining the data in thisNode. If there is no data, an emptyMapis returned. TheMapreturned is always immutable.
-
getKeys
java.util.Set<K> getKeys()
Returns aSetcontaining the data in thisNode.- Returns:
- a
Setcontaining the data in thisNode. If there is no data, an emptySetis returned. TheSetreturned is always immutable.
-
getFqn
Fqn getFqn()
-
addChild
Node<K,V> addChild(Fqn f)
Adds a child node with the givenFqnunder the current node. Returns the newly created node. If the child exists returns the child node anyway. Guaranteed to return a non-null node. TheFqnpassed in is relative to the current node. The new child node will have an absolute fqn calculated as follows:new Fqn(getFqn(), f)
. SeeFqnfor the operation of this constructor.- Parameters:
f-Fqnof the child node, relative to the current node.- Returns:
- the newly created node, or the existing node if one already exists.
-
removeChild
boolean removeChild(Fqn f)
Removes a child node specified by the given relativeFqn. If you wish to remove children based on absoluteFqns, use theTreeCacheinterface instead.- Parameters:
f-Fqnof the child node, relative to the current node.- Returns:
- true if the node was found and removed, false otherwise
-
removeChild
boolean removeChild(java.lang.Object childName)
Removes a child node specified by the given name.- Parameters:
childName- name of the child node, directly under the current node.- Returns:
- true if the node was found and removed, false otherwise
-
removeChild
boolean removeChild(java.lang.Object childName, Flag... flags)
-
getChild
Node<K,V> getChild(Fqn f)
Returns the child node- Parameters:
f-Fqnof the child node- Returns:
- null if the child does not exist.
-
getChild
Node<K,V> getChild(java.lang.Object name)
- Parameters:
name- name of the child- Returns:
- a direct child of the current node.
-
put
V put(K key, V value)
Associates the specified value with the specified key for this node. If this node previously contained a mapping for this key, the old value is replaced by the specified value.- Parameters:
key- key with which the specified value is to be associated.value- value to be associated with the specified key.- Returns:
- Returns the old value contained under this key. Null if key doesn't exist.
-
putIfAbsent
V putIfAbsent(K key, V value)
If the specified key is not already associated with a value, associate it with the given value, and returns the Object (if any) that occupied the space, or null. Equivalent to callingif (!node.getKeys().contains(key)) return node.put(key, value); else return node.get(key);except that this is atomic.- Parameters:
key- key with which the specified value is to be associated.value- value to be associated with the specified key.- Returns:
- previous value associated with specified key, or null if there was no mapping for key.
-
replace
V replace(K key, V value)
Replace entry for key only if currently mapped to some value. Acts asif ((node.getKeys().contains(key)) { return node.put(key, value); } else return null;except that this is atomic.- Parameters:
key- key with which the specified value is associated.value- value to be associated with the specified key.- Returns:
- previous value associated with specified key, or null if there was no mapping for key.
-
replace
boolean replace(K key, V oldValue, V newValue)
Replace entry for key only if currently mapped to given value. Acts asif (node.get(key).equals(oldValue)) { node.put(key, newValue); return true; } else return false;except that this is atomic.- Parameters:
key- key with which the specified value is associated.oldValue- value expected to be associated with the specified key.newValue- value to be associated with the specified key.- Returns:
- true if the value was replaced
-
putAll
void putAll(java.util.Map<? extends K,? extends V> map)
Copies all of the mappings from the specified map to this node's map. If any data exists, existing keys are overwritten with the keys in the new map. The behavior is equivalent to:Node node; for (Map.Entry me : map.entrySet()) node.put(me.getKey(), me.getValue());
- Parameters:
map- map to copy from
-
replaceAll
void replaceAll(java.util.Map<? extends K,? extends V> map)
Similar toputAll(java.util.Map)except that it removes any entries that exists in the data map first. Note that this happens atomically, under a single lock. This is the analogous to doing aclearData()followed by aputAll(java.util.Map)in the same transaction.- Parameters:
map- map to copy from
-
get
V get(K key)
Returns the value to which this node maps the specified key. Returnsnullif the node contains no mapping for this key.- Parameters:
key- key of the data to return- Returns:
- the value to which this node maps the specified key, or
nullif the map contains no mapping for this key
-
remove
V remove(K key)
Removes the mapping for this key from this node if it is present. Returns the value to which the node previously associated the key, ornullif the node contained no mapping for this key- Parameters:
key- key whose mapping is to be removed- Returns:
- previous value associated with specified key, or
nullif there was no mapping for key
-
clearData
void clearData()
Removes all mappings from the node's data map.
-
clearData
void clearData(Flag... flags)
-
dataSize
int dataSize()
- Returns:
- the number of elements (key/value pairs) in the node's data map.
-
dataSize
int dataSize(Flag... flags)
-
hasChild
boolean hasChild(Fqn f)
Returns true if the child node denoted by the relativeFqnpassed in exists.
-
hasChild
boolean hasChild(java.lang.Object o)
Returns true if the child node denoted by the Object name passed in exists.- Parameters:
o- name of the child, relative to the current node- Returns:
- true if the child node denoted by the name passed in exists.
-
hasChild
boolean hasChild(java.lang.Object o, Flag... flags)
-
isValid
boolean isValid()
Tests if a node reference is still valid. A node reference may become invalid if it has been removed, invalidated or moved, either locally or remotely. If a node is invalid, it should be fetched again from the cache or a valid parent node. Operations on invalid nodes will throw aNodeNotValidException.- Returns:
- true if the node is valid.
-
removeChildren
void removeChildren()
-
removeChildren
void removeChildren(Flag... flags)
-
-