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:eu.point.registry.impl.LinkRegistryUtils.java

/**
 * The method which initializes the registry data tree.
 *//*from  w  w  w . ja  v a2  s. co m*/
public void initializeDataTree() {
    LOG.debug("Preparing to initialize the Link registry");
    WriteTransaction transaction = db.newWriteOnlyTransaction();
    InstanceIdentifier<LinkRegistry> iid = InstanceIdentifier.create(LinkRegistry.class);
    LinkRegistry greetingRegistry = new LinkRegistryBuilder().build();
    transaction.put(LogicalDatastoreType.OPERATIONAL, iid, greetingRegistry);
    CheckedFuture<Void, TransactionCommitFailedException> future = transaction.submit();
    Futures.addCallback(future, new LoggingFuturesCallBack<>("Failed to create Link registry", LOG));
}

From source file:io.crate.executor.task.join.NestedLoopTask.java

@Override
public void start(PageInfo pageInfo) {
    Futures.addCallback(operation.execute(Optional.of(pageInfo)), new ForwardingFutureCallback<>(result));
}

From source file:com.microsoft.office365.connect.SendMailActivity.java

/**
 * Handler for the onclick event of the send mail button. It locates the service endpoints
 * for the mail service using the DiscoveryController class. It also uses the MailController
 * class to send an email to the address stored in the mEmailEditText view.
 * The subject and body of the message is stored in the strings.xml file.
 * @param v//from w  ww  .j  av a  2 s .c  om
 */
public void onSendMailButtonClick(View v) {
    final SettableFuture<ServiceInfo> serviceDiscovered;

    resetUIForSendMail();

    serviceDiscovered = DiscoveryController.getInstance().getServiceInfo(Constants.MAIL_CAPABILITY);

    Futures.addCallback(serviceDiscovered, new FutureCallback<ServiceInfo>() {
        @Override
        public void onSuccess(ServiceInfo serviceInfo) {
            Log.i(TAG, "onSendMailButtonClick - Mail service discovered");
            showDiscoverSuccessUI();

            MailController.getInstance().setServiceResourceId(serviceInfo.getserviceResourceId());
            MailController.getInstance().setServiceEndpointUri(serviceInfo.getserviceEndpointUri());

            try {
                // Since we are no longer on the UI thread,
                // we can call this method synchronously without blocking the UI
                Boolean mailSent = MailController.getInstance()
                        .sendMail(mEmailEditText.getText().toString(),
                                getResources().getString(R.string.mail_subject_text),
                                MessageFormat.format(getResources().getString(R.string.mail_body_text),
                                        getIntent().getStringExtra("givenName")))
                        .get();
                Log.i(TAG, "sendMailToRecipient - Mail sent");
                showSendMailSuccessUI();
            } catch (InterruptedException | ExecutionException e) {
                Log.e(TAG, "onSendMailButtonClick - " + e.getMessage());
                showSendMailErrorUI();
            }
        }

        @Override
        public void onFailure(final Throwable t) {
            Log.e(TAG, "onSendMailButtonClick - " + t.getMessage());
            showDiscoverErrorUI();
        }
    });
}

From source file:com.google.bitcoin.utils.MockTransactionBroadcaster.java

@Override
public SettableFuture<Transaction> broadcastTransaction(Transaction tx) {
    // Use a lock just to catch lock ordering inversions e.g. wallet->broadcaster.
    lock.lock();//from w  ww. j  av a 2s  .c  o m
    try {
        SettableFuture<Transaction> result = SettableFuture.create();
        broadcasts.put(new TxFuturePair(tx, result));
        Futures.addCallback(result, new FutureCallback<Transaction>() {
            @Override
            public void onSuccess(Transaction result) {
                try {
                    wallet.receivePending(result, null);
                } catch (VerificationException e) {
                    throw new RuntimeException(e);
                }
            }

            @Override
            public void onFailure(Throwable t) {
            }
        });
        return result;
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    } finally {
        lock.unlock();
    }
}

From source file:io.crate.jobs.CountContext.java

@Override
public void innerStart() {
    try {//from  w  w w .j av  a 2s.  c  o  m
        countFuture = countOperation.count(indexShardMap, whereClause);
    } catch (IOException | InterruptedException e) {
        throw Throwables.propagate(e);
    }
    Futures.addCallback(countFuture, new FutureCallback<Long>() {
        @Override
        public void onSuccess(@Nullable Long result) {
            rowReceiver.setNextRow(new Row1(result));
            close();
        }

        @Override
        public void onFailure(@Nonnull Throwable t) {
            close(t);
        }
    });
}

From source file:org.opendaylight.openflowplugin.impl.services.FlowService.java

