|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.jcs.auxiliary.disk.AbstractDiskCache
Abstract class providing a base implementation of a disk cache, which can be easily extended to implement a disk cache for a specific perstistence mechanism. When implementing the abstract methods note that while this base class handles most things, it does not acquire or release any locks. Implementations should do so as neccesary. This is mainly done to minimize the time speant in critical sections. Error handling in this class needs to be addressed. Currently if an exception is thrown by the persistence mechanism, this class destroys the event queue. Should it also destory purgatory? Should it dispose itself?
Nested Class Summary | |
private class |
AbstractDiskCache.MyCacheListener
Cache that implements the CacheListener interface, and calls appropriate methods in its parent class. |
Field Summary | |
protected boolean |
alive
Indicates whether the cache is 'alive', defined as having been initialized, but not yet disposed. |
protected ICacheEventQueue |
cacheEventQueue
The CacheEventQueue where changes will be queued for asynchronous updating of the persistent storage. |
protected java.lang.String |
cacheName
Every cache will have a name, subclasses must set this when they are initialized. |
protected ReadWriteLock |
lock
Each instance of a Disk cache should use this lock to synchronize reads and writes to the underlying storage mechansism. |
protected ReadWriteLockManager |
locker
Manages locking for purgatory item manipulation. |
private static org.apache.commons.logging.Log |
log
|
protected java.util.Hashtable |
purgatory
Map where elements are stored between being added to this cache and actually spooled to disk. |
protected int |
purgHits
DEBUG: Keeps a count of the number of purgatory hits for debug messages |
Fields inherited from interface org.apache.jcs.engine.behavior.ICacheType |
CACHE_HUB, DISK_CACHE, LATERAL_CACHE, REMOTE_CACHE |
Constructor Summary | |
AbstractDiskCache(java.lang.String cacheName)
|
Method Summary | |
void |
dispose()
Adds a dispose request to the disk cache. |
protected abstract void |
doDispose()
Dispose of the persistent store. |
protected abstract ICacheElement |
doGet(java.io.Serializable key)
Get a value from the persistent store. |
protected abstract boolean |
doRemove(java.io.Serializable key)
Remove an object from the persistent store if found. |
protected abstract void |
doRemoveAll()
Remove all objects from the persistent store. |
protected abstract void |
doUpdate(ICacheElement element)
Add a cache element to the persistent store. |
ICacheElement |
get(java.io.Serializable key)
Gets an item from the cache. |
java.lang.String |
getCacheName()
Returns the cache name. |
int |
getCacheType()
Returns the cache type. |
abstract java.util.Set |
getGroupKeys(java.lang.String groupName)
Gets the set of keys of objects currently in the group |
abstract int |
getSize()
Size cannot be determined without knowledge of the cache implementation, so subclasses will need to implement this method. |
int |
getStatus()
Returns the cache status. |
private void |
releaseLock(java.lang.String id)
Internally used write lock for purgatory item modification. |
boolean |
remove(java.io.Serializable key)
Removes an item from the cache. |
void |
removeAll()
Removes all cached items from the cache. |
void |
update(ICacheElement cacheElement)
Adds the provided element to the cache. |
private void |
writeLock(java.lang.String id)
Internally used write lock for purgatory item modification. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private static final org.apache.commons.logging.Log log
protected java.util.Hashtable purgatory
protected ICacheEventQueue cacheEventQueue
protected ReadWriteLock lock
protected ReadWriteLockManager locker
protected boolean alive
protected java.lang.String cacheName
protected int purgHits
Constructor Detail |
public AbstractDiskCache(java.lang.String cacheName)
Method Detail |
public final void update(ICacheElement cacheElement) throws java.io.IOException
update
in interface AuxiliaryCache
java.io.IOException
ICache.update(org.apache.jcs.engine.behavior.ICacheElement)
public final ICacheElement get(java.io.Serializable key)
AuxiliaryCache
get
in interface AuxiliaryCache
AuxiliaryCache.get(java.io.Serializable)
public abstract java.util.Set getGroupKeys(java.lang.String groupName)
AuxiliaryCache
getGroupKeys
in interface AuxiliaryCache
public final boolean remove(java.io.Serializable key)
AuxiliaryCache
remove
in interface AuxiliaryCache
ICache.remove(java.io.Serializable)
public final void removeAll()
AuxiliaryCache
removeAll
in interface AuxiliaryCache
ICache.removeAll()
public final void dispose()
dispose
in interface AuxiliaryCache
public java.lang.String getCacheName()
AuxiliaryCache
getCacheName
in interface AuxiliaryCache
ICache#getCacheName
public int getStatus()
AuxiliaryCache
getStatus
in interface AuxiliaryCache
ICache#getStatus
public abstract int getSize()
getSize
in interface AuxiliaryCache
ICache#getSize
public int getCacheType()
ICacheType
getCacheType
in interface ICacheType
ICacheType.getCacheType()
private void writeLock(java.lang.String id)
id
- What name to lock on.private void releaseLock(java.lang.String id)
id
- What name to lock on.protected abstract ICacheElement doGet(java.io.Serializable key)
key
- Key to locate value for.
protected abstract void doUpdate(ICacheElement element)
protected abstract boolean doRemove(java.io.Serializable key)
key
- Key of object to remove.protected abstract void doRemoveAll()
protected abstract void doDispose()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |