Class ClosingFuture.Combiner5<V1 extends @Nullable Object,V2 extends @Nullable Object,V3 extends @Nullable Object,V4 extends @Nullable Object,V5 extends @Nullable Object>

java.lang.Object
dev.mccue.guava.concurrent.ClosingFuture.Combiner
dev.mccue.guava.concurrent.ClosingFuture.Combiner5<V1,V2,V3,V4,V5>
Type Parameters:
V1 - the type returned by the first future
V2 - the type returned by the second future
V3 - the type returned by the third future
V4 - the type returned by the fourth future
V5 - the type returned by the fifth future
Enclosing class:
ClosingFuture<V extends @Nullable Object>

public static final class ClosingFuture.Combiner5<V1 extends @Nullable Object,V2 extends @Nullable Object,V3 extends @Nullable Object,V4 extends @Nullable Object,V5 extends @Nullable Object> extends ClosingFuture.Combiner
A generic Combiner that lets you use a lambda or method reference to combine five ClosingFutures. Use #whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture) to start this combination.
  • Method Details

    • call

      public <U extends @Nullable Object> ClosingFuture<U> call(ClosingFuture.Combiner5.ClosingFunction5<V1,V2,V3,V4,V5,U> function, Executor executor)
      Returns a new ClosingFuture pipeline step derived from the inputs by applying a combining function to their values. The function can use a DeferredCloser to capture objects to be closed when the pipeline is done.

      If this combiner was returned by #whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture) and any of the inputs fail, so will the returned step.

      If the function throws a CancellationException, the pipeline will be cancelled.

      If the function throws an ExecutionException, the cause of the thrown ExecutionException will be extracted and used as the failure of the derived step.

    • callAsync

      public <U extends @Nullable Object> ClosingFuture<U> callAsync(ClosingFuture.Combiner5.AsyncClosingFunction5<V1,V2,V3,V4,V5,U> function, Executor executor)
      Returns a new ClosingFuture pipeline step derived from the inputs by applying a ClosingFuture-returning function to their values. The function can use a DeferredCloser to capture objects to be closed when the pipeline is done (other than those captured by the returned ClosingFuture).

      If this combiner was returned by #whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture) and any of the inputs fail, so will the returned step.

      If the function throws a CancellationException, the pipeline will be cancelled.

      If the function throws an ExecutionException, the cause of the thrown ExecutionException will be extracted and used as the failure of the derived step.

      If the function throws any other exception, it will be used as the failure of the derived step.

      If an exception is thrown after the function creates a ClosingFuture, then none of the closeable objects in that ClosingFuture will be closed.

      Usage guidelines for this method:

      • Use this method only when calling an API that returns a ListenableFuture or a ClosingFuture. If possible, prefer calling #call(CombiningCallable, Executor) instead, with a function that returns the next value directly.
      • Call DeferredCloser#eventuallyClose(Object, Executor) closer.eventuallyClose() for every closeable object this step creates in order to capture it for later closing.
      • Return a ClosingFuture. To turn a ListenableFuture into a ClosingFuture call #from(ListenableFuture).

      The same warnings about doing heavyweight operations within ClosingFuture#transformAsync(AsyncClosingFunction, Executor) apply here.