Class ExpirableCache<K,V>
java.lang.Object
edu.internet2.middleware.grouperClient.util.ExpirableCache<K,V>
- Type Parameters:
K- key typeV- value type
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
ExpirableCache
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumunit of time for expirable cache -
Constructor Summary
ConstructorsConstructorDescriptionExpirableCache(int defaultTimeToLiveInMinutes) ExpirableCache(ExpirableCache.ExpirableCacheUnit expirableCacheUnit, int defaultTimeToLive) -
Method Summary
Modifier and TypeMethodDescriptionvoidcheckForEvictions(boolean onlyCheckIfNeeded) check and remove elements that are stalevoidclear()delete the cachestatic voidclearAll()clear out all caches everywhere (session, request, context, etc)static booleanclearCache(String name) if there is a database clearable cache with this name, clear itget a value or null if not there or expired this will check for eviction, and evict if evictableintnumber of items evicted from cacheintnumber of items successfully retrieved from cacheintnumber of items inserted into the cachelongexpose the length of cachekeySet()get all keys this will check for eviction, and evict if evictablevoidvoidput a value into the cache, accept the default time to live for this cachevoidput a value into the cache, accept the default time to live for this cachevoidregister a cache for database clearable.voidremove a single entry from the cache by keyintsize(boolean evictEvictables) number of elements in map (and check forstatic Stringstring representation of cachetoString()string representation of cache
-
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
- Parameters:
defaultTimeToLive- time in whatever unit is the default cache time to live for contentexpirableCacheUnit- is minutes or seconds
-
-
Method Details
-
clearCache
if there is a database clearable cache with this name, clear it- Parameters:
name-- Returns:
- true if there was such a cache
-
registerDatabaseClearableCache
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
put a value into the cache, accept the default time to live for this cache- Parameters:
key-value-
-
put
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
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
-
keySet
get all keys this will check for eviction, and evict if evictable- Parameters:
key-- Returns:
- the value or null if not there or evicted
-
remove
remove a single entry from the cache by key- Parameters:
key- the key to remove
-
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
string representation of cache -
staticToString
string representation of cache- Returns:
- the string value
-