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:org.apache.bookkeeper.clients.utils.RpcUtils.java

public static <T, ReqT, RespT, ServiceT> void processRpc(ServiceT service, CompletableFuture<T> result,
        CreateRequestFunc<ReqT> createRequestFunc, ProcessRequestFunc<ReqT, RespT, ServiceT> processRequestFunc,
        ProcessResponseFunc<RespT, T> processResponseFunc) {
    ReqT request = createRequestFunc.apply();
    ListenableFuture<RespT> resultFuture = processRequestFunc.process(service, request);
    Futures.addCallback(resultFuture, new FutureCallback<RespT>() {
        @Override//  w w w  .ja v  a  2s  .com
        public void onSuccess(RespT resp) {
            processResponseFunc.process(resp, result);
        }

        @Override
        public void onFailure(Throwable throwable) {
            GrpcUtils.processRpcException(throwable, result);
        }
    });
}

From source file:com.datastax.driver.core.ChainedResultSetFuture.java

void setSource(ResultSetFuture source) {
    if (this.isCancelled())
        source.cancel(false);/*  w  ww  . jav a2s .c  o  m*/
    this.source = source;
    Futures.addCallback(source, new FutureCallback<ResultSet>() {
        @Override
        public void onSuccess(ResultSet result) {
            ChainedResultSetFuture.this.set(result);
        }

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

From source file:org.apache.bookkeeper.common.util.ListenableFutures.java

/**
 * Convert a {@link ListenableFuture} to a {@link CompletableFuture} and do a transformation.
 *
 * @param listenableFuture listenable future
 * @param mapFn            a map function that transform results
 * @return the completable future after transformation.
 */// w  ww . j av  a2s.  co  m
public static <T, R> CompletableFuture<R> fromListenableFuture(ListenableFuture<T> listenableFuture,
        Function<? super T, ? extends R> mapFn) {
    CompletableFuture<R> completableFuture = createFuture();
    Futures.addCallback(listenableFuture, new FutureCallback<T>() {
        @Override
        public void onSuccess(T result) {
            try {
                R uResult = mapFn.apply(result);
                completableFuture.complete(uResult);
            } catch (Exception e) {
                completableFuture.completeExceptionally(e);
            }
        }

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

From source file:com.microsoft.office.integration.test.MiscellaneousAsyncTestCase.java

public void testFetch() {
    counter = new CountDownLatch(1);
    Futures.addCallback(Me.getDraftsAsync(), new FutureCallback<IFolder>() {
        public void onFailure(Throwable t) {
            reportError(t);//  w w  w.j a  va2 s.com
            counter.countDown();
        }

        public void onSuccess(IFolder drafts) {
            try {
                final IMessages messages = drafts.getMessagesAsync().get();
                // actual server request for messages will be executed in this line by calling size; response will be cached
                final int size = messages.size();

                final IMessage message = Messages.newMessage();
                message.setSubject("fetch test");
                Me.flush();

                // verify that local cache has no changes after flush (size will return old value)
                assertEquals(size, messages.size());

                final CountDownLatch cdl = new CountDownLatch(1);
                Futures.addCallback(messages.fetchAsync(), new FutureCallback<Void>() {
                    public void onFailure(Throwable t) {
                        reportError(t);
                        cdl.countDown();
                    }

                    public void onSuccess(Void result) {
                        try {
                            assertEquals(size + 1, messages.size());
                            Me.getMessages().delete(message.getId());
                            Me.flush();
                        } catch (Throwable t) {
                            reportError(t);
                        }

                        cdl.countDown();
                    }
                });

                cdl.await();
            } catch (Throwable t) {
                reportError(t);
            }

            counter.countDown();
        }
    });
    try {
        if (!counter.await(60000, TimeUnit.MILLISECONDS)) {
            fail("testSize() timed out");
        }
    } catch (InterruptedException e) {
        fail("testSize() has been interrupted");
    }
}

From source file:com.msopentech.o365.outlookServices.OutlookServicesMethodsImpl.java

/**
 * Adds default callback that send future's result back to plugin
 *
 * @param future Future to add callback to
 * @param context Plugin context used to send future result back to plugin
 * @param resolver Dependency resolver, that used to serialize future results
 *//*from  w w  w.  jav  a 2s .c  o  m*/
static <T> void addCordovaCallback(final ListenableFuture<T> future, final CallbackContext context,
        final DependencyResolver resolver) {
    Futures.addCallback(future, new FutureCallback<T>() {
        @Override
        public void onSuccess(T t) {
            if (t != null) {
                String result = resolver.getJsonSerializer().serialize(t);
                context.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
            } else {
                context.sendPluginResult(new PluginResult(PluginResult.Status.OK));
            }
        }

        @Override
        public void onFailure(Throwable throwable) {
            context.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, throwable.getMessage()));
        }
    });
}

From source file:org.opendaylight.netvirt.vpnmanager.TransactionUtil.java

public static <T extends DataObject> void asyncWrite(DataBroker dataBroker, LogicalDatastoreType datastoreType,
        InstanceIdentifier<T> path, T data, FutureCallback<Void> callback) {
    WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
    tx.put(datastoreType, path, data, true);
    Futures.addCallback(tx.submit(), callback);
}

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

@Override
public ListenableFuture<Response> execute(final Request request) {

    request.addHeader(USER_AGENT_HEADER, Platform.getUserAgent());

    final SettableFuture<Response> future = SettableFuture.create();
    final NetworkRunnable target = new NetworkRunnable(request, future);

    final NetworkThread networkThread = new NetworkThread(target) {
        @Override/*from  www. j a  v  a 2 s .  com*/
        void releaseAndStop() {
            try {
                target.closeStreamAndConnection();
            } catch (Throwable error) {
            }
        }
    };

    Futures.addCallback(future, new FutureCallback<Response>() {
        @Override
        public void onFailure(Throwable arg0) {
            networkThread.releaseAndStop();
        }

        @Override
        public void onSuccess(Response response) {
        }
    });

    networkThread.start();
    return future;
}

From source file:com.microsoft.office.integration.test.NavigationPropertiesAsyncTestCase.java

public void testCreateEntityAndAccessNavigationPropertyFailure() {
    // succeeded if got IllegalStateException
    counter = new CountDownLatch(1);
    Futures.addCallback(Messages.newMessage().getAttachmentsAsync(), new FutureCallback<IAttachments>() {
        public void onFailure(Throwable t) {
            if (!(t instanceof IllegalStateException)) {
                reportError(t);//from  w  ww  . j  av  a2 s  .  c om
            }
            counter.countDown();
        }

        public void onSuccess(IAttachments result) {
            reportError(new Exception("createEntityAndAccessNavigationPropertyFailureTest failed"));
            counter.countDown();
        }
    });
    try {
        if (!counter.await(60000, TimeUnit.MILLISECONDS)) {
            fail("testSize() timed out");
        }
    } catch (InterruptedException e) {
        fail("testSize() has been interrupted");
    }
}

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

public void create(View view, FutureCallback<View> callback) {
    Futures.addCallback(create(view), callback);
}

From source file:org.excalibur.core.util.concurrent.Futures2.java

public static <V> ListenableFuture<V> addCallbacks(ListenableFuture<V> future, FutureCallback<V>[] callbacks) {
    if (future != null && callbacks != null) {
        for (FutureCallback<V> callback : callbacks) {
            if (callback != null) {
                Futures.addCallback(future, callback);
            }/*from w  w w  . ja  v a2 s  .c o m*/
        }
    }

    return future;
}