Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.util
Class CacheMap

    java.lang.Object
      org.apache.openjpa.util.CacheMap

All Implemented Interfaces:
  Map

    public class CacheMap

extends Object
implements Map

Fixed-size map that has ability to pin/unpin entries and move overflow to a backing soft map.

Author:
  Patrick Linskey, Abe White

Nested Class Summary

Nested classes/interfaces inherited from interface java.util.Map
`Map.Entry<K,V>`

Field Summary
`protected SizedMap` | `cacheMap` The map for non-expired and non-pinned references.
`protected Map` | `pinnedMap` The set of objects pinned into the cache.
`protected SizedMap` | `softMap` The map for expired references.

Constructor Summary
`CacheMap()` Create a non-LRU (and therefore highly concurrent) cache map with a size of 1000.
`CacheMap(boolean lru)` Create a cache map with a size of 1000.
`CacheMap(boolean lru, int max)` Create a cache map with the given properties.
`CacheMap(boolean lru, int max, int size, float load)` Deprecated. use `CacheMap(boolean, int, int, float, int)` instead.
`CacheMap(boolean lru, int max, int size, float load, int concurrencyLevel)` Create a cache map with the given properties.

Method Summary
`protected void` | `cacheMapOverflowRemoved(Object key, Object value)` Called from `SizedMap.overflowRemoved(java.lang.Object, java.lang.Object)` in the cache map.
`void` | `clear()` Removes pinned objects as well as unpinned ones.
`boolean` | `containsKey(Object key)`
`boolean` | `containsValue(Object val)`
`protected void` | `entryAdded(Object key, Object value)` Invoked when an entry is added to the cache.
`protected void` | `entryRemoved(Object key, Object value, boolean expired)` Invoked when a key-value pair is evicted from this data structure.
`Set` | `entrySet()`
`Object` | `get(Object key)`
`int` | `getCacheSize()` The maximum number of hard references to maintain, or -1 for no limit.
`Set` | `getPinnedKeys()` The keys pinned into the map.
`int` | `getSoftReferenceSize()` The maximum number of soft references to maintain, or -1 for no limit.
`boolean` | `isEmpty()`
`boolean` | `isLRU()` Whether this cache map uses LRU eviction.
`Set` | `keySet()`
`boolean` | `pin(Object key)` Locks the given key and its value into the map.
`protected Object` | `put(Map map, Object key, Object value)` Put the given entry into the given map.
`Object` | `put(Object key, Object value)`
`void` | `putAll(Map map)`
`void` | `putAll(Map map, boolean replaceExisting)`
`void` | `readLock()` Acquire read lock.
`void` | `readUnlock()` Release read lock.
`protected Object` | `remove(Map map, Object key)` Remove the given key from the given map.
`Object` | `remove(Object key)` If `key` is pinned into the cache, the pin is cleared and the object is removed.
`void` | `setCacheSize(int size)` The maximum number of hard references to maintain, or -1 for no limit.
`void` | `setSoftReferenceSize(int size)` The maximum number of soft references to maintain, or -1 for no limit.
`int` | `size()`
`protected void` | `softMapOverflowRemoved(Object key, Object value)` Called from `SizedMap.overflowRemoved(java.lang.Object, java.lang.Object)` in the soft map.
`protected void` | `softMapValueExpired(Object key)` Called when a value expires from the soft map.
`String` | `toString()`
`boolean` | `unpin(Object key)` Undo a pinning.
`Collection` | `values()`
`void` | `writeLock()` Acquire write lock.
`void` | `writeUnlock()` Release write lock.

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

Methods inherited from interface java.util.Map
`equals, hashCode`

Field Detail

### cacheMap

    protected final SizedMap cacheMap

  The map for non-expired and non-pinned references.

### softMap

    protected final SizedMap softMap

  The map for expired references.

### pinnedMap

    protected final Map pinnedMap

  The set of objects pinned into the cache.

Constructor Detail

### CacheMap

    public CacheMap()

  Create a non-LRU (and therefore highly concurrent) cache map with a size of 1000.

### CacheMap

    public CacheMap(boolean lru)

  Create a cache map with a size of 1000.

  Parameters:
    `lru` - if true, create a LRU cache map otherwise a non-LRU map will be created.

### CacheMap

    public CacheMap(boolean lru,
                    int max)

  Create a cache map with the given properties.

### CacheMap

    public CacheMap(boolean lru,
                    int max,
                    int size,
                    float load)

  Deprecated. use `CacheMap(boolean, int, int, float, int)` instead.

