Class CacheMap

java.lang.Object
org.apache.openjpa.util.CacheMap
All Implemented Interfaces:
Map

public class CacheMap extends Object implements Map
Fixed-size map that has ability to pin/unpin entries and move overflow to a backing soft map.
Author:
Patrick Linskey, Abe White
  • Field Details

    • cacheMap

      protected final SizedMap cacheMap
      The map for non-expired and non-pinned references.
    • softMap

      protected final SizedMap softMap
      The map for expired references.
    • pinnedMap

      protected final Map pinnedMap
      The set of objects pinned into the cache.
  • Constructor Details

    • CacheMap

      public CacheMap()
      Create a non-LRU (and therefore highly concurrent) cache map with a size of 1000.
    • CacheMap

      public CacheMap(boolean lru)
      Create a cache map with a size of 1000.
      Parameters:
      lru - if true, create a LRU cache map otherwise a non-LRU map will be created.
    • CacheMap

      public CacheMap(boolean lru, int max)
      Create a cache map with the given properties.
    • CacheMap

      @Deprecated public CacheMap(boolean lru, int max, int size, float load)
      Deprecated.
    • CacheMap

      public CacheMap(boolean lru, int max, int size, float load, int concurrencyLevel)
      Create a cache map with the given properties.
      Since:
      1.1.0
  • Method Details

    • cacheMapOverflowRemoved

      protected void cacheMapOverflowRemoved(Object key, Object value)
    • softMapOverflowRemoved

      protected void softMapOverflowRemoved(Object key, Object value)
    • softMapValueExpired

      protected void softMapValueExpired(Object key)
      Called when a value expires from the soft map.
    • put

      protected Object put(Map map, Object key, Object value)
      Put the given entry into the given map. Allows subclasses to take additional actions.
    • remove

      protected Object remove(Map map, Object key)
      Remove the given key from the given map. Allows subclasses to take additional actions.
    • readLock

      public void readLock()
      Acquire read lock.
    • readUnlock

      public void readUnlock()
      Release read lock.
    • writeLock

      public void writeLock()
      Acquire write lock.
    • writeUnlock

      public void writeUnlock()
      Release write lock.
    • isLRU

      public boolean isLRU()
      Whether this cache map uses LRU eviction.
    • setCacheSize

      public void setCacheSize(int size)
      The maximum number of hard references to maintain, or -1 for no limit.
    • getCacheSize

      public int getCacheSize()
      The maximum number of hard references to maintain, or -1 for no limit.
    • setSoftReferenceSize

      public void setSoftReferenceSize(int size)
      The maximum number of soft references to maintain, or -1 for no limit.
    • getSoftReferenceSize

      public int getSoftReferenceSize()
      The maximum number of soft references to maintain, or -1 for no limit.
    • getPinnedKeys

      public Set getPinnedKeys()
      The keys pinned into the map.
    • pin

      public boolean pin(Object key)
      Locks the given key and its value into the map. Objects pinned into the map are not counted towards the maximum cache size, and are never evicted implicitly. You may pin keys for which no value is in the map.
      Returns:
      true if the givne key's value was pinned; false if no value for the given key is cached
    • unpin

      public boolean unpin(Object key)
      Undo a pinning.
    • entryRemoved

      protected void entryRemoved(Object key, Object value, boolean expired)
      Invoked when a key-value pair is evicted from this data structure. This is invoked with expired set to true when an object is dropped because of space requirements or through garbage collection of soft references. It is invoked with expired set to false when an object is explicitly removed via the remove(java.util.Map, java.lang.Object) or clear() methods. This may be invoked more than once for a given entry.
      Parameters:
      value - may be null if the value was a soft reference that has been GCd
      Since:
      0.2.5.0
    • entryAdded

      protected void entryAdded(Object key, Object value)
      Invoked when an entry is added to the cache. This may be invoked more than once for an entry.
    • get

      public Object get(Object key)
      Specified by:
      get in interface Map
    • put

      public Object put(Object key, Object value)
      Specified by:
      put in interface Map
    • putAll

      public void putAll(Map map)
      Specified by:
      putAll in interface Map
    • putAll

      public void putAll(Map map, boolean replaceExisting)
    • remove

      public Object remove(Object key)
      If key is pinned into the cache, the pin is cleared and the object is removed.
      Specified by:
      remove in interface Map
    • clear

      public void clear()
      Removes pinned objects as well as unpinned ones.
      Specified by:
      clear in interface Map
    • size

      public int size()
      Specified by:
      size in interface Map
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map
    • containsKey

      public boolean containsKey(Object key)
      Specified by:
      containsKey in interface Map
    • containsValue

      public boolean containsValue(Object val)
      Specified by:
      containsValue in interface Map
    • keySet

      public Set keySet()
      Specified by:
      keySet in interface Map
    • values

      public Collection values()
      Specified by:
      values in interface Map
    • entrySet

      public Set entrySet()
      Specified by:
      entrySet in interface Map
    • toString

      public String toString()
      Overrides:
      toString in class Object