Class ManagedHttpCacheStorage

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, HttpCacheStorage

    @Contract(threading=SAFE)
    public class ManagedHttpCacheStorage
    extends java.lang.Object
    implements HttpCacheStorage, java.io.Closeable

    HttpCacheStorage implementation capable of deallocating resources associated with the cache entries.

    This cache keeps track of cache entries using PhantomReference and maintains a collection of all resources that are no longer in use. The cache, however, does not automatically deallocates associated resources by invoking Resource.dispose() method. The consumer MUST periodically call cleanResources() method to trigger resource deallocation. The cache can be permanently shut down using shutdown() method. All resources associated with the entries used by the cache will be deallocated.

    This HttpCacheStorage implementation is intended for use with FileResource and similar.

    Compatibility note. Prior to version 4.4 this storage implementation used to dispose of all resource entries upon close(). As of version 4.4 the close() method disposes only of those resources that have been explicitly removed from the cache with removeEntry(String) method.

    The shutdown() ()} method can still be used to shut down the storage and dispose of all resources currently managed by it.

    Since:
    4.1
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void cleanResources()  
      void close()  
      HttpCacheEntry getEntry​(java.lang.String url)
      Retrieves the cache entry stored under the given key or null if no entry exists under that key.
      void putEntry​(java.lang.String url, HttpCacheEntry entry)
      Store a given cache entry under the given key.
      void removeEntry​(java.lang.String url)
      Deletes/invalidates/removes any cache entries currently stored under the given key.
      void shutdown()  
      void updateEntry​(java.lang.String url, HttpCacheUpdateCallback callback)
      Atomically applies the given callback to update an existing cache entry under a given key.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ManagedHttpCacheStorage

        public ManagedHttpCacheStorage​(CacheConfig config)
    • Method Detail

      • putEntry

        public void putEntry​(java.lang.String url,
                             HttpCacheEntry entry)
                      throws java.io.IOException
        Description copied from interface: HttpCacheStorage
        Store a given cache entry under the given key.
        Specified by:
        putEntry in interface HttpCacheStorage
        Parameters:
        url - where in the cache to store the entry
        entry - cached response to store
        Throws:
        java.io.IOException
      • getEntry

        public HttpCacheEntry getEntry​(java.lang.String url)
                                throws java.io.IOException
        Description copied from interface: HttpCacheStorage
        Retrieves the cache entry stored under the given key or null if no entry exists under that key.
        Specified by:
        getEntry in interface HttpCacheStorage
        Parameters:
        url - cache key
        Returns:
        an HttpCacheEntry or null if no entry exists
        Throws:
        java.io.IOException
      • removeEntry

        public void removeEntry​(java.lang.String url)
                         throws java.io.IOException
        Description copied from interface: HttpCacheStorage
        Deletes/invalidates/removes any cache entries currently stored under the given key.
        Specified by:
        removeEntry in interface HttpCacheStorage
        Throws:
        java.io.IOException
      • updateEntry

        public void updateEntry​(java.lang.String url,
                                HttpCacheUpdateCallback callback)
                         throws java.io.IOException
        Description copied from interface: HttpCacheStorage
        Atomically applies the given callback to update an existing cache entry under a given key.
        Specified by:
        updateEntry in interface HttpCacheStorage
        Parameters:
        url - indicates which entry to modify
        callback - performs the update; see HttpCacheUpdateCallback for details, but roughly the callback expects to be handed the current entry and will return the new value for the entry.
        Throws:
        java.io.IOException
      • cleanResources

        public void cleanResources()
      • shutdown

        public void shutdown()
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable