Example usage for org.springframework.util.concurrent ListenableFuture addCallback

List of usage examples for org.springframework.util.concurrent ListenableFuture addCallback

Introduction

In this page you can find the example usage for org.springframework.util.concurrent ListenableFuture addCallback.

Prototype

void addCallback(ListenableFutureCallback<? super T> callback);

Source Link

Document

Register the given ListenableFutureCallback .

Usage

From source file:com.curso.ejemplotareaplanificada.Principal.java

/**
 * @param args the command line arguments
 *///from w  w  w. j a  v a2  s  .  co m
public static void main(String[] args) {
    //solo estamos usando anotaciones
    //en esta clase no hay nada de los metodos planificados porque esos ya los llama spring solito
    //esta clase es para pegarnos con los servicios asincronos
    ApplicationContext ctx = new AnnotationConfigApplicationContext(Configuracion.class);
    System.out.println("Contexto cargado");
    ServicioAsincrono sa = ctx.getBean(ServicioAsincrono.class);
    System.out.println("Hilo principal " + Thread.currentThread());

    //Este metodo devuelve void asi que el hilo arranca un nuevo hilo pero continua sin esperar ni ahora ni a un futuro
    sa.metodoUno();

    //Este metodo devuelve un futuro, y cuando llamemos a get espera 5 segundos a ver si termina el nuevo hilo
    //Si sobre pasa esos 5 segundos lanza una excepcion
    Future<Double> numero = sa.factorial(100);
    try {
        System.out.println("El factorial es desde un Future:" + numero.get(5L, TimeUnit.SECONDS));
    } catch (InterruptedException | ExecutionException | TimeoutException ex) {
        Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    }

    //Este metodo devuelve un escuchable
    ListenableFuture<Double> valor = sa.factorialLf(100);
    //Al metodo escuchable le aadimos una clase anonima de tipo llamable con dos metodos, uno que se ejecutara cuando acabe con exito
    //y otro si no acaba correctamente
    valor.addCallback(new ListenableFutureCallback<Double>() {

        @Override
        public void onSuccess(Double result) {
            System.out.println("El resultado es desde un ListenableFuture: " + result);
        }

        @Override
        public void onFailure(Throwable ex) {
            LOG.log(Level.SEVERE, "Ha ocurrido un error:", ex);
        }
    });
}

From source file:net.javacrumbs.futureconverter.springjava.FutureConverter.java

