jdbm.helper
Class MRU<K,V>

java.lang.Object
  extended by jdbm.helper.MRU<K,V>
All Implemented Interfaces:
CachePolicy<K,V>

public class MRU<K,V>
extends Object
implements CachePolicy<K,V>

MRU - Most Recently Used cache policy. Methods are *not* synchronized, so no concurrent access is allowed.

Author:
Alex Boisvert

Constructor Summary
MRU(int max)
          Construct an MRU with a given maximum number of objects.
 
Method Summary
protected  void addEntry(jdbm.helper.CacheEntry entry)
          Add a CacheEntry.
 void addListener(CachePolicyListener listener)
          Add a listener to this cache policy
 Enumeration<V> elements()
          Enumerate elements' values in the cache
 V get(K key)
          Obtain an object in the cache
protected  jdbm.helper.CacheEntry purgeEntry()
          Purge least recently used object from the cache
 void put(K key, V value)
          Place an object in the cache.
 void remove(K key)
          Remove an object from the cache
 void removeAll()
          Remove all objects from the cache
protected  void removeEntry(jdbm.helper.CacheEntry entry)
          Remove a CacheEntry from linked list, and relink the remaining element sin the list.
 void removeListener(CachePolicyListener listener)
          Remove a listener from this cache policy
protected  void touchEntry(jdbm.helper.CacheEntry entry)
          Place entry at the end of linked list -- Most Recently Used
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MRU

public MRU(int max)
Construct an MRU with a given maximum number of objects.

Method Detail

put

public void put(K key,
                V value)
         throws CacheEvictionException
Place an object in the cache.

Specified by:
put in interface CachePolicy<K,V>
Parameters:
key - key for the cached object
value - the cached object
Throws:
CacheEvictionException - propagated if, while evicting objects to make room for new object, an eviction listener encountered this problem.

get

public V get(K key)
Obtain an object in the cache

Specified by:
get in interface CachePolicy<K,V>
Parameters:
key - key the object was cached under
Returns:
the object if it is still in the cache, null otherwise.

remove

public void remove(K key)
Remove an object from the cache

Specified by:
remove in interface CachePolicy<K,V>
Parameters:
key - key the object was stored in the cache under.

removeAll

public void removeAll()
Remove all objects from the cache

Specified by:
removeAll in interface CachePolicy<K,V>

elements

public Enumeration<V> elements()
Enumerate elements' values in the cache

Specified by:
elements in interface CachePolicy<K,V>

addListener

public void addListener(CachePolicyListener listener)
Add a listener to this cache policy

Specified by:
addListener in interface CachePolicy<K,V>
Parameters:
listener - Listener to add to this policy

removeListener

public void removeListener(CachePolicyListener listener)
Remove a listener from this cache policy

Specified by:
removeListener in interface CachePolicy<K,V>
Parameters:
listener - Listener to remove from this policy

addEntry

protected void addEntry(jdbm.helper.CacheEntry entry)
Add a CacheEntry. Entry goes at the end of the list.


removeEntry

protected void removeEntry(jdbm.helper.CacheEntry entry)
Remove a CacheEntry from linked list, and relink the remaining element sin the list.


touchEntry

protected void touchEntry(jdbm.helper.CacheEntry entry)
Place entry at the end of linked list -- Most Recently Used


purgeEntry

protected jdbm.helper.CacheEntry purgeEntry()
                                     throws CacheEvictionException
Purge least recently used object from the cache

Returns:
recyclable CacheEntry
Throws:
CacheEvictionException


Copyright © 2003-2012 The Apache Software Foundation. All Rights Reserved.