java.lang.Object
io.fluxcapacitor.javaclient.persisting.caching.NamedCache
All Implemented Interfaces:
Cache

public class NamedCache extends Object implements Cache
A Cache implementation that wraps a delegate cache and applies a transformation to each key (ID) before delegating operations to the underlying cache.

This allows multiple cache users to safely share the same underlying Cache instance without risk of key collisions. Typical use cases include namespacing by type, context, or scope.

  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Removes all entries from the cache.
    void
    Closes the cache and releases all associated resources.
    <T> T
    compute(Object id, BiFunction<? super Object,? super T,? extends T> mappingFunction)
    Computes and stores a new value for the given id using the provided function.
    <T> T
    computeIfAbsent(Object id, Function<? super Object,T> mappingFunction)
    If a value is not already associated with the given id, computes and stores one using the given function.
    <T> T
    computeIfPresent(Object id, BiFunction<? super Object,? super T,? extends T> mappingFunction)
    If a value is already associated with the given id, computes a new value using the provided function and replaces the old one.
    boolean
    Checks whether the cache contains an entry for the given id.
    <T> T
    get(Object id)
    Retrieves the value associated with the given id, or null if not found.
    <T> void
    modifyEach(BiFunction<? super Object,? super T,? extends T> modifierFunction)
    Applies the given modifier function to all values currently in the cache.
    put(Object id, @NonNull Object value)
    Puts a value in the cache for the given id, overwriting any existing value.
    putIfAbsent(Object id, @NonNull Object value)
    Associates the specified value with the given id only if no value is currently associated.
    Registers a listener to be notified whenever a cache entry is evicted or removed.
    <T> T
    Removes the entry associated with the given id, if present.
    int
    Returns the number of entries currently stored in the cache.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.fluxcapacitor.javaclient.persisting.caching.Cache

    getOrDefault, isEmpty
  • Constructor Details

    • NamedCache

      public NamedCache()
  • Method Details

    • put

      public Object put(Object id, @NonNull @NonNull Object value)
      Description copied from interface: Cache
      Puts a value in the cache for the given id, overwriting any existing value.
      Specified by:
      put in interface Cache
      Parameters:
      id - the key with which the specified value is to be associated
      value - the value to be associated with the specified key
      Returns:
      the previous value associated with the id, or null if none
    • putIfAbsent

      public Object putIfAbsent(Object id, @NonNull @NonNull Object value)
      Description copied from interface: Cache
      Associates the specified value with the given id only if no value is currently associated.
      Specified by:
      putIfAbsent in interface Cache
      Parameters:
      id - the key to check for presence
      value - the value to associate if absent
      Returns:
      the existing value associated with the key, or null if the new value was successfully put
    • computeIfAbsent

      public <T> T computeIfAbsent(Object id, Function<? super Object,T> mappingFunction)
      Description copied from interface: Cache
      If a value is not already associated with the given id, computes and stores one using the given function.
      Specified by:
      computeIfAbsent in interface Cache
      Type Parameters:
      T - the expected type of the value
      Parameters:
      id - the key to check or compute
      mappingFunction - the function to compute a value if absent
      Returns:
      the current or newly computed value
    • computeIfPresent

      public <T> T computeIfPresent(Object id, BiFunction<? super Object,? super T,? extends T> mappingFunction)
      Description copied from interface: Cache
      If a value is already associated with the given id, computes a new value using the provided function and replaces the old one.
      Specified by:
      computeIfPresent in interface Cache
      Type Parameters:
      T - the expected type of the value
      Parameters:
      id - the key to compute for
      mappingFunction - the function to compute a new value from the current one
      Returns:
      the newly computed value, or null if the mapping function returned null
    • compute

      public <T> T compute(Object id, BiFunction<? super Object,? super T,? extends T> mappingFunction)
      Description copied from interface: Cache
      Computes and stores a new value for the given id using the provided function.

      The previous value (if any) is provided to the function. The result is stored in the cache.

      Specified by:
      compute in interface Cache
      Type Parameters:
      T - the expected type of the value
      Parameters:
      id - the key to compute for
      mappingFunction - the function to compute a new value
      Returns:
      the newly computed value, or null if the mapping function returned null
    • modifyEach

      public <T> void modifyEach(BiFunction<? super Object,? super T,? extends T> modifierFunction)
      Description copied from interface: Cache
      Applies the given modifier function to all values currently in the cache.

      This is useful for bulk modifications, e.g. adjusting internal state after a system-wide change.

      Specified by:
      modifyEach in interface Cache
      Type Parameters:
      T - the expected type of the values
      Parameters:
      modifierFunction - the function to apply to each entry
    • get

      public <T> T get(Object id)
      Description copied from interface: Cache
      Retrieves the value associated with the given id, or null if not found.
      Specified by:
      get in interface Cache
      Type Parameters:
      T - the expected type of the value
      Parameters:
      id - the key to retrieve
      Returns:
      the cached value, or null if absent
    • containsKey

      public boolean containsKey(Object id)
      Description copied from interface: Cache
      Checks whether the cache contains an entry for the given id.
      Specified by:
      containsKey in interface Cache
      Parameters:
      id - the key to check
      Returns:
      true if the key exists in the cache, false otherwise
    • remove

      public <T> T remove(Object id)
      Description copied from interface: Cache
      Removes the entry associated with the given id, if present.
      Specified by:
      remove in interface Cache
      Type Parameters:
      T - the expected type of the removed value
      Parameters:
      id - the key to remove
      Returns:
      the removed value, or null if no value was associated with the key
    • clear

      public void clear()
      Description copied from interface: Cache
      Removes all entries from the cache.
      Specified by:
      clear in interface Cache
    • size

      public int size()
      Description copied from interface: Cache
      Returns the number of entries currently stored in the cache.
      Specified by:
      size in interface Cache
      Returns:
      the number of entries
    • registerEvictionListener

      public Registration registerEvictionListener(Consumer<CacheEviction> listener)
      Description copied from interface: Cache
      Registers a listener to be notified whenever a cache entry is evicted or removed.
      Specified by:
      registerEvictionListener in interface Cache
      Parameters:
      listener - a function that consumes CacheEvictions
      Returns:
      a registration that can be used to cancel the listener
    • close

      public void close()
      Description copied from interface: Cache
      Closes the cache and releases all associated resources.
      Specified by:
      close in interface Cache