Example usage for com.google.common.util.concurrent Futures addCallback

List of usage examples for com.google.common.util.concurrent Futures addCallback

Introduction

In this page you can find the example usage for com.google.common.util.concurrent Futures addCallback.

Prototype

public static <V> void addCallback(ListenableFuture<V> future, FutureCallback<? super V> callback) 

Source Link

Document

Registers separate success and failure callbacks to be run when the Future 's computation is java.util.concurrent.Future#isDone() complete or, if the computation is already complete, immediately.

Usage

From source file:de.xaniox.heavyspleef.core.persistence.MoreFutures.java

/**
 * Add a callback to a {@link ListenableFuture}
 * to be run on the bukkit main thread/*  w  ww .j  a  va  2  s .  c  om*/
 * 
 * @param plugin The plugin registering the callback
 * @param future The {@link ListenableFuture} to add this callback
 * @param callback The callback to be called
 */
public static <T> void addBukkitSyncCallback(final Plugin plugin, ListenableFuture<T> future,
        final FutureCallback<T> callback) {
    Futures.addCallback(future, new FutureCallback<T>() {
        @Override
        public void onFailure(final Throwable cause) {
            Bukkit.getScheduler().runTask(plugin, new Runnable() {

                @Override
                public void run() {
                    callback.onFailure(cause);
                }
            });
        }

        @Override
        public void onSuccess(final T result) {
            Bukkit.getScheduler().runTask(plugin, new Runnable() {

                @Override
                public void run() {
                    callback.onSuccess(result);
                }
            });
        }
    });
}

From source file:com.microsoft.office365.http.SharepointCookieCredentials.java

public static ListenableFuture<CookieCredentials> requestCredentials(String sharepointSiteUrl,
        Activity activity) {//from  w  w w .  j  a va 2  s. c  o  m
    final SettableFuture<CookieCredentials> future = SettableFuture.create();

    ListenableFuture<String> login = showLoginForCookies(activity, sharepointSiteUrl);

    Futures.addCallback(login, new FutureCallback<String>() {
        @Override
        public void onFailure(Throwable t) {
            future.setException(t);
        }

        @Override
        public void onSuccess(String cookies) {
            future.set(new CookieCredentials(cookies));
        }
    });

    return future;
}

From source file:net.javacrumbs.futureconverter.guavarx.ListenableFutureObservable.java

private static <T> OnSubscribe<T> onSubscribe(final ListenableFuture<T> listenableFuture) {
    return new Observable.OnSubscribe<T>() {
        @Override//from   w w  w . ja v  a 2  s .  c om
        public void call(final Subscriber<? super T> subscriber) {
            Futures.addCallback(listenableFuture, new FutureCallback<T>() {
                @Override
                public void onSuccess(T result) {
                    if (!subscriber.isUnsubscribed()) {
                        subscriber.onNext(result);
                        subscriber.onCompleted();
                    }
                }

                @Override
                public void onFailure(Throwable t) {
                    if (!subscriber.isUnsubscribed()) {
                        subscriber.onError(t);
                    }
                }
            });
        }
    };
}

From source file:com.noorq.casser.support.Scala.java

public static <T, A> Future<Fun.Tuple2<T, A>> asFuture(ListenableFuture<T> future, A a) {
    final scala.concurrent.Promise<Fun.Tuple2<T, A>> promise = new DefaultPromise<Fun.Tuple2<T, A>>();
    Futures.addCallback(future, new FutureCallback<T>() {
        @Override//from  www  . j  ava  2  s  .c  om
        public void onSuccess(T result) {
            promise.success(new Fun.Tuple2<T, A>(result, a));
        }

        @Override
        public void onFailure(Throwable t) {
            promise.failure(t);
        }
    });
    return promise.future();
}

From source file:com.microsoft.artcurator.net.MessagesLoader.java

/**
 * Replies to a Message/*w w  w. jav  a 2s  .co m*/
 *
 * @param client   the client to make the request
 * @param msgId    the Message to which the response should be sent
 * @param msgText  the body text of the outgoing Message
 * @param callback callback to notify on success/failure
 */
public static void replyAsync(OutlookClient client, String msgId, String msgText,
        FutureCallback<Integer> callback) {
    ListenableFuture<Integer> future = client.getMe().getFolder("Draft").getMessages().getById(msgId)
            .getOperations().reply(msgText);
    Futures.addCallback(future, callback);
}

