Package org.infinispan.tree
Interface TreeCache<K,V>
-
- All Superinterfaces:
Lifecycle
- All Known Implementing Classes:
TreeCacheImpl
public interface TreeCache<K,V> extends Lifecycle
This is a tree-like facade around aCache
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 theCache
interface directly as it is simpler. The tree API assumes that a collection ofNode
s, 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 theTreeCacheFactory
.Cache cache = new DefaultCacheFactory().getCache(); TreeCacheFactory tcf = new TreeCacheFactory(); TreeCache tree = tcf.createTreeCache(cache);
- Since:
- 4.0
- Author:
- Manik Surtani (manik AT jboss DOT org)
- See Also:
Node
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
clearData(String fqn)
Convenience method that takes in a String represenation of the Fqn.void
clearData(String fqn, Flag... flags)
void
clearData(Fqn fqn)
Removes the keys and properties from a named node.void
clearData(Fqn fqn, Flag... flags)
boolean
exists(String fqn)
Tests if an Fqn exists.boolean
exists(String fqn, Flag... flags)
boolean
exists(Fqn fqn)
Tests if an Fqn exists.boolean
exists(Fqn fqn, 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)
V
get(Fqn fqn, K key)
Convenience method that allows for direct access to the data in aNode
.V
get(Fqn 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(String fqn)
Convenience method that takes in a String represenation of the Fqn.Set<K>
getKeys(String fqn, Flag... flags)
Set<K>
getKeys(Fqn fqn)
Returns a set of attribute keys for the Fqn.Set<K>
getKeys(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>
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>
getRoot()
Returns the root node of this cache.Node<K,V>
getRoot(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)
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
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
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(Fqn fqn, Map<? extends K,? extends V> data)
Copies all of the mappings from the specified map to aNode
.void
put(Fqn fqn, Map<? extends K,? extends V> data, Flag... flags)
V
put(Fqn fqn, K key, V value)
Associates the specified value with the specified key for aNode
in this cache.V
put(Fqn fqn, K key, V value, 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)
V
remove(Fqn fqn, K key)
Removes the mapping for this key from a Node.V
remove(Fqn fqn, K key, Flag... flags)
boolean
removeNode(String fqn)
Convenience method that takes a string representation of an Fqn.boolean
removeNode(String fqn, Flag... flags)
boolean
removeNode(Fqn fqn)
boolean
removeNode(Fqn fqn, Flag... flags)
-
-
-
Method Detail
-
put
V put(Fqn fqn, K key, V value)
Associates the specified value with the specified key for aNode
in this cache. If theNode
previously contained a mapping for this key, the old value is replaced by the specified value.- Parameters:
fqn
- absoluteFqn
to theNode
to be accessed.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. Anull
return can also indicate that the Node previously associatednull
with the specified key, if the implementation supports null values. - Throws:
IllegalStateException
- if the cache is not in a started state.
-
put
V put(String fqn, K key, V value)
Convenience method that takes a string representation of an Fqn. Otherwise identical toput(Fqn, Object, Object)
- Parameters:
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.- Returns:
- previous value associated with specified key, or
null
if there was no mapping for key. Anull
return can also indicate that the Node previously associatednull
with the specified key, if the implementation supports null values. - Throws:
IllegalStateException
- if the cache is not in a started state
-
put
void put(Fqn fqn, Map<? extends K,? extends V> data)
Copies all of the mappings from the specified map to aNode
.- Parameters:
fqn
- absoluteFqn
to theNode
to copy the data todata
- mappings to copy- Throws:
IllegalStateException
- if the cache is not in a started state
-
put
void put(String fqn, Map<? extends K,? extends V> data)
Convenience method that takes a string representation of an Fqn. Otherwise identical toput(Fqn, java.util.Map)
- Parameters:
fqn
- String representation of the Fqndata
- data map to insert- Throws:
IllegalStateException
- if the cache is not in a started state
-
remove
V remove(Fqn fqn, K key)
Removes the mapping for this key from a Node. Returns the value to which the Node previously associated the key, ornull
if the Node contained no mapping for this key.- Parameters:
fqn
- absoluteFqn
to theNode
to be accessed.key
- key whose mapping is to be removed from the Node- Returns:
- previous value associated with specified Node's key
- Throws:
IllegalStateException
- if the cache is not in a started state
-
remove
V remove(String fqn, K key)
Convenience method that takes a string representation of an Fqn. Otherwise identical toremove(Fqn, Object)
- Parameters:
fqn
- string representation of the Fqn to retrievekey
- key to remove- Returns:
- old value removed, or null if the fqn does not exist
- Throws:
IllegalStateException
- if the cache is not in a started state
-
removeNode
boolean removeNode(Fqn fqn)
- Parameters:
fqn
-Node
to remove- Returns:
- true if the node was removed, false if the node was not found
- Throws:
IllegalStateException
- if the cache is not in a started state
-
removeNode
boolean removeNode(String fqn)
Convenience method that takes a string representation of an Fqn. Otherwise identical toremoveNode(Fqn)
- Parameters:
fqn
- string representation of the Fqn to retrieve- Returns:
- true if the node was found and removed, false otherwise
- Throws:
IllegalStateException
- if the cache is not in a started state
-
getNode
Node<K,V> getNode(Fqn fqn)
A convenience method to retrieve a node directly from the cache. Equivalent to calling cache.getRoot().getChild(fqn).- Parameters:
fqn
- fqn of the node to retrieve- Returns:
- a Node object, or a null if the node does not exist.
- Throws:
IllegalStateException
- if the cache is not in a started state
-
getNode
Node<K,V> getNode(String fqn)
Convenience method that takes a string representation of an Fqn. Otherwise identical togetNode(Fqn)
- Parameters:
fqn
- string representation of the Fqn to retrieve- Returns:
- node, or null if the node does not exist
- Throws:
IllegalStateException
- if the cache is not in a started state
-
get
V get(Fqn fqn, K key)
Convenience method that allows for direct access to the data in aNode
.- Parameters:
fqn
- absoluteFqn
to theNode
to be accessed.key
- key under which value is to be retrieved.- Returns:
- returns data held under specified key in
Node
denoted by specified Fqn. - Throws:
IllegalStateException
- if the cache is not in a started state
-
get
V get(String fqn, K key)
Convenience method that takes a string representation of an Fqn. Otherwise identical toget(Fqn, Object)
- Parameters:
fqn
- string representation of the Fqn to retrievekey
- key to fetch- Returns:
- value, or null if the fqn does not exist.
- Throws:
IllegalStateException
- if the cache is not in a started state
-
move
void move(Fqn nodeToMove, Fqn newParent) throws NodeNotExistsException
Moves a part of the cache to a different subtree. E.g.: assume a cache structure such as:/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/e
and nowFqn f3 = Fqn.fromString("/a/b/e"); Fqn f4 = Fqn.fromString("/a"); cache.move(f3, f4);
will result in:/a/b/d/c /a/e
No-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:- A no-op if the node is moved unto itself. E.g., move(fqn, fqn.getParent()) will not do anything.
- If a target node does not exist it will be created silently, to be more consistent with other APIs such as put() on a nonexistent node.
- If the source node does not exist this is a no-op, to be more consistent with other APIs such as get() on a nonexistent node.
- Parameters:
nodeToMove
- the Fqn of the node to move.newParent
- new location under which to attach the node being moved.- Throws:
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
- ifCache.getStatus()
would not returnComponentStatus.RUNNING
.
-
move
void move(Fqn nodeToMove, Fqn newParent, Flag... flags) throws NodeNotExistsException
- Throws:
NodeNotExistsException
-
move
void move(String nodeToMove, String newParent) throws NodeNotExistsException
Convenience method that takes in string representations of Fqns. Otherwise identical tomove(Fqn, Fqn)
- Throws:
IllegalStateException
- ifCache.getStatus()
would not returnComponentStatus.RUNNING
.NodeNotExistsException
-
move
void move(String nodeToMove, String newParent, Flag... flags) throws NodeNotExistsException
- Throws:
NodeNotExistsException
-
getData
Map<K,V> getData(Fqn fqn)
Retrieves a defensively copied data map of the underlying node. A convenience method to retrieving a node and getting data from the node directly.- Parameters:
fqn
-- Returns:
- map of data, or an empty map
- Throws:
CacheException
IllegalStateException
- ifCache.getStatus()
would not returnComponentStatus.RUNNING
.
-
getKeys
Set<K> getKeys(String fqn)
Convenience method that takes in a String represenation of the Fqn. Otherwise identical togetKeys(Fqn)
.
-
getKeys
Set<K> getKeys(Fqn fqn)
Returns a set of attribute keys for the Fqn. Returns null if the node is not found, otherwise a Set. The set is a copy of the actual keys for this node. A convenience method to retrieving a node and getting keys from the node directly.- Parameters:
fqn
- name of the node- Throws:
IllegalStateException
- ifCache.getStatus()
would not returnComponentStatus.RUNNING
.
-
clearData
void clearData(String fqn)
Convenience method that takes in a String represenation of the Fqn. Otherwise identical toclearData(Fqn)
.- Throws:
IllegalStateException
- ifCache.getStatus()
would not returnComponentStatus.RUNNING
.
-
clearData
void clearData(Fqn fqn)
Removes the keys and properties from a named node. A convenience method to retrieving a node and getting keys from the node directly.- Parameters:
fqn
- name of the node- Throws:
IllegalStateException
- ifCache.getStatus()
would not returnComponentStatus.RUNNING
.
-
getCache
Cache<?,?> getCache()
- Returns:
- a reference to the underlying cache instance
-
exists
boolean exists(String fqn)
Tests if an Fqn exists. Convenience method forexists(Fqn)
- Parameters:
fqn
- string representation of an Fqn- Returns:
- true if the fqn exists, false otherwise
-
exists
boolean exists(Fqn fqn)
Tests if an Fqn exists.- Parameters:
fqn
- Fqn to test- Returns:
- true if the fqn exists, false otherwise
-
-