Interface ExpiryPolicy<K,​V>

  • Type Parameters:
    K - the key type for the cache
    V - the value type for the cache

    public interface ExpiryPolicy<K,​V>
    A policy object that governs expiration for mappings in a Cache.

    Previous values are not accessible directly but are rather available through a value Supplier to indicate that access can require computation (such as deserialization).

    Negative durations are not supported, expiry policy implementation returning such a duration will result in immediate expiry, as if the duration was zero.

    NOTE: Some cache configurations (eg. caches with eventual consistency) may use local (ie. non-consistent) state to decide whether to call getExpiryForUpdate(Object, Supplier, Object) vs. getExpiryForCreation(Object, Object). For these cache configurations it is advised to return the same value for both of these methods

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.time.Duration INFINITE
      A duration that represents an infinite time.
      static ExpiryPolicy<java.lang.Object,​java.lang.Object> NO_EXPIRY
      An ExpiryPolicy that represents a no expiration policy
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      java.time.Duration getExpiryForAccess​(K key, java.util.function.Supplier<? extends V> value)
      Returns the expiration duration (relative to the current time) when an existing entry is accessed from a Cache.
      java.time.Duration getExpiryForCreation​(K key, V value)
      Returns the lifetime of an entry when it is initially added to a Cache.
      java.time.Duration getExpiryForUpdate​(K key, java.util.function.Supplier<? extends V> oldValue, V newValue)
      Returns the expiration duration (relative to the current time) when an existing entry is updated in a Cache.
    • Field Detail

      • INFINITE

        static final java.time.Duration INFINITE
        A duration that represents an infinite time.
      • NO_EXPIRY

        static final ExpiryPolicy<java.lang.Object,​java.lang.Object> NO_EXPIRY
        An ExpiryPolicy that represents a no expiration policy
    • Method Detail

      • getExpiryForCreation

        java.time.Duration getExpiryForCreation​(K key,
                                                V value)
        Returns the lifetime of an entry when it is initially added to a Cache.

        This method must not return null.

        Exceptions thrown from this method will be swallowed and result in the expiry duration being ZERO.

        Parameters:
        key - the key of the newly added entry
        value - the value of the newly added entry
        Returns:
        a non-null Duration
      • getExpiryForAccess

        java.time.Duration getExpiryForAccess​(K key,
                                              java.util.function.Supplier<? extends V> value)
        Returns the expiration duration (relative to the current time) when an existing entry is accessed from a Cache.

        Returning null indicates that the expiration time remains unchanged.

        Exceptions thrown from this method will be swallowed and result in the expiry duration being ZERO.

        Parameters:
        key - the key of the accessed entry
        value - a value supplier for the accessed entry
        Returns:
        an expiration Duration, null means unchanged
      • getExpiryForUpdate

        java.time.Duration getExpiryForUpdate​(K key,
                                              java.util.function.Supplier<? extends V> oldValue,
                                              V newValue)
        Returns the expiration duration (relative to the current time) when an existing entry is updated in a Cache.

        Returning null indicates that the expiration time remains unchanged.

        Exceptions thrown from this method will be swallowed and result in the expiry duration being ZERO.

        Parameters:
        key - the key of the updated entry
        oldValue - a value supplier for the previous value of the entry
        newValue - the new value of the entry
        Returns:
        an expiration Duration, null means unchanged