Class UtilCache<K,V>

java.lang.Object
org.apache.ofbiz.base.util.cache.UtilCache<K,V>
All Implemented Interfaces:
com.googlecode.concurrentlinkedhashmap.EvictionListener<Object,CacheLine<V>>, Serializable

public final class UtilCache<K,V> extends Object implements Serializable, com.googlecode.concurrentlinkedhashmap.EvictionListener<Object,CacheLine<V>>
Generalized caching utility. Provides a number of caching features:
  • Limited or unlimited element capacity
  • If limited, removes elements with the LRU (Least Recently Used) algorithm
  • Keeps track of when each element was loaded into the cache
  • Using the expireTime can report whether a given element has expired
  • Counts misses and hits
See Also:
  • Method Details

    • getCacheLineTable

      public Object getCacheLineTable()
    • isEmpty

      public boolean isEmpty()
    • put

      public V put(K key, V value)
      Puts or loads the passed element into the cache
      Parameters:
      key - The key for the element, used to reference it in the hashtables and LRU linked list
      value - The value of the element
    • putIfAbsent

      public V putIfAbsent(K key, V value)
    • putIfAbsentAndGet

      public V putIfAbsentAndGet(K key, V value)
    • put

      public V put(K key, V value, long expireTimeMillis)
      Puts or loads the passed element into the cache
      Parameters:
      key - The key for the element, used to reference it in the hashtables and LRU linked list
      value - The value of the element
      expireTimeMillis - how long to keep this key in the cache
    • putIfAbsent

      public V putIfAbsent(K key, V value, long expireTimeMillis)
    • get

      public V get(Object key)
      Gets an element from the cache according to the specified key.
      Parameters:
      key - The key for the element, used to reference it in the hashtables and LRU linked list
      Returns:
      The value of the element specified by the key
    • values

      public Collection<V> values()
    • getSizeInBytes

      public long getSizeInBytes()
    • remove

      public V remove(Object key)
      Removes an element from the cache according to the specified key
      Parameters:
      key - The key for the element, used to reference it in the hashtables and LRU linked list
      Returns:
      The value of the removed element specified by the key
    • erase

      public void erase()
      Removes all elements from this cache
    • clear

      public void clear()
    • clearAllCaches

      public static void clearAllCaches()
      Removes all elements from this cache
    • getUtilCacheTableKeySet

      public static Set<String> getUtilCacheTableKeySet()
    • getName

      public String getName()
      Getter for the name of the UtilCache instance.
      Returns:
      The name of the instance
    • getHitCount

      public long getHitCount()
      Returns the number of successful hits on the cache
      Returns:
      The number of successful cache hits
    • getMissCountNotFound

      public long getMissCountNotFound()
      Returns the number of cache misses from entries that are not found in the cache
      Returns:
      The number of cache misses
    • getMissCountTotal

      public long getMissCountTotal()
      Returns the number of cache misses caused by any reason
      Returns:
      The number of cache misses
    • getRemoveHitCount

      public long getRemoveHitCount()
    • getRemoveMissCount

      public long getRemoveMissCount()
    • setMaxInMemory

      public void setMaxInMemory(int newInMemory)
    • getMaxInMemory

      public int getMaxInMemory()
    • setSizeLimit

      public void setSizeLimit(int newSizeLimit)
    • getSizeLimit

      public int getSizeLimit()
    • setExpireTime

      public void setExpireTime(long expireTimeMillis)
      Sets the expire time for the cache elements. If 0, elements never expire.
      Parameters:
      expireTimeMillis - The expire time for the cache elements
    • getExpireTime

      public long getExpireTime()
      return the current expire time for the cache elements
      Returns:
      The expire time for the cache elements
    • setUseSoftReference

      public void setUseSoftReference(boolean useSoftReference)
      Set whether or not the cache lines should use a soft reference to the data
    • getUseSoftReference

      public boolean getUseSoftReference()
      Return whether or not the cache lines should use a soft reference to the data
    • size

      public int size()
      Returns the number of elements currently in the cache
      Returns:
      The number of elements currently in the cache
    • containsKey

      public boolean containsKey(Object key)
      Returns a boolean specifying whether or not an element with the specified key is in the cache.
      Parameters:
      key - The key for the element, used to reference it in the hashtables and LRU linked list
      Returns:
      True is the cache contains an element corresponding to the specified key, otherwise false
    • getCacheLineKeys

      public Set<? extends K> getCacheLineKeys()
      NOTE: this returns an unmodifiable copy of the keySet, so removing from here won't have an effect, and calling a remove while iterating through the set will not cause a concurrent modification exception. This behavior is necessary for now for the persisted cache feature.
    • getCacheLineValues

      public Collection<? extends CacheLine<V>> getCacheLineValues()
    • getLineInfos

      public Collection<? extends Map<String,Object>> getLineInfos()
    • addListener

      public void addListener(CacheListener<K,V> listener)
      Adds an event listener for key removals
    • removeListener

      public void removeListener(CacheListener<K,V> listener)
      Removes an event listener for key removals
    • validKey

      public static boolean validKey(String cacheName, Object key)
      Checks for a non-expired key in a specific cache
    • clearCachesThatStartWith

      public static void clearCachesThatStartWith(String startsWith)
    • clearCache

      public static void clearCache(String cacheName)
    • getOrCreateUtilCache

      public static <K, V> UtilCache<K,V> getOrCreateUtilCache(String name, int sizeLimit, int maxInMemory, long expireTime, boolean useSoftReference, String... names)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache(String name, int sizeLimit, int maxInMemory, long expireTime, boolean useSoftReference, String... names)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache(String name, int sizeLimit, int maxInMemory, long expireTime, boolean useSoftReference)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache(String name, int sizeLimit, long expireTime, boolean useSoftReference)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache(String name, int sizeLimit, long expireTime)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache(int sizeLimit, long expireTime)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache(String name, boolean useSoftReference)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache(String name)
    • createUtilCache

      public static <K, V> UtilCache<K,V> createUtilCache()
    • findCache

      public static <K, V> UtilCache<K,V> findCache(String cacheName)
    • onEviction

      public void onEviction(Object key, CacheLine<V> value)
      Specified by:
      onEviction in interface com.googlecode.concurrentlinkedhashmap.EvictionListener<K,V>