Example usage for org.springframework.web.context.request.async DeferredResult setErrorResult

List of usage examples for org.springframework.web.context.request.async DeferredResult setErrorResult

Introduction

In this page you can find the example usage for org.springframework.web.context.request.async DeferredResult setErrorResult.

Prototype

public boolean setErrorResult(Object result) 

Source Link

Document

Set an error value for the DeferredResult and handle it.

Usage

From source file:com.sishuok.chapter3.web.interceptor.MyDeferredResultInterceptor.java

@Override
public <T> boolean handleTimeout(final NativeWebRequest request, final DeferredResult<T> deferredResult)
        throws Exception {
    System.out.println("");
    deferredResult.setErrorResult("error");//
    return true; //return true ?handleTimeout?
}

From source file:org.trustedanalytics.kafka.adminapi.api.ApiController.java

@RequestMapping(method = RequestMethod.GET, value = "/topics/{topic}")
@ResponseBody// w ww.  j  av a  2  s.c om
public DeferredResult<List<String>> readTopic(@PathVariable final String topic) {
    LOG.info("readTopic invoked: {}", topic);

    if (StringUtils.isEmpty(topic)) {
        throw new InvalidTopicException("Missing mandatory topic name");
    }
    Topic.validate(topic);
    if (!kafkaService.topicExists(topic)) {
        throw new UnknownTopicOrPartitionException("Topic does not exist: " + topic);
    }

    DeferredResult<List<String>> deferredResult = new DeferredResult<>();
    CompletableFuture.supplyAsync(() -> kafkaService.readTopic(topic))
            .whenCompleteAsync((result, throwable) -> {
                deferredResult.setResult(result);
                deferredResult.setErrorResult(throwable);
            });
    return deferredResult;
}

From source file:spring.travel.site.controllers.LoginController.java

@RequestMapping(method = RequestMethod.POST)
@ResponseBody/*from www . ja va2 s .co m*/
public DeferredResult<ResponseEntity<User>> login(@Valid @RequestBody LoginData loginData) {
    DeferredResult<ResponseEntity<User>> result = new DeferredResult<>();
    loginService.login(loginData).whenComplete((user, t) -> {
        if (user.isPresent()) {
            try {
                result.setResult(success(user.get()));
            } catch (AuthException ae) {
                result.setErrorResult(new UserNotFoundException());
            }
        } else {
            result.setErrorResult(new UserNotFoundException());
        }
    });
    return result;
}

From source file:com.sishuok.chapter3.web.listener.ListenerController.java

@RequestMapping("/listener2")
@ResponseBody//from   w ww .  j  a va2s. c om
public DeferredResult<String> listener2() {
    final DeferredResult<String> result = new DeferredResult<String>();
    result.onTimeout(new Runnable() {
        @Override
        public void run() {
            System.out.println("===");
            result.setErrorResult("error");
        }
    });

    result.onCompletion(new Runnable() {
        @Override
        public void run() {
            System.out.println("===?");
        }
    });

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Thread.sleep(31 * 1000L);
            } catch (InterruptedException e) {
            }
            System.out.println(
                    "DeferredResult????");
            result.setResult("success");
        }
    }).start();
    return result;
}

From source file:fi.minedu.oiva.backend.spring.handler.CompletionStageReturnValueHandler.java

@SuppressWarnings("unchecked")
@Override/* ww w. j av  a 2s.c  o m*/
public void handleReturnValue(Object returnValue, MethodParameter returnType,
        ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
    if (returnValue == null) {
        mavContainer.setRequestHandled(true);
        return;
    }

    final DeferredResult<Object> deferredResult = new DeferredResult<>();
    WebAsyncUtils.getAsyncManager(webRequest).startDeferredResultProcessing(deferredResult, mavContainer);

    CompletionStage<?> future = (CompletionStage<?>) returnValue;
    future.whenComplete((result, ex) -> {
        if (ex != null) {
            deferredResult.setErrorResult(ex);
        } else {
            deferredResult.setResult(result);
        }
    });
}

From source file:com.chessix.vas.web.AccountController.java

