org.apache.jcs.utils.struct
Class LRUMap

java.lang.Object
  extended byorg.apache.jcs.utils.struct.LRUMap
All Implemented Interfaces:
java.util.Map
Direct Known Subclasses:
LRUMapJCS

public class LRUMap
extends java.lang.Object
implements java.util.Map

This is a simple LRUMap. It implements most of the map methods. It is not recommended that you use any but put, get, remove, and clear.

Children can implement the processRemovedLRU method if they want to handle the removal of the lest recently used item.

This class was abstracted out of the LRU Memory cache. Put, remove, and get should be thread safe. It uses a hashtable and our own double linked list.

Locking is done on the instance.

Author:
aaronsm

Nested Class Summary
 
Nested classes inherited from class java.util.Map
java.util.Map.Entry
 
Field Summary
protected  java.util.Map map
          Map where items are stored by key
 
Constructor Summary
LRUMap()
          This creates an unbounded version.
LRUMap(int maxObjects)
          This sets the size limit.
 
Method Summary
 void clear()
           
 boolean containsKey(java.lang.Object key)
           
 boolean containsValue(java.lang.Object value)
           
 void dumpCacheEntries()
          Dump the cache entries from first to list for debugging.
 void dumpMap()
          Dump the cache map for debugging.
 java.util.Set entrySet()
           
 java.lang.Object get(java.lang.Object key)
           
 int getChunkSize()
           
 java.lang.Object getQuiet(java.lang.Object key)
           
 IStats getStatistics()
           
 boolean isEmpty()
           
 java.util.Set keySet()
           
protected  void processRemovedLRU(java.lang.Object key, java.lang.Object value)
          This is called when an item is removed from the LRU.
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
           
 void putAll(java.util.Map source)
           
 java.lang.Object remove(java.lang.Object key)
           
 void setChunkSize(int chunkSize)
          The chunk size is the number of items to remove when the max is reached.
 int size()
           
 java.util.Collection values()
           
protected  void verifyCache()
          Checks to see if all the items that should be in the cache are.
protected  void verifyCache(java.lang.Object key)
          Logs an error is an element that should be in the cache is not.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Field Detail

map

protected java.util.Map map
Map where items are stored by key

Constructor Detail

LRUMap

public LRUMap()
This creates an unbounded version. Setting the max objects will result in spooling on subsequent puts.


LRUMap

public LRUMap(int maxObjects)
This sets the size limit.

Parameters:
maxObjects -
Method Detail

size

public int size()
Specified by:
size in interface java.util.Map

clear

public void clear()
Specified by:
clear in interface java.util.Map

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Map

containsKey

public boolean containsKey(java.lang.Object key)
Specified by:
containsKey in interface java.util.Map

containsValue

public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map

values

public java.util.Collection values()
Specified by:
values in interface java.util.Map

putAll

public void putAll(java.util.Map source)
Specified by:
putAll in interface java.util.Map

entrySet

public java.util.Set entrySet()
Specified by:
entrySet in interface java.util.Map

keySet

public java.util.Set keySet()
Specified by:
keySet in interface java.util.Map

get

public java.lang.Object get(java.lang.Object key)
Specified by:
get in interface java.util.Map

getQuiet

public java.lang.Object getQuiet(java.lang.Object key)
Parameters:
key -
Returns:
Object

remove

public java.lang.Object remove(java.lang.Object key)
Specified by:
remove in interface java.util.Map

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
Specified by:
put in interface java.util.Map

dumpCacheEntries

public void dumpCacheEntries()
Dump the cache entries from first to list for debugging.


dumpMap

public void dumpMap()
Dump the cache map for debugging.


verifyCache

protected void verifyCache()
Checks to see if all the items that should be in the cache are. Checks consistency between List and map.


verifyCache

protected void verifyCache(java.lang.Object key)
Logs an error is an element that should be in the cache is not.

Parameters:
key -

processRemovedLRU

protected void processRemovedLRU(java.lang.Object key,
                                 java.lang.Object value)
This is called when an item is removed from the LRU. We just log some information.

Children can implement this method for special behavior.

Parameters:
key -
value -

setChunkSize

public void setChunkSize(int chunkSize)
The chunk size is the number of items to remove when the max is reached. By default it is 1.

Parameters:
chunkSize - The chunkSize to set.

getChunkSize

public int getChunkSize()
Returns:
Returns the chunkSize.

getStatistics

public IStats getStatistics()
Returns:
IStats


Copyright © 2002-2007 Apache Software Foundation. All Rights Reserved.