Interface PromisedValues<T>

  • All Known Implementing Classes:
    PromisedValuesImpl

    public interface PromisedValues<T>
    This allows multiple CompletionStages to be combined and completed as one and should something go wrong, instead of throwing CompletionExceptions it captures the cause and returns null for that data value, otherwise it allows you to access them as a list of values.

    This class really encapsulate a list of promised values. It is considered finished when all the underlying futures are finished.

    You can get that list of values via toList(). You can also compose a CompletableFuture of that list of values via toCompletableFuture() ()}

    • Method Detail

      • allOf

        static <T> PromisedValues<T> allOf​(java.util.List<? extends java.util.concurrent.CompletionStage<T>> cfs)
        Returns a new PromisedValues that is completed when all the given CompletionStages complete. If any of the given CompletionStages complete exceptionally, then the returned PromisedValues also does so.
        Type Parameters:
        T - the type of values
        Parameters:
        cfs - the CompletionStages to combine
        Returns:
        a new PromisedValues
      • allOf

        static <T> PromisedValues<T> allOf​(java.util.concurrent.CompletionStage<T> f1,
                                           java.util.concurrent.CompletionStage<T> f2)
        Returns a new PromisedValues that is completed when all the given CompletionStages complete. If any of the given CompletionStages complete exceptionally, then the returned PromisedValues also does so.
        Type Parameters:
        T - the type of values
        Parameters:
        f1 - the 1st completable future
        f2 - the 2nd completable future
        Returns:
        a new PromisedValues
      • allOf

        static <T> PromisedValues<T> allOf​(java.util.concurrent.CompletionStage<T> f1,
                                           java.util.concurrent.CompletionStage<T> f2,
                                           java.util.concurrent.CompletionStage<T> f3)
        Returns a new PromisedValues that is completed when all the given CompletionStages complete. If any of the given CompletionStages complete exceptionally, then the returned PromisedValues also does so.
        Type Parameters:
        T - the type of values
        Parameters:
        f1 - the 1st completable future
        f2 - the 2nd completable future
        f3 - the 3rd completable future
        Returns:
        a new PromisedValues
      • allOf

        static <T> PromisedValues<T> allOf​(java.util.concurrent.CompletionStage<T> f1,
                                           java.util.concurrent.CompletionStage<T> f2,
                                           java.util.concurrent.CompletionStage<T> f3,
                                           java.util.concurrent.CompletionStage<T> f4)
        Returns a new PromisedValues that is completed when all the given CompletionStages complete. If any of the given CompletionStages complete exceptionally, then the returned PromisedValues also does so.
        Type Parameters:
        T - the type of values
        Parameters:
        f1 - the 1st completable future
        f2 - the 2nd completable future
        f3 - the 3rd completable future
        f4 - the 4th completable future
        Returns:
        a new PromisedValues
      • thenAccept

        PromisedValues<T> thenAccept​(java.util.function.Consumer<PromisedValues<T>> handler)
        When the all the futures complete, this call back will be invoked with this PromisedValues as a parameter
        Parameters:
        handler - the call back which will be given this object
        Returns:
        a new PromisedValues which you can compose more computations with
      • succeeded

        boolean succeeded()
        Returns:
        true if all the futures completed successfully
      • failed

        boolean failed()
        Returns:
        true if any of the futures completed unsuccessfully
      • isDone

        boolean isDone()
        The true if the all the futures have completed (and hence this PromisedValues has completed)
        Returns:
        true if all the futures have completed
      • cause

        java.lang.Throwable cause()
        The exception cause or null if it didn't fail
        Returns:
        an exception or null if the future did not fail
      • succeeded

        boolean succeeded​(int index)
        The true if the CompletionStage at the specified index succeeded
        Parameters:
        index - the index of the CompletionStage
        Returns:
        true if the future at the specified index succeeded
      • cause

        java.lang.Throwable cause​(int index)
        The exception cause at the specified index or null if it didn't fail
        Parameters:
        index - the index of the CompletionStage
        Returns:
        an exception or null if the future did not fail
      • get

        T get​(int index)
        The value at index or null if it failed
        Parameters:
        index - the index of the future
        Returns:
        the value of the future
      • toList

        java.util.List<T> toList()
        Returns the underlying values as a list
        Returns:
        the list of underlying values
      • size

        int size()
        Returns:
        the number of CompletionStages under the covers
      • join

        java.util.List<T> join()
        Waits for the underlying futures to complete. To better conform with the use of common functional forms, if a computation involved in the completion of this CompletableFuture threw an exception, this method throws an (unchecked) CompletionException with the underlying exception as its cause.
        Returns:
        the list of completed values similar to toList()
        Throws:
        java.util.concurrent.CancellationException - if the computation was cancelled
        java.util.concurrent.CompletionException - if this future completed exceptionally or a completion computation threw an exception
      • toCompletableFuture

        java.util.concurrent.CompletableFuture<java.util.List<T>> toCompletableFuture()
        Returns:
        this as a CompletableFuture that returns the list of underlying values