org.infinispan
Interface AdvancedCache<K,V>

All Superinterfaces:
BasicCache<K,V>, Cache<K,V>, ConcurrentMap<K,V>, Lifecycle, Listenable, Map<K,V>
All Known Implementing Classes:
AbstractDelegatingAdvancedCache, CacheImpl, ClassLoaderSpecfiedCache, DecoratedCache

public interface AdvancedCache<K,V>
extends Cache<K,V>

An advanced interface that exposes additional methods not available on Cache.

Since:
4.0
Author:
Manik Surtani

Nested Class Summary
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Method Summary
 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 NUM_INTERCEPTORS - 1.
 boolean addInterceptorAfter(CommandInterceptor i, Class<? extends CommandInterceptor> afterInterceptor)
          Adds a custom interceptor to the interceptor chain, after an instance of the specified interceptor type.
 boolean addInterceptorBefore(CommandInterceptor i, Class<? extends CommandInterceptor> beforeInterceptor)
          Adds a custom interceptor to the interceptor chain, before an instance of the specified interceptor type.
 void applyDelta(K deltaAwareValueKey, Delta delta, Object... locksToAcquire)
          Applies the given Delta to the DeltaAware object stored under deltaAwareValueKey if and only if all locksToAcquire locks are successfully obtained
 BatchContainer getBatchContainer()
          Returns the component in charge of batching cache operations.
 ClassLoader getClassLoader()
          Returns the cache loader associated associated with this cache.
 ComponentRegistry getComponentRegistry()
           
 DataContainer getDataContainer()
          Returns the container where data is stored in the cache.
 DistributionManager getDistributionManager()
          Retrieves a reference to the DistributionManager if the cache is configured to use Distribution.
 EvictionManager getEvictionManager()
           
 List<CommandInterceptor> getInterceptorChain()
          Retrieves the current Interceptor chain.
 InvocationContextContainer getInvocationContextContainer()
          Returns the component in charge of managing the interactions between the cache operations and the context information associated with them.
 LockManager getLockManager()
          Returns the component that deals with all aspects of acquiring and releasing locks for cache entries.
 RpcManager getRpcManager()
          Returns the component in charge of communication with other caches in the cluster.
 Stats getStats()
          Returns a Stats object that allows several statistics associated with this cache at runtime.
 TransactionManager getTransactionManager()
          Returns the transaction manager configured for this cache.
 XAResource getXAResource()
          Returns the XAResource associated with this cache which can be used to do transactional recovery.
 boolean lock(Collection<? extends K> keys)
          Locks collections of keys eagerly across cache nodes in a cluster.
 boolean lock(K... keys)
          Locks a given key or keys eagerly across cache nodes in a cluster.
 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.
 AdvancedCache<K,V> with(ClassLoader classLoader)
          Using this operation, users can call any AdvancedCache operation with a given ClassLoader.
 AdvancedCache<K,V> withFlags(Flag... flags)
          A method that adds flags to any API call.
 
Methods inherited from interface org.infinispan.Cache
compact, endBatch, entrySet, evict, getAdvancedCache, getCacheConfiguration, getCacheManager, getConfiguration, getStatus, keySet, putForExternalRead, startBatch, values
 
Methods inherited from interface org.infinispan.api.BasicCache
clearAsync, getAsync, getName, getVersion, put, put, putAll, putAll, putAllAsync, putAllAsync, putAllAsync, putAsync, putAsync, putAsync, putIfAbsent, putIfAbsent, putIfAbsentAsync, putIfAbsentAsync, putIfAbsentAsync, removeAsync, removeAsync, replace, replace, replace, replace, replaceAsync, replaceAsync, replaceAsync, replaceAsync, replaceAsync, replaceAsync
 
Methods inherited from interface java.util.concurrent.ConcurrentMap
putIfAbsent, remove, replace, replace
 
Methods inherited from interface java.util.Map
clear, containsKey, containsValue, equals, get, hashCode, isEmpty, put, putAll, remove, size
 
Methods inherited from interface org.infinispan.lifecycle.Lifecycle
start, stop
 
Methods inherited from interface org.infinispan.notifications.Listenable
addListener, getListeners, removeListener
 

Method Detail

withFlags

AdvancedCache<K,V> withFlags(Flag... flags)
A method that adds flags to any API call. For example, consider the following code snippet:
   cache.withFlags(Flag.FORCE_WRITE_LOCK).get(key);
 
will invoke a cache.get() with a write lock forced.

Note that for the flag to take effect, the cache operation must be invoked on the instance returned by this method.

As an alternative to setting this on every invocation, users could also consider using the DecoratedCache wrapper, as this allows for more readable code. E.g.:

    Cache forceWriteLockCache = new DecoratedCache(cache, Flag.FORCE_WRITE_LOCK);
    forceWriteLockCache.get(key1);
    forceWriteLockCache.get(key2);
    forceWriteLockCache.get(key3);
 

Parameters:
flags - a set of flags to apply. See the Flag documentation.
Returns:
an AdvancedCache instance on which a real operation is to be invoked, if the flags are to be applied.

addInterceptor

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 NUM_INTERCEPTORS - 1.

Parameters:
i - the interceptor to add
position - the position to add the interceptor

addInterceptorAfter

boolean addInterceptorAfter(CommandInterceptor i,
                            Class<? extends CommandInterceptor> afterInterceptor)
Adds a custom interceptor to the interceptor chain, after an instance of the specified interceptor type. Throws a cache exception if it cannot find an interceptor of the specified type.

Parameters:
i - interceptor to add
afterInterceptor - interceptor type after which to place custom interceptor
Returns:
true if successful, false otherwise.

addInterceptorBefore

