asmuts 02/05/14 13:41:04
Modified: src/java/org/apache/jcs/auxiliary/disk
AbstractDiskCache.java
Log:
seems to work fine.
Adjusting the default log level changes everything.
Please look at this.
Revision Changes Path
1.9 +120 -91
jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java
Index: AbstractDiskCache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AbstractDiskCache.java 14 May 2002 20:36:03 -0000 1.8
+++ AbstractDiskCache.java 14 May 2002 20:41:04 -0000 1.9
@@ -53,7 +53,6 @@
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jcs.engine.CacheElement;
@@ -73,22 +72,20 @@
import java.util.Hashtable;
/**
- * 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.
+ * 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?
*
- * 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?
- *
- * @author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
- * @author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
- * @version $Id: AbstractDiskCache.java,v 1.8 2002/05/14 20:36:03 asmuts Exp $
+ *@author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
+ *@author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
+ *@created May 13, 2002
+ *@version $Id: AbstractDiskCache.java,v 1.9 2002/05/14 20:41:04 asmuts Exp $
*/
public abstract class AbstractDiskCache implements AuxiliaryCache, Serializable
{
@@ -96,66 +93,75 @@
LogFactory.getLog( AbstractDiskCache.class );
/**
- * Map where elements are stored between being added to this cache and
- * actually spooled to disk. This allows puts to the disk cache to return
- * quickly, and the more expensive operation of serializing the elements
- * to persistent storage queued for later. If the elements are pulled into
- * the memory cache while the are still in purgatory, writing to disk can
- * be cancelled.
+ * Map where elements are stored between being added to this cache and
+ * actually spooled to disk. This allows puts to the disk cache to return
+ * quickly, and the more expensive operation of serializing the elements to
+ * persistent storage queued for later. If the elements are pulled into the
+ * memory cache while the are still in purgatory, writing to disk can be
+ * cancelled.
*/
protected Hashtable purgatory = new Hashtable();
/**
- * The CacheEventQueue where changes will be queued for asynchronous
- * updating of the persistent storage.
+ * The CacheEventQueue where changes will be queued for asynchronous
+ * updating of the persistent storage.
*/
protected ICacheEventQueue cacheEventQueue;
/**
- * Each instance of a Disk cache should use this lock to synchronize reads
- * and writes to the underlying storage mechansism.
+ * Each instance of a Disk cache should use this lock to synchronize reads
+ * and writes to the underlying storage mechansism.
*/
protected ReadWriteLock lock = new ReadWriteLock();
- /** Manages locking for purgatory item manipulation. */
+ /**
+ * Manages locking for purgatory item manipulation.
+ */
protected ReadWriteLockManager locker = new ReadWriteLockManager();
/**
- * Indicates whether the cache is 'alive', defined as having been
- * initialized, but not yet disposed.
+ * Indicates whether the cache is 'alive', defined as having been
+ * initialized, but not yet disposed.
*/
protected boolean alive = false;
/**
- * Every cache will have a name, subclasses must set this when they are
- * initialized.
+ * Every cache will have a name, subclasses must set this when they are
+ * initialized.
*/
protected String cacheName;
/**
- * DEBUG: Keeps a count of the number of purgatory hits for debug messages
+ * DEBUG: Keeps a count of the number of purgatory hits for debug messages
*/
protected int purgHits = 0;
// ----------------------------------------------------------- constructors
+ /**
+ * Constructor for the AbstractDiskCache object
+ *
+ *@param cacheName Description of the Parameter
+ */
public AbstractDiskCache( String cacheName )
{
this.cacheName = cacheName;
this.cacheEventQueue = new CacheEventQueue( new MyCacheListener(),
- CacheInfo.listenerId,
- cacheName );
+ CacheInfo.listenerId,
+ cacheName );
}
// ------------------------------------------------------- interface ICache
/**
- * Adds the provided element to the cache. Element will be added to
- * purgatory, and then queued for later writing to the serialized storage
- * mechanism.
+ * Adds the provided element to the cache. Element will be added to
+ * purgatory, and then queued for later writing to the serialized storage
+ * mechanism.
*
- * @see org.apache.jcs.engine.behavior.ICache#update
+ *@param cacheElement Description of the Parameter
+ *@exception IOException Description of the Exception
+ *@see org.apache.jcs.engine.behavior.ICache#update
*/
public final void update( ICacheElement cacheElement )
throws IOException
@@ -163,7 +169,7 @@
if ( log.isDebugEnabled() )
{
log.debug( "Putting element in purgatory, cacheName: " + cacheName +
- ", key: " + cacheElement.getKey() );
+ ", key: " + cacheElement.getKey() );
}
try
@@ -195,7 +201,9 @@
}
/**
- * @see AuxiliaryCache#get
+ *@param key Description of the Parameter
+ *@return Description of the Return Value
+ *@see AuxiliaryCache#get
*/
public final ICacheElement get( Serializable key )
{
@@ -229,7 +237,7 @@
pe.setSpoolable( false );
log.debug( "Found element in purgatory, cacheName: " + cacheName +
- ", key: " + key );
+ ", key: " + key );
purgatory.remove( key );
@@ -254,7 +262,9 @@
}
/**
- * @see org.apache.jcs.engine.behavior.ICache#remove
+ *@param key Description of the Parameter
+ *@return Description of the Return Value
+ *@see org.apache.jcs.engine.behavior.ICache#remove
*/
public final boolean remove( Serializable key )
{
@@ -265,14 +275,14 @@
try
{
- purgatory.remove( key );
+ purgatory.remove( key );
- doRemove( key );
+ doRemove( key );
}
finally
{
- releaseLock( this.cacheName + key.toString() );
+ releaseLock( this.cacheName + key.toString() );
}
// Remove from persistent store immediately
@@ -280,7 +290,7 @@
}
/**
- * @see org.apache.jcs.engine.behavior.ICache#removeAll
+ *@see org.apache.jcs.engine.behavior.ICache#removeAll
*/
public final void removeAll()
{
@@ -294,7 +304,7 @@
}
/**
- * Adds a dispose request to the disk cache.
+ * Adds a dispose request to the disk cache.
*/
public final void dispose()
{
@@ -310,7 +320,8 @@
}
/**
- * @see ICache#getCacheName
+ *@return The cacheName value
+ *@see ICache#getCacheName
*/
public String getCacheName()
{
@@ -318,7 +329,8 @@
}
/**
- * @see ICache#getStatus
+ *@return The status value
+ *@see ICache#getStatus
*/
public int getStatus()
{
@@ -326,18 +338,18 @@
}
/**
- * Size cannot be determined without knowledge of the cache implementation,
- * so subclasses will need to implement this method.
+ * Size cannot be determined without knowledge of the cache implementation,
+ * so subclasses will need to implement this method.
*
- * @see ICache#getSize
+ *@return The size value
+ *@see ICache#getSize
*/
public abstract int getSize();
/**
- * @see org.apache.jcs.engine.behavior.ICacheType#getCacheType
- *
- * @return Always returns DISK_CACHE since subclasses should all be of
- * that type.
+ *@return Always returns DISK_CACHE since subclasses should all be of
+ * that type.
+ *@see org.apache.jcs.engine.behavior.ICacheType#getCacheType
*/
public int getCacheType()
{
@@ -346,9 +358,9 @@
/**
- * Internally used write lock for purgatory item modification.
+ * Internally used write lock for purgatory item modification.
*
- * @param id What name to lock on.
+ *@param id What name to lock on.
*/
private void writeLock( String id )
{
@@ -365,15 +377,15 @@
catch ( Throwable e )
{
- log.error( e );
+ log.error( e );
}
}
/**
- * Internally used write lock for purgatory item modification.
+ * Internally used write lock for purgatory item modification.
*
- * @param id What name to lock on.
+ *@param id What name to lock on.
*/
private void releaseLock( String id )
{
@@ -384,21 +396,26 @@
catch ( Throwable e )
{
- log.error( e );
+ log.error( e );
}
}
/**
- * Cache that implements the CacheListener interface, and calls appropriate
- * methods in its parent class.
+ * Cache that implements the CacheListener interface, and calls appropriate
+ * methods in its parent class.
+ *
+ *@author asmuts
+ *@created May 13, 2002
*/
private class MyCacheListener implements ICacheListener
{
private byte listenerId = 0;
/**
- * @see org.apache.jcs.engine.CacheListener#getListenerId
+ *@return The listenerId value
+ *@exception IOException Description of the Exception
+ *@see org.apache.jcs.engine.CacheListener#getListenerId
*/
public byte getListenerId()
throws IOException
@@ -407,7 +424,9 @@
}
/**
- * @see ICacheListener#setListenerId
+ *@param id The new listenerId value
+ *@exception IOException Description of the Exception
+ *@see ICacheListener#setListenerId
*/
public void setListenerId( byte id )
throws IOException
@@ -416,12 +435,13 @@
}
/**
- * @see ICacheListener#handlePut
- *
- * NOTE: This checks if the element is a puratory element and behaves
- * differently depending. However since we have control over how
- * elements are added to the cache event queue, that may not be needed
- * ( they are always PurgatoryElements ).
+ *@param element Description of the Parameter
+ *@exception IOException Description of the Exception
+ *@see ICacheListener#handlePut NOTE: This checks if
+ * the element is a puratory element and behaves differently
+ * depending. However since we have control over how elements are
+ * added to the cache event queue, that may not be needed ( they
+ * are always PurgatoryElements ).
*/
public void handlePut( ICacheElement element )
throws IOException
@@ -438,20 +458,20 @@
// If the element has already been removed from purgatory
// do nothing
- String lK =element.getKey().toString();
+ String lK = element.getKey().toString();
writeLock( getCacheName() + lK );
try
{
- if ( ! purgatory.contains( pe ) )
- {
- return;
- }
+ if ( !purgatory.contains( pe ) )
+ {
+ return;
+ }
}
finally
{
- releaseLock( getCacheName() + lK );
+ releaseLock( getCacheName() + lK );
}
element = pe.getCacheElement();
@@ -476,7 +496,10 @@
}
/**
- * @see org.apache.jcs.engine.CacheListener#handleRemove
+ *@param cacheName Description of the Parameter
+ *@param key Description of the Parameter
+ *@exception IOException Description of the Exception
+ *@see org.apache.jcs.engine.CacheListener#handleRemove
*/
public void handleRemove( String cacheName, Serializable key )
throws IOException
@@ -491,7 +514,9 @@
}
/**
- * @see org.apache.jcs.engine.CacheListener#handleRemoveAll
+ *@param cacheName Description of the Parameter
+ *@exception IOException Description of the Exception
+ *@see
org.apache.jcs.engine.CacheListener#handleRemoveAll
*/
public void handleRemoveAll( String cacheName )
throws IOException
@@ -503,7 +528,9 @@
}
/**
- * @see org.apache.jcs.engine.CacheListener#handleDispose
+ *@param cacheName Description of the Parameter
+ *@exception IOException Description of the Exception
+ *@see org.apache.jcs.engine.CacheListener#handleDispose
*/
public void handleDispose( String cacheName )
throws IOException
@@ -519,36 +546,38 @@
// ---------------------- subclasses should implement the following methods
/**
- * Get a value from the persistent store.
+ * Get a value from the persistent store.
*
- * @param key Key to locate value for.
- * @return An object matching key, or null.
+ *@param key Key to locate value for.
+ *@return An object matching key, or null.
*/
protected abstract ICacheElement doGet( Serializable key );
/**
- * Add a cache element to the persistent store.
+ * Add a cache element to the persistent store.
+ *
+ *@param element Description of the Parameter
*/
protected abstract void doUpdate( ICacheElement element );
/**
- * Remove an object from the persistent store if found.
+ * Remove an object from the persistent store if found.
*
- * @param key Key of object to remove.
+ *@param key Key of object to remove.
+ *@return Description of the Return Value
*/
protected abstract boolean doRemove( Serializable key );
/**
- * Remove all objects from the persistent store.
+ * Remove all objects from the persistent store.
*/
protected abstract void doRemoveAll();
/**
- * Dispose of the persistent store. Note that disposal of purgatory and
- * setting alive to false does NOT need to be done by this method.
+ * Dispose of the persistent store. Note that disposal of purgatory and
+ * setting alive to false does NOT need to be done by this method.
*/
protected abstract void doDispose();
-
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>