Class CachingReference<E>

java.lang.Object
org.jmxtrans.agent.util.CachingReference<E>

public abstract class CachingReference<E>
extends Object
Maintains a cached version of the Object that it holds and handle the renewal of this object upon expiration. Greatly inspired by the CachedData sample provided in the javadoc of ReentrantReadWriteLock. Object is created implementing the newObject() method. Sample to get an InetAddress refreshed against a DNS every 10 seconds:

 CachingReference myRemoteServerAddress = new CachingReference<InetAddress>(10, TimeUnit.SECONDS) {
     protected InetAddress newObject() {
         try {
             return InetAddress.getByName(myRemoteServerHostname);
         } catch () {
             throw new RuntimeException("Exception resolving '" + myRemoteServerHostname + "'", e);
         }
     }
 }
 
Author:
Cyrille Le Clerc
  • Constructor Details

    • CachingReference

      public CachingReference​(long timeToLiveInNanos)
    • CachingReference

      public CachingReference​(long timeToLive, TimeUnit timeToLiveUnit)
  • Method Details

    • newObject

      @Nullable protected abstract E newObject()
      Returns:
      the newly created object.
    • get

      @Nullable public E get()
      Returns:
      the up to date version of the Object hold by this reference.
    • purge

      public void purge()
      Purge the cached reference so that a new object will be created for the next get()
    • toString

      public String toString()
      Overrides:
      toString in class Object