package org.infinispan.spring.provider; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import org.springframework.cache.Cache; /** * <p> * A {@link org.springframework.cache.Cache <code>Cache</code>} implementation that delegates to a * {@link org.infinispan.Cache <code>org.infinispan.Cache</code>} instance supplied at construction * time. * </p> * * @author <a href="mailto:olaf DOT bergner AT gmx DOT de">Olaf Bergner</a> * @author <a href="mailto:marius.bogoevici@gmail.com">Marius Bogoevici</a> * */ public class SpringCache implements Cache { private final CacheDelegate cacheImplementation; /** * @param nativeCache underlying cache */ public SpringCache(final org.infinispan.commons.api.BasicCache<Object, Object> nativeCache) { cacheImplementation = new CacheDelegate(nativeCache); } /** * @see org.springframework.cache.Cache#getName() */ @Override public String getName() { return this.cacheImplementation.getName(); } /** * @see org.springframework.cache.Cache#getNativeCache() */ @Override public org.infinispan.commons.api.BasicCache<?, ?> getNativeCache() { return this.cacheImplementation.getNativeCache(); } /** * @see org.springframework.cache.Cache#get(java.lang.Object) */ @Override public ValueWrapper get(final Object key) { return cacheImplementation.get(key); } @Override public <T> T get(Object key, Class<T> type) { return cacheImplementation.get(key, type); } @Override public <T> T get(Object key, Callable<T> valueLoader) { return cacheImplementation.get(key, valueLoader); } /** * @see org.springframework.cache.Cache#put(java.lang.Object, java.lang.Object) */ @Override public void put(final Object key, final Object value) { this.cacheImplementation.put(key, value); } /** * @see CacheDelegate#put(Object, Object, long, TimeUnit). */ public void put(final Object key, final Object value, long lifespan, TimeUnit unit) { this.cacheImplementation.put(key, value, lifespan, unit); } @Override public ValueWrapper putIfAbsent(Object key, Object value) { return cacheImplementation.putIfAbsent(key, value); } /** * @see org.springframework.cache.Cache#evict(java.lang.Object) */ @Override public void evict(final Object key) { this.cacheImplementation.evict(key); } /** * @see org.springframework.cache.Cache#clear() */ @Override public void clear() { this.cacheImplementation.clear(); } /** * @see java.lang.Object#toString() */ @Override public String toString() { return "InfinispanCache [nativeCache = " + this.cacheImplementation.getNativeCache() + "]"; } }