jdbm.helper

## Class MRU<K,V>

- java.lang.Object
- - 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

Constructors
Constructor and Description
`MRU(int max)` Construct an MRU with a given maximum number of objects.

### Method Summary

Methods
`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`