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
    Modifier and Type | Method and Description
    --- | ---
    `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