Package com.gentlyweb.utils
Class ObjectCache
java.lang.Object
com.gentlyweb.utils.ObjectCache
- All Implemented Interfaces:
ObjectCacheManager
The ObjectCache is it's own manager which means that classes that extend this one can
do so quickly and without having to implement the
ObjectCacheManager interface
they only have to provide their own functionality whilst client classes can rely on the
interface. All operations defined with ObjectCacheManager are supported here.-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncacheSlice(Date from, Date to) cacheSliceFrom(Date from) cacheSliceTo(Date to) intcapacity()Return the current capacity of the cache, it should basically be (max size - current size).booleancontainsKey(Object key) firstKey()voidflush()Clear our data structures.getLastAccessTime(Object key) intintbooleanisEmpty()Return whether the cache is empty or not.iterator()keys()Return a List of all the keys in the cache.Return a List of all the keys in the cache that match the conditions imposed by theGeneralFilterpassed in.Return a List of keys in the cache that match the conditions imposed by theGeneralFilterAND are applied to the values NOT the keys.voidkeysToList(List list) voidmerge(ObjectCache cache) Merge the current cache with another.voidvoidAdd all the entries in the Map to cache.voidprotected voidresize()voidresize(int size) Resize the cache to a particular size, if the size is actually bigger than the current size then this operation should not touch the cached objects, if the size is less then the cache should be reduced in size using the current policy until the size is reached.voidsetMaxSize(int size) Set the maximum size of the cache.voidsetPolicy(int type) Set the policy for managing the cache, should be one of:,invalid reference
ObjectCache.OLDEST,invalid reference
ObjectCache.YOUNGEST.invalid reference
ObjectCache.RANDOMintsize()voidGet all the entries in the cache as a Map of key to value.values()Return a List of all the values in the cache.Return a List of all the values in the cache that match the conditions imposed by theGeneralFilterpassed in.voidvaluesToList(List list)
-
Field Details
-
OLDEST
public static final int OLDEST- See Also:
-
YOUNGEST
public static final int YOUNGEST- See Also:
-
RANDOM
public static final int RANDOM- See Also:
-
-
Constructor Details
-
ObjectCache
- Throws:
IllegalArgumentException
-
-
Method Details
-
setPolicy
Description copied from interface:ObjectCacheManagerSet the policy for managing the cache, should be one of:,invalid reference
ObjectCache.OLDEST,invalid reference
ObjectCache.YOUNGEST.invalid reference
ObjectCache.RANDOM- Specified by:
setPolicyin interfaceObjectCacheManager- Parameters:
type- The policy.- Throws:
IllegalArgumentException
-
getPolicy
public int getPolicy() -
iterator
-
keys
Return a List of all the keys in the cache.- Returns:
- The List (ArrayList) of all the keys in the cache.
-
values
Return a List of all the values in the cache.- Returns:
- The List (ArrayList) of all the values in the cache.
-
keysForFilteredValues
public List keysForFilteredValues(GeneralFilter f) throws IllegalAccessException, InvocationTargetException, FilterException Return a List of keys in the cache that match the conditions imposed by theGeneralFilterAND are applied to the values NOT the keys.- Parameters:
f- The filter to use.- Returns:
- A List of the keys that map to the matched values.
- Throws:
IllegalAccessException- Thrown by the} method if we can't get access to a value defined in the GeneralFilter for the value class.invalid @link
{@link GeneralFilter.accept(Object)InvocationTargetException- Thrown by the} method if (as a result of accessing a field) an exception is thrown by a value object.invalid @link
{@link GeneralFilter.accept(Object)FilterException- Thrown by the} method if (as a result of accessing a field) the type of object returned by the field access is not of the expected type.invalid @link
{@link GeneralFilter.accept(Object)
-
values
public List values(GeneralFilter f) throws IllegalAccessException, InvocationTargetException, FilterException Return a List of all the values in the cache that match the conditions imposed by theGeneralFilterpassed in. We first gain all the values in the cache and then pass them through the filter returning the values that match. Because a GeneralFilter can only filter on a single class type (but the values may not be of a single type) we ignore any values that are not of the type specified for the GeneralFilter.- Returns:
- A List (ArrayList) of all the values in the cache.
- Throws:
IllegalAccessException- Thrown by the} method if we can't get access to a value defined in the GeneralFilter for the value class.invalid @link
{@link GeneralFilter.accept(Object)InvocationTargetException- Thrown by the} method if (as a result of accessing a field) an exception is thrown by a value object.invalid @link
{@link GeneralFilter.accept(Object)FilterException- Thrown by the} method if (as a result of accessing a field) the type of object returned by the field access is not of the expected type.invalid @link
{@link GeneralFilter.accept(Object)
-
keys
public List keys(GeneralFilter f) throws IllegalAccessException, InvocationTargetException, FilterException Return a List of all the keys in the cache that match the conditions imposed by theGeneralFilterpassed in. We first gain all the keys in the cache and then pass them through the filter returning the keys that match. Because a GeneralFilter can only filter on a single class type (but the keys may not be of a single type) we ignore any keys that are not of the type specified for the GeneralFilter.- Returns:
- A List (ArrayList) of all the keys in the cache.
- Throws:
IllegalAccessException- Thrown by the} method if we can't get access to a value defined in the GeneralFilter for the key class.invalid @link
{@link GeneralFilter.accept(Object)InvocationTargetException- Thrown by the} method if (as a result of accessing a field) an exception is thrown by a key object.invalid @link
{@link GeneralFilter.accept(Object)FilterException- Thrown by the} method if (as a result of accessing a field) the type of object returned by the field access is not of the expected type.invalid @link
{@link GeneralFilter.accept(Object)
-
valuesToList
-
keysToList
-
toMap
Description copied from interface:ObjectCacheManagerGet all the entries in the cache as a Map of key to value.- Specified by:
toMapin interfaceObjectCacheManager- Parameters:
map- The Map that should be populated with the key/values in the cache.
-
putAll
Description copied from interface:ObjectCacheManagerAdd all the entries in the Map to cache.- Specified by:
putAllin interfaceObjectCacheManager- Parameters:
map- The Map to get key/values from.
-
containsKey
-
merge
Description copied from interface:ObjectCacheManagerMerge the current cache with another.- Specified by:
mergein interfaceObjectCacheManager- Parameters:
cache- The cache to merge.
-
cacheSliceTo
-
cacheSliceFrom
-
cacheSlice
-
sliceFrom
-
sliceTo
-
slice
-
getLastAccessTime
-
isEmpty
public boolean isEmpty()Description copied from interface:ObjectCacheManagerReturn whether the cache is empty or not.- Specified by:
isEmptyin interfaceObjectCacheManager- Returns:
trueif the cache is empty,falseif it has entries.
-
capacity
public int capacity()Description copied from interface:ObjectCacheManagerReturn the current capacity of the cache, it should basically be (max size - current size).- Specified by:
capacityin interfaceObjectCacheManager- Returns:
- The current number of items that can be added until the cache reaches it's maximum size.
-
getMaxSize
public int getMaxSize() -
setMaxSize
public void setMaxSize(int size) Description copied from interface:ObjectCacheManagerSet the maximum size of the cache.- Specified by:
setMaxSizein interfaceObjectCacheManager- Parameters:
size- The maximum size.
-
get
-
firstValue
-
lastValue
-
firstKey
-
size
public int size() -
remove
-
resize
public void resize(int size) Description copied from interface:ObjectCacheManagerResize the cache to a particular size, if the size is actually bigger than the current size then this operation should not touch the cached objects, if the size is less then the cache should be reduced in size using the current policy until the size is reached. Either way the maximum size should be set to this value.- Specified by:
resizein interfaceObjectCacheManager- Parameters:
size- The new size.
-
resize
protected void resize() -
put
-
flush
public void flush()Clear our data structures.- Specified by:
flushin interfaceObjectCacheManager
-