Package aQute.bnd.memoize
Class CloseableMemoizingSupplier<T extends java.lang.AutoCloseable>
- java.lang.Object
-
- aQute.bnd.memoize.CloseableMemoizingSupplier<T>
-
- All Implemented Interfaces:
CloseableMemoize<T>
,Memoize<T>
,java.lang.AutoCloseable
,java.util.function.Supplier<T>
class CloseableMemoizingSupplier<T extends java.lang.AutoCloseable> extends java.lang.Object implements CloseableMemoize<T>
The object can exist in one of three states:- initial which means neither
get
orclose
has been called. From this state, the object can transition directly to either open or closed. - open which means memoized is non-null with the value from the wrapped supplier. From this state, the object can transition to closed.
- closed which means memoized is null and any value it may have held was closed. This is a terminal state.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static interface
CloseableMemoizingSupplier.InitialSupplier<S extends java.lang.AutoCloseable>
-
Constructor Summary
Constructors Constructor Description CloseableMemoizingSupplier(java.util.function.Supplier<? extends T> supplier)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description CloseableMemoize<T>
accept(java.util.function.Consumer<? super T> consumer)
Call the consumer with the value of this memoizing supplier.void
close()
T
get()
Get the memoized AutoCloseable value.CloseableMemoize<T>
ifPresent(java.util.function.Consumer<? super T> consumer)
If a value is memoized, call the consumer with the value of this memoizing supplier.private T
initial()
boolean
isClosed()
Returns whether this memoizing supplier is closed.boolean
isPresent()
If a value is memoized, returntrue
.T
peek()
Peek the memoized value, if any.java.lang.String
toString()
private static <T extends java.lang.AutoCloseable>
Tvalue(T value)
-
-
-
Field Detail
-
lock
private final java.util.concurrent.locks.StampedLock lock
-
initial
private volatile boolean initial
-
memoized
private T extends java.lang.AutoCloseable memoized
-
-
Constructor Detail
-
CloseableMemoizingSupplier
CloseableMemoizingSupplier(java.util.function.Supplier<? extends T> supplier)
-
-
Method Detail
-
get
public T get()
Description copied from interface:CloseableMemoize
Get the memoized AutoCloseable value.
-
initial
private T initial()
-
value
private static <T extends java.lang.AutoCloseable> T value(T value)
-
peek
public T peek()
Description copied from interface:Memoize
Peek the memoized value, if any.This method will not result in a call to the source supplier.
-
isPresent
public boolean isPresent()
Description copied from interface:Memoize
If a value is memoized, returntrue
. Otherwise returnfalse
.This method will not result in a call to the source supplier.
-
isClosed
public boolean isClosed()
Description copied from interface:CloseableMemoize
Returns whether this memoizing supplier is closed.- Specified by:
isClosed
in interfaceCloseableMemoize<T extends java.lang.AutoCloseable>
- Returns:
true
If this memoizing supplier is closed; otherwisefalse
.
-
close
public void close() throws java.lang.Exception
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Throws:
java.lang.Exception
-
accept
public CloseableMemoize<T> accept(java.util.function.Consumer<? super T> consumer)
Description copied from interface:CloseableMemoize
Call the consumer with the value of this memoizing supplier.This method will block closing this memoizing supplier while the consumer is executing.
-
ifPresent
public CloseableMemoize<T> ifPresent(java.util.function.Consumer<? super T> consumer)
Description copied from interface:CloseableMemoize
If a value is memoized, call the consumer with the value of this memoizing supplier. Otherwise do nothing.This method will block closing this memoizing supplier while the consumer is executing.
- Specified by:
ifPresent
in interfaceCloseableMemoize<T extends java.lang.AutoCloseable>
- Specified by:
ifPresent
in interfaceMemoize<T extends java.lang.AutoCloseable>
- Parameters:
consumer
- The consumer to accept the value of this memoizing supplier if a value is memoized. Must not benull
if a value is memoized.- Returns:
- This memoizing supplier.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-