List of usage examples for com.google.common.util.concurrent Futures addCallback
public static <V> void addCallback(final ListenableFuture<V> future, final FutureCallback<? super V> callback, Executor executor)
From source file:org.thingsboard.server.kafka.AsyncCallbackTemplate.java
public static <T> void withCallback(ListenableFuture<T> future, Consumer<T> onSuccess, Consumer<Throwable> onFailure, Executor executor) { FutureCallback<T> callback = new FutureCallback<T>() { @Override/*from w w w. ja v a 2 s . c om*/ public void onSuccess(T result) { try { onSuccess.accept(result); } catch (Throwable th) { onFailure(th); } } @Override public void onFailure(Throwable t) { onFailure.accept(t); } }; if (executor != null) { Futures.addCallback(future, callback, executor); } else { Futures.addCallback(future, callback); } }
From source file:org.opendaylight.sfc.genius.impl.utils.SfcGeniusUtils.java
/** * Adapts a {@link ListenableFuture} to a {@link CompletableFuture}. The * provided executor is used to execute the callback as per * {@link Futures#addCallback(ListenableFuture, FutureCallback, Executor)} * On such callback, completion will be performed. * * @param listenableFuture// w w w .j a v a 2s . c om * the listenable future to adapt. * @param executor * the executor where the callback execution is submitted. * @param <T> * the type of the listenable future. * @return the completable future. */ public static <T> CompletableFuture<T> toCompletableFuture(final ListenableFuture<T> listenableFuture, Executor executor) { CompletableFuture<T> completable = new CompletableFuture<T>() { @Override public boolean cancel(boolean mayInterruptIfRunning) { boolean result = listenableFuture.cancel(mayInterruptIfRunning); super.cancel(mayInterruptIfRunning); return result; } }; Futures.addCallback(listenableFuture, new FutureCallback<T>() { @Override public void onSuccess(@Nullable T listenable) { completable.complete(listenable); } @Override public void onFailure(Throwable throwable) { completable.completeExceptionally(throwable); } }, executor); return completable; }
From source file:org.opendaylight.netconf.topology.impl.OnlySuccessStateAggregator.java
@Override public ListenableFuture<Node> combineCreateAttempts(List<ListenableFuture<Node>> stateFutures) { final SettableFuture<Node> future = SettableFuture.create(); final ListenableFuture<List<Node>> allAsList = Futures.allAsList(stateFutures); Futures.addCallback(allAsList, new FutureCallback<List<Node>>() { @Override/* w ww . ja v a2 s .co m*/ public void onSuccess(List<Node> result) { for (int i = 0; i < result.size() - 1; i++) { if (!result.get(i).equals(result.get(i + 1))) { future.setException(new IllegalStateException("Create futures have different result")); } } future.set(result.get(0)); } @Override public void onFailure(Throwable t) { LOG.error("One of the combined create attempts failed {}", t); future.setException(t); } }, TypedActor.context().dispatcher()); return future; }
From source file:io.airlift.http.server.AsyncResponseHandler.java
public static AsyncResponseHandler bindAsyncResponse(AsyncResponse asyncResponse, ListenableFuture<?> futureResponse, Executor httpResponseExecutor) { FutureCallback<Object> callback = toFutureCallback(asyncResponse); Futures.addCallback(futureResponse, callback, httpResponseExecutor); return new AsyncResponseHandler(asyncResponse, futureResponse); }
From source file:com.orangerhymelabs.helenus.cassandra.database.DatabaseService.java
public void exists(String name, FutureCallback<Boolean> callback) { Futures.addCallback(exists(name), callback, MoreExecutors.directExecutor()); }
From source file:com.ecomnext.play.futures.GuavaFutures.java
/** * Converts a {@link ListenableFuture} into a {@link Future}. * @param lf the {@link ListenableFuture} to register a listener on. * @param executor the {@link Executor} where the callback will be executed. * @return a {@link Future} that emits the value when the future completes. *///from w ww .j a va2 s. c o m public static <V> Future<V> asScalaFuture(final ListenableFuture<V> lf, final Executor executor) { Promise<V> promise = akka.dispatch.Futures.promise(); Futures.addCallback(lf, new FutureCallbackAdapter<>(promise), executor); return promise.future(); }
From source file:com.salesforce.grpc.contrib.MoreFutures.java
/** * Registers separate success and failure callbacks to be run when the {@code Future}'s * computation is {@linkplain java.util.concurrent.Future#isDone() complete} or, if the * computation is already complete, immediately. * * @see Futures#addCallback(ListenableFuture, FutureCallback, Executor) * @param future The future attach the callback to. * @param success A {@link Consumer} to execute when the future succeeds. * @param failure A {@link Consumer} to execute when the future fails. * @param executor The executor to run {@code callback} when the future completes. *//*from ww w.j a va 2 s . co m*/ public static <V> void addCallback(@Nonnull final ListenableFuture<V> future, @Nonnull final Consumer<V> success, @Nonnull final Consumer<Throwable> failure, @Nonnull final Executor executor) { checkNotNull(future, "future"); checkNotNull(success, "success"); checkNotNull(failure, "failure"); checkNotNull(executor, "executor"); FutureCallback<V> futureCallback = new FutureCallback<V>() { @Override public void onSuccess(V result) { success.accept(result); } @Override public void onFailure(Throwable t) { failure.accept(t); } }; Futures.addCallback(future, futureCallback, executor); }
From source file:org.glowroot.central.util.MoreFutures.java
public static <V> ListenableFuture<V> onFailure(ListenableFuture<V> future, Runnable onFailure) { SettableFuture<V> outerFuture = SettableFuture.create(); Futures.addCallback(future, new FutureCallback<V>() { @Override//from w w w . ja va 2 s .c om public void onSuccess(V result) { outerFuture.set(result); } @Override public void onFailure(Throwable t) { logger.debug(t.getMessage(), t); onFailure.run(); outerFuture.setException(t); } }, MoreExecutors.directExecutor()); return outerFuture; }
From source file:net.javacrumbs.futureconverter.java8guava.FutureConverter.java
private static <T> CompletableFuture<T> buildCompletableFutureFromListenableFuture( final ListenableFuture<T> listenableFuture) { CompletableFuture<T> completable = new CompletableListenableFuture<T>(listenableFuture); Futures.addCallback(listenableFuture, new FutureCallback<T>() { @Override//from w w w. j ava 2s . c o m public void onSuccess(T result) { completable.complete(result); } @Override public void onFailure(Throwable t) { completable.completeExceptionally(t); } }, MoreExecutors.directExecutor()); return completable; }
From source file:com.orangerhymelabs.helenus.cassandra.view.ViewService.java
public void create(View view, FutureCallback<View> callback) { Futures.addCallback(create(view), callback, MoreExecutors.directExecutor()); }