Class CacheLoader<K,V>

java.lang.Object
org.glassfish.jersey.internal.guava.CacheLoader<K,V>

public abstract class CacheLoader<K,V> extends Object
Computes or retrieves values, based on a key, for use in populating a LoadingCache.

Most implementations will only need to implement load(K). Other methods may be overridden as desired.

Usage example:

<p>
  CacheLoader<Key, Graph> loader = new CacheLoader<Key, Graph>() {
    public Graph load(Key key) throws AnyException {
      return createExpensiveGraph(key);
    }
  };
  LoadingCache<Key, Graph> cache = CacheBuilder.newBuilder().build(loader);
Since:
10.0
Author:
Charles Fry
  • Constructor Details

    • CacheLoader

      protected CacheLoader()
      Constructor for use by subclasses.
  • Method Details

    • load

      public abstract V load(K key) throws Exception
      Computes or retrieves the value corresponding to key.
      Parameters:
      key - the non-null key whose value should be loaded
      Returns:
      the value associated with key; must not be null
      Throws:
      Exception - if unable to load the result
      InterruptedException - if this method is interrupted. InterruptedException is treated like any other Exception in all respects except that, when it is caught, the thread's interrupt status is set
    • reload

      public ListenableFuture<V> reload(K key, V oldValue) throws Exception
      Computes or retrieves a replacement value corresponding to an already-cached key. This method is called when an existing cache entry is refreshed by
      invalid reference
      CacheBuilder#refreshAfterWrite
      , or through a call to
      invalid reference
      LoadingCache#refresh
      .

      This implementation synchronously delegates to load(K). It is recommended that it be overridden with an asynchronous implementation when using

      invalid reference
      CacheBuilder#refreshAfterWrite
      .

      Note: all exceptions thrown by this method will be logged and then swallowed.

      Parameters:
      key - the non-null key whose value should be loaded
      oldValue - the non-null old value corresponding to key
      Returns:
      the future new value associated with key; must not be null, must not return null
      Throws:
      Exception - if unable to reload the result
      InterruptedException - if this method is interrupted. InterruptedException is treated like any other Exception in all respects except that, when it is caught, the thread's interrupt status is set
      Since:
      11.0