java.lang.Object
com.broadleafcommerce.common.extension.cache.ehcache.EhcacheProxy
All Implemented Interfaces:
Closeable, AutoCloseable, Iterable<javax.cache.Cache.Entry<Object,Object>>, javax.cache.Cache<Object,Object>

public class EhcacheProxy extends Object implements javax.cache.Cache<Object,Object>
A proxy implementation of the Cache interface that wraps a delegate cache and provides additional behavior for deep cloning of objects.

This class is designed to ensure that objects entering or exiting the cache go through a deep cloning process using the provided Cloner implementation. This prevents shared references and unintended side effects caused by mutable objects.

All cache operations are delegated to the underlying cache while ensuring cloning is performed where necessary.

  • Constructor Details

    • EhcacheProxy

      public EhcacheProxy(javax.cache.Cache<Object,Object> delegate, Cloner cloner)
  • Method Details

    • get

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      public Iterator<javax.cache.Cache.Entry<Object,Object>> iterator()
      Specified by:
      iterator in interface javax.cache.Cache<Object,Object>
      Specified by:
      iterator in interface Iterable<javax.cache.Cache.Entry<Object,Object>>