NASA World Wind

gov.nasa.worldwind.cache
Class BasicSessionCache

java.lang.Object
  extended by gov.nasa.worldwind.cache.BasicSessionCache
All Implemented Interfaces:
SessionCache

public class BasicSessionCache
extends Object
implements SessionCache

BasicSessionCache is a general receiving area for data represented as key-value pairs. Entries in a BasicSessionCache may persist for the length of a Virtual Machine's run time, but may be evicted if the cache size increases beyond its capacity.

Eviction of BasicSessionCache entries is accomplished by controlling the maximum number of entries in the cache. This maximum value is set by calling setCapacity(int). The eldest entry in the cache (the first entry added) is always evicted before any others.

BasicSessionClass is a thread safe class. Access to the cache data structures is synchronized at the method level. Care must be taked by subclasses to ensure that method level synchronization is maintained.


Field Summary
protected static int DEFAULT_CAPACITY
           
protected  BoundedHashMap<Object,Object> entries
           
 
Constructor Summary
BasicSessionCache()
          Creates a BasicSessionCache with the default capacity.
BasicSessionCache(int capacity)
          Creates a BasicSessionCache with a specified maximum number of entries.
 
Method Summary
 void clear()
          Removes all entries from the cache.
 boolean contains(Object key)
          Returns true if the cache contains a specified key, and false if it does not.
 Object get(Object key)
          Returns a reference to an entry's value in the cache corresponding to a specified key, or null if no entry with that key exists.
 int getCapacity()
          Returns the maximum number of entries in the cache.
 int getEntryCount()
          Returns the number of entries currently in the cache.
 Set<Object> getKeySet()
          Returns a Set view of the keys contained in the cache.
 void put(Object key, Object value)
          Adds an entry in the cache with a specified key and value.
 Object remove(Object key)
          Removes the entry with the specified key from the cache, and returns that entry's value.
 void setCapacity(int capacity)
          Sets the maximum number of entries in the cache.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_CAPACITY

protected static final int DEFAULT_CAPACITY
See Also:
Constant Field Values

entries

protected BoundedHashMap<Object,Object> entries
Constructor Detail

BasicSessionCache

public BasicSessionCache()
Creates a BasicSessionCache with the default capacity.


BasicSessionCache

public BasicSessionCache(int capacity)
Creates a BasicSessionCache with a specified maximum number of entries.

Parameters:
capacity - maximum number of entries in the cache.
Throws:
IllegalArgumentException - if capacity is negative.
Method Detail

clear

public void clear()
Removes all entries from the cache.

Specified by:
clear in interface SessionCache

contains

public boolean contains(Object key)
Returns true if the cache contains a specified key, and false if it does not.

Specified by:
contains in interface SessionCache
Parameters:
key - the entry key in question. A null value is not permitted.
Returns:
true if the cache contains the key; false otherwise.
Throws:
IllegalArgumentException - if the key is null.

get

public Object get(Object key)
Returns a reference to an entry's value in the cache corresponding to a specified key, or null if no entry with that key exists.

Specified by:
get in interface SessionCache
Parameters:
key - the entry key to look for.
Returns:
a reference to the found entry's value.
Throws:
IllegalArgumentException - if the key is null.

getCapacity

public int getCapacity()
Returns the maximum number of entries in the cache.

Specified by:
getCapacity in interface SessionCache
Returns:
maximum number of entries in the cache.

getEntryCount

public int getEntryCount()
Returns the number of entries currently in the cache.

Specified by:
getEntryCount in interface SessionCache
Returns:
number of cached entries.

getKeySet

public Set<Object> getKeySet()
Returns a Set view of the keys contained in the cache. The returned set is immutable: changes to the set are not reflected in the session cache.

Specified by:
getKeySet in interface SessionCache
Returns:
a Set view of the keys contained in the cache.

put

public void put(Object key,
                Object value)
Adds an entry in the cache with a specified key and value. If the cache size after adding the new entry is greater than its capacity, this evicts the eldest entry in the cache.

Specified by:
put in interface SessionCache
Parameters:
key - the entry's key. A null value is not permitted.
value - the entry's value. A null value is permitted.
Throws:
IllegalArgumentException - if the key is null.

remove

public Object remove(Object key)
Removes the entry with the specified key from the cache, and returns that entry's value. If no entry exists for the specified key, this does nothing and returns null.

Specified by:
remove in interface SessionCache
Parameters:
key - the entry key to look for.
Returns:
a reference to the removed entry's value, or null of no entry matches the specified key.

setCapacity

public void setCapacity(int capacity)
Sets the maximum number of entries in the cache. If the new capacity is less than the number of cache entries, this evicts the eldest entiry until the cache size is equal to its capacity.

Specified by:
setCapacity in interface SessionCache
Parameters:
capacity - maximum number of enties in the cache.
Throws:
IllegalArgumentException - if capacity is negative.

NASA World Wind