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

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

    java.lang.Object
      com.opensymphony.xwork2.inject.util.ReferenceMap<K,V>
          com.opensymphony.xwork2.inject.util.ReferenceCache<K,V>

All Implemented Interfaces:
  Serializable, 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(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(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 `Map<K,V>`
  Overrides:
    `get` in class `ReferenceMap<K,V>`
  Throws:
    `NullPointerException` - if `create(Object)` returns null.
    `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`.

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 © 2000–2018 Apache Software Foundation. All rights reserved.