package org.radargun.service; import com.hazelcast.core.IMap; import org.radargun.logging.Log; import org.radargun.logging.LogFactory; import org.radargun.traits.BasicOperations; import org.radargun.traits.ConditionalOperations; /** * @author Radim Vansa <rvansa@redhat.com> */ public class HazelcastOperations implements BasicOperations, ConditionalOperations { protected static final Log log = LogFactory.getLog(HazelcastOperations.class); protected static final boolean trace = log.isTraceEnabled(); protected HazelcastService service = null; public HazelcastOperations() { } public HazelcastOperations(HazelcastService service) { this.service = service; } @Override public <K, V> HazelcastCache<K, V> getCache(String cacheName) { return new Cache<K, V>(service.<K, V>getMap(cacheName)); } protected interface HazelcastCache<K, V> extends BasicOperations.Cache<K, V>, ConditionalOperations.Cache<K, V> {} protected static class Cache<K, V> implements HazelcastCache<K, V> { protected final IMap<K, V> map; public Cache(IMap<K, V> map) { this.map = map; } @Override public V get(K key) { return map.get(key); } @Override public boolean containsKey(K key) { return map.containsKey(key); } @Override public void put(K key, V value) { map.put(key, value); } @Override public V getAndPut(K key, V value) { return map.put(key, value); } @Override public boolean remove(K key) { return map.remove(key) != null; } @Override public V getAndRemove(K key) { return map.remove(key); } @Override public boolean replace(K key, V value) { return map.replace(key, value) != null; } @Override public V getAndReplace(K key, V value) { return map.replace(key, value); } @Override public void clear() { map.clear(); } @Override public boolean putIfAbsent(K key, V value) { return map.putIfAbsent(key, value) == null; } @Override public boolean remove(K key, V oldValue) { return map.remove(key, oldValue); } @Override public boolean replace(K key, V oldValue, V newValue) { return map.replace(key, oldValue, newValue); } } }