## org.jboss.util
Class TimedCachePolicy

    java.lang.Object
      |
      +--java.util.TimerTask
            |
            +--org.jboss.util.TimedCachePolicy

All Implemented Interfaces:
  CachePolicy, java.lang.Runnable, Service

public class TimedCachePolicy
extends java.util.TimerTask
implements CachePolicy

An implementation of a timed cache. This is a cache whose entries have a limited lifetime with the ability to refresh their lifetime. The entries managed by the cache implement the TimedCachePolicy.TimedEntry interface. If an object inserted into the cache does not implement this interface, it will be wrapped in a DefaultTimedEntry and will expire without the possibility of refresh after getDefaultLifetime() seconds. This is a lazy cache policy in that objects are not checked for expiration until they are accessed.

Version:
  $Revision: 1.1.6.1 $
Author:
  Scott_Stark@displayscape.com

Inner Class Summary
`static interface` `TimedCachePolicy.TimedEntry` The interface that cache entries support.

Field Summary
`protected int` `defaultLifetime` The lifetime in seconds to use for objects inserted that do not implement the TimedEntry interface.
`protected java.util.Map` `entryMap` The map of cached TimedEntry objects.
`protected long` `now` The caches notion of the current time
`protected int` `resolution` The resolution in seconds of the cach current time
`protected static java.util.Timer` `resolutionTimer`
`protected boolean` `threadSafe` A flag indicating if entryMap should be synchronized

Constructor Summary
`TimedCachePolicy()` Creates a new TimedCachePolicy with a default entry lifetime of 30 mins that does not synchronized access to its policy store and uses a 60 second resolution.
`TimedCachePolicy(int defaultLifetime)` Creates a new TimedCachePolicy with the given default entry lifetime that does not synchronized access to its policy store and uses a 60 second resolution.
`TimedCachePolicy(int defaultLifetime, boolean threadSafe, int resolution)` Creates a new TimedCachePolicy with the given default entry lifetime that does/does not synchronized access to its policy store depending on the value of threadSafe.

Method Summary
`long` `currentTimeMillis()` Get the cache time.
`void` `destroy()` Clears the cache of all entries.
`void` `flush()` Remove all entries from the cache.
`java.lang.Object` `get(java.lang.Object key)` Get the cache value for key if it has not expired.
`void` `init()` Initializes the cache for use.
`void` `insert(java.lang.Object key, java.lang.Object value)` Insert a value into the cache.
`java.lang.Object` `peek(java.lang.Object key)` Get the cache value for key.
`TimedCachePolicy.TimedEntry` `peekEntry(java.lang.Object key)` Get the raw TimedEntry for key without performing any expiration check.
`void` `remove(java.lang.Object key)` Remove the entry associated with key.
`void` `run()` The TimerTask run method.
`void` `start()` Schedules this with the class resolutionTimer Timer object for execution every resolution seconds.
`void` `stop()` Stop cancels the resolution timer and flush()es the cache.

Methods inherited from class java.util.TimerTask
`cancel, scheduledExecutionTime`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### resolutionTimer

    protected static java.util.Timer resolutionTimer

### entryMap

    protected java.util.Map entryMap

  The map of cached TimedEntry objects.

### defaultLifetime

    protected int defaultLifetime

  The lifetime in seconds to use for objects inserted that do not implement the TimedEntry interface.

### threadSafe

    protected boolean threadSafe

  A flag indicating if entryMap should be synchronized

### now

    protected long now

  The caches notion of the current time

### resolution

    protected int resolution

  The resolution in seconds of the cach current time

Constructor Detail

### TimedCachePolicy

    public TimedCachePolicy()

  Creates a new TimedCachePolicy with a default entry lifetime of 30 mins that does not synchronized access to its policy store and uses a 60 second resolution.

### TimedCachePolicy

    public TimedCachePolicy(int defaultLifetime)

  Creates a new TimedCachePolicy with the given default entry lifetime that does not synchronized access to its policy store and uses a 60 second resolution.

### TimedCachePolicy

    public TimedCachePolicy(int defaultLifetime,
                            boolean threadSafe,
                            int resolution)

  Creates a new TimedCachePolicy with the given default entry lifetime that does/does not synchronized access to its policy store depending on the value of threadSafe.
  Parameters:
    `defaultLifetime,` - the lifetime in seconds to use for objects inserted that do not implement the TimedEntry interface.
    `threadSafe,` - a flag indicating if the cach store should be synchronized to allow correct operation under multi-threaded access. If true, the cache store is synchronized. If false the cache store is unsynchronized and the cache is not thread safe.
    `resolution,` - the resolution in seconds of the cache timer. A cache does not query the system time on every get() invocation. Rather the cache updates its notion of the current time every 'resolution' seconds.

Method Detail

### init

    public void init()

  Initializes the cache for use. Prior to this the cache has no store.
  Specified by:
    `init` in interface `Service`

### start

    public void start()

  Schedules this with the class resolutionTimer Timer object for execution every resolution seconds.
  Specified by:
    `start` in interface `Service`

### stop

    public void stop()

  Stop cancels the resolution timer and flush()es the cache.
  Specified by:
    `stop` in interface `Service`

### destroy

    public void destroy()

  Clears the cache of all entries.
  Specified by:
    `destroy` in interface `Service`

### get

    public java.lang.Object get(java.lang.Object key)

  Get the cache value for key if it has not expired.
  Specified by:
    `get` in interface `CachePolicy`
  Following copied from interface: `org.jboss.util.CachePolicy`
  Parameters:
    `key` - the key paired with the object
  See Also:
    `CachePolicy.peek(java.lang.Object)`

### peek

    public java.lang.Object peek(java.lang.Object key)

  Get the cache value for key. This method does not check to see if the entry has expired.
  Specified by:
    `peek` in interface `CachePolicy`
  Following copied from interface: `org.jboss.util.CachePolicy`
  Parameters:
    `key` - the key paired with the object
  See Also:
    `CachePolicy.get(java.lang.Object)`

### insert

    public void insert(java.lang.Object key,
                       java.lang.Object value)

  Insert a value into the cache. In order to have the cache entry reshresh itself value would have to implement TimedEntry and implement the required refresh() method logic.
  Specified by:
    `insert` in interface `CachePolicy`
  Parameters:
    `key,` - the key for the cache entry
    `value,` - Either an instance of TimedEntry that will be inserted without change, or an abitrary value that will be wrapped in a non-refreshing TimedEntry.

### remove

    public void remove(java.lang.Object key)

  Remove the entry associated with key.
  Specified by:
    `remove` in interface `CachePolicy`
  Following copied from interface: `org.jboss.util.CachePolicy`
  Parameters:
    `key` - the key paired with the object
  See Also:
    `CachePolicy.insert(java.lang.Object, java.lang.Object)`

### flush

    public void flush()

  Remove all entries from the cache.
  Specified by:
    `flush` in interface `CachePolicy`

### run

    public void run()

  The TimerTask run method. It updates the cache time to the current system time.
  Overrides:
    `run` in class `java.util.TimerTask`

### currentTimeMillis

    public long currentTimeMillis()

  Get the cache time.
  Returns:
    the cache time last obtained from System.currentTimeMillis()

### peekEntry

    public TimedCachePolicy.TimedEntry peekEntry(java.lang.Object key)

  Get the raw TimedEntry for key without performing any expiration check.
  Returns:
    the TimedEntry value associated with key if one exists, null otherwise.

Copyright © 2000 The JBoss Organization. All Rights Reserved.