Class SimpleCache<K,V>

java.lang.Object
net.solarnetwork.central.support.SimpleCache<K,V>
All Implemented Interfaces:
Closeable, AutoCloseable, Iterable<javax.cache.Cache.Entry<K,V>>, javax.cache.Cache<K,V>

public class SimpleCache<K,V> extends Object implements javax.cache.Cache<K,V>
A very loose and basic implementation of Cache, using a ConcurrentMap to store the data.

This class does not support any of the cache listener methods, configuration, or the cache manager. Entries are not automatically released from memory, but will not be returned once expired. The iterator() method will release expired entries during iteration, so can be used to free memory as needed.

  • Field Details

    • DEFAULT_TTL

      public static final long DEFAULT_TTL
      See Also:
    • DEFAULT_TIME_UNIT

      public static final TimeUnit DEFAULT_TIME_UNIT
  • Constructor Details

    • SimpleCache

      public SimpleCache(String name)
      Constructor.

      A ConcurrentHashMap will be used.

      Parameters:
      name - the name to use
    • SimpleCache

      public SimpleCache(String name, ConcurrentMap<K,? extends net.solarnetwork.util.CachedResult<V>> data)
      Constructor.
      Parameters:
      data - the map to use to store the cached data in
      Throws:
      IllegalArgumentException - if any argument is null
  • Method Details

    • get

      public V get(K key)
      Specified by:
      get in interface javax.cache.Cache<K,V>
    • getAll

      public Map<K,V> getAll(Set<? extends K> keys)
      Specified by:
      getAll in interface javax.cache.Cache<K,V>
    • containsKey

      public boolean containsKey(K key)
      Specified by:
      containsKey in interface javax.cache.Cache<K,V>
    • loadAll

      public void loadAll(Set<? extends K> keys, boolean replaceExistingValues, javax.cache.integration.CompletionListener completionListener)
      Specified by:
      loadAll in interface javax.cache.Cache<K,V>
    • put

      public void put(K key, V value)
      Specified by:
      put in interface javax.cache.Cache<K,V>
    • getAndPut

      public V getAndPut(K key, V value)
      Specified by:
      getAndPut in interface javax.cache.Cache<K,V>
    • putAll

      public void putAll(Map<? extends K,? extends V> map)
      Specified by:
      putAll in interface javax.cache.Cache<K,V>
    • putIfAbsent

      public boolean putIfAbsent(K key, V value)
      Specified by:
      putIfAbsent in interface javax.cache.Cache<K,V>
    • remove

      public boolean remove(K key)
      Specified by:
      remove in interface javax.cache.Cache<K,V>
    • remove

      public boolean remove(K key, V oldValue)
      Specified by:
      remove in interface javax.cache.Cache<K,V>
    • getAndRemove

      public V getAndRemove(K key)
      Specified by:
      getAndRemove in interface javax.cache.Cache<K,V>
    • replace

      public boolean replace(K key, V oldValue, V newValue)
      Specified by:
      replace in interface javax.cache.Cache<K,V>
    • replace

      public boolean replace(K key, V value)
      Specified by:
      replace in interface javax.cache.Cache<K,V>
    • getAndReplace

      public V getAndReplace(K key, V value)
      Specified by:
      getAndReplace in interface javax.cache.Cache<K,V>
    • removeAll

      public void removeAll(Set<? extends K> keys)
      Specified by:
      removeAll in interface javax.cache.Cache<K,V>
    • removeAll

      public void removeAll()
      Specified by:
      removeAll in interface javax.cache.Cache<K,V>
    • clear

      public void clear()
      Specified by:
      clear in interface javax.cache.Cache<K,V>
    • getConfiguration

      public <C extends javax.cache.configuration.Configuration<K, V>> C getConfiguration(Class<C> clazz)
      Specified by:
      getConfiguration in interface javax.cache.Cache<K,V>
    • invoke

      public <T> T invoke(K key, javax.cache.processor.EntryProcessor<K,V,T> entryProcessor, Object... arguments) throws javax.cache.processor.EntryProcessorException
      Specified by:
      invoke in interface javax.cache.Cache<K,V>
      Throws:
      javax.cache.processor.EntryProcessorException
    • invokeAll

      public <T> Map<K,javax.cache.processor.EntryProcessorResult<T>> invokeAll(Set<? extends K> keys, javax.cache.processor.EntryProcessor<K,V,T> entryProcessor, Object... arguments)
      Specified by:
      invokeAll in interface javax.cache.Cache<K,V>
    • getName

      public String getName()
      Specified by:
      getName in interface javax.cache.Cache<K,V>
    • getCacheManager

      public javax.cache.CacheManager getCacheManager()
      Specified by:
      getCacheManager in interface javax.cache.Cache<K,V>
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface javax.cache.Cache<K,V>
      Specified by:
      close in interface Closeable
    • isClosed

      public boolean isClosed()
      Specified by:
      isClosed in interface javax.cache.Cache<K,V>
    • unwrap

      public <T> T unwrap(Class<T> clazz)
      Specified by:
      unwrap in interface javax.cache.Cache<K,V>
    • registerCacheEntryListener

      public void registerCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration<K,V> cacheEntryListenerConfiguration)
      Specified by:
      registerCacheEntryListener in interface javax.cache.Cache<K,V>
    • deregisterCacheEntryListener

      public void deregisterCacheEntryListener(javax.cache.configuration.CacheEntryListenerConfiguration<K,V> cacheEntryListenerConfiguration)
      Specified by:
      deregisterCacheEntryListener in interface javax.cache.Cache<K,V>
    • iterator

      public Iterator<javax.cache.Cache.Entry<K,V>> iterator()
      Specified by:
      iterator in interface javax.cache.Cache<K,V>
      Specified by:
      iterator in interface Iterable<K>
    • getTtl

      public long getTtl()
      Get the time-to-live.
      Returns:
      the time to live
    • setTtl

      public void setTtl(long ttl)
      Set the time to live.
      Parameters:
      ttl - the time to live to set
    • getTimeUnit

      public TimeUnit getTimeUnit()
      Get the TTL time unit.
      Returns:
      the TTL time unit
    • setTimeUnit

      public void setTimeUnit(TimeUnit timeUnit)
      Set the TTL time unit.
      Parameters:
      timeUnit - the TTL time unit to set