package org.openstack.atlas.api.caching; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Ehcache; import net.sf.ehcache.Element; import java.io.Serializable; public class CacheRepositoryImpl<K, V> implements CacheRepository<K, V> { private final String cacheName; private CacheManager cacheManager; public CacheRepositoryImpl(String cacheName, CacheManagerFactory cacheManagerFactory) { this.cacheName = cacheName; this.cacheManager = CacheManagerFactory.get(); } @Override public V get(final K key) { Element element = getCache().get(key); if (element != null) { return (V) element.getValue(); } return null; } @Override public <T extends Serializable> void put(final K key, final V value, long timeToLiveSeconds) { getCache().put(new Element(key, value, timeToLiveSeconds)); } @Override public void clear(K key) { getCache().remove(key); } public Ehcache getCache() { return cacheManager.getEhcache(cacheName); } }