
org.semanticweb.owlapi.util.WeakCache Maven / Gradle / Ivy
package org.semanticweb.owlapi.util;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.util.Map;
/**
* A weakly linked cache - elements in the cache can be garbage collected.
*
* @param
* cached type
*/
public class WeakCache implements Serializable {
private static final long serialVersionUID = 30406L;
private transient Map> prefixCache = CollectionFactory
.createSyncWeakMap();
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException {
in.defaultReadObject();
prefixCache = CollectionFactory.createSyncWeakMap();
}
/**
* @param s
* the value to cache
* @return the cached value
*/
public K cache(K s) {
WeakReference w = prefixCache.get(s);
if (w != null) {
K toReturn = w.get();
if (toReturn != null) {
return toReturn;
}
}
// need to add the new key and return it
prefixCache.put(s, new WeakReference(s));
return s;
}
/**
* @param k
* the key to check
* @return true if the cache contains k as a key; note that, due to the
* nature of this cache, by the time the method returns the key may
* no longer be in the map.
*/
public boolean contains(K k) {
WeakReference w = prefixCache.get(k);
if (w != null) {
K toReturn = w.get();
if (toReturn != null) {
return true;
}
}
return false;
}
/** empty the cache. */
public void clear() {
prefixCache.clear();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy