Class ExpirableCache<K,V>

java.lang.Object
edu.internet2.middleware.grouperClient.util.ExpirableCache<K,V>
Type Parameters:
K - key type
V - value type
All Implemented Interfaces:
Serializable

public class ExpirableCache<K,V> extends Object implements Serializable
This is like a map, but the setters also take an expire time which will mean the items in the cache will be automatically deleted. Also, every so often (e.g. 2 minutes) all items are checked for expiration. If no timetolive is set, it will default to 1 day. The max time to live is one day. This is synchronized so that all access is safe.

Note, evictions are check for periodically, but only when the map is accessed (and even then only every few minutes). so you can check for evictions externally, or clear the map if you are done with it.

Version:
$Id: ExpirableCache.java,v 1.1 2008-11-27 14:25:50 mchyzer Exp $
See Also:
  • Constructor Details

    • ExpirableCache

      public ExpirableCache()
    • ExpirableCache

      public ExpirableCache(int defaultTimeToLiveInMinutes)
      Parameters:
      defaultTimeToLiveInMinutes - time in minutes is the default cache time to live for content
    • ExpirableCache

      public ExpirableCache(ExpirableCache.ExpirableCacheUnit expirableCacheUnit, int defaultTimeToLive)
      Parameters:
      defaultTimeToLive - time in whatever unit is the default cache time to live for content
      expirableCacheUnit - is minutes or seconds
  • Method Details

    • clearCache

      public static boolean clearCache(String name)
      if there is a database clearable cache with this name, clear it
      Parameters:
      name -
      Returns:
      true if there was such a cache
    • registerDatabaseClearableCache

      public void registerDatabaseClearableCache(String name)
      register a cache for database clearable. Note you cant register one that is already there
      Parameters:
      name -
    • clear

      public void clear()
      delete the cache
    • getDefaultTimeToLiveInMillis

      public long getDefaultTimeToLiveInMillis()
      expose the length of cache
      Returns:
      length of cache
    • notifyDatabaseOfChanges

      public void notifyDatabaseOfChanges()
    • put

      public void put(K key, V value)
      put a value into the cache, accept the default time to live for this cache
      Parameters:
      key -
      value -
    • put

      public void put(K key, V value, int timeToLiveInMinutes)
      put a value into the cache, accept the default time to live for this cache
      Parameters:
      key -
      value -
      timeToLiveInMinutes - time to live for this item in minutes. If -1 then use the default
    • clearAll

      public static void clearAll()
      clear out all caches everywhere (session, request, context, etc)
    • checkForEvictions

      public void checkForEvictions(boolean onlyCheckIfNeeded)
      check and remove elements that are stale
      Parameters:
      onlyCheckIfNeeded - true if only check every so often (e.g. every two minutes)
    • get

      public V get(K key)
      get a value or null if not there or expired this will check for eviction, and evict if evictable
      Parameters:
      key -
      Returns:
      the value or null if not there or evicted
    • size

      public int size(boolean evictEvictables)
      number of elements in map (and check for
      Parameters:
      evictEvictables - true if we should evict values that are stale (even if recently checked)
      Returns:
      the number of elements
    • getCacheInserts

      public int getCacheInserts()
      number of items inserted into the cache
      Returns:
      Returns the cacheInserts.
    • getCacheEvictions

      public int getCacheEvictions()
      number of items evicted from cache
      Returns:
      Returns the cacheEvictions.
    • getCacheHits

      public int getCacheHits()
      number of items successfully retrieved from cache
      Returns:
      Returns the cacheHits.
    • toString

      public String toString()
      string representation of cache
      Overrides:
      toString in class Object
      See Also:
    • staticToString

      public static String staticToString()
      string representation of cache
      Returns:
      the string value