You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by as...@apache.org on 2008/08/27 21:44:35 UTC

svn commit: r689591 - in /jakarta/jcs/trunk: src/java/org/apache/jcs/engine/ src/java/org/apache/jcs/engine/behavior/ src/java/org/apache/jcs/engine/control/ src/java/org/apache/jcs/engine/control/event/ src/java/org/apache/jcs/engine/control/group/ sr...

Author: asmuts
Date: Wed Aug 27 12:44:33 2008
New Revision: 689591

URL: http://svn.apache.org/viewvc?rev=689591&view=rev
Log:
https://issues.apache.org/jira/browse/JCS-44

Made the spool chunk size configurable.

Modified:
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java
    jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java
    jakarta/jcs/trunk/xdocs/changes.xml

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/CompositeCacheAttributes.java Wed Aug 27 12:44:33 2008
@@ -31,28 +31,43 @@
 public class CompositeCacheAttributes
     implements ICompositeCacheAttributes, Cloneable
 {
+    /** Don't change */
     private static final long serialVersionUID = 6754049978134196787L;
 
+    /** default lateral switch */
     private static final boolean DEFAULT_USE_LATERAL = true;
 
+    /** default remote switch */
     private static final boolean DEFAULT_USE_REMOTE = true;
 
+    /** default disk switch */
     private static final boolean DEFAULT_USE_DISK = true;
 
+    /** default shrinker setting */
     private static final boolean DEFAULT_USE_SHRINKER = false;
 
+    /** default max objects value */
     private static final int DEFAULT_MAX_OBJECTS = 100;
 
+    /** default */
     private static final int DEFAULT_MAX_MEMORY_IDLE_TIME_SECONDS = 60 * 120;
 
+    /** default interval to run the shrinker */
     private static final int DEFAULT_SHRINKER_INTERVAL_SECONDS = 30;
 
+    /** default */
     private static final int DEFAULT_MAX_SPOOL_PER_RUN = -1;
 
+    /** default */
     private static final String DEFAULT_MEMORY_CACHE_NAME = "org.apache.jcs.engine.memory.lru.LRUMemoryCache";
 
+    /** Default number to send to disk at a time when memory fills. */
+    private static final int DEFAULT_CHUNK_SIZE = 2;
+
+    /** allow lateral caches */
     private boolean useLateral = DEFAULT_USE_LATERAL;
 
+    /** allow remote caches */
     private boolean useRemote = DEFAULT_USE_REMOTE;
 
     /** Whether we should use a disk cache if it is configured. */
@@ -79,8 +94,12 @@
     /** The name of the memory cache implementation class. */
     private String memoryCacheName;
 
+    /** Set via DISK_USAGE_PATTERN_NAME */
     private short diskUsagePattern = DISK_USAGE_PATTERN_SWAP;
 
+    /** How many to spool to disk at a time. */
+    private int spoolChunkSize = DEFAULT_CHUNK_SIZE;
+
     /**
      * Constructor for the CompositeCacheAttributes object
      */
@@ -331,6 +350,26 @@
     }
 
     /**
+     * Number to send to disk at at time when memory is full.
+     * <p>
+     * @return int
+     */
+    public int getSpoolChunkSize()
+    {
+        return spoolChunkSize;
+    }
+
+    /**
+     * Number to send to disk at a time.
+     * <p>
+     * @param spoolChunkSize
+     */
+    public void setSpoolChunkSize( int spoolChunkSize )
+    {
+        this.spoolChunkSize = spoolChunkSize;
+    }
+
+    /**
      * @return Returns the diskUsagePattern.
      */
     public short getDiskUsagePattern()
