Class ReverseLookupComputingCacheEntryListener<K,V>

java.lang.Object
org.jivesoftware.util.cache.ReverseLookupComputingCacheEntryListener<K,V>
All Implemented Interfaces:
ClusteredCacheEntryListener<K,V>

public class ReverseLookupComputingCacheEntryListener<K,V> extends Object implements ClusteredCacheEntryListener<K,V>
Cache entry listener implementation that maintains a reverse lookup map for the cache that is being observed, which is used to identify what cluster nodes are the logical owner of a particular cache entry. This information is typically useful in scenarios where a cluster node drops out of the cluster requiring the remaining nodes to have to inform their connected entities of what resources have become unavailable. This implementation uses a function (to be provided in the constructor) to calculate what cluster nodes 'own' a corresponding entry. The function operates on the value of the cache. It is therefor required that listeners of this type are registered using a configuration that includes entry values to be included in the event invocation. Null values are not supported.
  • Constructor Details

    • ReverseLookupComputingCacheEntryListener

      public ReverseLookupComputingCacheEntryListener(@Nonnull Map<NodeID,Set<K>> reverseCacheRepresentation, @Nonnull Function<V,Set<NodeID>> ownageDeducer)
  • Method Details

    • entryAdded

      public void entryAdded(@Nonnull K key, @Nullable V value, @Nonnull NodeID initiator)
      Description copied from interface: ClusteredCacheEntryListener
      An entry was added to the cache.
      Specified by:
      entryAdded in interface ClusteredCacheEntryListener<K,V>
      Parameters:
      key - The key of the entry that was added.
      value - The (optional) value of the entry that was added.
      initiator - identifier of the node on which the cache modification occurred.
    • entryRemoved

      public void entryRemoved(@Nonnull K key, @Nullable V oldValue, @Nonnull NodeID initiator)
      Description copied from interface: ClusteredCacheEntryListener
      An entry was removed from the cache.
      Specified by:
      entryRemoved in interface ClusteredCacheEntryListener<K,V>
      Parameters:
      key - The key of the entry that was removed.
      oldValue - The (optional) value of the entry that was removed.
      initiator - identifier of the node on which the cache modification occurred.
    • entryUpdated

      public void entryUpdated(@Nonnull K key, @Nullable V oldValue, @Nullable V newValue, @Nonnull NodeID nodeID)
      Description copied from interface: ClusteredCacheEntryListener
      An entry was updated in the cache.
      Specified by:
      entryUpdated in interface ClusteredCacheEntryListener<K,V>
      Parameters:
      key - The key of the entry that was changed.
      oldValue - The (optional) value of the entry prior to the update.
      newValue - The (optional) value of the entry after to the update.
      nodeID - identifier of the node on which the cache modification occurred.
    • entryEvicted

      public void entryEvicted(@Nonnull K key, @Nullable V oldValue, @Nonnull NodeID nodeID)
      Description copied from interface: ClusteredCacheEntryListener
      An entry was evicted from the cache.
      Specified by:
      entryEvicted in interface ClusteredCacheEntryListener<K,V>
      Parameters:
      key - The key of the entry that was evicted.
      oldValue - The (optional) value of the entry that was removed.
      nodeID - identifier of the node on which the cache modification occurred.
    • mapCleared

      public void mapCleared(@Nonnull NodeID nodeID)
      Description copied from interface: ClusteredCacheEntryListener
      The cache was cleared.
      Specified by:
      mapCleared in interface ClusteredCacheEntryListener<K,V>
      Parameters:
      nodeID - identifier of the node on which the cache modification occurred.
    • mapEvicted

      public void mapEvicted(@Nonnull NodeID nodeID)
      Description copied from interface: ClusteredCacheEntryListener
      The cache was evicted.
      Specified by:
      mapEvicted in interface ClusteredCacheEntryListener<K,V>
      Parameters:
      nodeID - identifier of the node on which the cache modification occurred.