Class RefreshableCachedObject<T extends Refreshable>

java.lang.Object
org.apache.fulcrum.cache.CachedObject<T>
org.apache.fulcrum.cache.RefreshableCachedObject<T>
All Implemented Interfaces:
Serializable

public class RefreshableCachedObject<T extends Refreshable> extends CachedObject<T>
The idea of the RefreshableCachedObject is that, rather than removing items from the cache when they become stale, we'll tell them to refresh themselves instead. That way they'll always be in the cache, and the code to refresh them will be run by the background thread rather than by a user request thread. You can also set a TTL (Time To Live) for the object. This way, if the object hasn't been touched for the TTL period, then it will be removed from the cache. This extends CachedObject and provides a method for refreshing the cached object, and resetting its expire time.
Version:
$Id$
Author:
Nissim Karpenstein, Henning P. Schmiedehausen
See Also:
  • Constructor Details

    • RefreshableCachedObject

      public RefreshableCachedObject(T object)
      Constructor; sets the object to expire in the default time (30 minutes).
      Parameters:
      object - The object you want to cache.
    • RefreshableCachedObject

      public RefreshableCachedObject(T object, long expires)
      Constructor.
      Parameters:
      object - The object to cache.
      expires - How long before the object expires, in ms, e.g. 1000 = 1 second.
  • Method Details

    • setTTL

      public void setTTL(long timeToLive)
      Sets the timeToLive value
      Parameters:
      timeToLive - the new Value in milliseconds
    • getTTL

      public long getTTL()
      Gets the timeToLive value.
      Returns:
      The current timeToLive value (in milliseconds)
    • touch

      public void touch()
      Sets the last access time to the current time.
    • isUntouched

      public boolean isUntouched()
      Returns true if the object hasn't been touched in the previous TTL period.
      Returns:
      boolean status of object
    • refresh

      public void refresh()
      Refresh the object and the created time.
    • getLastAccess

      public long getLastAccess()
    • setLastAccess

      public void setLastAccess(long lastAccess)