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:io.ignitr.dispatchr.manager.controller.topic.TopicController.java

/**
 * Get the metadata for a specific topic.
 *
 * @param topicName the name of the topic for which to retrieve metadata
 * @return an HTTP 200 response if the request was successful
 */// w  w  w .  j a va  2s. c o m
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<FindTopicResponse>> findOne(@PathVariable("name") String topicName,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<FindTopicResponse>> deferredResult = new DeferredResult<>();

    service.findOne(topicName).lift(new RequestContextStashOperator<>()).last().map(topicMetadata -> {
        if (topicMetadata == null) {
            throw new TopicNotFoundException(topicName);
        }

        return topicMetadata;
    }).map(FindTopicResponse::from).subscribeOn(Schedulers.io()).subscribe(body -> {
        deferredResult.setResult(ResponseEntity.ok(body));
    }, error -> {
        deferredResult.setErrorResult(errorHandler.handleError(httpRequest, error));
    });

    return deferredResult;
}

From source file:io.ignitr.dispatchr.manager.controller.subscription.SubscriptionsController.java

/**
 *
 * @param topicName//w  w  w.ja v a 2  s  .  c om
 * @param httpRequest
 * @return
 */
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<FindSubscriptionsResponse>> findAll(@PathVariable("name") String topicName,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<FindSubscriptionsResponse>> deferredResult = new DeferredResult<>();

    topicService.findOne(topicName).lift(new RequestContextStashOperator<>()).flatMap(topicMetadata -> {
        List<Subscription> subscriptionMetadatas = new ArrayList<>();

        return subscriptionService.findAll(topicMetadata.getName()).collect(() -> subscriptionMetadatas,
                List::add);
    }).map(FindSubscriptionsResponse::from).subscribeOn(Schedulers.io()).subscribe(body -> {
        deferredResult.setResult(ResponseEntity.ok(body));
    }, error -> {
        deferredResult.setErrorResult(errorHandler.handleError(httpRequest, error));
    });

    return deferredResult;
}

From source file:io.ignitr.dispatchr.manager.controller.topic.TopicController.java

/**
 * Checks whether or not the supplied topic is registered with Dispatchr.
 *
 * @param topicName the name of the topic to check
 * @param httpRequest http request/*from  ww w . j a  v a 2s .c  o  m*/
 * @return an HTTP 204 response if the topic is registered; otherwise an HTTP 404 if the topic is not registered
 */
