asmuts 02/02/13 21:30:51
Modified: src/java/org/apache/stratum/jcs/access TestCacheAccess.java
GroupCacheAccess.java CacheAccess.java
src/java/org/apache/stratum/jcs/engine/memory/lru
LRUMemoryCache.java
src/java/org/apache/stratum/jcs JCS.java
src/java/org/apache/stratum/jcs/access/behavior
ICacheAccess.java
src/java/org/apache/stratum/jcs/engine/control Cache.java
Log:
removed old lateral direct methods, deprecated destroy for remove
created access methods to update the cache attributes for controlling memory size.
want to move into auxiliary configuration. Should give a list and let them be
selected or something to reduce configuration.
Revision Changes Path
1.9 +37 -37
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/TestCacheAccess.java
Index: TestCacheAccess.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/TestCacheAccess.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- TestCacheAccess.java 19 Jan 2002 06:27:12 -0000 1.8
+++ TestCacheAccess.java 14 Feb 2002 05:30:50 -0000 1.9
@@ -158,11 +158,11 @@
{
help();
}
- else
- if ( message.startsWith( "removeLateralDirect" ) )
- {
- removeLateralDirect( message );
- }
+// else
+// if ( message.startsWith( "removeLateralDirect" ) )
+// {
+// removeLateralDirect( message );
+// }
else
if ( message.startsWith( "getAttributeNames" ) )
{
@@ -577,7 +577,7 @@
if ( message.startsWith( "remove" ) )
{
String key = message.substring( message.indexOf( " " ) + 1,
message.length() );
- cache_control.destroy( key );
+ cache_control.remove( key );
p( "removed " + key );
}
else
@@ -680,43 +680,43 @@
p( "type 'put key val' to put" );
p( "type 'stats' to get stats" );
p( "type 'cloneattr num' to clone attr" );
- p( "type 'removeLateralDirect key' to remove lateral" );
+// p( "type 'removeLateralDirect key' to remove lateral" );
p( "type 'switch number' to switch to testCache[number], 1 == testCache1" );
p( "type 'help' for commands" );
}
- ////////////////////////////////////////
- /**
- * Description of the Method
- *
- *@param message Description of the Parameter
- */
- public static void removeLateralDirect( String message )
- {
-
- String key = null;
- StringTokenizer toke = new StringTokenizer( message );
- int tcnt = 0;
- while ( toke.hasMoreElements() )
- {
- tcnt++;
- String t = ( String ) toke.nextElement();
- if ( tcnt == 2 )
- {
- key = t.trim();
- }
- }
-
- if ( tcnt < 2 )
- {
- key = "ALL";
- }
-
- cache_control.removeLateralDirect( key );
- p( "called delete multicast for key " + key );
- }
+// ////////////////////////////////////////
+// /**
+// * Description of the Method
+// *
+// *@param message Description of the Parameter
+// */
+// public static void removeLateralDirect( String message )
+// {
+//
+// String key = null;
+// StringTokenizer toke = new StringTokenizer( message );
+// int tcnt = 0;
+// while ( toke.hasMoreElements() )
+// {
+// tcnt++;
+// String t = ( String ) toke.nextElement();
+// if ( tcnt == 2 )
+// {
+// key = t.trim();
+// }
+// }
+//
+// if ( tcnt < 2 )
+// {
+// key = "ALL";
+// }
+//
+// cache_control.removeLateralDirect( key );
+// p( "called delete multicast for key " + key );
+// }
// end help
1.10 +6 -0
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/GroupCacheAccess.java
Index: GroupCacheAccess.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/GroupCacheAccess.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- GroupCacheAccess.java 12 Feb 2002 15:47:55 -0000 1.9
+++ GroupCacheAccess.java 14 Feb 2002 05:30:50 -0000 1.10
@@ -477,12 +477,18 @@
*
*@param name Description of the Parameter
*@param group Description of the Parameter
+ *
+ * @deprecated
*/
public void destroy( String name, String group )
{
removeAttribute( name, group );
}
+ public void remove( String name, String group )
+ {
+ removeAttribute( name, group );
+ }
/////////////////////////////////////
/**
1.7 +229 -155
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/CacheAccess.java
Index: CacheAccess.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/CacheAccess.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CacheAccess.java 12 Feb 2002 03:16:48 -0000 1.6
+++ CacheAccess.java 14 Feb 2002 05:30:50 -0000 1.7
@@ -11,28 +11,28 @@
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Velocity", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact [EMAIL PROTECTED]
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
@@ -73,25 +73,31 @@
import org.apache.stratum.jcs.engine.control.CompositeCacheManager;
/**
- * Class which provides interface for all access to the cache. An instance of
- * this class is tied to a specific cache region. Static methods are provided
- * to get such instances.
+ * Class which provides interface for all access to the cache. An instance of
+ * this class is tied to a specific cache region. Static methods are provided
+ * to get such instances.
*
- * @author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
- * @version $Id: CacheAccess.java,v 1.6 2002/02/12 03:16:48 jtaylor Exp $
+ *@author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
+ *@created February 13, 2002
+ *@version $Id: CacheAccess.java,v 1.7 2002/02/14 05:30:50 asmuts Exp $
*/
public class CacheAccess implements ICacheAccess
{
- /** Cache manager use by the various forms of defineRegion and getAccess */
+ /**
+ * Cache manager use by the various forms of defineRegion and getAccess
+ */
private static CompositeCacheManager cacheMgr;
- /** Cache that a given instance of this class provides access to */
+ /**
+ * Cache that a given instance of this class provides access to. Should
+ * this be the inteface?
+ */
protected Cache cacheControl;
/**
- * Constructor for the CacheAccess object.
+ * Constructor for the CacheAccess object.
*
- * @param cacheControl The cache which the created instance accesses
+ *@param cacheControl The cache which the created instance accesses
*/
protected CacheAccess( Cache cacheControl )
{
@@ -101,89 +107,89 @@
// ----------------------------- static methods for access to cache regions
/**
- * Define a new cache region with the given name.
- *
- * In the oracle specification, these attributes are global and not region
- * specific, regional overirdes is a value add each region should be able
- * to house both cache and element attribute sets. It is more efficient to
- * define a cache in the props file and then strictly use the get access
- * method. Use of the define region outside of an initialization block
- * should be avoided.
- *
- * @param name Name that will identify the region
- * @return CacheAccess instance for the new region
- * @exception CacheException
+ * Define a new cache region with the given name. In the oracle
+ * specification, these attributes are global and not region specific,
+ * regional overirdes is a value add each region should be able to house
+ * both cache and element attribute sets. It is more efficient to define a
+ * cache in the props file and then strictly use the get access method. Use
+ * of the define region outside of an initialization block should be
+ * avoided.
+ *
+ *@param name Name that will identify the region
+ *@return CacheAccess instance for the new region
+ *@exception CacheException
*/
public static CacheAccess defineRegion( String name )
throws CacheException
{
ensureCacheManager();
-
+
return new CacheAccess( ( Cache ) cacheMgr.getCache( name ) );
}
/**
- * Define a new cache region with the specified name and attributes.
+ * Define a new cache region with the specified name and attributes.
*
- * @param name Name that will identify the region
- * @param cattr CompositeCacheAttributes for the region
- * @return CacheAccess instance for the new region
- * @exception CacheException
+ *@param name Name that will identify the region
+ *@param cattr CompositeCacheAttributes for the region
+ *@return CacheAccess instance for the new region
+ *@exception CacheException
*/
- public static CacheAccess defineRegion( String name,
+ public static CacheAccess defineRegion( String name,
CompositeCacheAttributes cattr )
throws CacheException
{
ensureCacheManager();
-
+
return new CacheAccess( ( Cache ) cacheMgr.getCache( name, cattr ) );
}
/**
- * Define a new cache region with the specified name and attributes.
+ * Define a new cache region with the specified name and attributes and
+ * return a CacheAccess to it.
*
- * @param name Name that will identify the region
- * @param cattr CompositeCacheAttributes for the region
- * @param attr Attributes for the region
- * @return CacheAccess instance for the new region
- * @exception CacheException
+ *@param name Name that will identify the region
+ *@param cattr CompositeCacheAttributes for the region
+ *@param attr Attributes for the region
+ *@return CacheAccess instance for the new region
+ *@exception CacheException
*/
- public static CacheAccess defineRegion( String name,
- CompositeCacheAttributes cattr,
+ public static CacheAccess defineRegion( String name,
+ CompositeCacheAttributes cattr,
Attributes attr )
throws CacheException
{
ensureCacheManager();
-
- return new CacheAccess(
+
+ return new CacheAccess(
( Cache ) cacheMgr.getCache( name, cattr, attr ) );
}
/**
- * Get a CacheAccess instance for the given region.
+ * Get a CacheAccess instance for the given region.
*
- * @param region Name that identifies the region
- * @return CacheAccess instance for region
- * @exception CacheException
+ *@param region Name that identifies the region
+ *@return CacheAccess instance for region
+ *@exception CacheException
*/
public static CacheAccess getAccess( String region )
throws CacheException
{
ensureCacheManager();
-
+
return new CacheAccess( ( Cache ) cacheMgr.getCache( region ) );
}
/**
- * Get a CacheAccess instance for the given region with the given
- * attributes.
+ * Get a CacheAccess instance for the given region with the given
+ * attributes.
*
- * @param region Name that identifies the region
- * @param icca
- * @return CacheAccess instance for region
- * @exception CacheException
+ *@param region Name that identifies the region
+ *@param icca
+ *@return CacheAccess instance for region
+ *@exception CacheException
*/
- public static CacheAccess getAccess( String region,
+ public static CacheAccess getAccess( String region,
ICompositeCacheAttributes icca )
throws CacheException
{
@@ -193,8 +199,8 @@
}
/**
- * Helper method which checks to make sure the cacheMgr class field is set,
- * and if not requests an instance from CacheManagerFactory.
+ * Helper method which checks to make sure the cacheMgr class field is set,
+ * and if not requests an instance from CacheManagerFactory.
*/
protected static void ensureCacheManager()
{
@@ -209,15 +215,15 @@
}
}
}
-
+
// ------------------------------------------------------- instance methods
/**
- * Retrieve an object from the cache region this instance provides access
- * to.
+ * Retrieve an object from the cache region this instance provides access
+ * to.
*
- * @param name Key the object is stored as
- * @return The object if found or null
+ *@param name Key the object is stored as
+ *@return The object if found or null
*/
public Object get( String name )
{
@@ -225,14 +231,38 @@
}
/**
- * Place a new object in the cache, associated with key name. If there is
- * currently an object associated with name in the region it is replaced.
- * Names are scoped to a region so they must be unique within the
- * region they are placed.
- *
- * @param name Key object will be stored with
- * @param obj Object to store
- * @exception CacheException
+ * Place a new object in the cache, associated with key name. If there is
+ * currently an object associated with name in the region an
+ * ObjectExistsException is thrown. Names are scoped to a region so they
+ * must be unique within the region they are placed.
+ *
+ *@param name Key object will be stored with
+ *@param obj Object to store
+ *@exception CacheException
+ */
+ public void putSafe( Object name, Object obj )
+ throws CacheException
+ {
+ try
+ {
+ cacheControl.putSafe( ( Serializable ) name, ( Serializable ) obj );
+ }
+ catch ( Exception e )
+ {
+ throw new CacheException( e );
+ }
+ }
+
+
+ /**
+ * Place a new object in the cache, associated with key name. If there is
+ * currently an object associated with name in the region it is replaced.
+ * Names are scoped to a region so they must be unique within the region
+ * they are placed.
+ *
+ *@param name Key object will be stored with
+ *@param obj Object to store
+ *@exception CacheException
*/
public void put( Object name, Object obj )
throws CacheException
@@ -248,22 +278,22 @@
}
/**
- * Place a new object in the cache. This form allows attributes to
- * associate with the object may be specified with attr.
+ * Place a new object in the cache. This form allows attributes to
+ * associate with the object may be specified with attr.
*
- * @param name Key object will be stored with
- * @param obj Object to store
- * @param attr Attributes to store object with
- * @exception CacheException
+ *@param name Key object will be stored with
+ *@param obj Object to store
+ *@param attr Attributes to store object with
+ *@exception CacheException
*/
public void put( Object name, Object obj, Attributes attr )
throws CacheException
{
try
{
- cacheControl.put( ( Serializable ) name,
- ( Serializable ) obj,
- attr );
+ cacheControl.put( ( Serializable ) name,
+ ( Serializable ) obj,
+ attr );
}
catch ( Exception e )
{
@@ -272,10 +302,10 @@
}
/**
- * Destory the region and all objects within it. After calling this method,
- * the Cache object can no longer be used as it will be closed.
+ * Destory the region and all objects within it. After calling this method,
+ * the Cache object can no longer be used as it will be closed.
*
- * @exception CacheException
+ *@exception CacheException
*/
public void destroy()
throws CacheException
@@ -284,41 +314,66 @@
}
/**
- * Invalidate all objects associated with key name, removing all references
- * to the objects from the cache.
+ * Description of the Method
*
- * @param name Key that specifies object to invalidate
- * @exception CacheException
+ *@exception CacheException Description of the Exception
*/
- public void destroy( Object name )
+ public void remove()
throws CacheException
{
- cacheControl.remove( ( Serializable ) name );
+ cacheControl.removeAll();
}
/**
- * Remove the entire region of elements from other caches specified in the
- * cache.properties file as lateral caches.
+ * Invalidate all objects associated with key name, removing all references
+ * to the objects from the cache.
+ *
+ *@param name Key that specifies object to invalidate
+ *@exception CacheException
*/
- public void removeLateralDirect()
+ public void destroy( Object name )
+ throws CacheException
{
- cacheControl.removeLateralDirect( "ALL" );
+ cacheControl.remove( ( Serializable ) name );
}
/**
- * Remove the specified element from other caches specified in in the
- * cache.properties file as lateral caches.
+ * Description of the Method
*
- * @param key Key identifying object to remove
+ *@param name Description of the Parameter
+ *@exception CacheException Description of the Exception
*/
- public void removeLateralDirect( Serializable key )
+ public void remove( Object name )
+ throws CacheException
{
- cacheControl.removeLateralDirect( key );
+ cacheControl.remove( ( Serializable ) name );
}
+
+ // TODO: rethink the point of these methods
+// /**
+// * Remove the entire region of elements from other caches specified in the
+// * cache.properties file as lateral caches.
+// */
+// public void removeLateralDirect()
+// {
+// cacheControl.removeLateralDirect( "ALL" );
+// }
+//
+// /**
+// * Remove the specified element from other caches specified in in the
+// * cache.properties file as lateral caches.
+// *
+// * @param key Key identifying object to remove
+// */
+// public void removeLateralDirect( Serializable key )
+// {
+// cacheControl.removeLateralDirect( key );
+// }
+
/**
- * If there are any auxiliary caches associated with this cache, save all
- * objects to them.
+ * If there are any auxiliary caches associated with this cache, save all
+ * objects to them.
*/
public void save()
{
@@ -326,47 +381,45 @@
}
/**
- * ResetAttributes allows for some of the attributes of a region to be
- * reset in particular expiration time attriubtes, time to live, default
- * time to live and idle time, and event handlers. Changing default
- * settings on groups and regions will not affect existing objects. Only
- * object loaded after the reset will use the new defaults. If no name
- * argument is provided, the reset is applied to the region.
- *
- * NOTE: this method is currently not implemented.
- *
- * @param attr New attributes for this region.
- * @exception CacheException
- * @exception InvalidHandleException
+ * ResetAttributes allows for some of the attributes of a region to be
+ * reset in particular expiration time attriubtes, time to live, default
+ * time to live and idle time, and event handlers. Changing default
+ * settings on groups and regions will not affect existing objects. Only
+ * object loaded after the reset will use the new defaults. If no name
+ * argument is provided, the reset is applied to the region. NOTE: this
+ * method is currently not implemented.
+ *
+ *@param attr New attributes for this region.
+ *@exception CacheException
+ *@exception InvalidHandleException
*/
public void resetElementAttributes( Attributes attr )
- throws CacheException, InvalidHandleException
+ throws CacheException, InvalidHandleException
{
// Not implemented
}
/**
- * Reset attributes for a particular element in the cache.
+ * Reset attributes for a particular element in the cache. NOTE: this
+ * method is currently not implemented.
*
- * NOTE: this method is currently not implemented.
- *
- * @param name Key of object to reset attributes for
- * @param attr New attributes for the object
- * @exception CacheException
- * @exception InvalidHandleException
+ *@param name Key of object to reset attributes for
+ *@param attr New attributes for the object
+ *@exception CacheException
+ *@exception InvalidHandleException
*/
public void resetElementAttributes( Object name, Attributes attr )
- throws CacheException, InvalidHandleException
- {
+ throws CacheException, InvalidHandleException
+ {
// Not implemented
}
/**
- * GetAttributes will return an attribute object describing the current
- * attributes associated with the object name.
+ * GetAttributes will return an attribute object describing the current
+ * attributes associated with the object name.
*
- * @return Attributes for this region
- * @exception CacheException
+ *@return Attributes for this region
+ *@exception CacheException
*/
public Attributes getElementAttributes()
throws CacheException
@@ -375,19 +428,20 @@
}
/**
- * GetAttributes will return an attribute object describing the current
- * attributes associated with the object name. The name object must
- * override the Object.equals and Object.hashCode methods.
- *
- * @param name Key of object to get attributes for
- * @return Attributes for the object, null if object not in cache
- * @exception CacheException
+ * GetAttributes will return an attribute object describing the current
+ * attributes associated with the object name. The name object must
+ * override the Object.equals and Object.hashCode methods.
+ *
+ *@param name Key of object to get attributes for
+ *@return Attributes for the object, null if object not
+ * in cache
+ *@exception CacheException
*/
public Attributes getElementAttributes( Object name )
throws CacheException
{
Attributes attr = null;
-
+
try
{
attr = cacheControl.getElementAttributes( ( Serializable ) name );
@@ -396,12 +450,12 @@
{
p( ioe.toString() );
}
-
+
return attr;
}
/**
- * Dispose this region. Flushes objects to and closes auxiliary caches.
+ * Dispose this region. Flushes objects to and closes auxiliary caches.
*/
protected void dispose()
{
@@ -409,9 +463,9 @@
}
/**
- * Return statistics for the region.
+ * Return statistics for the region.
*
- * @return HTML formatted string containing region statistics
+ *@return HTML formatted string containing region statistics
*/
protected String getStats()
{
@@ -419,25 +473,45 @@
}
/**
- * Wrapper to System.out.println
+ * Wrapper to System.out.println FIXME: Replace (at call points) with
+ * logging mechanism.
*
- * FIXME: Replace (at call points) with logging mechanism.
- *
- * @param s String to print
+ *@param s String to print
*/
public static void p( String s )
{
System.out.println( s );
}
-
+
+
+ /**
+ * Gets the ICompositeCacheAttributes of the cache region
+ *
+ *@return
+ */
+ public ICompositeCacheAttributes getCacheAttributes()
+ {
+ return cacheControl.getCacheAttributes();
+ }
+
+ /**
+ * Sets the ICompositeCacheAttributes of the cache region.
+ *
+ *@param cattr The new ICompositeCacheAttribute value
+ */
+ public void setCacheAttributes( ICompositeCacheAttributes cattr )
+ {
+ cacheControl.setCacheAttributes( cattr );
+ }
+
// -------------------------------- methods for testing and error reporting
-
- // protected void dumpMap()
+
+ // protected void dumpMap()
// {
// cache_control.dumpMap();
// }
//
- // protected void dumpCacheEntries()
+ // protected void dumpCacheEntries()
// {
// cache_control.dumpCacheEntries();
// }
1.6 +2 -2
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/memory/lru/LRUMemoryCache.java
Index: LRUMemoryCache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/memory/lru/LRUMemoryCache.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LRUMemoryCache.java 13 Feb 2002 04:45:05 -0000 1.5
+++ LRUMemoryCache.java 14 Feb 2002 05:30:51 -0000 1.6
@@ -30,8 +30,8 @@
/////////////////////////////////////////////////////
/**
- * A fast reference management system. The least recently used items move tot
- * he end of the list and get spooled to disk if the cache hub is configured to
+ * A fast reference management system. The least recently used items move to
+ * the end of the list and get spooled to disk if the cache hub is configured to
* use a disk cache. Most of the cache bottelnecks ar ein IO. There are no io
* bottlenecks here, it's all about processing power. Even though there are
* only a few adjustments necessary to maintain the double linked list, we
1.4 +43 -40 jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/JCS.java
Index: JCS.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/JCS.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JCS.java 13 Feb 2002 03:01:05 -0000 1.3
+++ JCS.java 14 Feb 2002 05:30:51 -0000 1.4
@@ -11,28 +11,28 @@
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Velocity", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact [EMAIL PROTECTED]
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
@@ -66,23 +66,26 @@
import org.apache.stratum.jcs.engine.behavior.ICompositeCacheAttributes;
/**
- * Simple class for using JCS. To use JCS in your application, you can use the
- * static methods of this class to get access objects (instances of this class)
- * for your cache regions. Ideally this class should be all you need to import
- * to use JCS.
- *
- * @author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
- * @author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
- * @version $Id: JCS.java,v 1.3 2002/02/13 03:01:05 jtaylor Exp $
+ * Simple class for using JCS. To use JCS in your application, you can use the
+ * static methods of this class to get access objects (instances of this class)
+ * for your cache regions. Ideally this class should be all you need to import
+ * to use JCS. One JCS should be created for each region you want to access. If
+ * you have several regions, then get instances for each. For best performance
+ * the getInstance call should be made in an initialization method.
+ *
+ *@author <a href="mailto:[EMAIL PROTECTED]">Aaron Smuts</a>
+ *@author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a>
+ *@created February 13, 2002
+ *@version $Id: JCS.java,v 1.4 2002/02/14 05:30:51 asmuts Exp $
*/
public class JCS extends GroupCacheAccess
{
private static GroupCacheManager cacheMgr;
/**
- * Protected constructor for use by the static factory methods.
+ * Protected constructor for use by the static factory methods.
*
- * @param cacheControl Cache which the instance will provide access to
+ *@param cacheControl Cache which the instance will provide access to
*/
protected JCS( Cache cacheControl )
{
@@ -90,29 +93,30 @@
}
/**
- * Get a JCS which accesses the provided region.
+ * Get a JCS which accesses the provided region.
*
- * @param region Region that return JCS will provide access to
- * @return A JCS which provides access to a given region.
- * @exception CacheException
+ *@param region Region that return JCS will provide access to
+ *@return A JCS which provides access to a given region.
+ *@exception CacheException
*/
public static JCS getInstance( String region )
throws CacheException
{
ensureCacheManager();
-
+
return new JCS( ( Cache ) cacheMgr.getCache( region ) );
+
}
/**
- * Get a JCS which accesses the provided region.
+ * Get a JCS which accesses the provided region.
*
- * @param region Region that return JCS will provide access to
- * @param icca Cache attributes for region
- * @return A JCS which provides access to a given region.
- * @exception CacheException
+ *@param region Region that return JCS will provide access to
+ *@param icca Cache attributes for region
+ *@return A JCS which provides access to a given region.
+ *@exception CacheException
*/
- public static JCS getInstance( String region,
+ public static JCS getInstance( String region,
ICompositeCacheAttributes icca )
throws CacheException
{
@@ -122,11 +126,10 @@
}
/**
- * Gets an instance of GroupCacheManager and stores it in the cacheMgr
- * class field, if it is not already set. Unlike the implementation in
- * CacheAccess, the cache manager is a GroupCacheManager.
- *
- * NOTE: This can / will be moved up into GroupCacheAccess.
+ * Gets an instance of GroupCacheManager and stores it in the cacheMgr
+ * class field, if it is not already set. Unlike the implementation in
+ * CacheAccess, the cache manager is a GroupCacheManager. NOTE: This can
+ * will be moved up into GroupCacheAccess.
*/
protected static void ensureCacheManager()
{
1.6 +71 -26
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/behavior/ICacheAccess.java
Index: ICacheAccess.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/access/behavior/ICacheAccess.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ICacheAccess.java 15 Jan 2002 22:25:50 -0000 1.5
+++ ICacheAccess.java 14 Feb 2002 05:30:51 -0000 1.6
@@ -11,28 +11,28 @@
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Velocity", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact [EMAIL PROTECTED]
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
@@ -57,7 +57,8 @@
import java.io.Serializable;
import org.apache.stratum.jcs.access.exception.CacheException;
-
+import org.apache.stratum.jcs.access.exception.ObjectExistsException;
+import org.apache.stratum.jcs.engine.behavior.ICompositeCacheAttributes;
import org.apache.stratum.jcs.engine.Attributes;
/////////////////////////////////////////////////////////
@@ -92,6 +93,16 @@
/**
+ * Puts in cache if an item does not exist with the name in that region.
+ *
+ *@param name Description of the Parameter
+ *@param obj Description of the Parameter
+ *@exception CacheException Description of the Exception
+ */
+ void putSafe( Object name, Object obj )
+ throws CacheException;
+
+ /**
* Puts and/or overides an element with the name in that region.
*
*@param name Description of the Parameter
@@ -118,36 +129,55 @@
* Removes an item or all items. Should be called remove.
*
*@exception CacheException Description of the Exception
+ *@deprecated
+ *@see #remove
*/
void destroy()
throws CacheException;
-
/**
* Description of the Method
*
- *@param name Description of the Parameter
*@exception CacheException Description of the Exception
*/
- void destroy( Object name )
+ void remove()
throws CacheException;
-
/**
- * Remove either the entire region of elements or the the specified element
- * from other caches specified in in the cache.properties file as lateral
- * caches.
+ * Description of the Method
+ *
+ *@param name Description of the Parameter
+ *@exception CacheException Description of the Exception
+ *@deprecated
+ *@see #remove
*/
- void removeLateralDirect();
-
+ void destroy( Object name )
+ throws CacheException;
/**
* Description of the Method
*
- *@param key Description of the Parameter
+ *@param name Description of the Parameter
+ *@exception CacheException Description of the Exception
*/
- void removeLateralDirect( Serializable key );
+ void remove( Object name )
+ throws CacheException;
+// /**
+// * Remove either the entire region of elements or the the specified element
+// * from other caches specified in in the cache.properties file as lateral
+// * caches.
+// */
+// void removeLateralDirect();
+//
+//
+// /**
+// * Description of the Method
+// *
+// *@param key Description of the Parameter
+// */
+// void removeLateralDirect( Serializable key );
+//
/**
* ResetAttributes allows for some of the attributes of a region to be
@@ -199,6 +229,21 @@
*/
Attributes getElementAttributes( Object name )
throws CacheException;
+
+
+ /**
+ * Gets the ICompositeCacheAttributes of the cache region
+ *
+ *@return
+ */
+ public ICompositeCacheAttributes getCacheAttributes();
+
+ /**
+ * Sets the ICompositeCacheAttributes of the cache region
+ *
+ *@param cattr The new ICompositeCacheAttribute value
+ */
+ public void setCacheAttributes( ICompositeCacheAttributes cattr );
}
// end interface
1.13 +80 -29
jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/control/Cache.java
Index: Cache.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/control/Cache.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Cache.java 13 Feb 2002 19:13:59 -0000 1.12
+++ Cache.java 14 Feb 2002 05:30:51 -0000 1.13
@@ -62,6 +62,7 @@
import org.apache.stratum.jcs.access.exception.CacheException;
import org.apache.stratum.jcs.access.exception.ObjectNotFoundException;
+import org.apache.stratum.jcs.access.exception.ObjectExistsException;
import org.apache.stratum.jcs.engine.Attributes;
import org.apache.stratum.jcs.engine.CacheElement;
@@ -88,13 +89,13 @@
*@author asmuts
*@created January 15, 2002
*/
-public class Cache
- implements ICacheHub, ICache, ICompositeCache, Serializable
+public class Cache
+ implements ICacheHub, ICache, ICompositeCache, Serializable
{
- private static final Log log = LogSource.getInstance( Cache.class );
-
+ private final static Log log = LogSource.getInstance( Cache.class );
+
/**
- * Description of the Field
+ * not used for much
*/
public final String className;
@@ -105,15 +106,16 @@
private boolean alive = true;
+ // this is int he cacheAttr, shouldn't be used, remove
final String cacheName;
/**
- * Region Elemental Attributes
+ * Region Elemental Attributes, default
*/
public Attributes attr;
/**
- * Cache Attributes
+ * Cache Attributes, for hub and memory auxiliary
*/
public ICompositeCacheAttributes cacheAttr;
@@ -124,6 +126,11 @@
private int ramHit;
private int miss;
+ /**
+ * The cache hub can only have one memory cache. This could be made more
+ * flexible in the future, but they are tied closely together. More than
+ * one doesn't make much sense.
+ */
// IMemoryCache
IMemoryCache memCache;
@@ -173,9 +180,9 @@
if ( log.isDebugEnabled() )
{
- log.debug( "Constructed cache with name " + cacheName +
- " and cache attributes: " + cattr );
- }
+ log.debug( "Constructed cache with name " + cacheName +
+ " and cache attributes: " + cattr );
+ }
else if ( log.isInfoEnabled() )
{
log.info( "Constructed cache with name: " + cacheName );
@@ -186,7 +193,9 @@
/**
* Description of the Method
*
- *@param ce Description of the Parameter
+ *@param ce Description of the Parameter
+ *@deprecated
+ *@see this will become protected
*/
public void add( ICacheElement ce )
{
@@ -203,7 +212,29 @@
/**
- * OSC4j interface put methods, and make it the first in the link list.
+ * Will no override existing items.
+ *
+ *@param key Description of the Parameter
+ *@param val Description of the Parameter
+ *@exception IOException Description of the Exception
+ */
+ public void putSafe( Serializable key, Serializable val )
+ throws IOException, ObjectExistsException
+ {
+ if ( this.get( key ) != null )
+ {
+ throw new ObjectExistsException( "Object exists for key " + key );
+ }
+ else
+ {
+ put( key, val, ( Attributes ) this.attr.copy() );
+ }
+ return;
+ }
+
+
+ /**
+ * Put in cache and configured auxiliaries.
*
*@param key Description of the Parameter
*@param val Description of the Parameter
@@ -234,18 +265,18 @@
//if ( this.get( key ) != null ) {
// throw new ObjectExistsException( "Object exists for key " + key );
//}
-
+
if ( key == null || val == null )
{
- NullPointerException npe =
- new NullPointerException( "key=" + key + " and val=" + val +
- " must not be null." );
-
+ NullPointerException npe =
+ new NullPointerException( "key=" + key + " and val=" + val +
+ " must not be null." );
+
log.error( "Key or value was null. Exception will be thrown", npe );
-
+
throw npe;
}
-
+
try
{
updateCaches( key, val, attr );
@@ -271,7 +302,7 @@
throws IOException
{
// FIXME: Replace with tracing aspects
-
+
if ( log.isDebugEnabled() )
{
log.debug( "updateCaches(key,val,attr) > ICache.INCLUDE_REMOTE_CACHE= "
+ ICache.INCLUDE_REMOTE_CACHE + " key = " + key );
@@ -296,7 +327,7 @@
throws IOException
{
// FIXME: Replace with tracing aspects
-
+
if ( log.isDebugEnabled() )
{
log.debug( "updateCaches(key,val,attr,updateRemoteCache) >
updateRemoteCache= " + updateRemoteCache + " key = " + key );
@@ -319,7 +350,7 @@
throws IOException
{
// FIXME: Replace with tracing aspects
-
+
if ( log.isDebugEnabled() )
{
log.debug( "update(ce) > ICache.INCLUDE_REMOTE_CACHE= " +
ICache.INCLUDE_REMOTE_CACHE + " key = " + ce.getKey() );
@@ -359,11 +390,11 @@
throw new IllegalArgumentException(
"key must not end with " + NAME_COMPONENT_DELIMITER + " for a put
operation" );
}
-
+
// FIXME: Replace with tracing aspects
if ( log.isDebugEnabled() )
- {
+ {
log.debug( "Cache.updateExclude(ce,updateRemoteCache) >
updateRemoteCache = " + updateRemoteCache + " key=" + ce.getKey() + ", value type=" +
ce.getVal().getClass().getName() + ", " + ce.getAttributes().toString() );
if ( updateRemoteCache == ICache.INCLUDE_REMOTE_CACHE )
@@ -392,7 +423,7 @@
for ( int i = 0; i < auxCaches.length; i++ )
{
ICache aux = auxCaches[i];
-
+
if ( log.isDebugEnabled() )
{
log.debug( "aux.getCacheType() = " + aux.getCacheType() );
@@ -433,8 +464,8 @@
// restrictions
if ( log.isDebugEnabled() )
{
- log.debug( "lateralcache in aux list: cattr " +
- cacheAttr.getUseLateral() );
+ log.debug( "lateralcache in aux list: cattr " +
+ cacheAttr.getUseLateral() );
}
if ( cacheAttr.getUseLateral() && ce.getAttributes().IS_LATERAL &&
updateRemoteCache )
{
@@ -682,7 +713,7 @@
if ( log.isInfoEnabled() )
{
log.info( ce.getKey() + " expired" );
- }
+ }
this.remove( key );
//throw new ObjectNotFoundException( key + " expired from cache" );
@@ -1078,7 +1109,7 @@
////////////////////////////////////////////////
/**
- * Gets the attributes attribute of the Cache object
+ * Gets the default element attribute of the Cache object
*
*@return The attributes value
*/
@@ -1087,6 +1118,26 @@
return attr;
}
+
+ /**
+ * Gets the ICompositeCacheAttributes attribute of the Cache object
+ *
+ *@return The ICompositeCacheAttributes value
+ */
+ public ICompositeCacheAttributes getCacheAttributes()
+ {
+ return this.cacheAttr;
+ }
+
+ /**
+ * Sets the ICompositeCacheAttributes attribute of the Cache object
+ *
+ *@param cattr The new ICompositeCacheAttributes value
+ */
+ public void setCacheAttributes( ICompositeCacheAttributes cattr )
+ {
+ this.cacheAttr = cattr;
+ }
////////////////////////////////////////////////
/**
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>