org.springframework.cache.concurrent
Class ConcurrentMapCache

java.lang.Object
  extended by org.springframework.cache.concurrent.ConcurrentMapCache
All Implemented Interfaces:
Cache

public class ConcurrentMapCache
extends Object
implements Cache

Simple Cache implementation based on the core JDK java.util.concurrent package.

Useful for testing or simple caching scenarios, typically in combination with SimpleCacheManager or dynamically through ConcurrentMapCacheManager.

Note: As ConcurrentHashMap (the default implementation used) does not allow for null values to be stored, this class will replace them with a predefined internal object. This behavior can be changed through the ConcurrentMapCache(String, ConcurrentMap, boolean) constructor.

Since:
3.1
Author:
Costin Leau, Juergen Hoeller

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.springframework.cache.Cache
Cache.ValueWrapper
 
Constructor Summary
ConcurrentMapCache(String name)
          Create a new ConcurrentMapCache with the specified name.
ConcurrentMapCache(String name, boolean allowNullValues)
          Create a new ConcurrentMapCache with the specified name.
ConcurrentMapCache(String name, ConcurrentMap<Object,Object> store, boolean allowNullValues)
          Create a new ConcurrentMapCache with the specified name and the given internal ConcurrentMap to use.
 
Method Summary
 void clear()
          Remove all mappings from the cache.
 void evict(Object key)
          Evict the mapping for this key from this cache if it is present.
protected  Object fromStoreValue(Object storeValue)
          Convert the given value from the internal store to a user value returned from the get method (adapting null).
 Cache.ValueWrapper get(Object key)
          Return the value to which this cache maps the specified key.
 String getName()
          Return the cache name.
 ConcurrentMap getNativeCache()
          Return the the underlying native cache provider.
 boolean isAllowNullValues()
           
 void put(Object key, Object value)
          Associate the specified value with the specified key in this cache.
protected  Object toStoreValue(Object userValue)
          Convert the given user value, as passed into the put method, to a value in the internal store (adapting null).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConcurrentMapCache

public ConcurrentMapCache(String name)
Create a new ConcurrentMapCache with the specified name.

Parameters:
name - the name of the cache

ConcurrentMapCache

public ConcurrentMapCache(String name,
                          boolean allowNullValues)
Create a new ConcurrentMapCache with the specified name.

Parameters:
name - the name of the cache

ConcurrentMapCache

public ConcurrentMapCache(String name,
                          ConcurrentMap<Object,Object> store,
                          boolean allowNullValues)
Create a new ConcurrentMapCache with the specified name and the given internal ConcurrentMap to use.

Parameters:
name - the name of the cache
store - the ConcurrentMap to use as an internal store
allowNullValues - whether to allow null values (adapting them to an internal null holder value)
Method Detail

getName

public String getName()
Description copied from interface: Cache
Return the cache name.

Specified by:
getName in interface Cache

getNativeCache

public ConcurrentMap getNativeCache()
Description copied from interface: Cache
Return the the underlying native cache provider.

Specified by:
getNativeCache in interface Cache

isAllowNullValues

public boolean isAllowNullValues()

get

public Cache.ValueWrapper get(Object key)
Description copied from interface: Cache
Return the value to which this cache maps the specified key. Returns null if the cache contains no mapping for this key.

Specified by:
get in interface Cache
Parameters:
key - key whose associated value is to be returned.
Returns:
the value to which this cache maps the specified key, or null if the cache contains no mapping for this key

put

public void put(Object key,
                Object value)
Description copied from interface: Cache
Associate the specified value with the specified key in this cache.

If the cache previously contained a mapping for this key, the old value is replaced by the specified value.

Specified by:
put in interface Cache
Parameters:
key - the key with which the specified value is to be associated
value - the value to be associated with the specified key

evict

public void evict(Object key)
Description copied from interface: Cache
Evict the mapping for this key from this cache if it is present.

Specified by:
evict in interface Cache
Parameters:
key - the key whose mapping is to be removed from the cache

clear

public void clear()
Description copied from interface: Cache
Remove all mappings from the cache.

Specified by:
clear in interface Cache

fromStoreValue

protected Object fromStoreValue(Object storeValue)
Convert the given value from the internal store to a user value returned from the get method (adapting null).

Parameters:
userValue - the store value
Returns:
the value to return to the user

toStoreValue

protected Object toStoreValue(Object userValue)
Convert the given user value, as passed into the put method, to a value in the internal store (adapting null).

Parameters:
userValue - the given user value
Returns:
the value to store