com.opensymphony.xwork2.inject.util
Class ReferenceCache<K,V>

java.lang.Object
  extended by com.opensymphony.xwork2.inject.util.ReferenceMap<K,V>
      extended by com.opensymphony.xwork2.inject.util.ReferenceCache<K,V>
All Implemented Interfaces:
java.io.Serializable, java.util.Map<K,V>

public abstract class ReferenceCache<K,V>
extends ReferenceMap<K,V>

Extends ReferenceMap to support lazy loading values by overriding create(Object).

Author:
crazybob@google.com (Bob Lee)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.opensymphony.xwork2.inject.util.ReferenceMap
ReferenceMap.Strategy
 
Constructor Summary
ReferenceCache()
          Equivalent to new ReferenceCache(STRONG, STRONG).
ReferenceCache(ReferenceType keyReferenceType, ReferenceType valueReferenceType)
           
 
Method Summary
protected  void cancel()
          Cancels the current create(Object).
protected abstract  V create(K key)
          Override to lazy load values.
 V get(java.lang.Object key)
           If this map does not contain an entry for the given key and create(Object) has been overridden, this method will create a new value, put it in the map, and return it.
static
<K,V> ReferenceCache<K,V>
of(ReferenceType keyReferenceType, ReferenceType valueReferenceType, Function<? super K,? extends V> function)
          Returns a ReferenceCache delegating to the specified function.
 
Methods inherited from class com.opensymphony.xwork2.inject.util.ReferenceMap
clear, containsKey, containsValue, entrySet, getPutStrategy, isEmpty, keySet, put, putAll, putIfAbsent, putIfAbsentStrategy, putStrategy, remove, remove, replace, replace, replaceStrategy, size, 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
 

Constructor Detail

ReferenceCache

public ReferenceCache(ReferenceType keyReferenceType,
                      ReferenceType valueReferenceType)

ReferenceCache

public ReferenceCache()
Equivalent to new ReferenceCache(STRONG, STRONG).

Method Detail

create

protected abstract V create(K key)
Override to lazy load values. Use as an alternative to ReferenceMap.put(Object,Object). Invoked by getter if value isn't already cached. Must not return null. This method will not be called again until the garbage collector reclaims the returned value.


get

public V get(java.lang.Object key)
If this map does not contain an entry for the given key and create(Object) has been overridden, this method will create a new value, put it in the map, and return it.

Specified by:
get in interface java.util.Map<K,V>
Overrides:
get in class ReferenceMap<K,V>
Throws:
java.lang.NullPointerException - if create(Object) returns null.
java.util.concurrent.CancellationException - if the creation is cancelled. See cancel().

cancel

protected void cancel()
Cancels the current create(Object). Throws CancellationException to all clients currently blocked on get(Object).


of

public static <K,V> ReferenceCache<K,V> of(ReferenceType keyReferenceType,
                                           ReferenceType valueReferenceType,
                                           Function<? super K,? extends V> function)
Returns a ReferenceCache delegating to the specified function. The specified function must not return null.



Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.