Author: asmuts
Date: Fri Oct 10 10:35:38 2008
New Revision: 703528
URL: http://svn.apache.org/viewvc?rev=703528&view=rev
Log:
added the ability to specify a custom event queue
Added:
jakarta/jcs/trunk/src/test/org/apache/jcs/engine/CacheEventQueueFactoryUnitTest.java
jakarta/jcs/trunk/src/test/org/apache/jcs/engine/MockCacheEventQueue.java
Modified:
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AbstractAuxiliaryCacheAttributes.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AuxiliaryCacheAttributes.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheNoWait.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheNoWait.java
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java
jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AbstractAuxiliaryCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AbstractAuxiliaryCacheAttributes.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AbstractAuxiliaryCacheAttributes.java
(original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AbstractAuxiliaryCacheAttributes.java
Fri Oct 10 10:35:38 2008
@@ -15,8 +15,6 @@
* the License.
*/
-import org.apache.jcs.engine.behavior.ICacheEventQueue;
-
/**
* This has common attributes used by all auxiliaries.
*/
@@ -32,8 +30,8 @@
/** name */
protected String name;
- /** eventQueueType -- pooled or single threaded */
- protected int eventQueueType;
+ /** eventQueueType -- custom classname, pooled, or single threaded */
+ protected String eventQueueType;
/** Named when pooled */
protected String eventQueuePoolName;
@@ -79,27 +77,11 @@
/**
* SINGLE is the default. If you choose POOLED, the value of EventQueuePoolName will
be used
* <p>
- * @param s SINGLE or POOLED
+ * @param queueType SINGLE or POOLED or a classname
*/
- public void setEventQueueType( String s )
+ public void setEventQueueType( String queueType )
{
- if ( s != null )
- {
- if ( s.equalsIgnoreCase( POOLED_QUEUE_TYPE ) )
- {
- this.eventQueueType = ICacheEventQueue.POOLED_QUEUE_TYPE;
- }
- else
- {
- // single by default
- this.eventQueueType = ICacheEventQueue.SINGLE_QUEUE_TYPE;
- }
- }
- else
- {
- // null, single by default
- this.eventQueueType = ICacheEventQueue.SINGLE_QUEUE_TYPE;
- }
+ this.eventQueueType = queueType;
}
/**
@@ -107,24 +89,7 @@
*/
public String getEventQueueType()
{
- if ( this.eventQueueType == ICacheEventQueue.POOLED_QUEUE_TYPE )
- {
- return POOLED_QUEUE_TYPE;
- }
- else
- {
- return SINGLE_QUEUE_TYPE;
- }
- }
-
- /**
- * Returns the value used by the factory.
- * <p>
- * @return code
- */
- public int getEventQueueTypeFactoryCode()
- {
- return this.eventQueueType;
+ return eventQueueType;
}
/**
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AuxiliaryCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AuxiliaryCacheAttributes.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AuxiliaryCacheAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/AuxiliaryCacheAttributes.java Fri
Oct 10 10:35:38 2008
@@ -30,6 +30,7 @@
/** Uses a thread pool. */
public static final String POOLED_QUEUE_TYPE = "POOLED";
+
/**
* Sets the name of the cache, referenced by the appropriate manager.
* <p>
@@ -71,13 +72,6 @@
public String getEventQueueType();
/**
- * Returns the value used by the factory.
- * <p>
- * @return code
- */
- public int getEventQueueTypeFactoryCode();
-
- /**
* If you choose a POOLED event queue type, the value of EventQueuePoolName will be used.
This
* is ignored if the pool type is SINGLE
* <p>
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/AbstractDiskCache.java Fri Oct
10 10:35:38 2008
@@ -121,7 +121,7 @@
CacheEventQueueFactory fact = new CacheEventQueueFactory();
this.cacheEventQueue = fact.createCacheEventQueue( new MyCacheListener(), CacheInfo.listenerId,
cacheName,
dcattr.getEventQueuePoolName(),
dcattr
- .getEventQueueTypeFactoryCode()
);
+ .getEventQueueType() );
// create purgatory
initPurgatory();
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheNoWait.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheNoWait.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheNoWait.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheNoWait.java Fri
Oct 10 10:35:38 2008
@@ -94,7 +94,7 @@
CacheEventQueueFactory fact = new CacheEventQueueFactory();
this.q = fact.createCacheEventQueue( new CacheAdaptor( cache ), LateralCacheInfo.listenerId,
cache
.getCacheName(), cache.getAuxiliaryCacheAttributes().getEventQueuePoolName(),
cache
- .getAuxiliaryCacheAttributes().getEventQueueTypeFactoryCode() );
+ .getAuxiliaryCacheAttributes().getEventQueueType() );
// need each no wait to handle each of its real updates and removes,
// since there may
@@ -318,7 +318,7 @@
CacheEventQueueFactory fact = new CacheEventQueueFactory();
this.q = fact.createCacheEventQueue( new CacheAdaptor( cache ), LateralCacheInfo.listenerId,
cache
.getCacheName(), cache.getAuxiliaryCacheAttributes().getEventQueuePoolName(),
cache
- .getAuxiliaryCacheAttributes().getEventQueueTypeFactoryCode() );
+ .getAuxiliaryCacheAttributes().getEventQueueType() );
}
/**
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheNoWait.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheNoWait.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheNoWait.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/RemoteCacheNoWait.java Fri
Oct 10 10:35:38 2008
@@ -108,7 +108,7 @@
CacheEventQueueFactory factory = new CacheEventQueueFactory();
this.cacheEventQueue = factory.createCacheEventQueue( new CacheAdaptor( remoteCacheClient
), remoteCacheClient
.getListenerId(), remoteCacheClient.getCacheName(), remoteCacheClient.getAuxiliaryCacheAttributes()
- .getEventQueuePoolName(), remoteCacheClient.getAuxiliaryCacheAttributes().getEventQueueTypeFactoryCode()
);
+ .getEventQueuePoolName(), remoteCacheClient.getAuxiliaryCacheAttributes().getEventQueueType()
);
if ( remoteCacheClient.getStatus() == CacheConstants.STATUS_ERROR )
{
@@ -367,7 +367,7 @@
CacheEventQueueFactory fact = new CacheEventQueueFactory();
this.cacheEventQueue = fact.createCacheEventQueue( new CacheAdaptor( remoteCacheClient
), remoteCacheClient
.getListenerId(), remoteCacheClient.getCacheName(), remoteCacheClient.getAuxiliaryCacheAttributes()
- .getEventQueuePoolName(), remoteCacheClient.getAuxiliaryCacheAttributes().getEventQueueTypeFactoryCode()
);
+ .getEventQueuePoolName(), remoteCacheClient.getAuxiliaryCacheAttributes().getEventQueueType()
);
if ( previousQueue.isWorking() )
{
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java
(original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/remote/server/RemoteCacheServer.java
Fri Oct 10 10:35:38 2008
@@ -1252,7 +1252,7 @@
CacheEventQueueFactory fact = new CacheEventQueueFactory();
ICacheEventQueue q = fact.createCacheEventQueue( listener, id, cacheName, remoteCacheServerAttributes
- .getEventQueuePoolName(), remoteCacheServerAttributes.getEventQueueTypeFactoryCode()
);
+ .getEventQueuePoolName(), remoteCacheServerAttributes.getEventQueueType()
);
eventQMap.put( new Long( listener.getListenerId() ), q );
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java Fri Oct 10 10:35:38
2008
@@ -47,7 +47,7 @@
private static final Log log = LogFactory.getLog( CacheEventQueue.class );
/** The type of queue -- there are pooled and single */
- private static final int queueType = SINGLE_QUEUE_TYPE;
+ private static final String queueType = SINGLE_QUEUE_TYPE;
/** default */
private static final int DEFAULT_WAIT_TO_DIE_MILLIS = 10000;
@@ -124,6 +124,22 @@
public CacheEventQueue( ICacheListener listener, long listenerId, String cacheName, int
maxFailure,
int waitBeforeRetry )
{
+ initialize( listener, listenerId, cacheName, maxFailure, waitBeforeRetry, null );
+ }
+
+ /**
+ * Initializes the queue.
+ * <,p>
+ * @param listener
+ * @param listenerId
+ * @param cacheName
+ * @param maxFailure
+ * @param waitBeforeRetry
+ * @param threadPoolName
+ */
+ public void initialize( ICacheListener listener, long listenerId, String cacheName, int
maxFailure,
+ int waitBeforeRetry, String threadPoolName )
+ {
if ( listener == null )
{
throw new IllegalArgumentException( "listener must not be null" );
@@ -140,14 +156,13 @@
log.debug( "Constructed: " + this );
}
}
-
+
/**
* What type of queue is this.
* <p>
- * (non-Javadoc)
- * @see org.apache.jcs.engine.behavior.ICacheEventQueue#getQueueType()
+ * @return queueType
*/
- public int getQueueType()
+ public String getQueueType()
{
return queueType;
}
@@ -164,6 +179,7 @@
/**
* Returns the time to wait for events before killing the background thread.
+ * <p>
* @return int
*/
public int getWaitToDieMillis()
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java Fri Oct 10
10:35:38 2008
@@ -23,9 +23,11 @@
import org.apache.commons.logging.LogFactory;
import org.apache.jcs.engine.behavior.ICacheEventQueue;
import org.apache.jcs.engine.behavior.ICacheListener;
+import org.apache.jcs.utils.config.OptionConverter;
/**
- * This class hands out event Queues. This allows us to change the implementation more easily.
+ * This class hands out event Queues. This allows us to change the implementation more easily.
You
+ * can confugure the cache to use a custom type.
* <p>
* @author aaronsm
*/
@@ -41,11 +43,11 @@
* @param listenerId
* @param cacheName
* @param threadPoolName
- * @param poolType
+ * @param poolType - SINGLE, QUEUED, or classname
* @return ICacheEventQueue
*/
public ICacheEventQueue createCacheEventQueue( ICacheListener listener, long listenerId,
String cacheName,
- String threadPoolName, int poolType )
+ String threadPoolName, String poolType
)
{
return createCacheEventQueue( listener, listenerId, cacheName, 10, 500, threadPoolName,
poolType );
}
@@ -64,21 +66,38 @@
*/
public ICacheEventQueue createCacheEventQueue( ICacheListener listener, long listenerId,
String cacheName,
int maxFailure, int waitBeforeRetry, String
threadPoolName,
- int poolType )
+ String poolType )
{
if ( log.isDebugEnabled() )
{
log.debug( "threadPoolName = [" + threadPoolName + "] poolType = " + poolType
+ " " );
}
- if ( poolType == ICacheEventQueue.SINGLE_QUEUE_TYPE )
+ ICacheEventQueue eventQueue = null;
+ if ( ICacheEventQueue.SINGLE_QUEUE_TYPE.equalsIgnoreCase( poolType ) )
{
- return new CacheEventQueue( listener, listenerId, cacheName, maxFailure, waitBeforeRetry
);
+ eventQueue = new CacheEventQueue( listener, listenerId, cacheName, maxFailure,
waitBeforeRetry );
+ }
+ else if ( ICacheEventQueue.POOLED_QUEUE_TYPE.equalsIgnoreCase( poolType ) )
+ {
+ eventQueue = new PooledCacheEventQueue( listener, listenerId, cacheName, maxFailure,
waitBeforeRetry,
+ threadPoolName );
}
else
{
- return new PooledCacheEventQueue( listener, listenerId, cacheName, maxFailure,
waitBeforeRetry,
- threadPoolName );
+ eventQueue = (ICacheEventQueue) OptionConverter.instantiateByClassName( poolType,
ICacheEventQueue.class,
+ null
);
+ if ( eventQueue != null )
+ {
+ eventQueue.initialize( listener, listenerId, cacheName, maxFailure, waitBeforeRetry,
threadPoolName );
+ }
+ else
+ {
+ log.warn( "Could not instantiate custom event queue [" + poolType
+ + "]. Will use standard single threaded queue." );
+ eventQueue = new CacheEventQueue( listener, listenerId, cacheName, maxFailure,
waitBeforeRetry );
+ }
}
+ return eventQueue;
}
}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java Fri Oct 10
10:35:38 2008
@@ -53,13 +53,14 @@
public class PooledCacheEventQueue
implements ICacheEventQueue
{
- private static final int queueType = POOLED_QUEUE_TYPE;
+ /** The type of event queue */
+ private static final String queueType = POOLED_QUEUE_TYPE;
+ /** The logger */
private static final Log log = LogFactory.getLog( PooledCacheEventQueue.class );
- // time to wait for an event before snuffing the background thread
- // if the queue is empty.
- // make configurable later
+ /** time to wait for an event before snuffing the background thread
+ if the queue is empty. make configurable later */
private int waitToDieMillis = 10000;
private ICacheListener listener;
@@ -70,14 +71,14 @@
private int maxFailure;
- // in milliseconds
+ /** in milliseconds */
private int waitBeforeRetry;
private boolean destroyed = true;
private boolean working = true;
- // The Thread Pool to execute events with.
+ /** The Thread Pool to execute events with. */
private ThreadPool pool = null;
/**
@@ -93,6 +94,22 @@
public PooledCacheEventQueue( ICacheListener listener, long listenerId, String cacheName,
int maxFailure,
int waitBeforeRetry, String threadPoolName )
{
+ initialize( listener, listenerId, cacheName, maxFailure, waitBeforeRetry, threadPoolName
);
+ }
+
+ /**
+ * Initializes the queue.
+ * <,p>
+ * @param listener
+ * @param listenerId
+ * @param cacheName
+ * @param maxFailure
+ * @param waitBeforeRetry
+ * @param threadPoolName
+ */
+ public void initialize( ICacheListener listener, long listenerId, String cacheName, int
maxFailure,
+ int waitBeforeRetry, String threadPoolName )
+ {
if ( listener == null )
{
throw new IllegalArgumentException( "listener must not be null" );
@@ -113,14 +130,14 @@
if ( log.isDebugEnabled() )
{
- log.debug( "Constructed: " + this );
+ log.debug( "Initialized: " + this );
}
}
/**
* @return the queue type
*/
- public int getQueueType()
+ public String getQueueType()
{
return queueType;
}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java Fri Oct
10 10:35:38 2008
@@ -31,21 +31,35 @@
public interface ICacheEventQueue
{
/**
+ * Initializes the queue.
+ * <,p>
+ * @param listener
+ * @param listenerId
+ * @param cacheName
+ * @param maxFailure
+ * @param waitBeforeRetry
+ * @param threadPoolName
+ */
+ public void initialize( ICacheListener listener, long listenerId, String cacheName, int
maxFailure,
+ int waitBeforeRetry, String threadPoolName );
+
+ /**
* Does not use a thread pool.
*/
- public static final int SINGLE_QUEUE_TYPE = 0;
+ public static final String SINGLE_QUEUE_TYPE = "SINGLE";
/**
* Uses a thread pool
*/
- public static final int POOLED_QUEUE_TYPE = 1;
+ public static final String POOLED_QUEUE_TYPE = "POOLED";
+
/**
* Return the type of event queue we are using, either single or pooled.
* <p>
* @return the queue type: single or pooled
*/
- public abstract int getQueueType();
+ public abstract String getQueueType();
/**
* Adds a feature to the PutEvent attribute of the ICacheEventQueue object
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java?rev=703528&r1=703527&r2=703528&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java Fri Oct
10 10:35:38 2008
@@ -23,52 +23,54 @@
import java.io.Serializable;
/**
- * Used to receive a cache event notification. <br>
- * <br>
- * Note: objects which implement this interface are local listeners to cache
- * changes, whereas objects which implement IRmiCacheListener are remote
- * listeners to cache changes.
- *
+ * Used to receive a cache event notification.
+ * <p>
+ * Note: objects which implement this interface are local listeners to cache changes, whereas
+ * objects which implement IRmiCacheListener are remote listeners to cache changes.
*/
public interface ICacheListener
{
- /** Notifies the subscribers for a cache entry update.
+ /**
+ * Notifies the subscribers for a cache entry update.
+ * <p>
* @param item
- * @throws IOException*/
+ * @throws IOException
+ */
public void handlePut( ICacheElement item )
throws IOException;
- /** Notifies the subscribers for a cache entry removal.
+ /**
+ * Notifies the subscribers for a cache entry removal.
+ * <p>
* @param cacheName
* @param key
- * @throws IOException*/
+ * @throws IOException
+ */
public void handleRemove( String cacheName, Serializable key )
throws IOException;
- /** Notifies the subscribers for a cache remove-all.
+ /**
+ * Notifies the subscribers for a cache remove-all.
+ * <p>
* @param cacheName
- * @throws IOException*/
+ * @throws IOException
+ */
public void handleRemoveAll( String cacheName )
throws IOException;
- /** Notifies the subscribers for freeing up the named cache.
+ /**
+ * Notifies the subscribers for freeing up the named cache.
+ * <p>
* @param cacheName
- * @throws IOException*/
+ * @throws IOException
+ */
public void handleDispose( String cacheName )
throws IOException;
/**
- * Notifies the subscribers for releasing all caches.
- *
- * @param id
- * The new listenerId value
- */
- // public void handleRelease() throws IOException;
- /**
* sets unique identifier of listener home
- *
- * @param id
- * The new listenerId value
+ * <p>
+ * @param id The new listenerId value
* @throws IOException
*/
public void setListenerId( long id )
@@ -76,11 +78,10 @@
/**
* Gets the listenerId attribute of the ICacheListener object
- *
+ * <p>
* @return The listenerId value
* @throws IOException
*/
public long getListenerId()
throws IOException;
-
}
Added: jakarta/jcs/trunk/src/test/org/apache/jcs/engine/CacheEventQueueFactoryUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/engine/CacheEventQueueFactoryUnitTest.java?rev=703528&view=auto
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/engine/CacheEventQueueFactoryUnitTest.java (added)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/engine/CacheEventQueueFactoryUnitTest.java Fri
Oct 10 10:35:38 2008
@@ -0,0 +1,66 @@
+package org.apache.jcs.engine;
+
+import org.apache.jcs.auxiliary.remote.MockRemoteCacheListener;
+import org.apache.jcs.engine.behavior.ICacheEventQueue;
+import org.apache.jcs.engine.behavior.ICacheListener;
+
+import junit.framework.TestCase;
+
+/** Unit tests for the CacheEventQueueFactory */
+public class CacheEventQueueFactoryUnitTest
+ extends TestCase
+{
+ /** Test create */
+ public void testCreateCacheEventQueue_Single()
+ {
+ // SETUP
+ String eventQueueType = ICacheEventQueue.SINGLE_QUEUE_TYPE;
+ ICacheListener listener = new MockRemoteCacheListener();
+ long listenerId = 1;
+
+ CacheEventQueueFactory factory = new CacheEventQueueFactory();
+
+ // DO WORK
+ ICacheEventQueue result = factory.createCacheEventQueue( listener, listenerId, "cacheName",
"threadPoolName", eventQueueType );
+
+ // VERIFY
+ assertNotNull( "Should have a result", result );
+ assertTrue( "Wrong type", result instanceof CacheEventQueue );
+ }
+
+ /** Test create */
+ public void testCreateCacheEventQueue_Pooled()
+ {
+ // SETUP
+ String eventQueueType = ICacheEventQueue.POOLED_QUEUE_TYPE;
+ ICacheListener listener = new MockRemoteCacheListener();
+ long listenerId = 1;
+
+ CacheEventQueueFactory factory = new CacheEventQueueFactory();
+
+ // DO WORK
+ ICacheEventQueue result = factory.createCacheEventQueue( listener, listenerId, "cacheName",
"threadPoolName", eventQueueType );
+
+ // VERIFY
+ assertNotNull( "Should have a result", result );
+ assertTrue( "Wrong type", result instanceof PooledCacheEventQueue );
+ }
+
+ /** Test create */
+ public void testCreateCacheEventQueue_Custom()
+ {
+ // SETUP
+ String eventQueueType = MockCacheEventQueue.class.getName();
+ ICacheListener listener = new MockRemoteCacheListener();
+ long listenerId = 1;
+
+ CacheEventQueueFactory factory = new CacheEventQueueFactory();
+
+ // DO WORK
+ ICacheEventQueue result = factory.createCacheEventQueue( listener, listenerId, "cacheName",
"threadPoolName", eventQueueType );
+
+ // VERIFY
+ assertNotNull( "Should have a result", result );
+ assertTrue( "Wrong type: " + result, result instanceof MockCacheEventQueue );
+ }
+}
\ No newline at end of file
Added: jakarta/jcs/trunk/src/test/org/apache/jcs/engine/MockCacheEventQueue.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/engine/MockCacheEventQueue.java?rev=703528&view=auto
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/engine/MockCacheEventQueue.java (added)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/engine/MockCacheEventQueue.java Fri Oct 10 10:35:38
2008
@@ -0,0 +1,14 @@
+package org.apache.jcs.engine;
+
+import org.apache.jcs.auxiliary.remote.MockRemoteCacheListener;
+
+/** For testing the factory */
+public class MockCacheEventQueue
+ extends CacheEventQueue
+{
+ /** junk */
+ public MockCacheEventQueue()
+ {
+ super( new MockRemoteCacheListener(), 1, null, 1, 1 );
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org
|