Class CloseableMemoizingSupplier<T extends AutoCloseable>

java.lang.Object
aQute.bnd.memoize.CloseableMemoizingSupplier<T>
All Implemented Interfaces:
CloseableMemoize<T>, Memoize<T>, AutoCloseable, Supplier<T>

class CloseableMemoizingSupplier<T extends AutoCloseable> extends Object implements CloseableMemoize<T>
The object can exist in one of three states:
  • initial which means neither get or close 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.
  • Field Details

    • lock

      private final StampedLock lock
    • initial

      private volatile boolean initial
    • memoized

      private T extends AutoCloseable memoized
  • Constructor Details

    • CloseableMemoizingSupplier

      CloseableMemoizingSupplier(Supplier<? extends T> supplier)
  • Method Details

    • get

      public T get()
      Description copied from interface: CloseableMemoize
      Get the memoized AutoCloseable value.
      Specified by:
      get in interface CloseableMemoize<T extends AutoCloseable>
      Specified by:
      get in interface Memoize<T extends AutoCloseable>
      Specified by:
      get in interface Supplier<T extends AutoCloseable>
      Returns:
      The memoized AutoCloseable value.
    • initial

      private T initial()
    • value

      private static <T extends 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.

      Specified by:
      peek in interface Memoize<T extends AutoCloseable>
      Returns:
      The memoized value if a value is memoized; otherwise null.
    • isPresent

      public boolean isPresent()
      Description copied from interface: Memoize
      If a value is memoized, return true. Otherwise return false.

      This method will not result in a call to the source supplier.

      Specified by:
      isPresent in interface Memoize<T extends AutoCloseable>
      Returns:
      true if a value is memoized; otherwise false.
    • isClosed

      public boolean isClosed()
      Description copied from interface: CloseableMemoize
      Returns whether this memoizing supplier is closed.
      Specified by:
      isClosed in interface CloseableMemoize<T extends AutoCloseable>
      Returns:
      true If this memoizing supplier is closed; otherwise false.
    • close

      public void close() throws Exception
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception
    • accept

      public CloseableMemoize<T> accept(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.

      Specified by:
      accept in interface CloseableMemoize<T extends AutoCloseable>
      Specified by:
      accept in interface Memoize<T extends AutoCloseable>
      Parameters:
      consumer - The consumer to accept the value of this memoizing supplier. Must not be null.
      Returns:
      This memoizing supplier.
    • ifPresent

      public CloseableMemoize<T> ifPresent(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 interface CloseableMemoize<T extends AutoCloseable>
      Specified by:
      ifPresent in interface Memoize<T extends AutoCloseable>
      Parameters:
      consumer - The consumer to accept the value of this memoizing supplier if a value is memoized. Must not be null if a value is memoized.
      Returns:
      This memoizing supplier.
    • toString

      public String toString()
      Overrides:
      toString in class Object