public interface TreeCache<K,V> extends Lifecycle
Cache allowing for efficient tree-style access to cached data.
The primary purpose of this interface is to allow for efficient caching of tree-like structures such as directories,
as well as to provide a compatibility layer with JBoss Cache 3.x and earlier.
For most purposes, we expect people to use the Cache interface directly as it is simpler.
The tree API assumes that a collection of Nodes, organized in a tree structure underneath a root node,
contains key/value attributes of data.
Any locking happens on a node-level granularity, which means that all attributes on a node are atomic and in terms of
locking, is coarse grained. At the same time, replication is fine grained, and only modified attributes in a Node
are replicated.
Obtaining a TreeCache is done using the TreeCacheFactory.
Cache cache = new DefaultCacheFactory().getCache(); TreeCacheFactory tcf = new TreeCacheFactory(); TreeCache tree = tcf.createTreeCache(cache);
Node| Modifier and Type | Method and Description |
|---|---|
void |
clearData(Fqn fqn)
Removes the keys and properties from a named node.
|
void |
clearData(Fqn fqn,
Flag... flags) |
void |
clearData(String fqn)
Convenience method that takes in a String represenation of the Fqn.
|
void |
clearData(String fqn,
Flag... flags) |
boolean |
exists(Fqn fqn)
Tests if an Fqn exists.
|
boolean |
exists(Fqn fqn,
Flag... flags) |
boolean |
exists(String fqn)
Tests if an Fqn exists.
|
boolean |
exists(String fqn,
Flag... flags) |
V |
get(Fqn fqn,
K key)
Convenience method that allows for direct access to the data in a
Node. |
V |
get(Fqn fqn,
K key,
Flag... flags) |
V |
get(String fqn,
K key)
Convenience method that takes a string representation of an Fqn.
|
V |
get(String fqn,
K key,
Flag... flags) |
Cache<?,?> |
getCache() |
Map<K,V> |
getData(Fqn fqn)
Retrieves a defensively copied data map of the underlying node.
|
Map<K,V> |
getData(Fqn fqn,
Flag... flags) |
Set<K> |
getKeys(Fqn fqn)
Returns a set of attribute keys for the Fqn.
|
Set<K> |
getKeys(Fqn fqn,
Flag... flags) |
Set<K> |
getKeys(String fqn)
Convenience method that takes in a String represenation of the Fqn.
|
Set<K> |
getKeys(String fqn,
Flag... flags) |
Node<K,V> |
getNode(Fqn fqn)
A convenience method to retrieve a node directly from the cache.
|
Node<K,V> |
getNode(Fqn fqn,
Flag... flags) |
Node<K,V> |
getNode(String fqn)
Convenience method that takes a string representation of an Fqn.
|
Node<K,V> |
getNode(String fqn,
Flag... flags) |
Node<K,V> |
getRoot()
Returns the root node of this cache.
|
Node<K,V> |
getRoot(Flag... flags) |
void |
move(Fqn nodeToMove,
Fqn newParent)
Moves a part of the cache to a different subtree.
|
void |
move(Fqn nodeToMove,
Fqn newParent,
Flag... flags) |
void |
move(String nodeToMove,
String newParent)
Convenience method that takes in string representations of Fqns.
|
void |
move(String nodeToMove,
String newParent,
Flag... flags) |
V |
put(Fqn fqn,
K key,
V value)
Associates the specified value with the specified key for a
Node in this cache. |
V |
put(Fqn fqn,
K key,
V value,
Flag... flags) |
void |
put(Fqn fqn,
Map<? extends K,? extends V> data)
Copies all of the mappings from the specified map to a
Node. |
void |
put(Fqn fqn,
Map<? extends K,? extends V> data,
Flag... flags) |
V |
put(String fqn,
K key,
V value)
Convenience method that takes a string representation of an Fqn.
|
V |
put(String fqn,
K key,
V value,
Flag... flags) |
void |
put(String fqn,
Map<? extends K,? extends V> data)
Convenience method that takes a string representation of an Fqn.
|
void |
put(String fqn,
Map<? extends K,? extends V> data,
Flag... flags) |
V |
remove(Fqn fqn,
K key)
Removes the mapping for this key from a Node.
|
V |
remove(Fqn fqn,
K key,
Flag... flags) |
V |
remove(String fqn,
K key)
Convenience method that takes a string representation of an Fqn.
|
V |
remove(String fqn,
K key,
Flag... flags) |
boolean |
removeNode(Fqn fqn)
|
boolean |
removeNode(Fqn fqn,
Flag... flags) |
boolean |
removeNode(String fqn)
Convenience method that takes a string representation of an Fqn.
|
boolean |
removeNode(String fqn,
Flag... flags) |
V put(Fqn fqn, K key, V value)
Node in this cache. If the Node
previously contained a mapping for this key, the old value is replaced by the specified value.fqn - absolute Fqn to the Node to be accessed.key - key with which the specified value is to be associated.value - value to be associated with the specified key.null if there was no mapping for key. A
null return can also indicate that the Node previously associated null with the
specified key, if the implementation supports null values.IllegalStateException - if the cache is not in a started state.V put(String fqn, K key, V value)
put(Fqn, Object,
Object)fqn - String representation of the Fqnkey - key with which the specified value is to be associated.value - value to be associated with the specified key.null if there was no mapping for key. A
null return can also indicate that the Node previously associated null with the
specified key, if the implementation supports null values.IllegalStateException - if the cache is not in a started statevoid put(Fqn fqn, Map<? extends K,? extends V> data)
Node.fqn - absolute Fqn to the Node to copy the data todata - mappings to copyIllegalStateException - if the cache is not in a started statevoid put(String fqn, Map<? extends K,? extends V> data)
put(Fqn,
java.util.Map)fqn - String representation of the Fqndata - data map to insertIllegalStateException - if the cache is not in a started stateV remove(Fqn fqn, K key)
null if the Node contained no mapping for this key.fqn - absolute Fqn to the Node to be accessed.key - key whose mapping is to be removed from the NodeIllegalStateException - if the cache is not in a started stateV remove(String fqn, K key)
remove(Fqn,
Object)fqn - string representation of the Fqn to retrievekey - key to removeIllegalStateException - if the cache is not in a started stateboolean removeNode(Fqn fqn)
fqn - Node to removeIllegalStateException - if the cache is not in a started stateboolean removeNode(String fqn)
removeNode(Fqn)fqn - string representation of the Fqn to retrieveIllegalStateException - if the cache is not in a started stateNode<K,V> getNode(Fqn fqn)
fqn - fqn of the node to retrieveIllegalStateException - if the cache is not in a started stateNode<K,V> getNode(String fqn)
getNode(Fqn)fqn - string representation of the Fqn to retrieveIllegalStateException - if the cache is not in a started stateV get(Fqn fqn, K key)
Node.fqn - absolute Fqn to the Node to be accessed.key - key under which value is to be retrieved.Node denoted by specified Fqn.IllegalStateException - if the cache is not in a started stateV get(String fqn, K key)
get(Fqn,
Object)fqn - string representation of the Fqn to retrievekey - key to fetchIllegalStateException - if the cache is not in a started statevoid move(Fqn nodeToMove, Fqn newParent) throws NodeNotExistsException
/a/b/c
/a/b/d
/a/b/e
Fqn f1 = Fqn.fromString("/a/b/c");
Fqn f2 = Fqn.fromString("/a/b/d");
cache.move(f1, f2);
Will result in:
/a/b/d/c /a/b/eand now
Fqn f3 = Fqn.fromString("/a/b/e");
Fqn f4 = Fqn.fromString("/a");
cache.move(f3, f4);
will result in:
/a/b/d/c /a/eNo-op if the node to be moved is the root node. Note: As of 3.0.0 and when using MVCC locking, more specific behaviour is defined as follows:
nodeToMove - the Fqn of the node to move.newParent - new location under which to attach the node being moved.NodeNotExistsException - may throw one of these if the target node does not exist or if a different thread
has moved this node elsewhere already.IllegalStateException - if Cache.getStatus() would not return ComponentStatus.RUNNING.void move(Fqn nodeToMove, Fqn newParent, Flag... flags) throws NodeNotExistsException
NodeNotExistsExceptionvoid move(String nodeToMove, String newParent) throws NodeNotExistsException
move(Fqn, Fqn)IllegalStateException - if Cache.getStatus() would not return ComponentStatus.RUNNING.NodeNotExistsExceptionvoid move(String nodeToMove, String newParent, Flag... flags) throws NodeNotExistsException
NodeNotExistsExceptionMap<K,V> getData(Fqn fqn)
fqn - CacheExceptionIllegalStateException - if Cache.getStatus() would not return ComponentStatus.RUNNING.Set<K> getKeys(String fqn)
getKeys(Fqn).Set<K> getKeys(Fqn fqn)
fqn - name of the nodeIllegalStateException - if Cache.getStatus() would not return ComponentStatus.RUNNING.void clearData(String fqn)
clearData(Fqn).IllegalStateException - if Cache.getStatus() would not return ComponentStatus.RUNNING.void clearData(Fqn fqn)
fqn - name of the nodeIllegalStateException - if Cache.getStatus() would not return ComponentStatus.RUNNING.Cache<?,?> getCache()
boolean exists(String fqn)
exists(Fqn)fqn - string representation of an Fqnboolean exists(Fqn fqn)
fqn - Fqn to testCopyright © 2018 JBoss, a division of Red Hat. All rights reserved.