## org.jboss.util
Class LRUCachePolicy

    java.lang.Object
      |
      +--org.jboss.util.LRUCachePolicy

All Implemented Interfaces:
  CachePolicy, Service

Direct Known Subclasses:
  LRUEnterpriseContextCachePolicy

public class LRUCachePolicy
extends java.lang.Object
implements CachePolicy

Implementation of a Least Recently Used cache policy.

Version:
  $Revision: 1.8.6.2 $
Author:
  Simone Bordet (simone.bordet@compaq.com)

Inner Class Summary
`class` `LRUCachePolicy.LRUCacheEntry` Double linked cell used as entry in the cache list.
`class` `LRUCachePolicy.LRUList` Double queued list used to store cache entries.

Field Summary
`protected LRUCachePolicy.LRUList` `m_list` The linked list used to implement the LRU algorithm
`protected java.util.HashMap` `m_map` The map holding the cached objects
`protected int` `m_maxCapacity` The maximum capacity of this cache
`protected int` `m_minCapacity` The minimum capacity of this cache

Constructor Summary
`LRUCachePolicy()` Creates a LRU cache policy object with zero cache capacity.
`LRUCachePolicy(int min, int max)` Creates a LRU cache policy object with the specified minimum and maximum capacity.

Method Summary
`protected void` `ageOut(LRUCachePolicy.LRUCacheEntry entry)` Callback method called when the cache algorithm ages out of the cache the given entry.
`protected void` `cacheMiss()` Callback method called when a cache miss happens.
`protected LRUCachePolicy.LRUCacheEntry` `createCacheEntry(java.lang.Object key, java.lang.Object value)` Factory method for cache entries
`protected LRUCachePolicy.LRUList` `createList()` Factory method for the linked list used by this cache implementation.
`void` `destroy()` Destroys the cache that is now unusable.
`void` `flush()` Flushes the cached objects from the cache.
`java.lang.Object` `get(java.lang.Object key)` Returns the object paired with the specified key if it's present in the cache, otherwise must return null.
`void` `init()` Initializes the cache, creating all required objects and initializing their values.
`void` `insert(java.lang.Object key, java.lang.Object o)` Inserts the specified object into the cache following the implemented policy.
`java.lang.Object` `peek(java.lang.Object key)` Returns the object paired with the specified key if it's present in the cache, otherwise must return null.
`void` `remove(java.lang.Object key)` Remove the cached object paired with the specified key.
`void` `start()` Starts this cache that is now ready to be used.
`void` `stop()` Stops this cache thus `flush()`ing all cached objects.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### m_map

    protected java.util.HashMap m_map

  The map holding the cached objects

### m_list

    protected LRUCachePolicy.LRUList m_list

  The linked list used to implement the LRU algorithm

### m_maxCapacity

    protected int m_maxCapacity

  The maximum capacity of this cache

### m_minCapacity

    protected int m_minCapacity

  The minimum capacity of this cache

Constructor Detail

### LRUCachePolicy

    public LRUCachePolicy()

  Creates a LRU cache policy object with zero cache capacity.
  See Also:
    `init()`

### LRUCachePolicy

    public LRUCachePolicy(int min,
                          int max)

  Creates a LRU cache policy object with the specified minimum and maximum capacity.
  See Also:
    `init()`

Method Detail

### init

    public void init()
              throws java.lang.Exception

  Initializes the cache, creating all required objects and initializing their values.
  Specified by:
    `init` in interface `Service`
  See Also:
    `start()`, `destroy()`

### start

    public void start()
               throws java.lang.Exception

  Starts this cache that is now ready to be used.
  Specified by:
    `start` in interface `Service`
  See Also:
    `init()`, `stop()`

### stop

    public void stop()

  Stops this cache thus `flush()`ing all cached objects.
  After this method is called, a call to `start()` will restart the cache.
  Specified by:
    `stop` in interface `Service`
  See Also:
    `start()`, `destroy()`

### destroy

    public void destroy()

  Destroys the cache that is now unusable.
  To have it working again it must be re-`init()`ialized and re-`start()`ed.
  Specified by:
    `destroy` in interface `Service`
  See Also:
    `init()`

### get

    public java.lang.Object get(java.lang.Object key)

  Description copied from interface: `CachePolicy`
  Returns the object paired with the specified key if it's present in the cache, otherwise must return null.
  Implementations of this method must have complexity of order O(1). Differently from `CachePolicy.peek(java.lang.Object)` this method not only return whether the object is present in the cache or not, but also applies the implemented policy that will "refresh" the cached object in the cache, because this cached object was really requested.
  Specified by:
    `get` in interface `CachePolicy`
  Following copied from interface: `org.jboss.util.CachePolicy`
  Parameters:
    `key` - the key paired with the object
  See Also:
    `CachePolicy.peek(java.lang.Object)`

### peek

    public java.lang.Object peek(java.lang.Object key)

  Description copied from interface: `CachePolicy`
  Returns the object paired with the specified key if it's present in the cache, otherwise must return null.
  Implementations of this method must have complexity of order O(1). This method should not apply the implemented caching policy to the object paired with the given key, so that a client can query if an object is cached without "refresh" its cache status. Real requests for the object must be done using `CachePolicy.get(java.lang.Object)`.
  Specified by:
    `peek` in interface `CachePolicy`
  Following copied from interface: `org.jboss.util.CachePolicy`
  Parameters:
    `key` - the key paired with the object
  See Also:
    `CachePolicy.get(java.lang.Object)`

### insert

    public void insert(java.lang.Object key,
                       java.lang.Object o)

  Description copied from interface: `CachePolicy`
  Inserts the specified object into the cache following the implemented policy.
  Implementations of this method must have complexity of order O(1).
  Specified by:
    `insert` in interface `CachePolicy`
  Following copied from interface: `org.jboss.util.CachePolicy`
  Parameters:
    `key` - the key paired with the object
    `object` - the object to cache
  See Also:
    `CachePolicy.remove(java.lang.Object)`

### remove

    public void remove(java.lang.Object key)

  Description copied from interface: `CachePolicy`
  Remove the cached object paired with the specified key.
  Implementations of this method must have complexity of order O(1).
  Specified by:
    `remove` in interface `CachePolicy`
  Following copied from interface: `org.jboss.util.CachePolicy`
  Parameters:
    `key` - the key paired with the object
  See Also:
    `CachePolicy.insert(java.lang.Object, java.lang.Object)`

### flush

    public void flush()

  Description copied from interface: `CachePolicy`
  Flushes the cached objects from the cache.
  Specified by:
    `flush` in interface `CachePolicy`

### createList

    protected LRUCachePolicy.LRUList createList()

  Factory method for the linked list used by this cache implementation.

### ageOut

    protected void ageOut(LRUCachePolicy.LRUCacheEntry entry)

  Callback method called when the cache algorithm ages out of the cache the given entry.
  The implementation here is removing the given entry from the cache.

### cacheMiss

    protected void cacheMiss()

  Callback method called when a cache miss happens.

### createCacheEntry

    protected LRUCachePolicy.LRUCacheEntry createCacheEntry(java.lang.Object key,
                                                            java.lang.Object value)

  Factory method for cache entries

Copyright © 2000 The JBoss Organization. All Rights Reserved.