Class TouchyJCacheAdapter<K,​V>

  • All Implemented Interfaces:
    Closeable, AutoCloseable, Iterable<javax.cache.Cache.Entry<K,​V>>, javax.cache.Cache<K,​V>

    public class TouchyJCacheAdapter<K,​V>
    extends Object
    implements javax.cache.Cache<K,​V>
    Adapter to add required semantics for JSR107 with a custom expiry policy. The JCacheAdapter is wrapped again and the expiry policy is called when needed.

    There are multiple requirements which makes cache operations with expiry policy very inefficient. These are:

    • The TCK checks that the access policy is called and adjusted on each cache request
    • The TCK has some tests that use a zero duration on expiry, so an entry is expired after the first access
    • The TCK does not allow that the expiry policy methods are called in the configuration phase
    • In case the expiry policy methods return null, this means, that the expiry is not changed

    Author:
    Jens Wilke
    • Constructor Detail

      • TouchyJCacheAdapter

        public TouchyJCacheAdapter​(JCacheAdapter<K,​V> cache,
                                   javax.cache.expiry.ExpiryPolicy expiryPolicy)
    • Method Detail

      • 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> cfg)
        Specified by:
        registerCacheEntryListener in interface javax.cache.Cache<K,​V>
      • deregisterCacheEntryListener

        public void deregisterCacheEntryListener​(javax.cache.configuration.CacheEntryListenerConfiguration<K,​V> cfg)
        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>