Package org.elasticsearch.common.util
Class LazyInitializable<T,E extends Exception>
java.lang.Object
org.elasticsearch.common.util.LazyInitializable<T,E>
Encapsulates a
CheckedSupplier which is lazily invoked once on the
first call to #getOrCompute(). The value which the
supplier returns is memorized and will be served until
#reset() is called. Each value returned by #getOrCompute(),
newly minted or cached, will be passed to the onGet
Consumer. On #reset() the value will be passed to the
onReset Consumer and the next #getOrCompute()
will regenerate the value.-
Constructor Summary
ConstructorsConstructorDescriptionLazyInitializable(CheckedSupplier<T,E> supplier)Creates the simple LazyInitializable instance.LazyInitializable(CheckedSupplier<T,E> supplier, Consumer<T> onGet, Consumer<T> onReset)Creates the complete LazyInitializable instance. -
Method Summary
Modifier and TypeMethodDescriptionReturns a value that was created bysupplier.voidreset()Clears the value, if it has been previously created by calling#getOrCompute().
-
Constructor Details
-
LazyInitializable
Creates the simple LazyInitializable instance.- Parameters:
supplier- TheCheckedSupplierto generate values which will be served on#getOrCompute()invocations.
-
LazyInitializable
Creates the complete LazyInitializable instance.- Parameters:
supplier- TheCheckedSupplierto generate values which will be served on#getOrCompute()invocations.onGet- AConsumerwhich is called on each value, newly forged or stale, that is returned by#getOrCompute()onReset- AConsumerwhich is invoked on the value that will be erased when calling#reset()
-
-
Method Details
-
getOrCompute
Returns a value that was created bysupplier. The value might have been previously created, if not it will be created now, thread safe of course. -
reset
public void reset()Clears the value, if it has been previously created by calling#getOrCompute(). TheonResetwill be called on this value. The next call to#getOrCompute()will recreate the value.
-