Package org.apache.cayenne.cache

## Class MapQueryCache

- java.lang.Object
- - org.apache.cayenne.cache.MapQueryCache

- All Implemented Interfaces:
    `Serializable`, `QueryCache`

      public class MapQueryCache
      extends Object
      implements QueryCache, Serializable

  A default implementation of the `QueryCache` interface that stores data in a non-expiring LRUMap.
  Since:
    3.0
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Map<String,​Map<String,​List<?>>>` | `cacheGroups` |
    `static int` | `DEFAULT_CACHE_SIZE` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `MapQueryCache()` |
    `MapQueryCache​(int maxSize)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected String` | `cacheName​(QueryMetadata metadata)` |
    `void` | `clear()` | Clears all cache entries.
    `protected Map<String,​List<?>>` | `createCache​(String cacheName)` |
    `protected Map<String,​List<?>>` | `createIfAbsent​(String cacheName)` |
    `protected Map<String,​List<?>>` | `createIfAbsent​(QueryMetadata metadata)` |
    `List` | `get​(QueryMetadata metadata)` | Returns a cached query result for the given QueryMetadata or null if the result is not cached or is expired.
    `List` | `get​(QueryMetadata metadata, QueryCacheEntryFactory factory)` | Returns a non-null cached value.
    `protected Map<String,​List<?>>` | `getCache​(String name)` |
    `void` | `put​(QueryMetadata metadata, List results)` |
    `void` | `remove​(String key)` | Removes a single entry from cache.
    `void` | `removeGroup​(String groupKey)` | Removes a group of entries identified by group key.
    `void` | `removeGroup​(String groupKey, Class<?> keyType, Class<?> valueType)` | Removes a group of entries identified by group key.
    `int` | `size()` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_CACHE_SIZE

          public static final int DEFAULT_CACHE_SIZE

      See Also:
        Constant Field Values

    - #### cacheGroups

          protected final Map<String,​Map<String,​List<?>>> cacheGroups

  - ### Constructor Detail

    - #### MapQueryCache

          public MapQueryCache()

    - #### MapQueryCache

          public MapQueryCache​(int maxSize)

  - ### Method Detail

    - #### get

          public List get​(QueryMetadata metadata)

      Description copied from interface: `QueryCache`
      Returns a cached query result for the given QueryMetadata or null if the result is not cached or is expired.
      Specified by:
        `get` in interface `QueryCache`

    - #### get

          public List get​(QueryMetadata metadata,
                          QueryCacheEntryFactory factory)

      Returns a non-null cached value. If it is not present in the cache, it is obtained by calling `QueryCacheEntryFactory.createObject()` without blocking the cache. As a result there is a potential of multiple threads to be updating cache in parallel - this wouldn't lead to corruption of the cache, but can be suboptimal.
      Specified by:
        `get` in interface `QueryCache`

    - #### put

          public void put​(QueryMetadata metadata,
                          List results)

      Specified by:
        `put` in interface `QueryCache`

    - #### remove

          public void remove​(String key)

      Description copied from interface: `QueryCache`
      Removes a single entry from cache.
      Specified by:
        `remove` in interface `QueryCache`

    - #### removeGroup

          public void removeGroup​(String groupKey)

      Description copied from interface: `QueryCache`
      Removes a group of entries identified by group key. Note that depending on implementation this method may either actively remove the entries belonging to the group or just mark them as expired, so that they are refreshed on the next access. In the former case the cache size would shrink, but in the later the cache size will not change after calling this method.
      Specified by:
        `removeGroup` in interface `QueryCache`

    - #### removeGroup

          public void removeGroup​(String groupKey,
                                  Class<?> keyType,
                                  Class<?> valueType)

      Description copied from interface: `QueryCache`
      Removes a group of entries identified by group key. Can be used if cache provider supports strictly typed caches.
      Specified by:
        `removeGroup` in interface `QueryCache`
      See Also:
        `QueryCache.removeGroup(String)`

    - #### clear

          public void clear()

      Description copied from interface: `QueryCache`
      Clears all cache entries.
      Specified by:
        `clear` in interface `QueryCache`

    - #### size

          public int size()

    - #### createIfAbsent

          protected Map<String,​List<?>> createIfAbsent​(QueryMetadata metadata)

    - #### createIfAbsent

          protected Map<String,​List<?>> createIfAbsent​(String cacheName)

    - #### createCache

          protected Map<String,​List<?>> createCache​(String cacheName)

    - #### getCache

          protected Map<String,​List<?>> getCache​(String name)

    - #### cacheName

          protected String cacheName​(QueryMetadata metadata)