org.apache.batik.util
Class SoftReferenceCache
public
class
SoftReferenceCache
extends Object
This class manages a cache of soft references to objects that may
take some time to load or create, such as images loaded from the
network.
Adding an object is two fold:
-
First you add the key, this lets the cache know that someone is
working on that key.
-
Then when the completed object is ready you put it into the cache.
If someone requests a key after it has been added but before it has
been put they will be blocked until the put.
Method Summary |
protected void | clearImpl(Object key)
Clear the entry for key.
|
void | flush()
Let people flush the cache (remove any cached data). |
protected boolean | isDoneImpl(Object key)
Check if request(key) will return immediately with the
Object. |
protected boolean | isPresentImpl(Object key)
Check if request(key) will return with an Object
(not putting you on the hook for it). |
protected void | putImpl(Object key, Object object)
Associate object with key. |
protected Object | requestImpl(Object key)
If this returns null then you are now 'on the hook'.
to put the Object associated with key into the
cache. |
protected Map map
The map of cached objects.
protected SoftReferenceCache()
Let people create their own caches.
protected final void clearImpl(Object key)
Clear the entry for key.
This is the easiest way to 'get off the hook'.
if you didn't indend to get on it.
public void flush()
Let people flush the cache (remove any cached data). Pending
requests will be treated as though clear() was called on the
key, this should cause them to go and re-read the data.
protected final boolean isDoneImpl(Object key)
Check if request(key) will return immediately with the
Object. Note that it is possible that this will return
true but between this call and the call to request the
soft-reference will be cleared.
protected final boolean isPresentImpl(Object key)
Check if request(key) will return with an Object
(not putting you on the hook for it). Note that it is possible
that this will return true but between this call and the call
to request the soft-reference will be cleared. So it
is still possible for request to return NULL, just much less
likely (you can always call 'clear' in that case).
protected final void putImpl(Object key, Object object)
Associate object with key. 'object' is only referenced through
a soft reference so don't rely on the cache to keep it
around. If the map no longer contains our url it was
probably cleared or flushed since we were put on the hook
for it, so in that case we will do nothing.
protected final Object requestImpl(Object key)
If this returns null then you are now 'on the hook'.
to put the Object associated with key into the
cache.
Copyright B) 2007 Apache Software Foundation. All Rights Reserved.