Package software.amazon.awssdk.utils
Class CompletableFutureUtils
- java.lang.Object
-
- software.amazon.awssdk.utils.CompletableFutureUtils
-
public final class CompletableFutureUtils extends Object
Utility class for working withCompletableFuture.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static CompletableFuture<Void>allOfExceptionForwarded(CompletableFuture<?>[] futures)Similar toCompletableFuture.allOf(CompletableFuture[]), but when any future is completed exceptionally, forwards the exception to other futures.static CompletionExceptionerrorAsCompletionException(Throwable t)Wraps the given error in aCompletionExceptionif necessary.static <U> CompletableFuture<U>failedFuture(Throwable t)Convenience method for creating a future that is immediately completed exceptionally with the givenThrowable.static <T> CompletableFuture<T>forwardExceptionTo(CompletableFuture<T> src, CompletableFuture<?> dst)Forward theThrowablefromsrctodst.static <T> CompletableFuture<T>forwardResultTo(CompletableFuture<T> src, CompletableFuture<T> dst)Completes thedstfuture based on the result of thesrcfuture asynchronously on the providedExecutorand return thesrcfuture.static <T> CompletableFuture<T>forwardResultTo(CompletableFuture<T> src, CompletableFuture<T> dst, Executor executor)Completes thedstfuture based on the result of thesrcfuture asynchronously on the providedExecutorand return thesrcfuture.static <T> CompletableFuture<T>forwardTransformedExceptionTo(CompletableFuture<T> src, CompletableFuture<?> dst, Function<Throwable,Throwable> transformationFunction)Forward theThrowablethat can be transformed as per the transformationFunction fromsrctodst.static <SourceT,DestT>
CompletableFuture<SourceT>forwardTransformedResultTo(CompletableFuture<SourceT> src, CompletableFuture<DestT> dst, Function<SourceT,DestT> function)Completes thedstfuture based on the result of thesrcfuture, synchronously, after applying the provided transformationFunctionif successful.static <T> TjoinInterruptibly(CompletableFuture<T> future)static voidjoinInterruptiblyIgnoringFailures(CompletableFuture<?> future)static <T> TjoinLikeSync(CompletableFuture<T> future)Joins (interruptibly) on the future, and re-throws any RuntimeExceptions or Errors just like the async task would have thrown if it was executed synchronously.
-
-
-
Method Detail
-
failedFuture
public static <U> CompletableFuture<U> failedFuture(Throwable t)
Convenience method for creating a future that is immediately completed exceptionally with the givenThrowable.Similar to
CompletableFuture#failedFuturewhich was added in Java 9.- Type Parameters:
U- The type of the element.- Parameters:
t- The failure.- Returns:
- The failed future.
-
errorAsCompletionException
public static CompletionException errorAsCompletionException(Throwable t)
Wraps the given error in aCompletionExceptionif necessary. Useful if an exception needs to be rethrown from withinCompletableFuture.handle(java.util.function.BiFunction)or similar methods.- Parameters:
t- The error.- Returns:
- The error as a CompletionException.
-
forwardExceptionTo
public static <T> CompletableFuture<T> forwardExceptionTo(CompletableFuture<T> src, CompletableFuture<?> dst)
Forward theThrowablefromsrctodst.- Parameters:
src- The source of theThrowable.dst- The destination where theThrowablewill be forwarded to.- Returns:
src.
-
forwardTransformedExceptionTo
public static <T> CompletableFuture<T> forwardTransformedExceptionTo(CompletableFuture<T> src, CompletableFuture<?> dst, Function<Throwable,Throwable> transformationFunction)
Forward theThrowablethat can be transformed as per the transformationFunction fromsrctodst.- Parameters:
src- The source of theThrowable.dst- The destination where theThrowablewill be forwarded totransformationFunction- Transformation function taht will be applied on to the forwarded exception.- Returns:
-
forwardResultTo
public static <T> CompletableFuture<T> forwardResultTo(CompletableFuture<T> src, CompletableFuture<T> dst)
Completes thedstfuture based on the result of thesrcfuture asynchronously on the providedExecutorand return thesrcfuture.- Parameters:
src- The sourceCompletableFuturedst- The destination where theThrowableor response will be forwarded to.- Returns:
- the
srcfuture.
-
forwardResultTo
public static <T> CompletableFuture<T> forwardResultTo(CompletableFuture<T> src, CompletableFuture<T> dst, Executor executor)
Completes thedstfuture based on the result of thesrcfuture asynchronously on the providedExecutorand return thesrcfuture.- Parameters:
src- The sourceCompletableFuturedst- The destination where theThrowableor response will be forwarded to.executor- the executor to complete the des future- Returns:
- the
srcfuture.
-
forwardTransformedResultTo
public static <SourceT,DestT> CompletableFuture<SourceT> forwardTransformedResultTo(CompletableFuture<SourceT> src, CompletableFuture<DestT> dst, Function<SourceT,DestT> function)
Completes thedstfuture based on the result of thesrcfuture, synchronously, after applying the provided transformationFunctionif successful.- Parameters:
src- The sourceCompletableFuturedst- The destination where theThrowableor transformed result will be forwarded to.- Returns:
- the
srcfuture.
-
allOfExceptionForwarded
public static CompletableFuture<Void> allOfExceptionForwarded(CompletableFuture<?>[] futures)
Similar toCompletableFuture.allOf(CompletableFuture[]), but when any future is completed exceptionally, forwards the exception to other futures.- Parameters:
futures- The futures.- Returns:
- The new future that is completed when all the futures in
futuresare.
-
joinInterruptibly
public static <T> T joinInterruptibly(CompletableFuture<T> future)
-
joinInterruptiblyIgnoringFailures
public static void joinInterruptiblyIgnoringFailures(CompletableFuture<?> future)
-
joinLikeSync
public static <T> T joinLikeSync(CompletableFuture<T> future)
Joins (interruptibly) on the future, and re-throws any RuntimeExceptions or Errors just like the async task would have thrown if it was executed synchronously.
-
-