@@ -341,7 +380,7 @@
     /**
      * Description of the Method
      * <p>
-     * @return
+     * @return ICompositeCacheAttributes a copy
      */
     public ICompositeCacheAttributes copy()
     {
@@ -373,6 +412,7 @@
         dump.append( ", maxObjs = " ).append( maxObjs );
         dump.append( ", maxSpoolPerRun = " ).append( maxSpoolPerRun );
         dump.append( ", diskUsagePattern = " ).append( diskUsagePattern );
+        dump.append( ", spoolChunkSize = " ).append( spoolChunkSize );
         dump.append( " ]" );
 
         return dump.toString();

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/behavior/ICompositeCacheAttributes.java Wed Aug 27 12:44:33 2008
@@ -226,4 +226,18 @@
      * @return Returns the diskUsagePattern.
      */
     public short getDiskUsagePattern();
+    
+    /**
+     * Number to send to disk at at time when memory is full.
+     * <p>
+     * @return int
+     */
+    public int getSpoolChunkSize();
+    
+    /**
+     * Number to send to disk at a time.
+     * <p>
+     * @param spoolChunkSize
+     */
+    public void setSpoolChunkSize( int spoolChunkSize );
 }

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCache.java Wed Aug 27 12:44:33 2008
@@ -965,7 +965,6 @@
      * <p>
      * @param key
      * @return true is it was removed
