public class CacheInvocationDelegate<K,V> extends AbstractInvocationDelegate implements CacheSPI<K,V>
componentRegistry, configuration, invocationContextContainer, invoker, originLocal
Constructor and Description |
---|
CacheInvocationDelegate() |
Modifier and Type | Method and Description |
---|---|
void |
addCacheListener(Object listener)
Adds a
CacheListener -annotated object to the entire cache. |
void |
addInterceptor(CommandInterceptor i,
Class<? extends CommandInterceptor> afterInterceptor)
Adds a custom interceptor to the interceptor chain, after an instance of the specified interceptor type.
|
void |
addInterceptor(CommandInterceptor i,
int position)
Adds a custom interceptor to the interceptor chain, at specified position, where the first interceptor in the chain
is at position 0 and the last one at getInterceptorChain().size() - 1.
|
protected void |
cacheStatusCheck(InvocationContext ctx) |
void |
clearData(Fqn fqn)
Removes the keys and properties from a named node.
|
void |
clearData(String fqn)
Removes the keys and properties from a node.
|
void |
create()
Lifecycle method that initializes configuration state, the root node, etc.
|
void |
destroy()
Lifecycle method that destroys the cache and removes any interceptors/configuration elements.
|
void |
endBatch(boolean successful)
Ends an existing ongoing batch.
|
void |
evict(Fqn fqn)
Eviction call that evicts the specified
Node from memory. |
void |
evict(Fqn fqn,
boolean recursive)
Eviction call that evicts the specified
Node from memory. |
boolean |
exists(Fqn fqn)
Helper method that does a peek and ensures that the result of the peek is not null.
|
boolean |
exists(String fqn)
A convenience method that takes a String representation of an Fqn.
|
V |
get(Fqn fqn,
K key)
Convenience method that allows for direct access to the data in a
Node . |
V |
get(String fqn,
K key)
Convenience method that takes a string representation of an Fqn.
|
BuddyManager |
getBuddyManager()
Retrieves the current BuddyManager instance associated with the current Cache instance.
|
Set<Object> |
getCacheListeners()
Retrieves an immutable
List of objects annotated as CacheListener s attached to the cache. |
CacheLoaderManager |
getCacheLoaderManager()
Retrieves the current CacheCacheLoaderManager instance associated with the current Cache instance.
|
CacheStatus |
getCacheStatus()
Gets where the cache currently is its lifecycle transitions.
|
Set<Object> |
getChildrenNames(Fqn fqn)
Returns all children of a given node.
|
Set<String> |
getChildrenNames(String fqn)
Convenience method that takes a String representation of an Fqn.
|
String |
getClusterName() |
ComponentRegistry |
getComponentRegistry()
Returns the component registry associated with this cache instance.
|
Configuration |
getConfiguration()
Retrieves the configuration of this cache.
|
GlobalTransaction |
getCurrentTransaction()
Returns the transaction associated with the current thread.
|
GlobalTransaction |
getCurrentTransaction(Transaction tx,
boolean createIfNotExists)
Returns the global transaction for this local transaction.
|
Map<K,V> |
getData(Fqn fqn)
Retrieves a defensively copied data map of the underlying node.
|
DataContainer |
getDataContainer() |
List<CommandInterceptor> |
getInterceptorChain()
Retrieves the current Interceptor chain.
|
Set<Fqn> |
getInternalFqns()
Returns a Set
|
InvocationContext |
getInvocationContext() |
Set<K> |
getKeys(Fqn fqn)
Returns a set of attribute keys for the Fqn.
|
Set<K> |
getKeys(String fqn)
Convenience method that takes in a String represenation of the Fqn.
|
org.jgroups.Address |
getLocalAddress()
Returns the local address of this cache in a cluster, or
null
if running in local mode. |
Marshaller |
getMarshaller()
Retrieves an instance of a
Marshaller , which is capable of
converting Java objects to bytestreams and back in an efficient manner, which is
also interoperable with bytestreams produced/consumed by other versions of JBoss
Cache. |
List<org.jgroups.Address> |
getMembers()
Returns a list of members in the cluster, or
null
if running in local mode. |
NodeSPI<K,V> |
getNode(Fqn fqn)
|
NodeSPI<K,V> |
getNode(String fqn)
|
Notifier |
getNotifier()
Retrieves the current Notifier instance associated with the current Cache instance.
|
int |
getNumberOfAttributes() |
int |
getNumberOfLocksHeld() |
int |
getNumberOfNodes() |
Region |
getRegion(Fqn fqn,
boolean createIfAbsent)
|
RegionManager |
getRegionManager()
Retrieves the current RegionManager instance associated with the current Cache instance.
|
NodeSPI<K,V> |
getRoot()
|
RPCManager |
getRPCManager()
Gets a handle of the RPC manager.
|
StateTransferManager |
getStateTransferManager()
Retrieves the current StateTransferManager instance associated with the current Cache instance.
|
TransactionManager |
getTransactionManager()
Retrieves a reference to a running
TransactionManager , if one is configured. |
TransactionTable |
getTransactionTable()
Retrieves the current TransactionTable instance associated with the current Cache instance.
|
String |
getVersion()
Returns the version of the cache as a string.
|
GravitateResult |
gravitateData(Fqn fqn,
boolean searchBuddyBackupSubtrees,
InvocationContext ctx)
Used with buddy replication's data gravitation interceptor.
|
void |
initialize(StateTransferManager stateTransferManager,
CacheLoaderManager cacheLoaderManager,
Notifier notifier,
TransactionManager transactionManager,
BuddyManager buddyManager,
TransactionTable transactionTable,
RPCManager rpcManager,
RegionManager regionManager,
Marshaller marshaller,
CommandsFactory commandsFactory,
DataContainer dataContainer,
MVCCNodeHelper mvccHelper,
BatchContainer batchContainer) |
boolean |
isLeaf(Fqn fqn)
Tests if a node is a leaf, i.e., doesn't have any children
|
boolean |
isLeaf(String fqn)
Tests if a node is a leaf, i.e., doesn't have any children
|
void |
move(Fqn nodeToMove,
Fqn newParent)
Moves a part of the cache to a different subtree.
|
void |
move(String nodeToMove,
String newParent)
Convenience method that takes in string representations of Fqns.
|
NodeSPI<K,V> |
peek(Fqn fqn,
boolean includeDeletedNodes)
Returns a node without accessing the interceptor chain.
|
NodeSPI<K,V> |
peek(Fqn fqn,
boolean includeDeletedNodes,
boolean includeInvalidNodes)
Returns a node without accessing the interceptor chain, optionally returning nodes that are marked as invalid (
Node.isValid() == false). |
V |
put(Fqn fqn,
K key,
V value)
Associates the specified value with the specified key for a
Node in this cache. |
void |
put(Fqn fqn,
Map<? extends K,? extends V> data)
Copies all of the mappings from the specified map to a
Node . |
V |
put(String fqn,
K key,
V value)
Convenience method that takes a string representation of an Fqn.
|
void |
put(String fqn,
Map<? extends K,? extends V> data)
Convenience method that takes a string representation of an Fqn.
|
void |
putForExternalRead(Fqn fqn,
K key,
V value)
Under special operating behavior, associates the value with the specified key for a node identified by the Fqn passed in.
|
V |
remove(Fqn fqn,
K key)
Removes the mapping for this key from a Node.
|
V |
remove(String fqn,
K key)
Convenience method that takes a string representation of an Fqn.
|
void |
removeCacheListener(Object listener)
Removes a
CacheListener -annotated object from the cache. |
void |
removeInterceptor(Class<? extends CommandInterceptor> interceptorType)
Removes the interceptor of specified type.
|
void |
removeInterceptor(int position)
Removes the interceptor at a specified position, where the first interceptor in the chain
is at position 0 and the last one at getInterceptorChain().size() - 1.
|
boolean |
removeNode(Fqn fqn)
|
boolean |
removeNode(String fqn)
Convenience method that takes a string representation of an Fqn.
|
boolean |
removeRegion(Fqn fqn)
Removes a region denoted by the Fqn passed in.
|
void |
setInvocationContext(InvocationContext ctx)
Sets the passed in
InvocationContext as current. |
void |
start()
Lifecycle method that starts the cache loader,
starts cache replication, starts the region manager, etc., and (if configured) warms the cache using a
state transfer or cache loader preload.
|
void |
startBatch()
Starts a batch.
|
void |
stop()
Lifecycle method that stops the cache, including replication,
clustering, cache loading, notifications, etc., and clears all cache in-memory state.
|
String |
toString() |
assertIsConstructed, initialize
public void initialize(StateTransferManager stateTransferManager, CacheLoaderManager cacheLoaderManager, Notifier notifier, TransactionManager transactionManager, BuddyManager buddyManager, TransactionTable transactionTable, RPCManager rpcManager, RegionManager regionManager, Marshaller marshaller, CommandsFactory commandsFactory, DataContainer dataContainer, MVCCNodeHelper mvccHelper, BatchContainer batchContainer)
public Configuration getConfiguration()
Cache
getConfiguration
in interface Cache<K,V>
public TransactionManager getTransactionManager()
CacheSPI
TransactionManager
, if one is configured.
From 2.1.0, Interceptor authors should obtain this by injection rather than this method. See the
Inject
annotation.getTransactionManager
in interface CacheSPI<K,V>
public void addInterceptor(CommandInterceptor i, int position)
Cache
addInterceptor
in interface Cache<K,V>
i
- the interceptor to addposition
- the position to add the interceptorpublic void addInterceptor(CommandInterceptor i, Class<? extends CommandInterceptor> afterInterceptor)
Cache
addInterceptor
in interface Cache<K,V>
i
- interceptor to addafterInterceptor
- interceptor type after which to place custom interceptorpublic List<CommandInterceptor> getInterceptorChain()
CacheSPI
Inject
annotation.getInterceptorChain
in interface CacheSPI<K,V>
List
of CommandInterceptor
s configured for this cache, or
null
if create()
has not been invoked
and the interceptors thus do not exist.public void removeInterceptor(int position)
Cache
removeInterceptor
in interface Cache<K,V>
position
- the position at which to remove an interceptorpublic void removeInterceptor(Class<? extends CommandInterceptor> interceptorType)
Cache
removeInterceptor
in interface Cache<K,V>
interceptorType
- type of interceptor to removepublic CacheLoaderManager getCacheLoaderManager()
CacheSPI
Inject
annotation.getCacheLoaderManager
in interface CacheSPI<K,V>
CacheLoaderManager
if one or more cache loaders are configured, null otherwise.public BuddyManager getBuddyManager()
CacheSPI
Inject
annotation.getBuddyManager
in interface CacheSPI<K,V>
BuddyManager
if buddy replication is enabled, null otherwise.public TransactionTable getTransactionTable()
CacheSPI
Inject
annotation.getTransactionTable
in interface CacheSPI<K,V>
TransactionTable
public RPCManager getRPCManager()
CacheSPI
Inject
annotation.getRPCManager
in interface CacheSPI<K,V>
RPCManager
configured.public StateTransferManager getStateTransferManager()
CacheSPI
Inject
annotation.getStateTransferManager
in interface CacheSPI<K,V>
StateTransferManager
public String getClusterName()
getClusterName
in interface CacheSPI<K,V>
public int getNumberOfAttributes()
getNumberOfAttributes
in interface CacheSPI<K,V>
public int getNumberOfNodes()
getNumberOfNodes
in interface CacheSPI<K,V>
public RegionManager getRegionManager()
CacheSPI
Inject
annotation.getRegionManager
in interface CacheSPI<K,V>
RegionManager
public GlobalTransaction getCurrentTransaction(Transaction tx, boolean createIfNotExists)
CacheSPI
getCurrentTransaction
in interface CacheSPI<K,V>
tx
- the current transactioncreateIfNotExists
- if true creates a new transaction if none existspublic GlobalTransaction getCurrentTransaction()
CacheSPI
getCurrentTransaction
in interface CacheSPI<K,V>
public Set<Fqn> getInternalFqns()
CacheSPI
BuddyManager.BUDDY_BACKUP_SUBTREE
if buddy replication is
enabled.getInternalFqns
in interface CacheSPI<K,V>
null
.public int getNumberOfLocksHeld()
getNumberOfLocksHeld
in interface CacheSPI<K,V>
public boolean exists(String fqn)
CacheSPI
CacheSPI.exists(Fqn)
.
Note that this call works
directly on the cache data structure and will not pass through the interceptor chain. Hence node locking, cache
loading or activation does not take place, and so the results of this call should not be treated as definitive.public boolean exists(Fqn fqn)
CacheSPI
public Notifier getNotifier()
CacheSPI
Inject
annotation.getNotifier
in interface CacheSPI<K,V>
Notifier
, a class
that is responsible for emitting notifications to registered CacheListeners.public Marshaller getMarshaller()
CacheSPI
Marshaller
, which is capable of
converting Java objects to bytestreams and back in an efficient manner, which is
also interoperable with bytestreams produced/consumed by other versions of JBoss
Cache.
The use of this marshaller is the recommended way of creating efficient,
compatible, byte streams from objects.
From 2.1.0, Interceptor authors should obtain this by injection rather than this method. See the
Inject
annotation.getMarshaller
in interface CacheSPI<K,V>
Marshaller
public GravitateResult gravitateData(Fqn fqn, boolean searchBuddyBackupSubtrees, InvocationContext ctx)
CacheSPI
Configuration.useRegionBasedMarshalling
and the Region
pertaining to the Fqn passed in is activated, and has an appropriate ClassLoader.gravitateData
in interface CacheSPI<K,V>
fqn
- the fqn to gravitatesearchBuddyBackupSubtrees
- if true, buddy backup subtrees are searched and if false, they are not.public NodeSPI<K,V> peek(Fqn fqn, boolean includeDeletedNodes, boolean includeInvalidNodes)
CacheSPI
Node.isValid()
== false).
Note that this call works
directly on the cache data structure and will not pass through the interceptor chain. Hence node locking, cache
loading or activation does not take place, and so the results of this call should not be treated as definitive. Concurrent node
removal, passivation, etc. may affect the results of this call.peek
in interface CacheSPI<K,V>
fqn
- the Fqn to look up.includeDeletedNodes
- if you intend to see nodes marked as deleted within the current tx, set this to trueincludeInvalidNodes
- if true, nodes marked as being invalid are also returned.public NodeSPI<K,V> peek(Fqn fqn, boolean includeDeletedNodes)
CacheSPI
public void addCacheListener(Object listener)
Cache
CacheListener
-annotated object to the entire cache. The object passed in needs to be properly annotated with the
CacheListener
annotation otherwise an IncorrectCacheListenerException
will be thrown.addCacheListener
in interface Cache<K,V>
listener
- listener to addpublic void removeCacheListener(Object listener)
Cache
CacheListener
-annotated object from the cache. The object passed in needs to be properly annotated with the
CacheListener
annotation otherwise an IncorrectCacheListenerException
will be thrown.removeCacheListener
in interface Cache<K,V>
listener
- listener to removepublic Set<Object> getCacheListeners()
Cache
List
of objects annotated as CacheListener
s attached to the cache.getCacheListeners
in interface Cache<K,V>
List
of objects annotated as CacheListener
s attached to the cache.public void create() throws CacheException
Cache
public void start() throws CacheException
Cache
public void stop()
Cache
public void destroy()
Cache
Cache.create()
and Cache.start()
.public CacheStatus getCacheStatus()
Cache
getCacheStatus
in interface Cache<K,V>
null
.public InvocationContext getInvocationContext()
getInvocationContext
in interface Cache<K,V>
public void setInvocationContext(InvocationContext ctx)
Cache
InvocationContext
as current.setInvocationContext
in interface Cache<K,V>
ctx
- invocation context to usepublic org.jgroups.Address getLocalAddress()
Cache
null
if running in local mode.getLocalAddress
in interface Cache<K,V>
null
if running in local mode.public List<org.jgroups.Address> getMembers()
Cache
null
if running in local mode.getMembers
in interface Cache<K,V>
List
of members in the cluster, or null
if running in local mode.public String getVersion()
Cache
getVersion
in interface Cache<K,V>
Version.printVersion()
public void move(Fqn nodeToMove, Fqn newParent) throws NodeNotExistsException
Cache
/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:
move
in interface Cache<K,V>
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.public void move(String nodeToMove, String newParent) throws NodeNotExistsException
Cache
Cache.move(Fqn, Fqn)
move
in interface Cache<K,V>
NodeNotExistsException
public boolean removeRegion(Fqn fqn)
Cache
removeRegion
in interface Cache<K,V>
fqn
- of the region to removepublic Region getRegion(Fqn fqn, boolean createIfAbsent)
Cache
public void evict(Fqn fqn, boolean recursive)
Cache
Node
from memory.public void evict(Fqn fqn)
Cache
Node
from memory. Not recursive.public V get(Fqn fqn, K key)
Cache
Node
.public V get(String fqn, K key)
Cache
Cache.get(Fqn, Object)
public boolean removeNode(Fqn fqn)
Cache
removeNode
in interface Cache<K,V>
fqn
- Node
to removepublic boolean removeNode(String fqn)
Cache
Cache.removeNode(Fqn)
removeNode
in interface Cache<K,V>
fqn
- string representation of the Fqn to retrievepublic V remove(Fqn fqn, K key) throws CacheException
Cache
null
if the Node contained no mapping for this key.public V remove(String fqn, K key)
Cache
Cache.remove(Fqn, Object)
public void put(Fqn fqn, Map<? extends K,? extends V> data)
Cache
Node
.public void put(String fqn, Map<? extends K,? extends V> data)
Cache
Cache.put(Fqn, java.util.Map)
public void putForExternalRead(Fqn fqn, K key, V value)
Cache
public V put(Fqn fqn, K key, V value)
Cache
Node
in this cache.
If the Node
previously contained a mapping for this key, the old value is replaced by the specified value.put
in interface Cache<K,V>
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.public V put(String fqn, K key, V value)
Cache
Cache.put(Fqn, Object, Object)
put
in interface Cache<K,V>
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.public Map<K,V> getData(Fqn fqn)
Cache
public Set<K> getKeys(String fqn)
Cache
Cache.getKeys(Fqn)
.public Set<K> getKeys(Fqn fqn)
Cache
public void clearData(String fqn) throws CacheException
clearData
in interface Cache<K,V>
CacheException
public void clearData(Fqn fqn)
public void startBatch()
Cache
Cache.endBatch(boolean)
is called rather than for each invocation on the
cache.
Note that if there is an existing transaction in scope and the cache has been configured to use a JTA compliant
transaction manager, calls to Cache.startBatch()
and Cache.endBatch(boolean)
are ignored and treated as no-ops.
startBatch
in interface Cache<K,V>
Cache.endBatch(boolean)
public void endBatch(boolean successful)
Cache
Cache.startBatch()
and Cache.endBatch(boolean)
are ignored and treated as no-ops.
endBatch
in interface Cache<K,V>
successful
- if true, changes made in the batch are committed. If false, they are discarded.Cache.startBatch()
public boolean isLeaf(String fqn) throws NodeNotExistsException
Cache
isLeaf
in interface Cache<K,V>
fqn
- fqn to testNodeNotExistsException
public boolean isLeaf(Fqn fqn) throws NodeNotExistsException
Cache
isLeaf
in interface Cache<K,V>
fqn
- fqn to testNodeNotExistsException
public Set<Object> getChildrenNames(Fqn fqn)
Cache
getChildrenNames
in interface Cache<K,V>
fqn
- The fully qualified name of the nodepublic Set<String> getChildrenNames(String fqn)
Cache
Cache.getChildrenNames(Fqn)
getChildrenNames
in interface Cache<K,V>
fqn
- as a stringpublic ComponentRegistry getComponentRegistry()
CacheSPI
getComponentRegistry
in interface CacheSPI<K,V>
ComponentRegistry
public DataContainer getDataContainer()
protected void cacheStatusCheck(InvocationContext ctx)
Copyright © 2012 JBoss, a division of Red Hat. All Rights Reserved.