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:io.crate.executor.transport.task.UpdateTask.java

@Override
public void start() {
    if (subTasks.size() == 0) {
        result.set(RowCountResult.EMPTY_RESULT);
        return;/*from   w w  w  . j  a  v  a2s. c o m*/
    }
    final List<ListenableFuture<TaskResult>> subTasksResult = transportExecutor.execute(subTasks);
    Futures.addCallback(Futures.allAsList(subTasksResult), new FutureCallback<List<TaskResult>>() {
        @Override
        public void onSuccess(@Nullable List<TaskResult> results) {
            if (results == null) {
                result.setException(new NullPointerException());
                return;
            }
            assert results.size() == 1 : "Last sub-task is expected to have 1 result only";
            result.set(new RowCountResult(((Number) results.get(0).rows()[0][0]).longValue()));
        }

        @Override
        public void onFailure(@Nonnull Throwable t) {
            if (t == null) {
                t = new NullPointerException();
            }
            result.setException(t);
        }
    });
}

From source file:com.google.devtools.build.lib.concurrent.MoreFutures.java

/**
 * Creates a new {@code ListenableFuture} whose value is a list containing the
 * values of all its input futures, if all succeed. If any input fails, the
 * returned future fails. If any of the futures fails, it cancels all the other futures.
 *
 * <p> This method is similar to {@code Futures.allAsList} but additionally it cancels all the
 * futures in case any of them fails./*from   www.  ja v  a2 s  . c  om*/
 */
public static <V> ListenableFuture<List<V>> allAsListOrCancelAll(
        final Iterable<? extends ListenableFuture<? extends V>> futures) {
    ListenableFuture<List<V>> combinedFuture = Futures.allAsList(futures);
    Futures.addCallback(combinedFuture, new FutureCallback<List<V>>() {
        @Override
        public void onSuccess(@Nullable List<V> vs) {
        }

        /**
         * In case of a failure of any of the futures (that gets propagated to combinedFuture) we
         * cancel all the futures in the list.
         */
        @Override
        public void onFailure(Throwable ignore) {
            for (ListenableFuture<? extends V> future : futures) {
                future.cancel(true);
            }
        }
    });
    return combinedFuture;
}

From source file:io.crate.executor.task.DDLTask.java

@Override
public void execute(final RowReceiver rowReceiver, Row parameters) {
    ListenableFuture<Long> future = ddlStatementDispatcher.dispatch(analyzedStatement, jobId());
    Futures.addCallback(future, new OneRowActionListener<>(rowReceiver, new Function<Long, Row>() {
        @Nullable/*from   w  ww  .  jav  a2  s .  c o  m*/
        @Override
        public Row apply(@Nullable Long input) {
            return new Row1(input == null ? -1 : input);
        }
    }));
}

From source file:org.jclouds.compute.extensions.internal.DelegatingImageExtension.java

public ListenableFuture<Image> createImage(ImageTemplate template) {
    ListenableFuture<Image> future = delegate.createImage(template);
    Futures.addCallback(future, new FutureCallback<Image>() {
        @Override//www. j a va  2 s.  c  o  m
        public void onSuccess(Image result) {
            imageCache.registerImage(result);
        }

        @Override
        public void onFailure(Throwable t) {

        }
    });
    return future;
}

From source file:com.microsoft.office365.starter.FilesFolders.O365FileListModel.java

public void postUpdatedFileContents(final O365APIsStart_Application application, final Activity currentActivity,
        SharePointClient fileClient, final String updatedContents) {
    ListenableFuture<Void> future = fileClient.getfiles().getById(application.getDisplayedFile().getId())
            .asFile().putContent(updatedContents.getBytes());

    Futures.addCallback(future, new FutureCallback<Void>() {
        @Override//from ww w.  j  av  a2 s .c  om
        public void onFailure(Throwable t) {
            Log.e("Asset", t.getMessage());
            // Notify caller that the Event update operation failed
            OperationResult opResult = new OperationResult("Post updated file contents",
                    "failed: " + APIErrorMessageHelper.getErrorMessage(t.getMessage()), "");
            mEventOperationCompleteListener.onOperationComplete(opResult);
        }

        @Override
        public void onSuccess(Void v) {
            // Update file contents in model
            O365FileModel fileItem = mApplication.getDisplayedFile();
            fileItem.setContents(currentActivity, updatedContents);
            // Notify caller that the Event update operation is complete and
            // succeeded
            OperationResult opResult = new OperationResult("Post updated file contents",
                    "Posted updated file contents", "FileContentsUpdate");
            mEventOperationCompleteListener.onOperationComplete(opResult);
        }
    });

}

From source file:org.opendaylight.ocpplugin.impl.services.SalFaultMgmtServiceImpl.java

