| package org.apache.jcs.engine; |
| |
| import org.apache.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| import org.apache.jcs.engine.behavior.ICacheEventQueue; |
| import org.apache.jcs.engine.behavior.ICacheListener; |
| |
| /** |
| * This class hands out event Queues. This allows us to change the |
| * implementation more easily. |
| * |
| * @author aaronsm |
| * |
| */ |
| public class CacheEventQueueFactory |
| { |
| |
| private static final Log log = LogFactory.getLog( CacheEventQueueFactory.class ); |
| |
| |
| /** |
| * The most commonly used factory method. |
| * |
| * @param listener |
| * @param listenerId |
| * @param cacheName |
| * @param threadPoolName |
| * @param poolType |
| * @return |
| */ |
| public ICacheEventQueue createCacheEventQueue( ICacheListener listener, |
| long listenerId, String cacheName, String threadPoolName, int poolType ) |
| { |
| return createCacheEventQueue( listener, listenerId, cacheName, 10, 500, |
| threadPoolName, poolType ); |
| } |
| |
| /** |
| * Fully configured event queue. |
| * |
| * @param listener |
| * @param listenerId |
| * @param cacheName |
| * @param maxFailure |
| * @param waitBeforeRetry |
| * @param threadPoolName |
| * null is ok, if not a pooled event queue this is ignored |
| * @param poolType |
| * single or pooled |
| * @return |
| */ |
| public ICacheEventQueue createCacheEventQueue( ICacheListener listener, |
| long listenerId, String cacheName, int maxFailure, int waitBeforeRetry, |
| String threadPoolName, int poolType ) |
| { |
| |
| if ( log.isDebugEnabled() ) |
| { |
| log.debug( "threadPoolName = [" + threadPoolName + "] poolType = " + poolType + " "); |
| } |
| |
| if (poolType == ICacheEventQueue.SINGLE_QUEUE_TYPE) |
| { |
| return new CacheEventQueue( listener, listenerId, cacheName, maxFailure, |
| waitBeforeRetry ); |
| } |
| else |
| { |
| return new PooledCacheEventQueue( listener, listenerId, cacheName, |
| maxFailure, waitBeforeRetry, threadPoolName ); |
| } |
| } |
| } |