package com.mossle.simulator.jcache; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.cache.Cache; import javax.cache.CacheManager; import javax.cache.configuration.CacheEntryListenerConfiguration; import javax.cache.configuration.Configuration; import javax.cache.integration.CompletionListener; import javax.cache.processor.EntryProcessor; import javax.cache.processor.EntryProcessorException; import javax.cache.processor.EntryProcessorResult; public class DefaultCache<K, V> implements Cache<K, V> { private String name; private CacheManager cacheManager; private Map<K, V> data = new HashMap<K, V>(); public DefaultCache(String name, CacheManager cacheManager) { this.name = name; this.cacheManager = cacheManager; } public V get(K key) { return data.get(key); } public Map<K, V> getAll(Set<? extends K> keys) { Map<K, V> map = new HashMap<K, V>(); for (K key : keys) { map.put(key, data.get(key)); } return map; } public boolean containsKey(K key) { return data.containsKey(key); } public void loadAll(Set<? extends K> keys, boolean replaceExistingValues, CompletionListener completionListener) { } public void put(K key, V value) { data.put(key, value); } public V getAndPut(K key, V value) { V oldValue = data.get(key); data.put(key, value); return oldValue; } public void putAll(Map<? extends K, ? extends V> map) { data.putAll(map); } public boolean putIfAbsent(K key, V value) { if (this.containsKey(key)) { data.put(key, value); } return false; } public boolean remove(K key) { if (data.containsKey(key)) { data.remove(key); return true; } return false; } public boolean remove(K key, V oldValue) { if (!data.containsKey(key)) { return false; } V value = data.get(key); if (value == null) { return false; } if (value != oldValue) { return false; } data.remove(key); return true; } public V getAndRemove(K key) { return data.remove(key); } public boolean replace(K key, V oldValue, V newValue) { if (this.remove(key, oldValue)) { data.put(key, newValue); return true; } return false; } public boolean replace(K key, V value) { if (this.remove(key)) { data.put(key, value); return true; } return false; } public V getAndReplace(K key, V value) { V oldValue = this.getAndRemove(key); if (oldValue == null) { return null; } data.put(key, value); return oldValue; } public void removeAll(Set<? extends K> keys) { for (K key : keys) { data.remove(key); } } public void removeAll() { data.clear(); } public void clear() { data.clear(); } public <C extends Configuration<K, V>> C getConfiguration(Class<C> clazz) { return null; } public <T> T invoke(K key, EntryProcessor<K, V, T> entryProcessor, Object... arguments) throws EntryProcessorException { return null; } public <T> Map<K, EntryProcessorResult<T>> invokeAll(Set<? extends K> keys, EntryProcessor<K, V, T> entryProcessor, Object... arguments) { return null; } public String getName() { return name; } public CacheManager getCacheManager() { return cacheManager; } public void close() { } public boolean isClosed() { return false; } public <T> T unwrap(Class<T> clazz) { return null; } public void registerCacheEntryListener( CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration) { } public void deregisterCacheEntryListener( CacheEntryListenerConfiguration<K, V> cacheEntryListenerConfiguration) { } public Iterator<Cache.Entry<K, V>> iterator() { return null; } }