boolean addInterceptorBefore(CommandInterceptor i,
                             Class<? extends CommandInterceptor> beforeInterceptor)
Adds a custom interceptor to the interceptor chain, before an instance of the specified interceptor type. Throws a cache exception if it cannot find an interceptor of the specified type.

Parameters:
i - interceptor to add
beforeInterceptor - interceptor type before which to place custom interceptor
Returns:
true if successful, false otherwise.

removeInterceptor

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.

Parameters:
position - the position at which to remove an interceptor

removeInterceptor

void removeInterceptor(Class<? extends CommandInterceptor> interceptorType)
Removes the interceptor of specified type.

Parameters:
interceptorType - type of interceptor to remove

getInterceptorChain

List<CommandInterceptor> getInterceptorChain()
Retrieves the current Interceptor chain.

Returns:
an immutable List of CommandInterceptors configured for this cache

getEvictionManager

EvictionManager getEvictionManager()
Returns:
the eviction manager - if one is configured - for this cache instance

getComponentRegistry

ComponentRegistry getComponentRegistry()
Returns:
the component registry for this cache instance

getDistributionManager

DistributionManager getDistributionManager()
Retrieves a reference to the DistributionManager if the cache is configured to use Distribution. Otherwise, returns a null.

Returns:
a DistributionManager, or null.

lock

boolean lock(K... keys)
Locks a given key or keys eagerly across cache nodes in a cluster.

Keys can be locked eagerly in the context of a transaction only.

Parameters:
keys - the keys to lock
Returns:
true if the lock acquisition attempt was successful for all keys; false will only be returned if the lock acquisition timed out and the operation has been called with Flag.FAIL_SILENTLY.
Throws:
TimeoutException - if the lock cannot be acquired within the configured lock acquisition time.

lock

boolean lock(Collection<? extends K> keys)
Locks collections of keys eagerly across cache nodes in a cluster.

Collections of keys can be locked eagerly in the context of a transaction only.

Parameters:
keys - collection of keys to lock
Returns:
true if the lock acquisition attempt was successful for all keys; false will only be returned if the lock acquisition timed out and the operation has been called with Flag.FAIL_SILENTLY.
Throws:
TimeoutException - if the lock cannot be acquired within the configured lock acquisition time.

applyDelta

void applyDelta(K deltaAwareValueKey,
                Delta delta,
                Object... locksToAcquire)
Applies the given Delta to the DeltaAware object stored under deltaAwareValueKey if and only if all locksToAcquire locks are successfully obtained

Parameters:
deltaAwareValueKey - the key for DeltaAware object
delta - the delta to be applied to DeltaAware object
locksToAcquire - keys to be locked in DeltaAware scope

getRpcManager

RpcManager getRpcManager()
Returns the component in charge of communication with other caches in the cluster. If the cache's Configuration.CacheMode is Configuration.CacheMode.LOCAL, this method will return null.

Returns:
the RPC manager component associated with this cache instance or null

getBatchContainer

BatchContainer getBatchContainer()
Returns the component in charge of batching cache operations.

Returns:
the batching component associated with this cache instance

getInvocationContextContainer

InvocationContextContainer getInvocationContextContainer()
Returns the component in charge of managing the interactions between the cache operations and the context information associated with them.

Returns:
the invocation context container component

getDataContainer

DataContainer getDataContainer()
Returns the container where data is stored in the cache. Users should interact with this component with care because direct calls on it bypass the internal interceptors and other infrastructure in place to guarantee the consistency of data.

Returns:
the data container associated with this cache instance

getTransactionManager

TransactionManager getTransactionManager()
Returns the transaction manager configured for this cache. If no transaction manager was configured, this method returns null.

Returns:
the transaction manager associated with this cache instance or null

getLockManager

LockManager getLockManager()
Returns the component that deals with all aspects of acquiring and releasing locks for cache entries.

Returns:
retrieves the lock manager associated with this cache instance

getStats

Stats getStats()
Returns a Stats object that allows several statistics associated with this cache at runtime.

Returns:
this cache's Stats object

getXAResource

XAResource getXAResource()
Returns the XAResource associated with this cache which can be used to do transactional recovery.

Returns:
an instance of XAResource

getClassLoader

ClassLoader getClassLoader()
Returns the cache loader associated associated with this cache. As an alternative to setting this on every invocation, users could also consider using the DecoratedCache wrapper.

Returns:
this cache's cache loader

with

AdvancedCache<K,V> with(ClassLoader classLoader)
Using this operation, users can call any AdvancedCache operation with a given ClassLoader. This means that any ClassLoader happening as a result of the cache operation will be done using the ClassLoader given. For example:

When users store POJO instances in caches configured with Configuration.storeAsBinary, these instances are transformed into byte arrays. When these entries are read from the cache, a lazy unmarshalling process happens where these byte arrays are transformed back into POJO instances. Using with(ClassLoader) when reading that enables users to provide the class loader that should be used when trying to locate the classes that are constructed as a result of the unmarshalling process.

    cache.with(classLoader).get(key);
 
Note that for the flag to take effect, the cache operation must be invoked on the instance returned by this method.

As an alternative to setting this on every invocation, users could also consider using the DecoratedCache wrapper, as this allows for more readable code. E.g.:

    Cache classLoaderSpecificCache = new DecoratedCache(cache, classLoader);
    classLoaderSpecificCache.get(key1);
    classLoaderSpecificCache.get(key2);
    classLoaderSpecificCache.get(key3);
 

Returns:
an AdvancedCache instance upon which operations can be called with a particular ClassLoader.

-->

Copyright © 2012 JBoss, a division of Red Hat. All Rights Reserved.