Class CloseableMemoizingSupplier<T extends AutoCloseable>

java.lang.Object
aQute.lib.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

  • Constructor Details

    • CloseableMemoizingSupplier

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

    • get

      public T get()
      Specified by:
      get in interface Supplier<T extends AutoCloseable>
    • 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 value if a value is memoized; otherwise null.
    • 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 memoized supplier.

      This method will block closing this memoized supplier while this method 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 memoized supplier. Must not be null.
      Returns:
      This memoized supplier.