@RequestMapping(value = "/{clasId}/range/from/{start}/count/{count}", method = RequestMethod.POST)
public DeferredResult<Object> createAccounts(@PathVariable final String clasId,
        @PathVariable final String start, @PathVariable final String count) {
    log.info("createAccounts({},{},{})", clasId, start, count);
    final ActorRef clas = clasService.getClas(clasId);
    final DeferredResult<Object> deferredResult = new DeferredResult<Object>();
    final int countValue = Integer.parseInt(count);

    if (countValue > MAX_ACCOUNTS_IN_BATCH) {
        deferredResult
                .setErrorResult(String.format("count %s is to large (> %d)", count, MAX_ACCOUNTS_IN_BATCH));
        return deferredResult;
    }/*from  w ww  .  j  a va 2s.c  o  m*/

    if (clas != null) {
        final List<AccountCreated> results = Collections.synchronizedList(new LinkedList<AccountCreated>());
        final AtomicInteger resultsCounter = new AtomicInteger(0);

        for (int i = Integer.parseInt(start); i < Integer.parseInt(start) + countValue; i++) {
            final String accountId = Integer.toString(i);
            log.debug("createAccounts() : create {}", accountId);
            final Future<Object> future = Patterns.ask(clas,
                    new CreateAccount.RequestBuilder(clasId).accountId(accountId).build(),
                    timeout * countValue);
            future.onSuccess(new OnSuccess<Object>() {
                @Override
                public void onSuccess(final Object result) {
                    log.info("createAccount({}) : result: {}", clasId, result);
                    final CreateAccount.Response response = (CreateAccount.Response) result;
                    results.add(new AccountCreated(clasId, response.getAccountId(), true,
                            String.format("Account %s created", accountId)));

                    // check if all values are received
                    if (resultsCounter.incrementAndGet() >= countValue) {
                        deferredResult.setResult(results);
                    }

                }
            }, system.dispatcher());
            future.onFailure(new OnFailure() {
                @Override
                public void onFailure(final Throwable arg) throws Throwable {
                    log.error("onFailure", arg);
                    deferredResult
                            .setErrorResult(new AccountCreated(clasId, null, false, arg.getLocalizedMessage()));
                }
            }, system.dispatcher());
        }
    } else {
        deferredResult.setErrorResult(new AccountCreated(clasId, null, false, "CLAS does not exist"));
    }
    return deferredResult;
}

From source file:com.carlomicieli.jtrains.infrastructure.web.CompletableFutureReturnValueHandler.java

@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType,
        ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
    final DeferredResult<Object> deferredResult = new DeferredResult<>();
    final CompletableFuture<?> future = (CompletableFuture<?>) returnValue;
    final CompletableFuture<Object> completedFuture = future.handle((ret, err) -> {
        if (ret != null) {
            deferredResult.setResult(ret);
            return ret;
        } else {//w  w  w .ja v  a2  s  .c  o m
            deferredResult.setErrorResult(err);
            return null;
        }
    });

    WebAsyncUtils.getAsyncManager(webRequest).startDeferredResultProcessing(deferredResult, mavContainer);
}

From source file:com.kixeye.chassis.transport.websocket.responseconverter.ListenableFutureResponseConverter.java

@Override
public DeferredResult<Object> convertToDeferredResult(Object response) {
    final DeferredResult<Object> deferredResult = new DeferredResult<>();
    Futures.addCallback((ListenableFuture<?>) response, new FutureCallback<Object>() {
        @Override/*from  ww w  .ja  va2 s  . com*/
        public void onSuccess(@Nullable Object result) {
            deferredResult.setResult(result);
        }

        @Override
        public void onFailure(Throwable t) {
            deferredResult.setErrorResult(t);
        }
    });
    return deferredResult;
}

From source file:io.ignitr.dispatchr.manager.controller.client.ClientController.java

/**
 * Deletes a specific client.//  w ww .ja v a 2  s  .com
 *
 * @param clientId client identifier
 * @return an HTTP 204 response if the client was deleted or an HTTP 404 if the client does not exist
 */
@RequestMapping(method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<?>> unregister(@PathVariable("clientId") String clientId,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<?>> deferredResult = new DeferredResult<>();

    service.unregister(clientId).lift(new RequestContextStashOperator<>()).last().subscribeOn(Schedulers.io())
            .subscribe(complete -> {
                deferredResult.setResult(ResponseEntity.noContent().build());
            }, error -> {
                deferredResult.setErrorResult(errorHandler.handleError(httpRequest, error));
            });

    return deferredResult;
}

From source file:com.kixeye.chassis.transport.http.ListenableFutureReturnValueHandler.java

@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType,
        ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
    if (returnValue == null) {
        mavContainer.setRequestHandled(true);
        return;//from  w  w w.  ja v  a2  s.c o  m
    }
    final DeferredResult<Object> deferredResult = new DeferredResult<>();
    Futures.addCallback((ListenableFuture<?>) returnValue, new FutureCallback<Object>() {
        @Override
        public void onSuccess(@Nullable Object result) {
            deferredResult.setResult(result);
        }

        @Override
        public void onFailure(Throwable t) {
            deferredResult.setErrorResult(t);
        }
    });
    WebAsyncUtils.getAsyncManager(webRequest).startDeferredResultProcessing(deferredResult, mavContainer);
}