### CacheMap

    public CacheMap(boolean lru,
                    int max,
                    int size,
                    float load,
                    int concurrencyLevel)

  Create a cache map with the given properties.

  Since:
    1.1.0

Method Detail

### cacheMapOverflowRemoved

    protected void cacheMapOverflowRemoved(Object key,
                                           Object value)

  Called from `SizedMap.overflowRemoved(java.lang.Object, java.lang.Object)` in the cache map.

### softMapOverflowRemoved

    protected void softMapOverflowRemoved(Object key,
                                          Object value)

  Called from `SizedMap.overflowRemoved(java.lang.Object, java.lang.Object)` in the soft map.

### softMapValueExpired

    protected void softMapValueExpired(Object key)

  Called when a value expires from the soft map.

### put

    protected Object put(Map map,
                         Object key,
                         Object value)

  Put the given entry into the given map. Allows subclasses to take additional actions.

### remove

    protected Object remove(Map map,
                            Object key)

  Remove the given key from the given map. Allows subclasses to take additional actions.

### readLock

    public void readLock()

  Acquire read lock.

### readUnlock

    public void readUnlock()

  Release read lock.

### writeLock

    public void writeLock()

  Acquire write lock.

### writeUnlock

    public void writeUnlock()

  Release write lock.

### isLRU

    public boolean isLRU()

  Whether this cache map uses LRU eviction.

### setCacheSize

    public void setCacheSize(int size)

  The maximum number of hard references to maintain, or -1 for no limit.

### getCacheSize

    public int getCacheSize()

  The maximum number of hard references to maintain, or -1 for no limit.

### setSoftReferenceSize

    public void setSoftReferenceSize(int size)

  The maximum number of soft references to maintain, or -1 for no limit.

### getSoftReferenceSize

    public int getSoftReferenceSize()

  The maximum number of soft references to maintain, or -1 for no limit.

### getPinnedKeys

    public Set getPinnedKeys()

  The keys pinned into the map.

### pin

    public boolean pin(Object key)

  Locks the given key and its value into the map. Objects pinned into the map are not counted towards the maximum cache size, and are never evicted implicitly. You may pin keys for which no value is in the map.

  Returns:
    true if the givne key's value was pinned; false if no value for the given key is cached

### unpin

    public boolean unpin(Object key)

  Undo a pinning.

### entryRemoved

    protected void entryRemoved(Object key,
                                Object value,
                                boolean expired)

  Invoked when a key-value pair is evicted from this data structure. This is invoked with `expired` set to `true` when an object is dropped because of space requirements or through garbage collection of soft references. It is invoked with `expired` set to `false` when an object is explicitly removed via the `remove(java.util.Map, java.lang.Object)` or `clear()` methods. This may be invoked more than once for a given entry.

  Parameters:
    `value` - may be null if the value was a soft reference that has been GCd
  Since:
    0.2.5.0

### entryAdded

    protected void entryAdded(Object key,
                              Object value)

  Invoked when an entry is added to the cache. This may be invoked more than once for an entry.

### get

    public Object get(Object key)

  Specified by:
    `get` in interface `Map`

### put

    public Object put(Object key,
                      Object value)

  Specified by:
    `put` in interface `Map`

### putAll

    public void putAll(Map map)

  Specified by:
    `putAll` in interface `Map`

### putAll

    public void putAll(Map map,
                       boolean replaceExisting)

### remove

    public Object remove(Object key)

  If `key` is pinned into the cache, the pin is cleared and the object is removed.

  Specified by:
    `remove` in interface `Map`

### clear

    public void clear()

  Removes pinned objects as well as unpinned ones.

  Specified by:
    `clear` in interface `Map`

### size

    public int size()

  Specified by:
    `size` in interface `Map`

### isEmpty

    public boolean isEmpty()

  Specified by:
    `isEmpty` in interface `Map`

### containsKey

    public boolean containsKey(Object key)

  Specified by:
    `containsKey` in interface `Map`

### containsValue

    public boolean containsValue(Object val)

  Specified by:
    `containsValue` in interface `Map`

### keySet

    public Set keySet()

  Specified by:
    `keySet` in interface `Map`

### values

    public Collection values()

  Specified by:
    `values` in interface `Map`

### entrySet

    public Set entrySet()

  Specified by:
    `entrySet` in interface `Map`

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2006-2013 Apache Software Foundation. All Rights Reserved.