package er.caching;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.meetup.memcached.MemcachedClient;
@SuppressWarnings("hiding")
public class ERCachingMap<String, V extends Object> implements Map<String, V> {
private MemcachedClient _client;
private synchronized MemcachedClient client() {
if (_client == null) {
_client = new MemcachedClient();
_client.setCompressEnable(false);
_client.setCompressThreshold(0);
}
return _client;
}
public boolean containsKey(Object key) {
return client().keyExists(key.toString());
}
public V get(Object key) {
return (V) client().get(key.toString());
}
public boolean isEmpty() {
return false;
}
public V put(String key, V value) {
return put(key, value, 0L);
}
public V put(String key, V value, long timeout) {
V old = null; // get(arg0);
client().set(key.toString(), new Date(System.currentTimeMillis() + timeout));
return old;
}
public V remove(Object key) {
V old = get(key);
client().delete(key.toString());
return old;
}
public void putAll(Map<? extends String, ? extends V> arg0) {
for (Iterator<? extends String> iterator = arg0.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
put(key, arg0.get(key));
}
}
public boolean containsValue(Object arg0) {
throw new UnsupportedOperationException("Not supported in memcached");
}
public Set<String> keySet() {
throw new UnsupportedOperationException("Not supported in memcached");
}
public void clear() {
throw new UnsupportedOperationException("Not supported in memcached");
}
public Set<Entry<String, V>> entrySet() {
throw new UnsupportedOperationException("Not supported in memcached");
}
public int size() {
throw new UnsupportedOperationException("Not supported in memcached");
}
public Collection<V> values() {
throw new UnsupportedOperationException("Not supported in memcached");
}
}