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 CacheBuilder#refreshAfterWrite, or through a call to LoadingCache#refresh.

      This implementation synchronously delegates to load(K). It is recommended that it be overridden with an asynchronous implementation when using 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