private static <T> CompletableFuture<T> buildCompletableFutureFromListenableFuture(
        final ListenableFuture<T> listenableFuture) {
    CompletableFuture<T> completable = new CompletableListenableFuture<T>(listenableFuture);
    listenableFuture.addCallback(new ListenableFutureCallback<T>() {
        @Override/* ww  w .j  a  va2  s . c  o m*/
        public void onSuccess(T result) {
            completable.complete(result);
        }

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

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

private static <T> OnSubscribe<T> onSubscribe(final ListenableFuture<T> listenableFuture) {
    return new Observable.OnSubscribe<T>() {
        @Override// w w  w.  j  a va2 s  .  c om
        public void call(final Subscriber<? super T> subscriber) {
            listenableFuture.addCallback(new ListenableFutureCallback<T>() {
                @Override
                public void onSuccess(T t) {
                    if (!subscriber.isUnsubscribed()) {
                        subscriber.onNext(t);
                        subscriber.onCompleted();
                    }
                }

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

From source file:net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper.java

@Override
public void addCallbackTo(ListenableFuture<String> convertedFuture) {
    convertedFuture.addCallback(callback);
    convertedFuture.addCallback(new ListenableFutureCallback<String>() {
        @Override/*from  w  w w .  j  a va  2 s  .  c o m*/
        public void onSuccess(String result) {
            callbackCalled();
        }

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

From source file:com.opopov.cloud.image.utils.Utils.java

public static <T> CompletableFuture<T> fromListenableFuture(ListenableFuture<T> listenable) {
    CompletableFuture<T> completable = new CompletableFuture<T>() {

        @Override/*from  w  w  w.jav  a 2s .c o  m*/
        public boolean isCancelled() {
            return listenable.isCancelled();
        }

        @Override
        public boolean cancel(boolean mayInterruptIfRunning) {
            //delegate cancel to the wrapped listenable
            boolean cancelledStatus = listenable.cancel(mayInterruptIfRunning);
            super.cancel(mayInterruptIfRunning);
            return cancelledStatus;
        }
    };

    //now delegate the callbacks
    ListenableFutureCallback<T> callback = new ListenableFutureCallback<T>() {
        @Override
        public void onFailure(Throwable ex) {
            //delegate exception
            completable.completeExceptionally(ex);
        }

        @Override
        public void onSuccess(T result) {
            //delegate success
            completable.complete(result);
        }
    };

    listenable.addCallback(callback);

    return completable;

}

From source file:net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper.java

@Override
public void waitForCalculationToFinish(ListenableFuture<String> convertedFuture) throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);
    convertedFuture.addCallback(new ListenableFutureCallback<String>() {
        @Override/*  w w  w. j a v a  2  s .  c o m*/
        public void onSuccess(String result) {
            latch.countDown();
        }

        @Override
        public void onFailure(Throwable t) {
            latch.countDown();
        }
    });
    latch.await(1, TimeUnit.SECONDS);
}

From source file:net.javacrumbs.completionstage.examples.SpringListenableFutureTest.java

@Test
public void testTransformationFromSpring() {
    ListenableFuture<String> springListenableFuture = createSpringListenableFuture();

    CompletableCompletionStage<Object> completionStage = factory.createCompletionStage();
    springListenableFuture.addCallback(new ListenableFutureCallback<String>() {
        @Override/*from  ww  w .j  a  va2 s  . co m*/
        public void onSuccess(String result) {
            completionStage.complete(result);
        }

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

    completionStage.thenAccept(System.out::println);
}

From source file:org.springframework.boot.actuate.metrics.ambari.restclient.AsyncAmbariMetricsCollectorRestClient.java

@SuppressWarnings("rawtypes")
public void putMetrics(TimelineMetrics metrics, ListenableFutureCallback<ResponseEntity<Map>> callback) {

    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(this.mediaType));
    headers.setContentType(this.mediaType);

    ListenableFuture<ResponseEntity<Map>> asyncResponse = restTemplate.postForEntity(
            AMBARI_METRICS_COLLECTOR_URL, new HttpEntity<TimelineMetrics>(metrics, headers), Map.class,
            ambariMetricsCollectorHost, ambariMetricsCollectorPort);

    asyncResponse.addCallback(callback);
}

From source file:com.linecorp.platform.channel.sample.ApiHttpClient.java

public <T> com.google.common.util.concurrent.ListenableFuture<T> getApiData(final String url, Class<T> clazz) {
    ListenableFuture<ResponseEntity<String>> listenableFuture = asyncRestTemplate.getForEntity(url,
            String.class);
    ApiResponseHandler<T> responseHandler = new ApiResponseHandler<>(url, clazz);
    listenableFuture.addCallback(responseHandler);
    return responseHandler;
}

From source file:com.linecorp.platform.channel.sample.ApiHttpClient.java

public <T> com.google.common.util.concurrent.ListenableFuture<T> postApiData(final String url, String content,
        Class<T> clazz) {//ww w  . java  2s .  c o  m
    HttpEntity<String> httpEntity = new HttpEntity<>(content, httpHeaders);
    ListenableFuture<ResponseEntity<String>> listenableFuture = asyncRestTemplate.postForEntity(url, httpEntity,
            String.class);
    ApiResponseHandler<T> responseHandler = new ApiResponseHandler<>(url, clazz);
    listenableFuture.addCallback(responseHandler);
    return responseHandler;
}