@Override
public Future<RpcResult<GetFaultOutput>> getFault(final GetFaultInput input) {
    ListenableFuture<RpcResult<org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.protocol.rev150811.GetFaultOutput>> future = getFault
            .handleServiceCall(input);//from  w  w  w .j  a va2 s . c  o  m
    final SettableFuture<RpcResult<GetFaultOutput>> finalFuture = SettableFuture.create();
    Futures.addCallback(future,
            new FutureCallback<RpcResult<org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.protocol.rev150811.GetFaultOutput>>() {
                @Override
                public void onSuccess(
                        final RpcResult<org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.protocol.rev150811.GetFaultOutput> result) {
                    org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.protocol.rev150811.GetFaultOutput output = result
                            .getResult();
                    GetFaultOutputBuilder builder = new GetFaultOutputBuilder();
                    builder.setObj(output.getObj());
                    builder.setResult(output.getResult());
                    RpcResultBuilder<GetFaultOutput> rpcResultBuilder = RpcResultBuilder.success(builder);
                    finalFuture.set(rpcResultBuilder.build());
                }

                @Override
                public void onFailure(final Throwable t) {
                    RpcResultBuilder<GetFaultOutput> rpcResultBuilder = RpcResultBuilder.failed();
                    finalFuture.set(rpcResultBuilder.build());
                }
            });

    return finalFuture;
}

From source file:com.microsoft.windowsazure.mobileservices.zumoe2etestapp.framework.LogServiceFilter.java

@Override
public ListenableFuture<ServiceFilterResponse> handleRequest(ServiceFilterRequest request,
        NextServiceFilterCallback nextServiceFilterCallback) {

    final SettableFuture<ServiceFilterResponse> resultFuture = SettableFuture.create();

    String content = request.getContent();
    if (content == null)
        content = "NULL";

    String url = request.getUrl();
    if (url == null)
        url = "";

    Log.d("REQUEST URL", url);
    Log.d("REQUEST CONTENT", content);

    ListenableFuture<ServiceFilterResponse> nextServiceFilterCallbackFuture = nextServiceFilterCallback
            .onNext(request);/*  w w w.  ja  v a  2  s  .  c om*/

    Futures.addCallback(nextServiceFilterCallbackFuture, new FutureCallback<ServiceFilterResponse>() {

        @Override
        public void onFailure(Throwable exception) {
            resultFuture.setException(exception);

        }

        @Override
        public void onSuccess(ServiceFilterResponse response) {
            if (response != null) {
                String content = response.getContent();
                if (content != null) {
                    Log.d("RESPONSE CONTENT", content);
                }
            }

            resultFuture.set(response);
        }
    });

    return resultFuture;
}

From source file:org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.MonitoringToMdsalWriter.java

@Override
public void close() {
    final WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
    tx.delete(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(NetconfState.class));
    final CheckedFuture<Void, TransactionCommitFailedException> submit = tx.submit();

    Futures.addCallback(submit, new FutureCallback<Void>() {
        @Override/*from  www . jav a2  s.c  o  m*/
        public void onSuccess(final Void aVoid) {
            LOG.debug("Netconf state cleared successfully");
        }

        @Override
        public void onFailure(final Throwable throwable) {
            LOG.warn("Unable to clear netconf state", throwable);
        }
    });
}

From source file:us.physion.ovation.ui.editor.NewProtocolAction.java

@Override
public void actionPerformed(final ActionEvent e) {
    DataContext ctx = Lookup.getDefault().lookup(ConnectionProvider.class).getDefaultContext();
    final Protocol p = ctx.insertProtocol(Bundle.CTL_NewProtocolName(), "");

    ListenableFuture<Void> reset = BrowserUtilities.reloadView(BrowserUtilities.PROTOCOL_BROWSER_ID);
    Futures.addCallback(reset, new FutureCallback<Void>() {

        @Override/*from w  ww  .  j  a  v  a  2s . c o  m*/
        public void onSuccess(Void result) {
            selectNode(p, BrowserUtilities.PROTOCOL_BROWSER_ID);
        }

        @Override
        public void onFailure(Throwable t) {
            LoggerFactory.getLogger(NewProjectAction.class).error("Unable to reset view", t);
        }
    });
}

From source file:us.physion.ovation.ui.editor.NewSourceAction.java

@Override
public void actionPerformed(final ActionEvent e) {
    DataContext ctx = Lookup.getDefault().lookup(ConnectionProvider.class).getDefaultContext();

    final Source s = ctx.insertSource(Bundle.CTL_NewSourceLabel(), "");

    ListenableFuture<Void> reset = BrowserUtilities.reloadView(BrowserUtilities.SOURCE_BROWSER_ID);
    Futures.addCallback(reset, new FutureCallback<Void>() {

        @Override//from w w  w.j av  a  2  s. c o  m
        public void onSuccess(Void result) {
            selectNode(s, BrowserUtilities.SOURCE_BROWSER_ID);
        }

        @Override
        public void onFailure(Throwable t) {
            LoggerFactory.getLogger(NewProjectAction.class).error("Unable to reset view", t);
        }
    });
}