1 package org.apache.jcs.engine;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.logging.Log;
23 import org.apache.commons.logging.LogFactory;
24 import org.apache.jcs.engine.behavior.ICacheEventQueue;
25 import org.apache.jcs.engine.behavior.ICacheListener;
26
27 /***
28 * This class hands out event Queues. This allows us to change the
29 * implementation more easily.
30 * <p>
31 * @author aaronsm
32 */
33 public class CacheEventQueueFactory
34 {
35
36 private static final Log log = LogFactory.getLog( CacheEventQueueFactory.class );
37
38 /***
39 * The most commonly used factory method.
40 * <p>
41 * @param listener
42 * @param listenerId
43 * @param cacheName
44 * @param threadPoolName
45 * @param poolType
46 * @return
47 */
48 public ICacheEventQueue createCacheEventQueue( ICacheListener listener, long listenerId, String cacheName,
49 String threadPoolName, int poolType )
50 {
51 return createCacheEventQueue( listener, listenerId, cacheName, 10, 500, threadPoolName, poolType );
52 }
53
54 /***
55 * Fully configured event queue.
56 * <p>
57 * @param listener
58 * @param listenerId
59 * @param cacheName
60 * @param maxFailure
61 * @param waitBeforeRetry
62 * @param threadPoolName
63 * null is ok, if not a pooled event queue this is ignored
64 * @param poolType
65 * single or pooled
66 * @return
67 */
68 public ICacheEventQueue createCacheEventQueue( ICacheListener listener, long listenerId, String cacheName,
69 int maxFailure, int waitBeforeRetry, String threadPoolName,
70 int poolType )
71 {
72 if ( log.isDebugEnabled() )
73 {
74 log.debug( "threadPoolName = [" + threadPoolName + "] poolType = " + poolType + " " );
75 }
76
77 if ( poolType == ICacheEventQueue.SINGLE_QUEUE_TYPE )
78 {
79 return new CacheEventQueue( listener, listenerId, cacheName, maxFailure, waitBeforeRetry );
80 }
81 else
82 {
83 return new PooledCacheEventQueue( listener, listenerId, cacheName, maxFailure, waitBeforeRetry,
84 threadPoolName );
85 }
86 }
87 }