Package org.apache.struts2.inject.util
Class ReferenceCache<K,V>
java.lang.Object
org.apache.struts2.inject.util.ReferenceMap<K,V>
org.apache.struts2.inject.util.ReferenceCache<K,V>
- All Implemented Interfaces:
Serializable
,Map<K,
V>
Extends
ReferenceMap
to support lazy loading values by overriding
create(Object)
.- Author:
- crazybob@google.com (Bob Lee)
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.struts2.inject.util.ReferenceMap
ReferenceMap.Strategy
-
Constructor Summary
ConstructorDescriptionEquivalent tonew ReferenceCache(STRONG, STRONG)
.ReferenceCache
(ReferenceType keyReferenceType, ReferenceType valueReferenceType) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
cancel()
Cancels the currentcreate(Object)
.protected abstract V
Override to lazy load values.static <K,
V> ReferenceCache<K, V> of
(ReferenceType keyReferenceType, ReferenceType valueReferenceType, Function<? super K, ? extends V> function) Returns aReferenceCache
delegating to the specifiedfunction
.Methods inherited from class org.apache.struts2.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
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, replaceAll
-
Constructor Details
-
ReferenceCache
-
ReferenceCache
public ReferenceCache()Equivalent tonew ReferenceCache(STRONG, STRONG)
.
-
-
Method Details
-
create
Override to lazy load values. Use as an alternative toReferenceMap.put(Object, Object)
. Invoked by getter if value isn't already cached. Must not returnnull
. This method will not be called again until the garbage collector reclaims the returned value.- Parameters:
key
- the key- Returns:
- returned value
-
get
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 interfaceMap<K,
V> - Overrides:
get
in classReferenceMap<K,
V> - Parameters:
key
- the key- Returns:
- return new created value
- Throws:
NullPointerException
- ifcreate(Object)
returns null.CancellationException
- if the creation is cancelled. Seecancel()
.
-
cancel
protected void cancel()Cancels the currentcreate(Object)
. ThrowsCancellationException
to all clients currently blocked onget(Object)
. -
of
public static <K,V> ReferenceCache<K,V> of(ReferenceType keyReferenceType, ReferenceType valueReferenceType, Function<? super K, ? extends V> function) Returns aReferenceCache
delegating to the specifiedfunction
. The specified function must not returnnull
.- Type Parameters:
K
- type of keyV
- type of value- Parameters:
function
- functionkeyReferenceType
- key reference typevalueReferenceType
- value reference type- Returns:
- reference cache
-