public final class CompletionStageWrapper<T> extends Object implements CompletionStage<T>
CompletionStage
wrapper which hides the implementation (e.g. such as,
typically, a CompletableFuture
) to prevent consumers from casting (or
using CompletionStage.toCompletableFuture()
) and accessing methods
for "forcibly completing normally or exceptionally, probing completion
status or results, or awaiting completion of a stage" (which e.g.
CompletableFuture offers, but CompletionStage intentionally does not).
This is mainly intended to let methods return CompletionStage
s
which internally were CompletableFuture
s, yet prevent developers
from abusing such async APIs by using them synchronously and just doing
completionStage.toCompletableFuture().get()
(or
((CompletableFuture)completionStage).get()).
public static <T> CompletionStage<T> wrap(CompletionStage<T> completionStageToWrap)
public CompletableFuture<T> toCompletableFuture()
toCompletableFuture
in interface CompletionStage<T>
public <U> CompletionStage<U> thenApply(Function<? super T,? extends U> fn)
thenApply
in interface CompletionStage<T>
public <U> CompletionStage<U> thenApplyAsync(Function<? super T,? extends U> fn)
thenApplyAsync
in interface CompletionStage<T>
public <U> CompletionStage<U> thenApplyAsync(Function<? super T,? extends U> fn, Executor executor)
thenApplyAsync
in interface CompletionStage<T>
public CompletionStage<Void> thenAccept(Consumer<? super T> action)
thenAccept
in interface CompletionStage<T>
public CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action)
thenAcceptAsync
in interface CompletionStage<T>
public CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor)
thenAcceptAsync
in interface CompletionStage<T>
public CompletionStage<Void> thenRun(Runnable action)
thenRun
in interface CompletionStage<T>
public CompletionStage<Void> thenRunAsync(Runnable action)
thenRunAsync
in interface CompletionStage<T>
public CompletionStage<Void> thenRunAsync(Runnable action, Executor executor)
thenRunAsync
in interface CompletionStage<T>
public <U,V> CompletionStage<V> thenCombine(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)
thenCombine
in interface CompletionStage<T>
public <U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)
thenCombineAsync
in interface CompletionStage<T>
public <U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn, Executor executor)
thenCombineAsync
in interface CompletionStage<T>
public <U> CompletionStage<Void> thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)
thenAcceptBoth
in interface CompletionStage<T>
public <U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)
thenAcceptBothAsync
in interface CompletionStage<T>
public <U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action, Executor executor)
thenAcceptBothAsync
in interface CompletionStage<T>
public CompletionStage<Void> runAfterBoth(CompletionStage<?> other, Runnable action)
runAfterBoth
in interface CompletionStage<T>
public CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action)
runAfterBothAsync
in interface CompletionStage<T>
public CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)
runAfterBothAsync
in interface CompletionStage<T>
public <U> CompletionStage<U> applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)
applyToEither
in interface CompletionStage<T>
public <U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)
applyToEitherAsync
in interface CompletionStage<T>
public <U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)
applyToEitherAsync
in interface CompletionStage<T>
public CompletionStage<Void> acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)
acceptEither
in interface CompletionStage<T>
public CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)
acceptEitherAsync
in interface CompletionStage<T>
public CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)
acceptEitherAsync
in interface CompletionStage<T>
public CompletionStage<Void> runAfterEither(CompletionStage<?> other, Runnable action)
runAfterEither
in interface CompletionStage<T>
public CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action)
runAfterEitherAsync
in interface CompletionStage<T>
public CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)
runAfterEitherAsync
in interface CompletionStage<T>
public <U> CompletionStage<U> thenCompose(Function<? super T,? extends CompletionStage<U>> fn)
thenCompose
in interface CompletionStage<T>
public <U> CompletionStage<U> thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)
thenComposeAsync
in interface CompletionStage<T>
public <U> CompletionStage<U> thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn, Executor executor)
thenComposeAsync
in interface CompletionStage<T>
public CompletionStage<T> exceptionally(Function<Throwable,? extends T> fn)
exceptionally
in interface CompletionStage<T>
public CompletionStage<T> whenComplete(BiConsumer<? super T,? super Throwable> action)
whenComplete
in interface CompletionStage<T>
public CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,? super Throwable> action)
whenCompleteAsync
in interface CompletionStage<T>
public CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,? super Throwable> action, Executor executor)
whenCompleteAsync
in interface CompletionStage<T>
public <U> CompletionStage<U> handle(BiFunction<? super T,Throwable,? extends U> fn)
handle
in interface CompletionStage<T>
public <U> CompletionStage<U> handleAsync(BiFunction<? super T,Throwable,? extends U> fn)
handleAsync
in interface CompletionStage<T>
public <U> CompletionStage<U> handleAsync(BiFunction<? super T,Throwable,? extends U> fn, Executor executor)
handleAsync
in interface CompletionStage<T>
Copyright © 2019 OpenDaylight. All rights reserved.