ListenableFuture<RpcResult<O>> processFlowModInputBuilders(final List<FlowModInputBuilder> ofFlowModInputs) {
    final List<ListenableFuture<RpcResult<O>>> partialFutures = new ArrayList<>(ofFlowModInputs.size());

    for (final FlowModInputBuilder flowModInputBuilder : ofFlowModInputs) {
        partialFutures.add(handleServiceCall(flowModInputBuilder));
    }//from  www  .j a  v a2s  .  com

    final ListenableFuture<List<RpcResult<O>>> allFutures = Futures.successfulAsList(partialFutures);
    final SettableFuture<RpcResult<O>> finalFuture = SettableFuture.create();
    Futures.addCallback(allFutures, new FutureCallback<List<RpcResult<O>>>() {
        @Override
        public void onSuccess(final List<RpcResult<O>> results) {
            final ArrayList<RpcError> errors = new ArrayList();
            for (RpcResult<O> flowModResult : results) {
                if (flowModResult == null) {
                    errors.add(RpcResultBuilder.newError(RpcError.ErrorType.PROTOCOL,
                            OFConstants.APPLICATION_TAG, "unexpected flowMod result (null) occurred"));
                } else if (!flowModResult.isSuccessful()) {
                    errors.addAll(flowModResult.getErrors());
                }
            }

            final RpcResultBuilder<O> rpcResultBuilder;
            if (errors.isEmpty()) {
                rpcResultBuilder = RpcResultBuilder.success();
            } else {
                rpcResultBuilder = RpcResultBuilder.<O>failed().withRpcErrors(errors);
            }

            finalFuture.set(rpcResultBuilder.build());
        }

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

    return finalFuture;
}

From source file:io.v.android.impl.google.services.beam.BeamActivity.java

@Override
public void onResume() {
    super.onResume();
    NdefMessage msgs[] = null;/*from w w  w  .  j a v  a 2 s.com*/
    Intent intent = getIntent();

    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if (rawMsgs != null) {
            msgs = new NdefMessage[rawMsgs.length];
            for (int i = 0; i < rawMsgs.length; i++) {
                msgs[i] = (NdefMessage) rawMsgs[i];
            }
        }
    }
    if (msgs == null) {
        Log.d(TAG, "No ndef messages");
        finish();
        return;
    }
    VBeamManager.Data data = null;
    for (NdefMessage m : msgs) {
        data = VBeamManager.decodeMessage(m);
        if (data != null)
            break;
    }
    if (data == null) {
        Log.w(TAG, "Unable to deserialize data");
        finish();
        return;
    }
    Log.d(TAG, "connecting to " + data.name);
    VContext ctx = V.init(this).withTimeout(Duration.standardSeconds(2));
    Options opts = new Options();

    opts.set(OptionDefs.SERVER_AUTHORIZER, VSecurity.newPublicKeyAuthorizer(data.key));
    IntentBeamerClient client = IntentBeamerClientFactory.getIntentBeamerClient(data.name);
    ListenableFuture<IntentBeamerClient.GetIntentOut> out = client.getIntent(ctx, data.secret, opts);
    Futures.addCallback(out, new FutureCallback<IntentBeamerClient.GetIntentOut>() {
        @Override
        public void onSuccess(IntentBeamerClient.GetIntentOut result) {
            try {
                Log.d(TAG, "got intent " + result.intentUri);
                int flags = 0;
                if (result.intentUri.startsWith("intent:")) {
                    flags = Intent.URI_INTENT_SCHEME;
                } else {
                    flags = Intent.URI_ANDROID_APP_SCHEME;
                }
                Intent resultIntent = Intent.parseUri(result.intentUri, flags);
                resultIntent.putExtra(VBeamManager.EXTRA_VBEAM_PAYLOAD, result.payload);
                startActivity(resultIntent);
                finish();
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }

        @Override
        public void onFailure(Throwable t) {
            t.printStackTrace();
            finish();
        }
    });
}

From source file:io.crate.autocomplete.TransportSQLAutoCompleteAction.java

@Override
protected void doExecute(SQLAutoCompleteRequest request,
        final ActionListener<SQLAutoCompleteResponse> listener) {
    try {//from w w w  .ja v  a2s.  c  o m
        ListenableFuture<CompletionResult> completionFuture = autoCompleter.complete(request.statement());
        Futures.addCallback(completionFuture, new FutureCallback<CompletionResult>() {
            @Override
            public void onSuccess(@Nullable CompletionResult result) {
                assert result != null;
                listener.onResponse(new SQLAutoCompleteResponse(result.startIdx(), result.completions()));
            }

            @Override
            public void onFailure(@Nonnull Throwable t) {
                listener.onFailure(t);
            }
        });
    } catch (Throwable e) {
        listener.onFailure(e);
    }
}

From source file:org.robotninjas.concurrent.FluentFutureTask.java

@Override
public FluentFuture<V> addCallback(FutureCallback<V> callback) {
    Futures.addCallback(this, callback);
    return this;
}

From source file:org.apache.flink.streaming.connectors.cassandra.CassandraSinkBase.java

@Override
public void invoke(IN value) throws Exception {
    if (exception != null) {
        throw new IOException("invoke() failed", exception);
    }/*from w  w w .  jav  a 2 s  .c  o m*/
    ListenableFuture<V> result = send(value);
    Futures.addCallback(result, callback);
}