Knopflerfish OSGi 5.2.0

Class CacheMap<K,V>

  extended by org.knopflerfish.util.CacheMap<K,V>
All Implemented Interfaces:, java.util.Map<K,V>

public class CacheMap<K,V>
extends java.lang.Object
implements java.util.Map<K,V>,

Timeout version of a HashMap.

Entries in the map have a limited life-length, and the get method will only return the stored object during a limited time period.

After the timeout period, the object will be removed.

See Also:
CachedObject, Serialized Form

Nested Class Summary
Nested classes/interfaces inherited from interface java.util.Map
Field Summary
protected  long timeout
Constructor Summary
          Create a map with default timeout period.
CacheMap(long timeout)
          Create a map with a specified timeout period.
Method Summary
 void clear()
 boolean containsKey(java.lang.Object key)
          Check if an object exists in the map.
 boolean containsValue(java.lang.Object value)
 java.util.Set<java.util.Map.Entry<K,V>> entrySet()
 V get(java.lang.Object key)
          Get an object from the map.
 boolean isEmpty()
 java.util.Set<K> keySet()
 V put(K key, V value)
          Store an object in the map.
 void putAll(java.util.Map<? extends K,? extends V> m)
 V remove(java.lang.Object key)
 int size()
 void update()
          Force timeout check on all items in map and remove all expired keys and objects.
 java.util.Collection<V> values()
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


protected long timeout
Constructor Detail


public CacheMap()
Create a map with default timeout period.

Equivalent to CacheMap(CachedObject.DEFAULT_TIMEOUT)

See Also:
CachedObject.DEFAULT_TIMEOUT, CachedObject


public CacheMap(long timeout)
Create a map with a specified timeout period.

After an object has been stored in the map using put, it will only be available for timeout milliseconds. After that period, get will return null

timeout - timeout period in milliseconds for cached objects.
Method Detail


public V get(java.lang.Object key)
Get an object from the map. If the object's timeout period has expired, remove it from the map and return null.

Note: Since the timeout check is done for each cached object, be careful when looping over a map using iterators or other sequences of get. The result from a new get can become null faster than you might think. Thus always check for null return values from get.

Specified by:
get in interface java.util.Map<K,V>


public boolean containsKey(java.lang.Object key)
Check if an object exists in the map. If non-existent or expired, return false.

Specified by:
containsKey in interface java.util.Map<K,V>


public V put(K key,
             V value)
Store an object in the map. The object's timeout period will start from the current system time.

Specified by:
put in interface java.util.Map<K,V>


public void update()
Force timeout check on all items in map and remove all expired keys and objects.

Normally, the timeout check is only done at get calls, but if necessary (for example at periodic complete printouts or before loops) you can (and probably want to) force a timeout check on all cached objects.


public int size()
Specified by:
size in interface java.util.Map<K,V>


public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Map<K,V>


public boolean containsValue(java.lang.Object value)
Specified by:
containsValue in interface java.util.Map<K,V>


public V remove(java.lang.Object key)
Specified by:
remove in interface java.util.Map<K,V>


public void putAll(java.util.Map<? extends K,? extends V> m)
Specified by:
putAll in interface java.util.Map<K,V>


public void clear()
Specified by:
clear in interface java.util.Map<K,V>


public java.util.Set<K> keySet()
Specified by:
keySet in interface java.util.Map<K,V>


public java.util.Collection<V> values()
Specified by:
values in interface java.util.Map<K,V>


public java.util.Set<java.util.Map.Entry<K,V>> entrySet()
Specified by:
entrySet in interface java.util.Map<K,V>

Knopflerfish OSGi 5.2.0