org.apache.fulcrum.cache.impl
Class DefaultGlobalCacheService

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.fulcrum.cache.impl.DefaultGlobalCacheService
All Implemented Interfaces:
Runnable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.component.Component, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.logger.LogEnabled, org.apache.avalon.framework.thread.ThreadSafe, GlobalCacheService

public class DefaultGlobalCacheService
extends org.apache.avalon.framework.logger.AbstractLogEnabled
implements GlobalCacheService, Runnable, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.thread.ThreadSafe

This Service functions as a Global Cache. A global cache is a good place to store items that you may need to access often but don't necessarily need (or want) to fetch from the database everytime. A good example would be a look up table of States that you store in a database and use throughout your application. Since information about States doesn't change very often, you could store this information in the Global Cache and decrease the overhead of hitting the database everytime you need State information.

Version:
$Id: DefaultGlobalCacheService.java 927153 2010-03-24 18:55:08Z tv $
Author:
Dave Bryson, Jon S. Stevens, John Thorhauer, Henning P. Schmiedehausen, Eric Pugh, Peter Courcoux

Field Summary
protected  Hashtable cache
          The cache
static String CACHE_CHECK_FREQUENCY
          The property for the Cache check frequency
static long DEFAULT_CACHE_CHECK_FREQUENCY
          Cache check frequency in Millis (1000 Millis = 1 second).
static int DEFAULT_INITIAL_CACHE_SIZE
          Initial size of hash table Value must be > 0.
static String INITIAL_CACHE_SIZE
          The property for the InitalCacheSize
 
Fields inherited from interface org.apache.fulcrum.cache.GlobalCacheService
ROLE
 
Constructor Summary
DefaultGlobalCacheService()
           
 
Method Summary
 void addObject(String id, CachedObject o)
          Adds an object to the cache.
 void clearCache()
          Iterate through the cache and remove or refresh stale objects.
 void configure(org.apache.avalon.framework.configuration.Configuration conf)
          Avalon component lifecycle method
 void dispose()
          Avalon component lifecycle method
 void flushCache()
          Flush the cache of all objects.
 long getCacheCheckFrequency()
          Get the Cache Check Frequency in milliseconds
 List getCachedObjects()
          Returns a copy of the non-expired CachedObjects in the cache as a list.
 int getCacheSize()
          Returns the current size of the cache.
 List getKeys()
          Returns a copy of keys to objects in the cache as a list.
protected  String getName()
          Deprecated. part of the pre-avalon compatibility layer
 int getNumberOfObjects()
          Returns the number of objects currently stored in the cache
 CachedObject getObject(String id)
          Returns an item from the cache. /** Returns an item from the cache.
 void initialize()
          Avalon component lifecycle method
 void removeObject(String id)
          Removes an object from the cache.
 void run()
          Circle through the cache and remove stale objects.
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_INITIAL_CACHE_SIZE

public static final int DEFAULT_INITIAL_CACHE_SIZE
Initial size of hash table Value must be > 0. Default = 20

See Also:
Constant Field Values

INITIAL_CACHE_SIZE

public static final String INITIAL_CACHE_SIZE
The property for the InitalCacheSize

See Also:
Constant Field Values

CACHE_CHECK_FREQUENCY

public static final String CACHE_CHECK_FREQUENCY
The property for the Cache check frequency

See Also:
Constant Field Values

DEFAULT_CACHE_CHECK_FREQUENCY

public static final long DEFAULT_CACHE_CHECK_FREQUENCY
Cache check frequency in Millis (1000 Millis = 1 second). Value must be > 0. Default = 5 seconds

See Also:
Constant Field Values

cache

protected Hashtable cache
The cache. *

Constructor Detail

DefaultGlobalCacheService

public DefaultGlobalCacheService()
Method Detail

getCacheCheckFrequency

public long getCacheCheckFrequency()
Get the Cache Check Frequency in milliseconds

Returns:
the time between two cache check runs in milliseconds

getObject

public CachedObject getObject(String id)
                       throws ObjectExpiredException
Returns an item from the cache. /** Returns an item from the cache. RefreshableCachedObject will be refreshed if it is expired and not untouched.

Specified by:
getObject in interface GlobalCacheService
Parameters:
id - The key of the stored object.
Returns:
The object from the cache.
Throws:
ObjectExpiredException, - when either the object is not in the cache or it has expired.
ObjectExpiredException

addObject

public void addObject(String id,
                      CachedObject o)
Adds an object to the cache.

Specified by:
addObject in interface GlobalCacheService
Parameters:
id - The key to store the object by.
o - The object to cache.

removeObject

public void removeObject(String id)
Removes an object from the cache.

Specified by:
removeObject in interface GlobalCacheService
Parameters:
id - The String id for the object.

getKeys

public List getKeys()
Returns a copy of keys to objects in the cache as a list. Note that keys to expired objects are not returned.

Specified by:
getKeys in interface GlobalCacheService
Returns:
A List of String's representing the keys to objects in the cache.

getCachedObjects

public List getCachedObjects()
Returns a copy of the non-expired CachedObjects in the cache as a list.

Specified by:
getCachedObjects in interface GlobalCacheService
Returns:
A List of CachedObject objects held in the cache

run

public void run()
Circle through the cache and remove stale objects. Frequency is determined by the cacheCheckFrequency property.

Specified by:
run in interface Runnable

clearCache

public void clearCache()
Iterate through the cache and remove or refresh stale objects.


getNumberOfObjects

public int getNumberOfObjects()
Returns the number of objects currently stored in the cache

Specified by:
getNumberOfObjects in interface GlobalCacheService
Returns:
int number of object in the cache

getCacheSize

public int getCacheSize()
                 throws IOException
Returns the current size of the cache.

Specified by:
getCacheSize in interface GlobalCacheService
Returns:
int representing current cache size in number of bytes
Throws:
IOException

flushCache

public void flushCache()
Flush the cache of all objects.

Specified by:
flushCache in interface GlobalCacheService

configure

public void configure(org.apache.avalon.framework.configuration.Configuration conf)
               throws org.apache.avalon.framework.configuration.ConfigurationException
Avalon component lifecycle method

Specified by:
configure in interface org.apache.avalon.framework.configuration.Configurable
Throws:
org.apache.avalon.framework.configuration.ConfigurationException

initialize

public void initialize()
                throws Exception
Avalon component lifecycle method

Specified by:
initialize in interface org.apache.avalon.framework.activity.Initializable
Throws:
Exception

dispose

public void dispose()
Avalon component lifecycle method

Specified by:
dispose in interface org.apache.avalon.framework.activity.Disposable

getName

protected String getName()
Deprecated. part of the pre-avalon compatibility layer

The name used to specify this component in TurbineResources.properties



Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.