Class SimpleSoftCache<K,V>

java.lang.Object
org.apache.camel.support.cache.SimpleSoftCache<K,V>
Type Parameters:
K - type of the key
V - type of the value
All Implemented Interfaces:
Map<K,V>

public class SimpleSoftCache<K,V> extends Object implements Map<K,V>
SimpleSoftCache is a simple implementation of a cache where values are soft references which allows the Garbage Collector to clear the referents in response of a memory demand to potentially prevent OutOfMemoryError. The entries where the referent is missing are removed lazily when they are accessed directly or indirectly through the Map API. The implementation doesn't accept null values. Generally speaking, the parameters of all the public methods must have a value otherwise a NullPointerException is thrown.
See Also:
  • Constructor Details

    • SimpleSoftCache

      public SimpleSoftCache(Map<K,SoftReference<V>> delegate)
      Constructs a SimpleSoftCache with the given underlying cache.
      Parameters:
      delegate - the underlying cache to which the modifications are applied to. Be aware that the implementation of the provided map must accept concurrent modifications to allow lazy evictions of empty references.
  • Method Details

    • size

      public int size()
      Specified by:
      size in interface Map<K,V>
      Returns:
      the size of the cache without considering if the soft references still have a referent set for the sake of simplicity and efficiency.
    • isEmpty

      public boolean isEmpty()
      Returns true if this map contains no key-value mappings without considering if the soft references still have a referent set for the sake of simplicity and efficiency.
      Specified by:
      isEmpty in interface Map<K,V>
    • containsKey

      public boolean containsKey(Object key)
      Specified by:
      containsKey in interface Map<K,V>
    • containsValue

      public boolean containsValue(Object value)
      Specified by:
      containsValue in interface Map<K,V>
    • get

      public V get(Object key)
      Specified by:
      get in interface Map<K,V>
    • put

      public V put(K key, V value)
      Specified by:
      put in interface Map<K,V>
    • remove

      public V remove(Object key)
      Specified by:
      remove in interface Map<K,V>
    • putAll

      public void putAll(Map<? extends K,? extends V> m)
      Specified by:
      putAll in interface Map<K,V>
    • clear

      public void clear()
      Specified by:
      clear in interface Map<K,V>
    • keySet

      public Set<K> keySet()
      Specified by:
      keySet in interface Map<K,V>
    • values

      public Collection<V> values()
      Specified by:
      values in interface Map<K,V>
    • entrySet

      public Set<Map.Entry<K,V>> entrySet()
      Specified by:
      entrySet in interface Map<K,V>
    • forEach

      public void forEach(BiConsumer<? super K,? super V> action)
      Specified by:
      forEach in interface Map<K,V>
    • replaceAll

      public void replaceAll(BiFunction<? super K,? super V,? extends V> function)
      Specified by:
      replaceAll in interface Map<K,V>
    • putIfAbsent

      public V putIfAbsent(K key, V value)
      Specified by:
      putIfAbsent in interface Map<K,V>
    • remove

      public boolean remove(Object key, Object value)
      Specified by:
      remove in interface Map<K,V>
    • replace

      public boolean replace(K key, V oldValue, V newValue)
      Specified by:
      replace in interface Map<K,V>
    • replace

      public V replace(K key, V value)
      Specified by:
      replace in interface Map<K,V>
    • computeIfAbsent

      public V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
      Specified by:
      computeIfAbsent in interface Map<K,V>
    • computeIfPresent

      public V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
      Specified by:
      computeIfPresent in interface Map<K,V>
    • compute

      public V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
      Specified by:
      compute in interface Map<K,V>
    • merge

      public V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
      Specified by:
      merge in interface Map<K,V>