-     * @throws IOException
      * @see org.apache.jcs.engine.behavior.ICache#remove(java.io.Serializable)
      */
     public boolean remove( Serializable key )

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheConfigurator.java Wed Aug 27 12:44:33 2008
@@ -50,24 +50,31 @@
  */
 public class CompositeCacheConfigurator
 {
+    /** The logger */
     private final static Log log = LogFactory.getLog( CompositeCacheConfigurator.class );
 
+    /** default region prefix */
     final static String DEFAULT_REGION = "jcs.default";
 
+    /** normal region prefix */
     final static String REGION_PREFIX = "jcs.region.";
 
+    /** system region prefix. might not be used */
     final static String SYSTEM_REGION_PREFIX = "jcs.system.";
 
+    /** auxiliary prefix */
     final static String AUXILIARY_PREFIX = "jcs.auxiliary.";
 
     /** .attributes */
     final static String ATTRIBUTE_PREFIX = ".attributes";
 
+    /** .cacheattributes */
     final static String CACHE_ATTRIBUTE_PREFIX = ".cacheattributes";
 
+    /** .elementattributes */
     final static String ELEMENT_ATTRIBUTE_PREFIX = ".elementattributes";
 
-    /** Can't operate on the interface.  */
+    /** Can't operate on the interface. */
     private CompositeCacheManager compositeCacheManager;
 
     /**
@@ -365,11 +372,11 @@
     }
 
     /**
-     * Get an compositecacheattributes for the listed region.
+     * Get an ICompositeCacheAttributes for the listed region.
      *<p>
      * @param props
      * @param regName
-     * @return
+     * @return ICompositeCacheAttributes
      */
     protected ICompositeCacheAttributes parseCompositeCacheAttributes( Properties props, String regName )
     {
@@ -549,7 +556,7 @@
         auxAttr.setCacheName( regName );
 
         String auxPrefix = AUXILIARY_PREFIX + auxName;
-        
+
         // CONFIGURE THE EVENT LOGGER
         ICacheEventLogger cacheEventLogger = AuxiliaryCacheConfigurator.parseCacheEventLogger( props, auxPrefix );
 
@@ -561,7 +568,7 @@
         // need to make sure the manager already has the cache
         // before the auxiliary is created.
         auxCache = auxFac.createCache( auxAttr, compositeCacheManager, cacheEventLogger, elementSerializer );
-        
+
         return auxCache;
     }
 }

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/CompositeCacheManager.java Wed Aug 27 12:44:33 2008
@@ -61,8 +61,10 @@
 public class CompositeCacheManager
     implements IRemoteCacheConstants, Serializable, ICompositeCacheManager, IShutdownObservable
 {
+    /** Don't change */
     private static final long serialVersionUID = 7598584393134401756L;
 
+    /** The logger */
     private final static Log log = LogFactory.getLog( CompositeCacheManager.class );
 
     /** Caches managed by this cache manager */
@@ -95,10 +97,13 @@
     /** The Singleton Instance */
     protected static CompositeCacheManager instance;
 
+    /** The prefix of relevant system properties */
     private static final String SYSTEM_PROPERTY_KEY_PREFIX = "jcs";
 
+    /** Should we use system property substitutions. */
     private static final boolean DEFAULT_USE_SYSTEM_PROPERTIES = true;
 
+    /** Those waiting for notification of a shutdown.  */
     private Set shutdownObservers = new HashSet();
 
     /**

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/event/ElementEventQueue.java Wed Aug 27 12:44:33 2008
@@ -212,10 +212,13 @@
 
     // /////////////////////////// Inner classes /////////////////////////////
 
+    /** A node in the queue. These are chained forming a singly linked list */
     private static class Node
     {
+        /** The next node. */
         Node next = null;
 
+        /** The event to run */
         ElementEventQueue.AbstractElementEventRunner event = null;
     }
 

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupAttrName.java Wed Aug 27 12:44:33 2008
@@ -27,6 +27,7 @@
 public class GroupAttrName
     implements Serializable
 {
+    /** Don't change */
     private static final long serialVersionUID = 1586079686300744198L;
 
     /** Description of the Field */
@@ -35,6 +36,7 @@
     /** the name of the attribute */
     public final Object attrName;
 
+    /** Cached toString value */
     private String toString;
 
     /**

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/control/group/GroupId.java Wed Aug 27 12:44:33 2008
@@ -37,10 +37,12 @@
     /** the name of the region. */
     public final String cacheName;
 
+    /** Cached toString value. */
     private String toString;
 
     /**
      * Constructor for the GroupId object
+     * <p>
      * @param cacheName
      * @param groupName
      */
@@ -60,7 +62,7 @@
     }
 
     /**
-     * @param obj 
+     * @param obj
      * @return cacheName.equals( g.cacheName ) && groupName.equals( g.groupName );
      */
     public boolean equals( Object obj )

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java Wed Aug 27 12:44:33 2008
@@ -59,9 +59,6 @@
     /** log instance */
     private final static Log log = LogFactory.getLog( AbstractMemoryCache.class );
 
-    /** default chunking size */
-    private static final int DEFAULT_CHUNK_SIZE = 2;
-
     /** The region name. This defines a namespace of sorts. */
     protected String cacheName;
 
@@ -80,8 +77,8 @@
     /** status */
     protected int status;
 
-    /** How many to spool at a time. TODO make configurable */
-    protected int chunkSize = DEFAULT_CHUNK_SIZE;
+    /** How many to spool at a time.  */
+    protected int chunkSize;
 
     /** The background memory shrinker, one for all regions. */
     private static ClockDaemon shrinkerDaemon;
@@ -103,7 +100,8 @@
         this.cacheName = hub.getCacheName();
         this.cattr = hub.getCacheAttributes();
         this.cache = hub;
-
+        
+        chunkSize = cattr.getSpoolChunkSize();
         status = CacheConstants.STATUS_ALIVE;
 
         if ( cattr.getUseMemoryShrinker() )
@@ -342,8 +340,6 @@
 
     /**
      * Allows us to set the daemon status on the clockdaemon
-     * <p>
-     * @author aaronsm
      */
     class MyThreadFactory
         implements ThreadFactory

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java Wed Aug 27 12:44:33 2008
@@ -50,14 +50,19 @@
 public class MRUMemoryCache
     extends AbstractMemoryCache
 {
+    /** Don't change */
     private static final long serialVersionUID = 5013101678192336129L;
 
+    /** The logger */
     private final static Log log = LogFactory.getLog( MRUMemoryCache.class );
 
+    /** Simple stat.  Number of hits.  */
     private int hitCnt = 0;
 
+    /** Number of misses */
     private int missCnt = 0;
 
+    /** Number of puts */
     private int putCnt = 0;
 
     /**

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java Wed Aug 27 12:44:33 2008
@@ -44,6 +44,7 @@
 public class ShrinkerThread
     implements Runnable
 {
+    /** The logger */
     private final static Log log = LogFactory.getLog( ShrinkerThread.class );
 
     /** The MemoryCache instance which this shrinker is watching */
@@ -55,11 +56,12 @@
     /** Maximum number of items to spool per run. Default is -1, or no limit. */
     private int maxSpoolPerRun;
 
+    /** Should we limit the number spooled per run.  If so, the maxSpoolPerRun will be used. */
     private boolean spoolLimit = false;
 
     /**
      * Constructor for the ShrinkerThread object.
-     *
+     * <p>
      * @param cache
      *            The MemoryCache which the new shrinker should watch.
      */

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/util/MemoryElementDescriptor.java Wed Aug 27 12:44:33 2008
@@ -28,7 +28,7 @@
 public class MemoryElementDescriptor
     extends DoubleLinkedListNode
 {
-
+    /** Don't change */
     private static final long serialVersionUID = -1905161209035522460L;
 
     /** The CacheElement wrapped by this descriptor */
@@ -36,7 +36,7 @@
 
     /**
      * Constructor for the MemoryElementDescriptor object
-     *
+     * <p>
      * @param ce
      */
     public MemoryElementDescriptor( ICacheElement ce )

Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheConfiguratorUnitTest.java Wed Aug 27 12:44:33 2008
@@ -28,7 +28,7 @@
         String auxPrefix = "jcs.auxiliary." + auxName;
         String auxiliaryClassName = MockAuxiliaryCacheFactory.class.getCanonicalName();
         String eventLoggerClassName = MockCacheEventLogger.class.getCanonicalName();
-        String auxiliaryAttributeClassName =  MockAuxiliaryCacheAttributes.class.getCanonicalName();
+        String auxiliaryAttributeClassName = MockAuxiliaryCacheAttributes.class.getCanonicalName();
 
         Properties props = new Properties();
         props.put( auxPrefix, auxiliaryClassName );
@@ -36,7 +36,7 @@
         props.put( auxPrefix + AuxiliaryCacheConfigurator.CACHE_EVENT_LOGGER_PREFIX, eventLoggerClassName );
 
         System.out.print( props );
-        
+
         CompositeCacheManager manager = CompositeCacheManager.getUnconfiguredInstance();
 
         CompositeCacheConfigurator configurator = new CompositeCacheConfigurator( manager );
@@ -51,4 +51,27 @@
         assertNotNull( "Should have an auxcache.", result );
         assertNotNull( "Should have an event logger.", result.cacheEventLogger );
     }
+
+    /**
+     * Verify that we can parse the spool chunk size
+     */
+    public void testParseSpoolChunkSize_Normal()
+    {
+        // SETUP
+        String regionName = "MyRegion";
+        int chunkSize = 5;
+
+        Properties props = new Properties();
+        props.put( "jcs.default", "" );
+        props.put( "jcs.default.cacheattributes.SpoolChunkSize", String.valueOf( chunkSize ) );
+
+        CompositeCacheManager manager = CompositeCacheManager.getUnconfiguredInstance();
+
+        // DO WORK
+        manager.configure( props );
+
+        // VERIFY
+        CompositeCache cache = manager.getCache( regionName );
+        assertEquals( "Wrong chunkSize", cache.getCacheAttributes().getSpoolChunkSize(), chunkSize );
+    }
 }

Modified: jakarta/jcs/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/xdocs/changes.xml?rev=689591&r1=689590&r2=689591&view=diff
==============================================================================
--- jakarta/jcs/trunk/xdocs/changes.xml (original)
+++ jakarta/jcs/trunk/xdocs/changes.xml Wed Aug 27 12:44:33 2008
@@ -23,8 +23,8 @@
 		</release>
 		<release version="1.3.2.0" date="in SVN">
 			<action dev="asmuts" type="update"> Added eventLogging to major
-				auxiliaries and to the auxiliary factory interface. This allows you to
-				time and monitor the internal working of the cache.</action>
+				auxiliaries and to the auxiliary factory interface. This allows you
+				to time and monitor the internal working of the cache.</action>
 			<action dev="asmuts" type="update"> Added the ability to inject custom
 				serializers into auxiliary caches.</action>
 			<action dev="asmuts" type="fix" issue="JCS-40" due-to="Niall Gallagher"> Added a
@@ -32,6 +32,8 @@
 				and the remote cache.</action>
 			<action dev="asmuts" type="fix" issue="JCS-38" due-to="Timothy Cronin"> Added
 				getSource to IElementEvent interface.</action>
+			<action dev="asmuts" type="update" issue="JCS-44" due-to="Maxim Gordienko"> Made
+				spool chunk size configurable.</action>
 		</release>
 		<release version="1.3.1.0" date="in SVN">
 			<action dev="asmuts" type="update"> Added getMultiple() method to



---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org