Package org.elasticsearch.common.util
Class LazyInitializable<T,E extends java.lang.Exception>
java.lang.Object
org.elasticsearch.common.util.LazyInitializable<T,E>
public final class LazyInitializable<T,E extends java.lang.Exception>
extends java.lang.Object
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
Constructors Constructor Description LazyInitializable(CheckedSupplier<T,E> supplier)Creates the simple LazyInitializable instance.LazyInitializable(CheckedSupplier<T,E> supplier, java.util.function.Consumer<T> onGet, java.util.function.Consumer<T> onReset)Creates the complete LazyInitializable instance. -
Method Summary
Modifier and Type Method Description TgetOrCompute()Returns 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
public LazyInitializable(CheckedSupplier<T,E> supplier, java.util.function.Consumer<T> onGet, java.util.function.Consumer<T> onReset)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.- Throws:
E extends java.lang.Exception
-
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.
-