Class AuthCache<K,​V>

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  AuthCache.BulkLoader<K,​V>  
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected com.github.benmanes.caffeine.cache.LoadingCache<K,​V> cache
      Underlying cache.
      static java.lang.String MBEAN_NAME_BASE  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected AuthCache​(java.lang.String name, java.util.function.IntConsumer setValidityDelegate, java.util.function.IntSupplier getValidityDelegate, java.util.function.IntConsumer setUpdateIntervalDelegate, java.util.function.IntSupplier getUpdateIntervalDelegate, java.util.function.IntConsumer setMaxEntriesDelegate, java.util.function.IntSupplier getMaxEntriesDelegate, java.util.function.Consumer<java.lang.Boolean> setActiveUpdate, java.util.function.BooleanSupplier getActiveUpdate, java.util.function.Function<K,​V> loadFunction, java.util.function.Supplier<java.util.Map<K,​V>> bulkLoadFunction, java.util.function.BooleanSupplier cacheEnabledDelegate)  
      protected AuthCache​(java.lang.String name, java.util.function.IntConsumer setValidityDelegate, java.util.function.IntSupplier getValidityDelegate, java.util.function.IntConsumer setUpdateIntervalDelegate, java.util.function.IntSupplier getUpdateIntervalDelegate, java.util.function.IntConsumer setMaxEntriesDelegate, java.util.function.IntSupplier getMaxEntriesDelegate, java.util.function.Consumer<java.lang.Boolean> setActiveUpdate, java.util.function.BooleanSupplier getActiveUpdate, java.util.function.Function<K,​V> loadFunction, java.util.function.Supplier<java.util.Map<K,​V>> bulkLoadFunction, java.util.function.BooleanSupplier cacheEnabledDelegate, java.util.function.BiPredicate<K,​V> invalidationCondition)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean awaitTermination​(long timeout, java.util.concurrent.TimeUnit units)
      Await termination of this object, i.e.
      V get​(K k)
      Retrieve a value from the cache.
      boolean getActiveUpdate()  
      java.util.Map<K,​V> getAll()
      Retrieve all cached entries.
      long getEstimatedSize()  
      int getMaxEntries()  
      protected java.lang.String getObjectName()  
      int getUpdateInterval()  
      int getValidity()  
      protected void init()
      Do setup for the cache and MBean.
      protected com.github.benmanes.caffeine.cache.LoadingCache<K,​V> initCache​(com.github.benmanes.caffeine.cache.LoadingCache<K,​V> existing)
      (Re-)initialise the underlying cache.
      void invalidate()
      Invalidate the entire cache.
      void invalidate​(K k)
      Invalidate a key.
      boolean isTerminated()  
      void setActiveUpdate​(boolean update)  
      void setMaxEntries​(int maxEntries)
      Set maximum number of entries in the cache.
      void setUpdateInterval​(int updateInterval)
      Time in milliseconds after which an entry in the cache should be refreshed (it's load function called again)
      void setValidity​(int validityPeriod)
      Time in milliseconds that a value in the cache will expire after.
      void shutdown()
      Shutdown once any remaining work has completed (however this is defined for the implementation).
      static void shutdownAllAndWait​(long timeout, java.util.concurrent.TimeUnit unit)  
      java.lang.Object shutdownNow()
      Shutdown immediately, possibly interrupting ongoing work, and cancelling work that is queued.
      protected void unregisterMBean()  
      void warm()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • cache

        protected volatile com.github.benmanes.caffeine.cache.LoadingCache<K,​V> cache
        Underlying cache. LoadingCache will call underlying load function on get(K) if key is not present
    • Constructor Detail

      • AuthCache

        protected AuthCache​(java.lang.String name,
                            java.util.function.IntConsumer setValidityDelegate,
                            java.util.function.IntSupplier getValidityDelegate,
                            java.util.function.IntConsumer setUpdateIntervalDelegate,
                            java.util.function.IntSupplier getUpdateIntervalDelegate,
                            java.util.function.IntConsumer setMaxEntriesDelegate,
                            java.util.function.IntSupplier getMaxEntriesDelegate,
                            java.util.function.Consumer<java.lang.Boolean> setActiveUpdate,
                            java.util.function.BooleanSupplier getActiveUpdate,
                            java.util.function.Function<K,​V> loadFunction,
                            java.util.function.Supplier<java.util.Map<K,​V>> bulkLoadFunction,
                            java.util.function.BooleanSupplier cacheEnabledDelegate)
        Parameters:
        name - Used for MBean
        setValidityDelegate - Used to set cache validity period. See Policy.expireAfterWrite()
        getValidityDelegate - Getter for validity period
        setUpdateIntervalDelegate - Used to set cache update interval. See Policy.refreshAfterWrite()
        getUpdateIntervalDelegate - Getter for update interval
        setMaxEntriesDelegate - Used to set max # entries in cache. See Policy.Eviction.setMaximum(long)
        getMaxEntriesDelegate - Getter for max entries.
        setActiveUpdate - Method to process config to actively update the auth cache prior to configured cache expiration
        getActiveUpdate - Getter for active update
        loadFunction - Function to load the cache. Called on get(Object)
        cacheEnabledDelegate - Used to determine if cache is enabled.
      • AuthCache

        protected AuthCache​(java.lang.String name,
                            java.util.function.IntConsumer setValidityDelegate,
                            java.util.function.IntSupplier getValidityDelegate,
                            java.util.function.IntConsumer setUpdateIntervalDelegate,
                            java.util.function.IntSupplier getUpdateIntervalDelegate,
                            java.util.function.IntConsumer setMaxEntriesDelegate,
                            java.util.function.IntSupplier getMaxEntriesDelegate,
                            java.util.function.Consumer<java.lang.Boolean> setActiveUpdate,
                            java.util.function.BooleanSupplier getActiveUpdate,
                            java.util.function.Function<K,​V> loadFunction,
                            java.util.function.Supplier<java.util.Map<K,​V>> bulkLoadFunction,
                            java.util.function.BooleanSupplier cacheEnabledDelegate,
                            java.util.function.BiPredicate<K,​V> invalidationCondition)
        Parameters:
        name - Used for MBean
        setValidityDelegate - Used to set cache validity period. See Policy.expireAfterWrite()
        getValidityDelegate - Getter for validity period
        setUpdateIntervalDelegate - Used to set cache update interval. See Policy.refreshAfterWrite()
        getUpdateIntervalDelegate - Getter for update interval
        setMaxEntriesDelegate - Used to set max # entries in cache. See Policy.Eviction.setMaximum(long)
        getMaxEntriesDelegate - Getter for max entries.
        setActiveUpdate - Actively update the cache before expiry
        getActiveUpdate - Getter for active update
        loadFunction - Function to load the cache. Called on get(Object)
        cacheEnabledDelegate - Used to determine if cache is enabled.
        invalidationCondition - Used during active updates to determine if a refreshed value indicates a missing entry in the underlying table. If satisfied, the key will be invalidated.
    • Method Detail

      • shutdownAllAndWait

        public static void shutdownAllAndWait​(long timeout,
                                              java.util.concurrent.TimeUnit unit)
                                       throws java.lang.InterruptedException,
                                              java.util.concurrent.TimeoutException
        Throws:
        java.lang.InterruptedException
        java.util.concurrent.TimeoutException
      • init

        protected void init()
        Do setup for the cache and MBean.
      • unregisterMBean

        protected void unregisterMBean()
      • getObjectName

        protected java.lang.String getObjectName()
      • getAll

        public java.util.Map<K,​V> getAll()
        Retrieve all cached entries. Will call Cache.asMap() which does not trigger "load".
        Returns:
        a map of cached key-value pairs
      • get

        public V get​(K k)
        Retrieve a value from the cache. Will call LoadingCache.get(Object) which will "load" the value if it's not present, thus populating the key.
        Parameters:
        k -
        Returns:
        The current value of K if cached or loaded. See LoadingCache.get(Object) for possible exceptions.
      • invalidate

        public void invalidate()
        Invalidate the entire cache.
        Specified by:
        invalidate in interface AuthCacheMBean
      • invalidate

        public void invalidate​(K k)
        Invalidate a key.
        Parameters:
        k - key to invalidate
      • setValidity

        public void setValidity​(int validityPeriod)
        Time in milliseconds that a value in the cache will expire after.
        Specified by:
        setValidity in interface AuthCacheMBean
        Parameters:
        validityPeriod - in milliseconds
      • setUpdateInterval

        public void setUpdateInterval​(int updateInterval)
        Time in milliseconds after which an entry in the cache should be refreshed (it's load function called again)
        Specified by:
        setUpdateInterval in interface AuthCacheMBean
        Parameters:
        updateInterval - in milliseconds
      • setMaxEntries

        public void setMaxEntries​(int maxEntries)
        Set maximum number of entries in the cache.
        Specified by:
        setMaxEntries in interface AuthCacheMBean
        Parameters:
        maxEntries -
      • initCache

        protected com.github.benmanes.caffeine.cache.LoadingCache<K,​V> initCache​(com.github.benmanes.caffeine.cache.LoadingCache<K,​V> existing)
        (Re-)initialise the underlying cache. Will update validity, max entries, and update interval if any have changed. The underlying LoadingCache will be initiated based on the provided loadFunction. Note: If you need some unhandled cache setting to be set you should extend AuthCache and override this method.
        Parameters:
        existing - If not null will only update cache update validity, max entries, and update interval.
        Returns:
        New LoadingCache if existing was null, otherwise the existing cache
      • shutdown

        public void shutdown()
        Description copied from interface: Shutdownable
        Shutdown once any remaining work has completed (however this is defined for the implementation).
        Specified by:
        shutdown in interface Shutdownable
      • shutdownNow

        public java.lang.Object shutdownNow()
        Description copied from interface: Shutdownable
        Shutdown immediately, possibly interrupting ongoing work, and cancelling work that is queued.
        Specified by:
        shutdownNow in interface Shutdownable
      • awaitTermination

        public boolean awaitTermination​(long timeout,
                                        java.util.concurrent.TimeUnit units)
                                 throws java.lang.InterruptedException
        Description copied from interface: Shutdownable
        Await termination of this object, i.e. the cessation of all current and future work.
        Specified by:
        awaitTermination in interface Shutdownable
        Throws:
        java.lang.InterruptedException
      • warm

        public void warm()