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
ConstructorDescriptionLazyInitializable(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
.void
reset()
Clears the value, if it has been previously created by calling#getOrCompute()
.
-
Constructor Details
-
LazyInitializable
Creates the simple LazyInitializable instance.- Parameters:
supplier
- TheCheckedSupplier
to generate values which will be served on#getOrCompute()
invocations.
-
LazyInitializable
Creates the complete LazyInitializable instance.- Parameters:
supplier
- TheCheckedSupplier
to generate values which will be served on#getOrCompute()
invocations.onGet
- AConsumer
which is called on each value, newly forged or stale, that is returned by#getOrCompute()
onReset
- AConsumer
which 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()
. TheonReset
will be called on this value. The next call to#getOrCompute()
will recreate the value.
-