org.springframework.cache.concurrent

## Class ConcurrentMapCache

- java.lang.Object
- - 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

Constructors
Constructor and Description
`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

Methods
`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
  `allowNullValues` - whether to accept and convert null values for this 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:
  `storeValue` - 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