Package org.stianloader.picoresolve.internal

# Class StronglyMultiCompletableFuture<T>

java.lang.Object
java.util.concurrent.CompletableFuture<@NotNull List<T>>
org.stianloader.picoresolve.internal.StronglyMultiCompletableFuture<T>

All Implemented Interfaces:
  `CompletionStage<@NotNull List<T>>`, `Future<@NotNull List<T>>`

public class StronglyMultiCompletableFuture<T> extends CompletableFuture<@NotNull List<T>>
A `CompletableFuture` that only completes when all futures complete, exceptionally or not. The resulting future will only exceptionally complete if all other futures complete exceptionally, otherwise it will complete normally once the last future completes normally.

## Nested Class Summary

## Nested classes/interfaces inherited from class java.util.concurrent.CompletableFuture

`CompletableFuture.AsynchronousCompletionTask`

## Constructor Summary

Constructors
Constructor
Description
`StronglyMultiCompletableFuture(CompletableFuture<T>... sources)`
`StronglyMultiCompletableFuture(List<CompletableFuture<T>> sources)`

## Method Summary

Modifier and Type
Method
Description
`protected @NotNull CompletionException`
`generateException()`
`final void`
`throwExceptionIfCompletedUncleanly()`

### Methods inherited from class java.util.concurrent.CompletableFuture

`acceptEither, acceptEitherAsync, acceptEitherAsync, allOf, anyOf, applyToEither, applyToEitherAsync, applyToEitherAsync, cancel, complete, completeAsync, completeAsync, completedFuture, completedStage, completeExceptionally, completeOnTimeout, copy, defaultExecutor, delayedExecutor, delayedExecutor, exceptionally, exceptionallyAsync, exceptionallyAsync, exceptionallyCompose, exceptionallyComposeAsync, exceptionallyComposeAsync, failedFuture, failedStage, get, get, getNow, getNumberOfDependents, handle, handleAsync, handleAsync, isCancelled, isCompletedExceptionally, isDone, join, minimalCompletionStage, newIncompleteFuture, obtrudeException, obtrudeValue, orTimeout, runAfterBoth, runAfterBothAsync, runAfterBothAsync, runAfterEither, runAfterEitherAsync, runAfterEitherAsync, runAsync, runAsync, supplyAsync, supplyAsync, thenAccept, thenAcceptAsync, thenAcceptAsync, thenAcceptBoth, thenAcceptBothAsync, thenAcceptBothAsync, thenApply, thenApplyAsync, thenApplyAsync, thenCombine, thenCombineAsync, thenCombineAsync, thenCompose, thenComposeAsync, thenComposeAsync, thenRun, thenRunAsync, thenRunAsync, toCompletableFuture, toString, whenComplete, whenCompleteAsync, whenCompleteAsync`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### StronglyMultiCompletableFuture

public StronglyMultiCompletableFuture(List<CompletableFuture<T>> sources)

### StronglyMultiCompletableFuture

@SafeVarargs public StronglyMultiCompletableFuture(CompletableFuture<T>... sources)

## Method Details

### generateException

@NotNull @Contract(pure=true) protected @NotNull CompletionException generateException()

### throwExceptionIfCompletedUncleanly

@Contract(pure=true) public final void throwExceptionIfCompletedUncleanly()