Class DefaultGlobalCacheService

  • All Implemented Interfaces:
    Runnable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable, 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 1890338 2021-05-31 10:31:19Z gk $
    Author:
    Dave Bryson, Jon S. Stevens, John Thorhauer, Henning P. Schmiedehausen, Eric Pugh, Peter CourefreshableCachedObjectux
    • 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
    • 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 <T> CachedObject<T> getObject​(String objectId)
                                      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
        Type Parameters:
        T - type of object to return
        Parameters:
        objectId - 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.
      • addObject

        public <T> void addObject​(String objectId,
                                  CachedObject<T> object)
        Adds an object to the cache.
        Specified by:
        addObject in interface GlobalCacheService
        Type Parameters:
        T - type of object to add
        Parameters:
        objectId - The key to store the object by.
        object - The object to cache.
      • removeObject

        public void removeObject​(String objectId)
        Removes an object from the cache.
        Specified by:
        removeObject in interface GlobalCacheService
        Parameters:
        objectId - The String id for the object.
      • getKeys

        public List<String> 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<CachedObject<?>> 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 - if unable to return cache size
      • 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