edu.internet2.middleware.subject.util
Class ExpirableCache<K,V>

java.lang.Object
  extended by edu.internet2.middleware.subject.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 6347 2010-02-18 04:29:19Z mchyzer $
Author:
mchyzer
See Also:
Serialized Form

Constructor Summary
ExpirableCache()
           
ExpirableCache(int defaultTimeToLiveInMinutes)
           
 
Method Summary
 void checkForEvictions(boolean onlyCheckIfNeeded)
          check and remove elements that are stale
 void clear()
          delete the cache
static void clearAll()
          clear out all caches everywhere (session, request, context, etc)
 V get(K key)
          get a value or null if not there or expired this will check for eviction, and evict if evictable
 int getCacheEvictions()
          number of items evicted from cache
 int getCacheHits()
          number of items successfully retrieved from cache
 int getCacheInserts()
          number of items inserted into the cache
 void put(K key, V value)
          put a value into the cache, accept the default time to live for this cache
 void put(K key, V value, int timeToLiveInMinutes)
          put a value into the cache, accept the default time to live for this cache
 int size(boolean evictEvictables)
          number of elements in map (and check for
static String staticToString()
          string representation of cache
 String toString()
          string representation of cache
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ExpirableCache

public ExpirableCache()

ExpirableCache

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

clear

public void clear()
delete the cache


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:
Object.toString()

staticToString

public static String staticToString()
string representation of cache

Returns:
the string value