org.springframework.cache.concurrent
Class ConcurrentMapCache

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

public class ConcurrentMapCache
extends java.lang.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
private static class ConcurrentMapCache.NullHolder
           
 
Nested classes/interfaces inherited from interface org.springframework.cache.Cache
Cache.ValueWrapper
 
Field Summary
private  boolean allowNullValues
           
private  java.lang.String name
           
private static java.lang.Object NULL_HOLDER
           
private  java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> store
           
 
Constructor Summary
ConcurrentMapCache(java.lang.String name)
          Create a new ConcurrentMapCache with the specified name.
ConcurrentMapCache(java.lang.String name, boolean allowNullValues)
          Create a new ConcurrentMapCache with the specified name.
ConcurrentMapCache(java.lang.String name, java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.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(java.lang.Object key)
          Evict the mapping for this key from this cache if it is present.
protected  java.lang.Object fromStoreValue(java.lang.Object storeValue)
          Convert the given value from the internal store to a user value returned from the get method (adapting null).
 Cache.ValueWrapper get(java.lang.Object key)
          Return the value to which this cache maps the specified key.
 java.lang.String getName()
          Return the cache name.
 java.util.concurrent.ConcurrentMap getNativeCache()
          Return the the underlying native cache provider.
 boolean isAllowNullValues()
           
 void put(java.lang.Object key, java.lang.Object value)
          Associate the specified value with the specified key in this cache.
protected  java.lang.Object toStoreValue(java.lang.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
 

Field Detail

NULL_HOLDER

private static final java.lang.Object NULL_HOLDER

name

private final java.lang.String name

store

private final java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.Object> store

allowNullValues

private final boolean allowNullValues
Constructor Detail

ConcurrentMapCache

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

Parameters:
name - the name of the cache

ConcurrentMapCache

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

Parameters:
name - the name of the cache

ConcurrentMapCache

public ConcurrentMapCache(java.lang.String name,
                          java.util.concurrent.ConcurrentMap<java.lang.Object,java.lang.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 java.lang.String getName()
Description copied from interface: Cache
Return the cache name.

Specified by:
getName in interface Cache

getNativeCache

public java.util.concurrent.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(java.lang.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(java.lang.Object key,
                java.lang.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(java.lang.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 java.lang.Object fromStoreValue(java.lang.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 java.lang.Object toStoreValue(java.lang.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