2011-06-21 19:24:04 -04:00
|
|
|
package org.moparscape.msc.gs.util;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import org.apache.commons.collections.map.LRUMap;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A basic cache backed by a {@link LRUMap}.
|
|
|
|
*
|
|
|
|
* @author CodeForFame
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public class Cache<K, V> {
|
2011-07-21 19:12:19 -04:00
|
|
|
|
|
|
|
private Map<K, V> cache;
|
2011-06-25 01:44:53 -04:00
|
|
|
|
2011-06-21 19:24:04 -04:00
|
|
|
public Cache() {
|
|
|
|
this(100);
|
|
|
|
}
|
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
@SuppressWarnings("unchecked")
|
2011-07-21 19:12:19 -04:00
|
|
|
public Cache(int size) {
|
|
|
|
cache = new LRUMap(size);
|
2011-06-21 19:24:04 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
public V get(K key) {
|
|
|
|
return cache.get(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
public V put(K key, V value) {
|
|
|
|
return cache.put(key, value);
|
|
|
|
}
|
2011-07-21 19:12:19 -04:00
|
|
|
|
|
|
|
public V remove(K key) {
|
|
|
|
return cache.remove(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
public V remove(K key, V value) {
|
|
|
|
V v = cache.get(key);
|
|
|
|
if(v.equals(value)) {
|
|
|
|
return cache.remove(value);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
2011-06-21 19:24:04 -04:00
|
|
|
|
2011-07-21 19:12:19 -04:00
|
|
|
}
|