From source file:org.opendaylight.netvirt.elan.utils.ElanClusterUtils.java

public static void runOnlyInLeaderNode(EntityOwnershipService entityOwnershipService, final Runnable job,
        final String jobDescription) {
    ListenableFuture<Boolean> checkEntityOwnerFuture = ClusteringUtils.checkNodeEntityOwner(
            entityOwnershipService, HwvtepSouthboundConstants.ELAN_ENTITY_TYPE,
            HwvtepSouthboundConstants.ELAN_ENTITY_NAME);
    Futures.addCallback(checkEntityOwnerFuture, new FutureCallback<Boolean>() {
        @Override//from ww  w  .j a v  a2s . co  m
        public void onSuccess(Boolean isOwner) {
            if (isOwner) {
                job.run();
            } else {
                LOG.trace("job is not run as i m not cluster owner desc :{} ", jobDescription);
            }
        }

        @Override
        public void onFailure(Throwable error) {
            LOG.error("Failed to identity cluster owner ", error);
        }
    });
}

From source file:io.druid.java.util.common.concurrent.ListenableFutures.java

/**
 * Guava 19 changes the Futures.transform signature so that the async form is different. This is here as a
 * compatability layer until such a time as druid only supports Guava 19 or later, in which case
 * Futures.transformAsync should be used
 *
 * This is NOT copied from guava./* w w w .  j a v  a  2  s .c o  m*/
 */
public static <I, O> ListenableFuture<O> transformAsync(final ListenableFuture<I> inFuture,
        final Function<I, ListenableFuture<O>> transform) {
    final SettableFuture<O> finalFuture = SettableFuture.create();
    Futures.addCallback(inFuture, new FutureCallback<I>() {
        @Override
        public void onSuccess(@Nullable I result) {
            final ListenableFuture<O> transformFuture = transform.apply(result);
            Futures.addCallback(transformFuture, new FutureCallback<O>() {
                @Override
                public void onSuccess(@Nullable O result) {
                    finalFuture.set(result);
                }

                @Override
                public void onFailure(Throwable t) {
                    finalFuture.setException(t);
                }
            });
        }

        @Override
        public void onFailure(Throwable t) {
            finalFuture.setException(t);
        }
    });
    return finalFuture;
}

From source file:com.microsoft.sharepointservices.http.SharepointCookieCredentials.java

/**
 * Request credentials./*from w  w w. j  a  v a  2  s .  c o m*/
 *
 * @param sharepointSiteUrl the sharepoint site url
 * @param activity the activity
 * @return the listenable future
 */
public static ListenableFuture<CookieCredentials> requestCredentials(String sharepointSiteUrl,
        Activity activity) {
    final SettableFuture<CookieCredentials> future = SettableFuture.create();

    ListenableFuture<String> login = showLoginForCookies(activity, sharepointSiteUrl);

    Futures.addCallback(login, new FutureCallback<String>() {
        @Override
        public void onFailure(Throwable t) {
            future.setException(t);
        }

        @Override
        public void onSuccess(String cookies) {
            future.set(new CookieCredentials(cookies));
        }
    });

    return future;
}

From source file:com.torodb.common.util.ListeningFutureToCompletableFuture.java

public static <T> CompletableFuture<T> toCompletableFuture(final ListenableFuture<T> listenableFuture) {
    //create an instance of CompletableFuture
    CompletableFuture<T> completable = new CompletableFuture<T>() {
        @Override/*from ww  w .  ja v a  2 s. c  o  m*/
        public boolean cancel(boolean mayInterruptIfRunning) {
            // propagate cancel to the listenable future
            boolean result = listenableFuture.cancel(mayInterruptIfRunning);
            super.cancel(mayInterruptIfRunning);
            return result;
        }
    };

    // add callback
    Futures.addCallback(listenableFuture, new FutureCallback<T>() {
        @Override
        @SuppressFBWarnings("NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE")
        public void onSuccess(T result) {
            completable.complete(result);
        }

        @Override
        public void onFailure(Throwable t) {
            completable.completeExceptionally(t);
        }
    });
    return completable;
}

From source file:com.microsoft.azure.hdinsight.common.task.TaskExecutor.java

public static <T> ListenableFuture<T> submit(@NotNull Task<T> task) {
    final ListenableFuture<T> listenableFuture = executors.submit(task);
    Futures.addCallback(listenableFuture, task.callback);
    return listenableFuture;
}