@RequestMapping(method = RequestMethod.GET, value = "/registered", produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<?>> isRegistered(@PathVariable("name") String topicName,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<?>> deferredResult = new DeferredResult<>();

    service.isRegistered(topicName).lift(new RequestContextStashOperator<>()).last()
            .subscribeOn(Schedulers.io()).subscribe(isRegistered -> {
                if (isRegistered) {
                    deferredResult.setResult(ResponseEntity.noContent().build());
                } else {
                    deferredResult.setResult(ResponseEntity.notFound().build());
                }
            }, error -> {
                deferredResult.setErrorResult(errorHandler.handleError(httpRequest, error));
            });

    return deferredResult;
}

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

@RequestMapping(value = "/{clasId}/{accountId}/balance", method = RequestMethod.GET)
public DeferredResult<Object> balance(@PathVariable final String clasId, @PathVariable final String accountId) {
    log.debug("balance({},{})", clasId, accountId);
    final ActorRef clas = clasService.getClas(clasId);
    final DeferredResult<Object> deferredResult = new DeferredResult<Object>();
    if (clas != null) {
        final Future<Object> future = Patterns.ask(clas,
                new Balance.RequestBuilder(accountService.getAccountId(accountId)).build(), timeout);

        future.onComplete(new OnComplete<Object>() {
            @Override/*from w  w w. j  a va 2  s . c om*/
            public void onComplete(final Throwable failure, final Object result) {
                if (failure != null) {
                    // We got a failure, handle it here
                    deferredResult.setErrorResult(failure);
                } else {
                    // We got a result, do something with it
                    deferredResult.setResult(result);
                }
            }
        }, system.dispatcher());
    } else {
        deferredResult.setErrorResult(new SaldoDTO(clasId, accountId, null, false, "CLAS does not exist"));
    }
    return deferredResult;
}

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

/**
 * Count the number of records for the CLAS with id {@code classId}.
 *//*from   w ww .  ja  v a 2  s.c  o m*/
@RequestMapping(value = "/{clasId}/count", method = RequestMethod.GET)
public DeferredResult<Object> count(@PathVariable final String clasId) {
    log.debug("count({})", clasId);

    final DeferredResult<Object> deferredResult = new DeferredResult<Object>();
    final ActorRef clas = clasService.getClas(clasId);
    if (clas != null) {
        final Future<Object> future = Patterns.ask(clas, new Count.RequestBuilder(clasId).build(), timeout);
        future.onComplete(new OnComplete<Object>() {
            @Override
            public void onComplete(final Throwable failure, final Object result) {
                if (failure != null) {
                    // We got a failure, handle it here
                    deferredResult.setErrorResult(failure);
                } else {
                    // We got a result, do something with it
                    deferredResult.setResult(result);
                }
            }
        }, system.dispatcher());
    } else {
        deferredResult.setResult(
                new Count.ResponseBuilder(false).clasId(clasId).message("CLAS does not exist").build());
    }

    return deferredResult;
}

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

/**
 * Validate if for given {@code classId} the speed layer is in sync.
 *//*ww w  .j  a  va2  s. c  om*/
@RequestMapping(value = "/{clasId}/validate/speed", method = RequestMethod.GET)
public DeferredResult<Object> validateSpeedLayer(@PathVariable final String clasId) {
    log.debug("fastValidate({})", clasId);

    final DeferredResult<Object> deferredResult = new DeferredResult<Object>();
    final ActorRef clas = clasService.getClas(clasId);
    if (clas != null) {
        final Future<Object> future = Patterns.ask(clas, new Validate.RequestBuilder(clasId).build(), timeout);
        future.onComplete(new OnComplete<Object>() {
            @Override
            public void onComplete(final Throwable failure, final Object result) {
                if (failure != null) {
                    // We got a failure, handle it here
                    deferredResult.setErrorResult(failure);
                } else {
                    // We got a result, do something with it
                    deferredResult.setResult(result);
                }
            }
        }, system.dispatcher());
    } else {
        deferredResult.setResult(
                new Validate.ResponseBuilder(false).clasId(clasId).message("CLAS does not exist").build());
    }

    return deferredResult;
}

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

/**
 * Remove all accounts and transactions for the CLAS with the given id {@code clasId}.
 *//*w  ww  . j  a v a 2  s  .  co  m*/
@RequestMapping(value = "/{clasId}/clean", method = RequestMethod.POST)
public DeferredResult<Object> clean(@PathVariable final String clasId) {
    log.debug("clean({})", clasId);

    batchStorage.tell(new JournalMessage.CleanBuilder(clasId).build(), ActorRef.noSender());

    final DeferredResult<Object> deferredResult = new DeferredResult<Object>();
    final ActorRef clas = clasService.getClas(clasId);
    if (clas != null) {
        // there is data
        final Future<Object> future = Patterns.ask(clas, new Clean.RequestBuilder(clasId).build(), timeout);
        future.onComplete(new OnComplete<Object>() {
            @Override
            public void onComplete(final Throwable failure, final Object result) {
                if (failure != null) {
                    // We got a failure, handle it here
                    deferredResult.setErrorResult(failure);
                } else {
                    // We got a result, do something with it
                    deferredResult.setResult(result);
                }
            }
        }, system.dispatcher());
    } else {
        deferredResult.setResult(
                new Clean.ResponseBuilder(true).clasId(clasId).message("Clas was already removed").build());
    }

    return deferredResult;
}

From source file:comsat.sample.actuator.SampleController.java

private Callable<Map<String, String>> helloCallable(final DeferredResult<Map<String, String>> optDeferred)
        throws SuspendExecution {
    return new Callable<Map<String, String>>() {
        @Override//from   ww w  . jav  a  2 s  .  com
        @Suspendable
        public Map<String, String> call() throws Exception {
            try {
                Fiber.sleep(10);
                Map<String, String> ret = Collections.singletonMap("message",
                        helloWorldService.getHelloMessage());
                if (optDeferred != null)
                    optDeferred.setResult(ret);
                return ret;
            } catch (Throwable t) {
                if (optDeferred != null)
                    optDeferred.setErrorResult(t);
                throw t;
            }
        }
    };
}

From source file:me.j360.trace.example.consumer2.ZipkinServerConfiguration.java

DeferredResult<ResponseEntity<?>> validateAndStoreSpans(String encoding, Codec codec, byte[] body) {
    DeferredResult<ResponseEntity<?>> result = new DeferredResult<>();
    metrics.incrementMessages();//from ww  w .  j  a  v a2 s . co  m
    if (encoding != null && encoding.contains("gzip")) {
        try {
            body = gunzip(body);
        } catch (IOException e) {
            metrics.incrementMessagesDropped();
            result.setResult(ResponseEntity.badRequest().body("Cannot gunzip spans: " + e.getMessage() + "\n"));
            return result;
        }
    }
    collector.acceptSpans(body, codec, new Callback<Void>() {
        @Override
        public void onSuccess(@Nullable Void value) {
            result.setResult(SUCCESS);
        }

        @Override
        public void onError(Throwable t) {
            String message = t.getMessage();
            result.setErrorResult(
                    message.startsWith("Cannot store") ? ResponseEntity.status(500).body(message + "\n")
                            : ResponseEntity.status(400).body(message + "\n"));
        }
    });
    return result;
}

From source file:comsat.sample.actuator.SampleController.java

private Callable<Map<String, Object>> ollehCallable(final Message message,
        final DeferredResult<Map<String, Object>> optDeferred) throws SuspendExecution {
    return new Callable<Map<String, Object>>() {
        @Override/* ww  w.j  av a2 s.co  m*/
        @Suspendable
        public Map<String, Object> call() throws Exception {
            try {
                Fiber.sleep(10);
                Map<String, Object> model = new LinkedHashMap<>();
                model.put("message", message.getValue());
                model.put("title", "Hello Home");
                model.put("date", new Date());
                if (optDeferred != null)
                    optDeferred.setResult(model);
                return model;
            } catch (Throwable t) {
                if (optDeferred != null)
                    optDeferred.setErrorResult(t);
                throw t;
            }
        }
    };
}