All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semanticweb.owlapi.util.WeakCache Maven / Gradle / Ivy

The newest version!
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  */
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