You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tv...@apache.org on 2012/05/30 20:14:51 UTC

svn commit: r1344374 [7/14] - in /commons/proper/jcs/trunk: ./ auxiliary-builds/javagroups/src/java/org/apache/jcs/auxiliary/javagroups/ auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/ auxiliary-builds/jdk14/src/java/org/apache/jcs...

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/AbstractCacheEventQueue.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/AbstractCacheEventQueue.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/AbstractCacheEventQueue.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/AbstractCacheEventQueue.java Wed May 30 18:14:43 2012
@@ -31,8 +31,8 @@ import org.apache.jcs.engine.behavior.IC
 /**
  * An abstract base class to the different implementations
  */
-public abstract class AbstractCacheEventQueue
-    implements ICacheEventQueue
+public abstract class AbstractCacheEventQueue<K extends Serializable, V extends Serializable>
+    implements ICacheEventQueue<K, V>
 {
     /** The logger. */
     protected static final Log log = LogFactory.getLog( AbstractCacheEventQueue.class );
@@ -50,7 +50,7 @@ public abstract class AbstractCacheEvent
      * When the events are pulled off the queue, the tell the listener to handle the specific event
      * type. The work is done by the listener.
      */
-    protected ICacheListener listener;
+    protected ICacheListener<K, V> listener;
 
     /** Id of the listener registered with this queue */
     protected long listenerId;
@@ -139,7 +139,7 @@ public abstract class AbstractCacheEvent
      * @param ce The feature to be added to the PutEvent attribute
      * @exception IOException
      */
-    public synchronized void addPutEvent( ICacheElement ce )
+    public synchronized void addPutEvent( ICacheElement<K, V> ce )
         throws IOException
     {
         if ( isWorking() )
@@ -162,7 +162,7 @@ public abstract class AbstractCacheEvent
      * @param key The feature to be added to the RemoveEvent attribute
      * @exception IOException
      */
-    public synchronized void addRemoveEvent( Serializable key )
+    public synchronized void addRemoveEvent( K key )
         throws IOException
     {
         if ( isWorking() )
@@ -236,7 +236,7 @@ public abstract class AbstractCacheEvent
         Node next = null;
 
         /** The payload. */
-        AbstractCacheEventQueue.AbstractCacheEvent event = null;
+        AbstractCacheEventQueue<?, ?>.AbstractCacheEvent event = null;
     }
 
     /**
@@ -251,9 +251,6 @@ public abstract class AbstractCacheEvent
         /** Number of failures encountered processing this event. */
         int failures = 0;
 
-        /** Have we finished the job */
-        boolean done = false;
-
         /**
          * Main processing method for the AbstractCacheEvent object
          */
@@ -295,7 +292,7 @@ public abstract class AbstractCacheEvent
                     {
                         log.warn( "Interrupted while sleeping for retry on event " + this + "." );
                     }
-                    // TODO consider if this is best. maybe we shoudl just
+                    // TODO consider if this is best. maybe we should just
                     // destroy
                     setWorking( false );
                     setAlive( false );
@@ -320,7 +317,7 @@ public abstract class AbstractCacheEvent
         extends AbstractCacheEvent
     {
         /** The element to put to the listener */
-        private final ICacheElement ice;
+        private final ICacheElement<K, V> ice;
 
         /**
          * Constructor for the PutEvent object.
@@ -328,7 +325,7 @@ public abstract class AbstractCacheEvent
          * @param ice
          * @exception IOException
          */
-        PutEvent( ICacheElement ice )
+        PutEvent( ICacheElement<K, V> ice )
             throws IOException
         {
             this.ice = ice;
@@ -370,7 +367,7 @@ public abstract class AbstractCacheEvent
         extends AbstractCacheEvent
     {
         /** The key to remove from the listener */
-        private final Serializable key;
+        private final K key;
 
         /**
          * Constructor for the RemoveEvent object
@@ -378,7 +375,7 @@ public abstract class AbstractCacheEvent
          * @param key
          * @exception IOException
          */
-        RemoveEvent( Serializable key )
+        RemoveEvent( K key )
             throws IOException
         {
             this.key = key;

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheAdaptor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheAdaptor.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheAdaptor.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheAdaptor.java Wed May 30 18:14:43 2012
@@ -32,14 +32,14 @@ import org.apache.jcs.engine.behavior.IC
  * Used for Cache-to-Cache messaging purposes. These are used in the balking
  * facades in the lateral and remote caches.
  */
-public class CacheAdaptor
-    implements ICacheListener
+public class CacheAdaptor<K extends Serializable, V extends Serializable>
+    implements ICacheListener<K, V>
 {
     /** The logger */
     private final static Log log = LogFactory.getLog( CacheAdaptor.class );
 
-    /** The cache we are adadpting. */
-    private final ICache cache;
+    /** The cache we are adapting. */
+    private final ICache<K, V> cache;
 
     /** The unique id of this listener. */
     protected long listenerId = 0;
@@ -75,7 +75,7 @@ public class CacheAdaptor
      * <p>
      * @param cache
      */
-    public CacheAdaptor( ICache cache )
+    public CacheAdaptor( ICache<K, V> cache )
     {
         this.cache = cache;
     }
@@ -86,7 +86,7 @@ public class CacheAdaptor
      * @param item
      * @throws IOException
      */
-    public void handlePut( ICacheElement item )
+    public void handlePut( ICacheElement<K, V> item )
         throws IOException
     {
         try
@@ -102,11 +102,11 @@ public class CacheAdaptor
     /**
      * Removes an item.
      * <p>
-     * @param cacheName 
-     * @param key 
-     * @throws IOException 
+     * @param cacheName
+     * @param key
+     * @throws IOException
      */
-    public void handleRemove( String cacheName, Serializable key )
+    public void handleRemove( String cacheName, K key )
         throws IOException
     {
         cache.remove( key );
@@ -115,8 +115,8 @@ public class CacheAdaptor
     /**
      * Clears the region.
      * <p>
-     * @param cacheName 
-     * @throws IOException 
+     * @param cacheName
+     * @throws IOException
      */
     public void handleRemoveAll( String cacheName )
         throws IOException
@@ -127,8 +127,8 @@ public class CacheAdaptor
     /**
      * Shutdown call.
      * <p>
-     * @param cacheName 
-     * @throws IOException 
+     * @param cacheName
+     * @throws IOException
      */
     public void handleDispose( String cacheName )
         throws IOException

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElement.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElement.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElement.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElement.java Wed May 30 18:14:43 2012
@@ -27,8 +27,8 @@ import org.apache.jcs.engine.behavior.IE
 /**
  * Generic element wrapper. Often stuffed inside another.
  */
-public class CacheElement
-    implements ICacheElement, Serializable
+public class CacheElement<K extends Serializable, V extends Serializable>
+    implements ICacheElement<K, V>, Serializable
 {
     /** Don't change */
     private static final long serialVersionUID = -6062305728297627263L;
@@ -37,10 +37,10 @@ public class CacheElement
     public final String cacheName;
 
     /** This is the cache key by which the value can be referenced. */
-    public final Serializable key;
+    public final K key;
 
     /** This is the cached value, reference by the key. */
-    public final Serializable val;
+    public final V val;
 
     /**
      * These attributes hold information about the element and what it is
@@ -55,7 +55,7 @@ public class CacheElement
      * @param key
      * @param val
      */
-    public CacheElement( String cacheName, Serializable key, Serializable val )
+    public CacheElement( String cacheName, K key, V val )
     {
         this.cacheName = cacheName;
         this.key = key;
@@ -70,27 +70,13 @@ public class CacheElement
      * @param val
      * @param attrArg
      */
-    public CacheElement( String cacheName, Serializable key, Serializable val, IElementAttributes attrArg )
+    public CacheElement( String cacheName, K key, V val, IElementAttributes attrArg )
     {
-        this.cacheName = cacheName;
-        this.key = key;
-        this.val = val;
+        this(cacheName, key, val);
         this.attr = attrArg;
     }
 
     /**
-     * Constructor for the CacheElement object
-     * <p>
-     * @param cacheName
-     * @param key
-     * @param val
-     */
-    public CacheElement( String cacheName, Serializable key, Object val )
-    {
-        this( cacheName, key, (Serializable) val );
-    }
-
-    /**
      * Gets the cacheName attribute of the CacheElement object
      * <p>
      * @return The cacheName value
@@ -105,7 +91,7 @@ public class CacheElement
      * <p>
      * @return The key value
      */
-    public Serializable getKey()
+    public K getKey()
     {
         return this.key;
     }
@@ -115,7 +101,7 @@ public class CacheElement
      * <p>
      * @return The val value
      */
-    public Serializable getVal()
+    public V getVal()
     {
         return this.val;
     }
@@ -128,7 +114,7 @@ public class CacheElement
      */
     public void setElementAttributes( IElementAttributes attr )
     {
-        this.attr = (ElementAttributes) attr;
+        this.attr = attr;
     }
 
     /**

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElementSerialized.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElementSerialized.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElementSerialized.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheElementSerialized.java Wed May 30 18:14:43 2012
@@ -26,8 +26,8 @@ import org.apache.jcs.engine.behavior.IC
 import org.apache.jcs.engine.behavior.IElementAttributes;
 
 /** Either serialized value or the value should be null; */
-public class CacheElementSerialized
-    implements ICacheElementSerialized
+public class CacheElementSerialized<K extends Serializable, V extends Serializable>
+    implements ICacheElementSerialized<K, V>
 {
     /** Don't change. */
     private static final long serialVersionUID = -7265084818647601874L;
@@ -36,7 +36,7 @@ public class CacheElementSerialized
     private final String cacheName;
 
     /** This is the cache key by which the value can be referenced. */
-    private final Serializable key;
+    private final K key;
 
     /** The serialized value. */
     private final byte[] serializedValue;
@@ -54,7 +54,7 @@ public class CacheElementSerialized
      * @param serializedValueArg
      * @param elementAttributesArg
      */
-    public CacheElementSerialized( String cacheNameArg, Serializable keyArg, byte[] serializedValueArg,
+    public CacheElementSerialized( String cacheNameArg, K keyArg, byte[] serializedValueArg,
                                    IElementAttributes elementAttributesArg )
     {
         this.cacheName = cacheNameArg;
@@ -74,7 +74,7 @@ public class CacheElementSerialized
     }
 
     /** @return Serializable */
-    public Serializable getKey()
+    public K getKey()
     {
         return this.key;
     }
@@ -104,7 +104,7 @@ public class CacheElementSerialized
      * <p>
      * @return Serializable
      */
-    public Serializable getVal()
+    public V getVal()
     {
         return null;
     }

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueue.java Wed May 30 18:14:43 2012
@@ -19,6 +19,7 @@ package org.apache.jcs.engine;
  * under the License.
  */
 
+import java.io.Serializable;
 import java.util.ArrayList;
 
 import org.apache.jcs.engine.behavior.ICacheListener;
@@ -34,8 +35,8 @@ import org.apache.jcs.engine.stats.behav
  * thread, and kill the thread if the queue goes empty for a specified period, now set to 1 minute.
  * If something comes in after that a new processor thread should be created.
  */
-public class CacheEventQueue
-    extends AbstractCacheEventQueue
+public class CacheEventQueue<K extends Serializable, V extends Serializable>
+    extends AbstractCacheEventQueue<K, V>
 {
     /** The type of queue -- there are pooled and single */
     private static final String queueType = SINGLE_QUEUE_TYPE;
@@ -62,7 +63,7 @@ public class CacheEventQueue
      * @param listenerId
      * @param cacheName
      */
-    public CacheEventQueue( ICacheListener listener, long listenerId, String cacheName )
+    public CacheEventQueue( ICacheListener<K, V> listener, long listenerId, String cacheName )
     {
         this( listener, listenerId, cacheName, 10, 500 );
     }
@@ -76,7 +77,7 @@ public class CacheEventQueue
      * @param maxFailure
      * @param waitBeforeRetry
      */
-    public CacheEventQueue( ICacheListener listener, long listenerId, String cacheName, int maxFailure,
+    public CacheEventQueue( ICacheListener<K, V> listener, long listenerId, String cacheName, int maxFailure,
                             int waitBeforeRetry )
     {
         initialize( listener, listenerId, cacheName, maxFailure, waitBeforeRetry, null );
@@ -92,7 +93,7 @@ public class CacheEventQueue
      * @param waitBeforeRetry
      * @param threadPoolName
      */
-    public void initialize( ICacheListener listener, long listenerId, String cacheName, int maxFailure,
+    public void initialize( ICacheListener<K, V> listener, long listenerId, String cacheName, int maxFailure,
                             int waitBeforeRetry, String threadPoolName )
     {
         if ( listener == null )
@@ -230,14 +231,14 @@ public class CacheEventQueue
         extends Thread
     {
         /** The queue to work */
-        CacheEventQueue queue;
+        CacheEventQueue<K, V> queue;
 
         /**
          * Constructor for the QProcessor object
          * <p>
          * @param aQueue the event queue to take items from.
          */
-        QProcessor( CacheEventQueue aQueue )
+        QProcessor( CacheEventQueue<K, V> aQueue )
         {
             super( "CacheEventQueue.QProcessor-" + aQueue.cacheName );
 
@@ -324,7 +325,7 @@ public class CacheEventQueue
 
             Node node = head.next;
 
-            AbstractCacheEvent value = node.event;
+            AbstractCacheEvent value = (AbstractCacheEvent) node.event;
 
             if ( log.isDebugEnabled() )
             {

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheEventQueueFactory.java Wed May 30 18:14:43 2012
@@ -19,6 +19,8 @@ package org.apache.jcs.engine;
  * under the License.
  */
 
+import java.io.Serializable;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.jcs.engine.behavior.ICacheEventQueue;
@@ -31,7 +33,7 @@ import org.apache.jcs.utils.config.Optio
  * <p>
  * @author aaronsm
  */
-public class CacheEventQueueFactory
+public class CacheEventQueueFactory<K extends Serializable, V extends Serializable>
 {
     /** The logger. */
     private static final Log log = LogFactory.getLog( CacheEventQueueFactory.class );
@@ -46,7 +48,7 @@ public class CacheEventQueueFactory
      * @param poolType - SINGLE, QUEUED, or classname
      * @return ICacheEventQueue
      */
-    public ICacheEventQueue createCacheEventQueue( ICacheListener listener, long listenerId, String cacheName,
+    public ICacheEventQueue<K, V> createCacheEventQueue( ICacheListener<K, V> listener, long listenerId, String cacheName,
                                                    String threadPoolName, String poolType )
     {
         return createCacheEventQueue( listener, listenerId, cacheName, 10, 500, threadPoolName, poolType );
@@ -64,7 +66,7 @@ public class CacheEventQueueFactory
      * @param poolType single or pooled
      * @return ICacheEventQueue
      */
-    public ICacheEventQueue createCacheEventQueue( ICacheListener listener, long listenerId, String cacheName,
+    public ICacheEventQueue<K, V> createCacheEventQueue( ICacheListener<K, V> listener, long listenerId, String cacheName,
                                                    int maxFailure, int waitBeforeRetry, String threadPoolName,
                                                    String poolType )
     {
@@ -73,19 +75,19 @@ public class CacheEventQueueFactory
             log.debug( "threadPoolName = [" + threadPoolName + "] poolType = " + poolType + " " );
         }
 
-        ICacheEventQueue eventQueue = null;
+        ICacheEventQueue<K, V> eventQueue = null;
         if ( poolType == null || ICacheEventQueue.SINGLE_QUEUE_TYPE.equalsIgnoreCase( poolType ) )
         {
-            eventQueue = new CacheEventQueue( listener, listenerId, cacheName, maxFailure, waitBeforeRetry );
+            eventQueue = new CacheEventQueue<K, V>( listener, listenerId, cacheName, maxFailure, waitBeforeRetry );
         }
         else if ( ICacheEventQueue.POOLED_QUEUE_TYPE.equalsIgnoreCase( poolType ) )
         {
-            eventQueue = new PooledCacheEventQueue( listener, listenerId, cacheName, maxFailure, waitBeforeRetry,
+            eventQueue = new PooledCacheEventQueue<K, V>( listener, listenerId, cacheName, maxFailure, waitBeforeRetry,
                                                     threadPoolName );
         }
         else
         {
-            eventQueue = (ICacheEventQueue) OptionConverter.instantiateByClassName( poolType, ICacheEventQueue.class,
+            eventQueue = (ICacheEventQueue<K, V>) OptionConverter.instantiateByClassName( poolType, ICacheEventQueue.class,
                                                                                     null );
             if ( eventQueue != null )
             {
@@ -99,7 +101,7 @@ public class CacheEventQueueFactory
             {
                 log.warn( "Could not instantiate custom event queue [" + poolType
                     + "].  Will use standard single threaded queue." );
-                eventQueue = new CacheEventQueue( listener, listenerId, cacheName, maxFailure, waitBeforeRetry );
+                eventQueue = new CacheEventQueue<K, V>( listener, listenerId, cacheName, maxFailure, waitBeforeRetry );
             }
         }
         return eventQueue;

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheListeners.java Wed May 30 18:14:43 2012
@@ -19,6 +19,7 @@ package org.apache.jcs.engine;
  * under the License.
  */
 
+import java.io.Serializable;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Map;
@@ -30,21 +31,21 @@ import org.apache.jcs.engine.behavior.IC
  * Used to associates a set of [cache listener to cache event queue] for a
  * cache.
  */
-public class CacheListeners
+public class CacheListeners<K extends Serializable, V extends Serializable>
 {
     /** The cache using the queue. */
-    public final ICache cache;
+    public final ICache<K, V> cache;
 
     /** Map ICacheListener to ICacheEventQueue */
-    public final Map<Long, ICacheEventQueue> eventQMap =
-        new Hashtable<Long, ICacheEventQueue>();
+    public final Map<Long, ICacheEventQueue<K, V>> eventQMap =
+        new Hashtable<Long, ICacheEventQueue<K, V>>();
 
     /**
      * Constructs with the given cache.
      * <p>
      * @param cache
      */
-    public CacheListeners( ICache cache )
+    public CacheListeners( ICache<K, V> cache )
     {
         if ( cache == null )
         {
@@ -67,7 +68,7 @@ public class CacheListeners
         {
             buffer.append( "\n Event Queue Map " );
             buffer.append( "\n size = " + eventQMap.size() );
-            Iterator<Map.Entry<Long, ICacheEventQueue>> it = eventQMap.entrySet().iterator();
+            Iterator<Map.Entry<Long, ICacheEventQueue<K, V>>> it = eventQMap.entrySet().iterator();
             while ( it.hasNext() )
             {
                 buffer.append( "\n Entry: " + it.next() );

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/CacheWatchRepairable.java Wed May 30 18:14:43 2012
@@ -20,6 +20,7 @@ package org.apache.jcs.engine;
  */
 
 import java.io.IOException;
+import java.io.Serializable;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -45,7 +46,8 @@ public class CacheWatchRepairable
     private ICacheObserver cacheWatch;
 
     /** Map of cache regions. */
-    private final Map<String, Set<ICacheListener>> cacheMap = new HashMap<String, Set<ICacheListener>>();
+    private final Map<String, Set<ICacheListener<? extends Serializable, ? extends Serializable>>> cacheMap =
+        new HashMap<String, Set<ICacheListener<? extends Serializable, ? extends Serializable>>>();
 
     /**
      * Replaces the underlying cache watch service and reattached all existing listeners to the new
@@ -58,10 +60,10 @@ public class CacheWatchRepairable
         this.cacheWatch = cacheWatch;
         synchronized ( cacheMap )
         {
-            for (Map.Entry<String, Set<ICacheListener>> entry : cacheMap.entrySet())
+            for (Map.Entry<String, Set<ICacheListener<? extends Serializable, ? extends Serializable>>> entry : cacheMap.entrySet())
             {
                 String cacheName = entry.getKey();
-                for (ICacheListener listener : entry.getValue())
+                for (ICacheListener<? extends Serializable, ? extends Serializable> listener : entry.getValue())
                 {
                     try
                     {
@@ -89,17 +91,17 @@ public class CacheWatchRepairable
      * @param obj The feature to be added to the CacheListener attribute
      * @throws IOException
      */
-    public void addCacheListener( String cacheName, ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void addCacheListener( String cacheName, ICacheListener<K, V> obj )
         throws IOException
     {
         // Record the added cache listener locally, regardless of whether the
         // remote add-listener operation succeeds or fails.
         synchronized ( cacheMap )
         {
-            Set<ICacheListener> listenerSet = cacheMap.get( cacheName );
+            Set<ICacheListener<? extends Serializable, ? extends Serializable>> listenerSet = cacheMap.get( cacheName );
             if ( listenerSet == null )
             {
-                listenerSet = new HashSet<ICacheListener>();
+                listenerSet = new HashSet<ICacheListener<? extends Serializable, ? extends Serializable>>();
                 cacheMap.put( cacheName, listenerSet );
             }
             listenerSet.add( obj );
@@ -118,14 +120,14 @@ public class CacheWatchRepairable
      * @param obj The feature to be added to the CacheListener attribute
      * @throws IOException
      */
-    public void addCacheListener( ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void addCacheListener( ICacheListener<K, V> obj )
         throws IOException
     {
         // Record the added cache listener locally, regardless of whether the
         // remote add-listener operation succeeds or fails.
         synchronized ( cacheMap )
         {
-            for (Set<ICacheListener> listenerSet : cacheMap.values())
+            for (Set<ICacheListener<? extends Serializable, ? extends Serializable>> listenerSet : cacheMap.values())
             {
                 listenerSet.add( obj );
             }
@@ -145,7 +147,7 @@ public class CacheWatchRepairable
      * @param obj
      * @throws IOException
      */
-    public void removeCacheListener( String cacheName, ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void removeCacheListener( String cacheName, ICacheListener<K, V> obj )
         throws IOException
     {
         if ( log.isInfoEnabled() )
@@ -156,7 +158,7 @@ public class CacheWatchRepairable
         // remove-listener operation succeeds or fails.
         synchronized ( cacheMap )
         {
-            Set<ICacheListener> listenerSet = cacheMap.get( cacheName );
+            Set<ICacheListener<? extends Serializable, ? extends Serializable>> listenerSet = cacheMap.get( cacheName );
             if ( listenerSet != null )
             {
                 listenerSet.remove( obj );
@@ -169,7 +171,7 @@ public class CacheWatchRepairable
      * @param obj
      * @throws IOException
      */
-    public void removeCacheListener( ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void removeCacheListener( ICacheListener<K, V> obj )
         throws IOException
     {
         if ( log.isInfoEnabled() )
@@ -181,7 +183,7 @@ public class CacheWatchRepairable
         // remove-listener operation succeeds or fails.
         synchronized ( cacheMap )
         {
-            for (Set<ICacheListener> listenerSet : cacheMap.values())
+            for (Set<ICacheListener<? extends Serializable, ? extends Serializable>> listenerSet : cacheMap.values())
             {
                 if ( log.isDebugEnabled() )
                 {

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/PooledCacheEventQueue.java Wed May 30 18:14:43 2012
@@ -19,6 +19,7 @@ package org.apache.jcs.engine;
  * under the License.
  */
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -40,8 +41,8 @@ import org.apache.jcs.utils.threadpool.T
  * more than a few threads at them will serve no purpose other than to saturate the IO interface. In
  * light of this, having one thread per region seems unnecessary. This may prove to be false.
  */
-public class PooledCacheEventQueue
-    extends AbstractCacheEventQueue
+public class PooledCacheEventQueue<K extends Serializable, V extends Serializable>
+    extends AbstractCacheEventQueue<K, V>
 {
     /** The type of event queue */
     private static final String queueType = POOLED_QUEUE_TYPE;
@@ -59,7 +60,7 @@ public class PooledCacheEventQueue
      * @param waitBeforeRetry
      * @param threadPoolName
      */
-    public PooledCacheEventQueue( ICacheListener listener, long listenerId, String cacheName, int maxFailure,
+    public PooledCacheEventQueue( ICacheListener<K, V> listener, long listenerId, String cacheName, int maxFailure,
                                   int waitBeforeRetry, String threadPoolName )
     {
         initialize( listener, listenerId, cacheName, maxFailure, waitBeforeRetry, threadPoolName );
@@ -75,7 +76,7 @@ public class PooledCacheEventQueue
      * @param waitBeforeRetry
      * @param threadPoolName
      */
-    public void initialize( ICacheListener listener, long listenerId, String cacheName, int maxFailure,
+    public void initialize( ICacheListener<K, V> listener, long listenerId, String cacheName, int maxFailure,
                             int waitBeforeRetry, String threadPoolName )
     {
         if ( listener == null )

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheService.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheService.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheService.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheService.java Wed May 30 18:14:43 2012
@@ -33,8 +33,8 @@ import org.apache.jcs.engine.behavior.IZ
 /**
  * Zombie adapter for any cache service. Balks at every call.
  */
-public class ZombieCacheService
-    implements ICacheService, IZombie
+public class ZombieCacheService<K extends Serializable, V extends Serializable>
+    implements ICacheService<K, V>, IZombie
 {
     /** The logger. */
     private static final Log log = LogFactory.getLog( ZombieCacheService.class );
@@ -42,7 +42,7 @@ public class ZombieCacheService
     /**
      * @param item
      */
-    public void put( ICacheElement item )
+    public void put( ICacheElement<K, V> item )
     {
         if ( log.isDebugEnabled() )
         {
@@ -56,7 +56,7 @@ public class ZombieCacheService
      * <p>
      * @param item
      */
-    public void update( ICacheElement item )
+    public void update( ICacheElement<K, V> item )
     {
         // zombies have no inner life
     }
@@ -66,7 +66,7 @@ public class ZombieCacheService
      * @param key
      * @return null. zombies have no internal data
      */
-    public ICacheElement get( String cacheName, Serializable key )
+    public ICacheElement<K, V> get( String cacheName, K key )
     {
         return null;
     }
@@ -78,7 +78,7 @@ public class ZombieCacheService
      * @param keys
      * @return Collections.EMPTY_MAP
      */
-    public Map<Serializable, ICacheElement> getMultiple( String cacheName, Set<Serializable> keys )
+    public Map<K, ICacheElement<K, V>> getMultiple( String cacheName, Set<K> keys )
     {
         return Collections.emptyMap();
     }
@@ -90,7 +90,7 @@ public class ZombieCacheService
      * @param pattern
      * @return Collections.EMPTY_MAP
      */
-    public Map<Serializable, ICacheElement> getMatching( String cacheName, String pattern )
+    public Map<K, ICacheElement<K, V>> getMatching( String cacheName, String pattern )
     {
         return Collections.emptyMap();
     }
@@ -103,7 +103,7 @@ public class ZombieCacheService
      * @param container
      * @return null always
      */
-    public Serializable get( String cacheName, Serializable key, boolean container )
+    public Serializable get( String cacheName, K key, boolean container )
     {
         if ( log.isDebugEnabled() )
         {
@@ -117,7 +117,7 @@ public class ZombieCacheService
      * @param cacheName
      * @param key
      */
-    public void remove( String cacheName, Serializable key )
+    public void remove( String cacheName, K key )
     {
         // zombies have no inner life
     }

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheServiceNonLocal.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheServiceNonLocal.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheServiceNonLocal.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheServiceNonLocal.java Wed May 30 18:14:43 2012
@@ -42,9 +42,9 @@ import org.apache.jcs.utils.timing.Elaps
  * <p>
  * This originated in the remote cache.
  */
-public class ZombieCacheServiceNonLocal
-    extends ZombieCacheService
-    implements ICacheServiceNonLocal
+public class ZombieCacheServiceNonLocal<K extends Serializable, V extends Serializable>
+    extends ZombieCacheService<K, V>
+    implements ICacheServiceNonLocal<K, V>
 {
     /** The logger */
     private final static Log log = LogFactory.getLog( ZombieCacheServiceNonLocal.class );
@@ -90,11 +90,11 @@ public class ZombieCacheServiceNonLocal
      * @param item ICacheElement
      * @param listenerId - identifies the caller.
      */
-    public void update( ICacheElement item, long listenerId )
+    public void update( ICacheElement<K, V> item, long listenerId )
     {
         if ( maxQueueSize > 0 )
         {
-            PutEvent event = new PutEvent( item, listenerId );
+            PutEvent<K, V> event = new PutEvent<K, V>( item, listenerId );
             queue.add( event );
         }
         // Zombies have no inner life
@@ -107,11 +107,11 @@ public class ZombieCacheServiceNonLocal
      * @param key - item key
      * @param listenerId - identifies the caller.
      */
-    public void remove( String cacheName, Serializable key, long listenerId )
+    public void remove( String cacheName, K key, long listenerId )
     {
         if ( maxQueueSize > 0 )
         {
-            RemoveEvent event = new RemoveEvent( cacheName, key, listenerId );
+            RemoveEvent<K, V> event = new RemoveEvent<K, V>( cacheName, key, listenerId );
             queue.add( event );
         }
         // Zombies have no inner life
@@ -142,7 +142,7 @@ public class ZombieCacheServiceNonLocal
      * @return null
      * @throws IOException
      */
-    public ICacheElement get( String cacheName, Serializable key, long requesterId )
+    public ICacheElement<K, V> get( String cacheName, K key, long requesterId )
         throws IOException
     {
         // Zombies have no inner life
@@ -158,7 +158,7 @@ public class ZombieCacheServiceNonLocal
      * @return empty map
      * @throws IOException
      */
-    public Map<Serializable, ICacheElement> getMatching( String cacheName, String pattern, long requesterId )
+    public Map<K, ICacheElement<K, V>> getMatching( String cacheName, String pattern, long requesterId )
         throws IOException
     {
         return Collections.emptyMap();
@@ -170,9 +170,9 @@ public class ZombieCacheServiceNonLocal
      * @param requesterId - identity of the caller
      * @return an empty map. zombies have no internal data
      */
-    public Map<Serializable, ICacheElement> getMultiple( String cacheName, Set<Serializable> keys, long requesterId )
+    public Map<K, ICacheElement<K, V>> getMultiple( String cacheName, Set<K> keys, long requesterId )
     {
-        return new HashMap<Serializable, ICacheElement>();
+        return new HashMap<K, ICacheElement<K, V>>();
     }
 
     /**
@@ -182,7 +182,7 @@ public class ZombieCacheServiceNonLocal
      * @param groupName - group name
      * @return empty set
      */
-    public Set<Serializable> getGroupKeys( String cacheName, String groupName )
+    public Set<K> getGroupKeys( String cacheName, String groupName )
     {
         return Collections.emptySet();
     }
@@ -193,7 +193,7 @@ public class ZombieCacheServiceNonLocal
      * @param service
      * @throws Exception
      */
-    public synchronized void propagateEvents( ICacheServiceNonLocal service )
+    public synchronized void propagateEvents( ICacheServiceNonLocal<K, V> service )
         throws Exception
     {
         int cnt = 0;
@@ -211,12 +211,12 @@ public class ZombieCacheServiceNonLocal
 
             if ( event instanceof PutEvent )
             {
-                PutEvent putEvent = (PutEvent) event;
+                PutEvent<K, V> putEvent = (PutEvent<K, V>) event;
                 service.update( putEvent.element, event.requesterId );
             }
             else if ( event instanceof RemoveEvent )
             {
-                RemoveEvent removeEvent = (RemoveEvent) event;
+                RemoveEvent<K, V> removeEvent = (RemoveEvent<K, V>) event;
                 service.remove( event.cacheName, removeEvent.key, event.requesterId );
             }
             else if ( event instanceof RemoveAllEvent )
@@ -234,7 +234,7 @@ public class ZombieCacheServiceNonLocal
     /**
      * Base of the other events.
      */
-    protected abstract class ZombieEvent
+    protected static abstract class ZombieEvent
     {
         /** The name of the region. */
         String cacheName;
@@ -246,18 +246,18 @@ public class ZombieCacheServiceNonLocal
     /**
      * A basic put event.
      */
-    private class PutEvent
+    private static class PutEvent<K extends Serializable, V extends Serializable>
         extends ZombieEvent
     {
         /** The element to put */
-        ICacheElement element;
+        ICacheElement<K, V> element;
 
         /**
          * Set the element
          * @param element
          * @param requesterId
          */
-        public PutEvent( ICacheElement element, long requesterId )
+        public PutEvent( ICacheElement<K, V> element, long requesterId )
         {
             this.requesterId = requesterId;
             this.element = element;
@@ -267,11 +267,11 @@ public class ZombieCacheServiceNonLocal
     /**
      * A basic Remove event.
      */
-    private class RemoveEvent
+    private static class RemoveEvent<K extends Serializable, V extends Serializable>
         extends ZombieEvent
     {
         /** The key to remove */
-        Serializable key;
+        K key;
 
         /**
          * Set the element
@@ -279,7 +279,7 @@ public class ZombieCacheServiceNonLocal
          * @param key
          * @param requesterId
          */
-        public RemoveEvent( String cacheName, Serializable key, long requesterId )
+        public RemoveEvent( String cacheName, K key, long requesterId )
         {
             this.cacheName = cacheName;
             this.requesterId = requesterId;
@@ -290,7 +290,7 @@ public class ZombieCacheServiceNonLocal
     /**
      * A basic RemoveAll event.
      */
-    private class RemoveAllEvent
+    private static class RemoveAllEvent
         extends ZombieEvent
     {
         /**

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheWatch.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheWatch.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheWatch.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/ZombieCacheWatch.java Wed May 30 18:14:43 2012
@@ -19,6 +19,8 @@ package org.apache.jcs.engine;
  * under the License.
  */
 
+import java.io.Serializable;
+
 import org.apache.jcs.engine.behavior.ICacheListener;
 import org.apache.jcs.engine.behavior.ICacheObserver;
 import org.apache.jcs.engine.behavior.IZombie;
@@ -35,7 +37,7 @@ public class ZombieCacheWatch
      * @param cacheName The feature to be added to the CacheListener attribute
      * @param obj The feature to be added to the CacheListener attribute
      */
-    public void addCacheListener( String cacheName, ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void addCacheListener( String cacheName, ICacheListener<K, V> obj )
     {
         // empty
     }
@@ -45,7 +47,7 @@ public class ZombieCacheWatch
      * <p>
      * @param obj The feature to be added to the CacheListener attribute
      */
-    public void addCacheListener( ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void addCacheListener( ICacheListener<K, V> obj )
     {
         // empty
     }
@@ -54,7 +56,7 @@ public class ZombieCacheWatch
      * @param cacheName
      * @param obj
      */
-    public void removeCacheListener( String cacheName, ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void removeCacheListener( String cacheName, ICacheListener<K, V> obj )
     {
         // empty
     }
@@ -62,7 +64,7 @@ public class ZombieCacheWatch
     /**
      * @param obj
      */
-    public void removeCacheListener( ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void removeCacheListener( ICacheListener<K, V> obj )
     {
         // empty
     }

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICache.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICache.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICache.java Wed May 30 18:14:43 2012
@@ -33,7 +33,7 @@ import org.apache.jcs.engine.match.behav
  * This allows for a suite of reusable components for accessing such structures, for example
  * asynchronous access via an event queue.
  */
-public interface ICache
+public interface ICache<K extends Serializable, V extends Serializable>
     extends ICacheType
 {
     /**
@@ -42,7 +42,7 @@ public interface ICache
      * @param element
      * @throws IOException
      */
-    void update( ICacheElement element )
+    void update( ICacheElement<K, V> element )
         throws IOException;
 
     /**
@@ -52,17 +52,17 @@ public interface ICache
      * @return a cache element, or null if there is no data in cache for this key
      * @throws IOException
      */
-    ICacheElement get( Serializable key )
+    ICacheElement<K, V> get( K key )
         throws IOException;
 
     /**
      * Gets multiple items from the cache based on the given set of keys.
      * <p>
      * @param keys
-     * @return a map of Serializable key to ICacheElement element, or an empty map if there is no data in cache for any of these keys
+     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no data in cache for any of these keys
      * @throws IOException
      */
-    Map<Serializable, ICacheElement> getMultiple(Set<Serializable> keys)
+    Map<K, ICacheElement<K, V>> getMultiple(Set<K> keys)
         throws IOException;
 
     /**
@@ -73,10 +73,10 @@ public interface ICache
      * Auxiliaries will do their best to handle simple expressions.  For instance, the JDBC disk cache will convert * to % and . to _
      * <p>
      * @param pattern
-     * @return a map of Serializable key to ICacheElement element, or an empty map if there is no data matching the pattern.
+     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no data matching the pattern.
      * @throws IOException
      */
-    Map<Serializable, ICacheElement> getMatching(String pattern)
+    Map<K, ICacheElement<K, V>> getMatching(String pattern)
         throws IOException;
 
     /**
@@ -86,7 +86,7 @@ public interface ICache
      * @return false if there was an error in removal
      * @throws IOException
      */
-    boolean remove( Serializable key )
+    boolean remove( K key )
         throws IOException;
 
     /**
@@ -137,5 +137,5 @@ public interface ICache
      * <p>
      * @param keyMatcher
      */
-    void setKeyMatcher( IKeyMatcher keyMatcher );
+    void setKeyMatcher( IKeyMatcher<K> keyMatcher );
 }

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElement.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElement.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElement.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElement.java Wed May 30 18:14:43 2012
@@ -31,12 +31,12 @@ import java.io.Serializable;
  * allowed to be spooled, etc.
  *
  */
-public interface ICacheElement /* TODO: Should be generic */
+public interface ICacheElement<K extends Serializable, V extends Serializable>
     extends Serializable
 {
 
     /**
-     * Gets the cacheName attribute of the ICacheElement object. The cacheName
+     * Gets the cacheName attribute of the ICacheElement<K, V> object. The cacheName
      * is also known as the region name.
      *
      * @return The cacheName value
@@ -44,28 +44,28 @@ public interface ICacheElement /* TODO: 
     public String getCacheName();
 
     /**
-     * Gets the key attribute of the ICacheElement object
+     * Gets the key attribute of the ICacheElement<K, V> object
      *
      * @return The key value
      */
-    public Serializable getKey();
+    public K getKey();
 
     /**
-     * Gets the val attribute of the ICacheElement object
+     * Gets the val attribute of the ICacheElement<K, V> object
      *
      * @return The val value
      */
-    public Serializable getVal();
+    public V getVal();
 
     /**
-     * Gets the attributes attribute of the ICacheElement object
+     * Gets the attributes attribute of the ICacheElement<K, V> object
      *
      * @return The attributes value
      */
     public IElementAttributes getElementAttributes();
 
     /**
-     * Sets the attributes attribute of the ICacheElement object
+     * Sets the attributes attribute of the ICacheElement<K, V> object
      *
      * @param attr
      *            The new attributes value

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElementSerialized.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElementSerialized.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElementSerialized.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElementSerialized.java Wed May 30 18:14:43 2012
@@ -26,15 +26,15 @@ import java.io.Serializable;
  * <p>
  * The value is stored as a byte array. This should allow for a variety of serialization mechanisms.
  * <p>
- * This currently extends ICacheElement for backward compatibility.
+ * This currently extends ICacheElement<K, V> for backward compatibility.
  *<p>
  * @author Aaron Smuts
  */
-public interface ICacheElementSerialized
-    extends ICacheElement
+public interface ICacheElementSerialized<K extends Serializable, V extends Serializable>
+    extends ICacheElement<K, V>
 {
     /**
-     * Gets the cacheName attribute of the ICacheElement object. The cacheName is also known as the
+     * Gets the cacheName attribute of the ICacheElement<K, V> object. The cacheName is also known as the
      * region name.
      *<p>
      * @return The cacheName value
@@ -47,7 +47,7 @@ public interface ICacheElementSerialized
      *<p>
      * @return The key value
      */
-    public Serializable getKey();
+    public K getKey();
 
     /**
      * Gets the value attribute of the ICacheElementSerialized object. This is the value the client
@@ -58,14 +58,14 @@ public interface ICacheElementSerialized
     public byte[] getSerializedValue();
 
     /**
-     * Gets the attributes attribute of the ICacheElement object
+     * Gets the attributes attribute of the ICacheElement<K, V> object
      *<p>
      * @return The attributes value
      */
     public IElementAttributes getElementAttributes();
 
     /**
-     * Sets the attributes attribute of the ICacheElement object
+     * Sets the attributes attribute of the ICacheElement<K, V> object
      *<p>
      * @param attr The new attributes value
      */

Propchange: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheElementSerialized.java
            ('svn:mergeinfo' removed)

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheEventQueue.java Wed May 30 18:14:43 2012
@@ -28,7 +28,7 @@ import org.apache.jcs.engine.stats.behav
  * Interface for a cache event queue. An event queue is used to propagate
  * ordered cache events to one and only one target listener.
  */
-public interface ICacheEventQueue
+public interface ICacheEventQueue<K extends Serializable, V extends Serializable>
 {
     /**
      * Initializes the queue.
@@ -40,9 +40,9 @@ public interface ICacheEventQueue
      * @param waitBeforeRetry
      * @param threadPoolName
      */
-    public void initialize( ICacheListener listener, long listenerId, String cacheName, int maxFailure,
+    public void initialize( ICacheListener<K, V> listener, long listenerId, String cacheName, int maxFailure,
                             int waitBeforeRetry, String threadPoolName );
-    
+
     /**
      * Does not use a thread pool.
      */
@@ -52,7 +52,7 @@ public interface ICacheEventQueue
      * Uses a thread pool
      */
     public static final String POOLED_QUEUE_TYPE = "POOLED";
-    
+
 
     /**
      * Return the type of event queue we are using, either single or pooled.
@@ -68,7 +68,7 @@ public interface ICacheEventQueue
      *            The feature to be added to the PutEvent attribute
      * @throws IOException
      */
-    public void addPutEvent( ICacheElement ce )
+    public void addPutEvent( ICacheElement<K, V> ce )
         throws IOException;
 
     /**
@@ -79,7 +79,7 @@ public interface ICacheEventQueue
      *            The feature to be added to the RemoveEvent attribute
      * @throws IOException
      */
-    public void addRemoveEvent( Serializable key )
+    public void addRemoveEvent( K key )
         throws IOException;
 
     /**

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheListener.java Wed May 30 18:14:43 2012
@@ -28,7 +28,7 @@ import java.io.Serializable;
  * 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
+public interface ICacheListener<K extends Serializable, V extends Serializable>
 {
     /**
      * Notifies the subscribers for a cache entry update.
@@ -36,7 +36,7 @@ public interface ICacheListener
      * @param item
      * @throws IOException
      */
-    public void handlePut( ICacheElement item )
+    public void handlePut( ICacheElement<K, V> item )
         throws IOException;
 
     /**
@@ -46,7 +46,7 @@ public interface ICacheListener
      * @param key
      * @throws IOException
      */
-    public void handleRemove( String cacheName, Serializable key )
+    public void handleRemove( String cacheName, K key )
         throws IOException;
 
     /**

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheManager.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheManager.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheManager.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheManager.java Wed May 30 18:14:43 2012
@@ -1,5 +1,7 @@
 package org.apache.jcs.engine.behavior;
 
+import java.io.Serializable;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -20,7 +22,7 @@ package org.apache.jcs.engine.behavior;
  */
 
 /**
- * Inteface implemented by a specific cache.
+ * Interface implemented by a specific cache.
  *
  */
 public interface ICacheManager
@@ -28,12 +30,12 @@ public interface ICacheManager
 {
 
     /**
-     * methods to get a cache region from a maanger
+     * methods to get a cache region from a manager
      * @param cacheName
      *
      * @return The cache value
      */
-    public ICache getCache( String cacheName );
+    public <K extends Serializable, V extends Serializable> ICache<K, V> getCache( String cacheName );
 
 }
 // end interface

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheObserver.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheObserver.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheObserver.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheObserver.java Wed May 30 18:14:43 2012
@@ -20,6 +20,7 @@ package org.apache.jcs.engine.behavior;
  */
 
 import java.io.IOException;
+import java.io.Serializable;
 
 /**
  * Used to register interest in receiving cache changes. <br>
@@ -40,7 +41,7 @@ public interface ICacheObserver
      *            object to notify for cache changes.
      * @throws IOException
      */
-    public void addCacheListener( String cacheName, ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void addCacheListener( String cacheName, ICacheListener<K, V> obj )
         throws IOException;
 
     //, CacheNotFoundException;
@@ -52,7 +53,7 @@ public interface ICacheObserver
      *            object to notify for all cache changes.
      * @throws IOException
      */
-    public void addCacheListener( ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void addCacheListener( ICacheListener<K, V> obj )
         throws IOException;
 
     /**
@@ -63,7 +64,7 @@ public interface ICacheObserver
      *            existing subscriber.
      * @throws IOException
      */
-    public void removeCacheListener( String cacheName, ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void removeCacheListener( String cacheName, ICacheListener<K, V> obj )
         throws IOException;
 
     /**
@@ -73,6 +74,6 @@ public interface ICacheObserver
      *            existing subscriber.
      * @throws IOException
      */
-    public void removeCacheListener( ICacheListener obj )
+    public <K extends Serializable, V extends Serializable> void removeCacheListener( ICacheListener<K, V> obj )
         throws IOException;
 }

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheService.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheService.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheService.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheService.java Wed May 30 18:14:43 2012
@@ -33,7 +33,7 @@ import org.apache.jcs.access.exception.O
  * Note: server which implements this interface provides a local cache service, whereas server which
  * implements IRmiCacheService provides a remote cache service.
  */
-public interface ICacheService
+public interface ICacheService<K extends Serializable, V extends Serializable>
 {
     /**
      * Puts a cache item to the cache.
@@ -42,7 +42,7 @@ public interface ICacheService
      * @throws ObjectExistsException
      * @throws IOException
      */
-    void update( ICacheElement item )
+    void update( ICacheElement<K, V> item )
         throws ObjectExistsException, IOException;
 
     /**
@@ -50,11 +50,11 @@ public interface ICacheService
      * <p>
      * @param cacheName
      * @param key
-     * @return the ICacheElement or null if not found
+     * @return the ICacheElement<K, V> or null if not found
      * @throws ObjectNotFoundException
      * @throws IOException
      */
-    ICacheElement get( String cacheName, Serializable key )
+    ICacheElement<K, V> get( String cacheName, K key )
         throws ObjectNotFoundException, IOException;
 
     /**
@@ -62,12 +62,12 @@ public interface ICacheService
      * <p>
      * @param cacheName
      * @param keys
-     * @return a map of Serializable key to ICacheElement element, or an empty map if there is no
+     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no
      *         data in cache for any of these keys
      * @throws ObjectNotFoundException
      * @throws IOException
      */
-    Map<Serializable, ICacheElement> getMultiple( String cacheName, Set<Serializable> keys )
+    Map<K, ICacheElement<K, V>> getMultiple( String cacheName, Set<K> keys )
         throws ObjectNotFoundException, IOException;
 
     /**
@@ -75,11 +75,11 @@ public interface ICacheService
      * <p>
      * @param cacheName
      * @param pattern
-     * @return a map of Serializable key to ICacheElement element, or an empty map if there is no
+     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no
      *         data in cache matching the pattern.
      * @throws IOException
      */
-    Map<Serializable, ICacheElement> getMatching( String cacheName, String pattern )
+    Map<K, ICacheElement<K, V>> getMatching( String cacheName, String pattern )
         throws IOException;
 
     /**
@@ -89,11 +89,11 @@ public interface ICacheService
      * @param key
      * @throws IOException
      */
-    public void remove( String cacheName, Serializable key )
+    public void remove( String cacheName, K key )
         throws IOException;
 
     /**
-     * Remove all keys from the sepcified cache.
+     * Remove all keys from the specified cache.
      * @param cacheName
      * @throws IOException
      */

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheServiceNonLocal.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheServiceNonLocal.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheServiceNonLocal.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICacheServiceNonLocal.java Wed May 30 18:14:43 2012
@@ -32,8 +32,8 @@ import java.util.Set;
  * <p>
  * TODO consider not extending ICacheService
  */
-public interface ICacheServiceNonLocal
-    extends Remote, ICacheService
+public interface ICacheServiceNonLocal<K extends Serializable, V extends Serializable>
+    extends Remote, ICacheService<K, V>
 {
     /**
      * Puts a cache item to the cache.
@@ -42,7 +42,7 @@ public interface ICacheServiceNonLocal
      * @param requesterId
      * @throws IOException
      */
-    void update( ICacheElement item, long requesterId )
+    void update( ICacheElement<K, V> item, long requesterId )
         throws IOException;
 
     /**
@@ -53,7 +53,7 @@ public interface ICacheServiceNonLocal
      * @param requesterId
      * @throws IOException
      */
-    void remove( String cacheName, Serializable key, long requesterId )
+    void remove( String cacheName, K key, long requesterId )
         throws IOException;
 
     /**
@@ -77,7 +77,7 @@ public interface ICacheServiceNonLocal
      * @return ICacheElement
      * @throws IOException
      */
-    ICacheElement get( String cacheName, Serializable key, long requesterId )
+    ICacheElement<K, V> get( String cacheName, K key, long requesterId )
         throws IOException;
 
     /**
@@ -86,11 +86,11 @@ public interface ICacheServiceNonLocal
      * @param cacheName
      * @param keys
      * @param requesterId
-     * @return a map of Serializable key to ICacheElement element, or an empty map if there is no
+     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no
      *         data in cache for any of these keys
      * @throws IOException
      */
-    Map<Serializable, ICacheElement> getMultiple( String cacheName, Set<Serializable> keys, long requesterId )
+    Map<K, ICacheElement<K, V>> getMultiple( String cacheName, Set<K> keys, long requesterId )
         throws IOException;
 
     /**
@@ -99,11 +99,11 @@ public interface ICacheServiceNonLocal
      * @param cacheName
      * @param pattern
      * @param requesterId
-     * @return a map of Serializable key to ICacheElement element, or an empty map if there is no
+     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no
      *         data in cache matching the pattern.
      * @throws IOException
      */
-    Map<Serializable, ICacheElement> getMatching( String cacheName, String pattern, long requesterId )
+    Map<K, ICacheElement<K, V>> getMatching( String cacheName, String pattern, long requesterId )
         throws IOException;
 
     /**
@@ -114,6 +114,6 @@ public interface ICacheServiceNonLocal
      * @return A Set of keys
      * @throws IOException
      */
-    Set<Serializable> getGroupKeys( String cacheName, String groupName )
+    Set<K> getGroupKeys( String cacheName, String groupName )
         throws IOException;
 }

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheManager.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheManager.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheManager.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheManager.java Wed May 30 18:14:43 2012
@@ -19,6 +19,7 @@ package org.apache.jcs.engine.behavior;
  * under the License.
  */
 
+import java.io.Serializable;
 import java.util.Properties;
 
 import org.apache.jcs.engine.control.CompositeCache;
@@ -36,15 +37,15 @@ public interface ICompositeCacheManager
      * @param cacheName
      * @return CompositeCache
      */
-    CompositeCache getCache( String cacheName );
-    
+    <K extends Serializable, V extends Serializable> CompositeCache<K, V>  getCache( String cacheName );
+
     /**
      * This is exposed so other manager can get access to the props.
      * <p>
      * @return the configurationProperties
      */
     Properties getConfigurationProperties();
-    
+
     /**
      * Gets stats for debugging.
      * <p>

Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/IElementSerializer.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/IElementSerializer.java?rev=1344374&r1=1344373&r2=1344374&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/IElementSerializer.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/engine/behavior/IElementSerializer.java Wed May 30 18:14:43 2012
@@ -36,7 +36,7 @@ public interface IElementSerializer
      * @return byte[]
      * @throws IOException
      */
-    public abstract byte[] serialize( Serializable obj )
+    <T extends Serializable> byte[] serialize( T obj )
         throws IOException;
 
     /**
@@ -46,6 +46,6 @@ public interface IElementSerializer
      * @throws IOException
      * @throws ClassNotFoundException thrown if we don't know the object.
      */
-    public abstract Object deSerialize( byte[] bytes )
+    <T extends Serializable> T deSerialize( byte[] bytes )
         throws IOException, ClassNotFoundException;
 }