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(final ListenableFuture<V> future, final FutureCallback<? super V> callback,
        Executor executor) 

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:com.salesforce.grpc.contrib.FutureChain.java

/**
 * @see Futures#addCallback(ListenableFuture, FutureCallback, Executor)
 *///from   w  w  w.  ja  v a 2 s. c o  m
public FutureChain<T> addCallback(FutureCallback<? super T> callback) {
    Futures.addCallback(future, callback, executor);
    return this;
}

From source file:com.netflix.genie.agent.execution.services.impl.grpc.GRpcAgentJobKillServiceImpl.java

private void registerForRemoteKillNotification(final String jobId) {

    final ListenableFuture<JobKillRegistrationResponse> future = this.client
            .registerForKillNotification(JobKillRegistrationRequest.newBuilder().setJobId(jobId).build());

    cancelPreviousAndUpdateJobKillFuture(future);

    Futures.addCallback(future, new JobKillFutureCallback(jobId), this.killTaskExecutor);
}

From source file:com.skcraft.concurrency.DeferredImpl.java

@Override
public Deferred<I> handleAsync(final Callback<I> onSuccess, final Callback<Throwable> onFailure,
        ListeningExecutorService executor) {
    Futures.addCallback(future, new FutureCallback<I>() {
        @Override//w  w w .  ja va2s  .c  o m
        public void onSuccess(I result) {
            onSuccess.handle(result);
        }

        @Override
        public void onFailure(Throwable t) {
            onFailure.handle(t);
        }
    }, executor);

    return this;
}

From source file:com.orangerhymelabs.helenus.cassandra.table.TableService.java

public void read(String database, String table, FutureCallback<Table> callback) {
    Futures.addCallback(read(database, table), callback, MoreExecutors.directExecutor());
}

From source file:com.skcraft.plume.common.util.concurrent.DeferredImpl.java

@Override
public Deferred<I> done(Callback<I> onSuccess, ListeningExecutorService executor) {
    Futures.addCallback(future, new FutureCallback<I>() {
        @Override/*from w ww . j  a v  a2  s .  co  m*/
        public void onSuccess(I result) {
            try {
                onSuccess.handle(result);
            } catch (Exception e) {
                log.log(Level.WARNING, "Exception thrown during callback", e);
            }
        }

        @Override
        public void onFailure(Throwable t) {
        }
    }, executor);

    return this;
}

From source file:com.orangerhymelabs.helenus.cassandra.database.DatabaseService.java

public void delete(String name, FutureCallback<Boolean> callback) {
    Futures.addCallback(delete(name), callback, MoreExecutors.directExecutor());
}

From source file:com.android.tools.idea.apk.viewer.ApkViewPanel.java

public ApkViewPanel(@NotNull ApkParser apkParser) {
    // construct the main tree along with the uncompressed sizes
    ListenableFuture<DefaultMutableTreeNode> treeStructureFuture = apkParser.constructTreeStructure();
    FutureCallBackAdapter<DefaultMutableTreeNode> setRootNode = new FutureCallBackAdapter<DefaultMutableTreeNode>() {
        @Override/*w  w  w.j a v a2  s  . c om*/
        public void onSuccess(DefaultMutableTreeNode result) {
            setRootNode(result);
        }
    };
    Futures.addCallback(treeStructureFuture, setRootNode, EdtExecutor.INSTANCE);

    // in parallel, kick off computation of the compressed archive, and once its available, refresh the tree
    ListenableFuture<DefaultMutableTreeNode> compressedTreeFuture = apkParser
            .constructTreeStructureWithCompressedSizes();
    FutureCallBackAdapter<DefaultMutableTreeNode> refreshTree = new FutureCallBackAdapter<DefaultMutableTreeNode>() {
        @Override
        public void onSuccess(DefaultMutableTreeNode result) {
            refreshTree();
        }
    };
    Futures.addCallback(compressedTreeFuture, refreshTree, EdtExecutor.INSTANCE);

    mySizeComponent.setToolTipText(AndroidBundle.message("apk.viewer.size.types.tooltip"));
    myContainer.setBorder(IdeBorderFactory.createBorder(SideBorder.BOTTOM));

    myCompareWithButton.addActionListener(e -> {
        if (myListener != null) {
            myListener.selectApkAndCompare();
        }
    });

    // identify and set the application name and version
    myNameAsyncIcon.setVisible(true);
    myNameComponent.append("Parsing Manifest");
    Futures.addCallback(apkParser.getApplicationInfo(), new FutureCallBackAdapter<AndroidApplicationInfo>() {
        @Override
        public void onSuccess(AndroidApplicationInfo result) {
            setAppInfo(result);
        }
    }, EdtExecutor.INSTANCE);

    // obtain and set the download size
    mySizeAsyncIcon.setVisible(true);
    mySizeComponent.append("Estimating download size..");
    Futures.addCallback(
            Futures.successfulAsList(apkParser.getUncompressedApkSize(), apkParser.getCompressedFullApkSize()),
            new FutureCallBackAdapter<List<Long>>() {
                @Override
                public void onSuccess(List<Long> result) {
                    long uncompressed = result.get(0);
                    Long compressed = result.get(1);
                    setApkSizes(uncompressed, compressed == null ? 0 : compressed.longValue());
                }
            }, EdtExecutor.INSTANCE);
}

From source file:com.orangerhymelabs.helenus.cassandra.view.ViewService.java

public void readAll(String database, String table, FutureCallback<List<View>> callback) {
    Futures.addCallback(readAll(database, table), callback, MoreExecutors.directExecutor());
}

From source file:org.whispersystems.textsecuregcm.push.APNSender.java

public ListenableFuture<ApnResult> sendMessage(final ApnMessage message) throws TransientPushFailureException {
    String topic = bundleId;/* w  w  w.j  av a 2 s.c  o m*/

    if (message.isVoip()) {
        topic = topic + ".voip";
    }

    ListenableFuture<ApnResult> future = apnsClient.send(message.getApnId(), topic, message.getMessage(),
            new Date(message.getExpirationTime()));

    Futures.addCallback(future, new FutureCallback<ApnResult>() {
        @Override
        public void onSuccess(@Nullable ApnResult result) {
            if (result == null) {
                logger.warn("*** RECEIVED NULL APN RESULT ***");
            } else if (result.getStatus() == ApnResult.Status.NO_SUCH_USER) {
                handleUnregisteredUser(message.getApnId(), message.getNumber(), message.getDeviceId());
            } else if (result.getStatus() == ApnResult.Status.GENERIC_FAILURE) {
                logger.warn("*** Got APN generic failure: " + result.getReason() + ", " + message.getNumber());
            }
        }

        @Override
        public void onFailure(@Nullable Throwable t) {
            logger.warn("Got fatal APNS exception", t);
        }
    }, executor);

    return future;
}

From source file:com.android.contacts.util.concurrent.ListenableFutureLoader.java

@Override
protected void onForceLoad() {
    mFuture = loadData();/*from w w  w .  j ava2  s. co m*/
    Futures.addCallback(mFuture, new FutureCallback<D>() {
        @Override
        public void onSuccess(D result) {
            if (mLoadedData == null || !isSameData(mLoadedData, result)) {
                deliverResult(result);
            }
            mLoadedData = result;
            commitContentChanged();
        }

        @Override
        public void onFailure(Throwable t) {
            if (t instanceof CancellationException) {
                Log.i(TAG, "Loading cancelled", t);
                rollbackContentChanged();
            } else {
                Log.e(TAG, "Loading failed", t);
            }
        }
    }, mUiExecutor);
}