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.kixeye.chassis.transport.websocket.responseconverter.ObservableResponseConverter.java

@Override
public DeferredResult<Object> convertToDeferredResult(Object response) {
    final DeferredResult<Object> deferredResult = new DeferredResult<>();
    ((Observable<?>) response).subscribe(new Observer<Object>() {
        @Override//www  . jav a 2  s.  c o  m
        public void onCompleted() {
            if (!deferredResult.hasResult()) {
                deferredResult.setResult(null);
            }
        }

        @Override
        public void onError(Throwable e) {
            deferredResult.setErrorResult(e);
        }

        @Override
        public void onNext(Object args) {
            deferredResult.setResult(args);
        }
    });
    return deferredResult;
}

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

/**
 * Finds a specific client.//  w ww.j a v  a2  s.  c o m
 *
 * @param clientId client identifier
 * @return an HTTP 200 response containing the client metadata or an HTTP 404 if the client does not exist
 */
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<FindClientResponse>> findOne(@PathVariable("clientId") String clientId,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<FindClientResponse>> deferredResult = new DeferredResult<>();

    service.findOne(clientId).lift(new RequestContextStashOperator<>()).last().map(FindClientResponse::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.client.ClientsController.java

/**
 * Registers a new client in the system.
 *
 * @param request client registration request
 * @return an HTTP 201 response if the client was successfully registered
 *///  w w  w  .ja  va  2  s  . c  om
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<RegisterClientResponse>> register(
        @Valid @RequestBody RegisterClientRequest request, HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<RegisterClientResponse>> deferredResult = new DeferredResult<>();

    service.register(request).lift(new RequestContextStashOperator<>()).last().map(RegisterClientResponse::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

/**
 * Register an SNS topic with Dispatchr.
 *
 * @param topicName the name of the topic to save
 * @param httpRequest http request/*ww  w  .j a va2 s  .com*/
 * @return an HTTP 201 response if the request was successful
 */
@RequestMapping(method = RequestMethod.PUT, value = "/registered", produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<?>> register(@PathVariable("name") String topicName,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<?>> deferredResult = new DeferredResult<>();

    service.register(topicName).lift(new RequestContextStashOperator<>()).last()
            .map(RegisterTopicResponse::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

/**
 * Unregister an SNS topic with Dispatchr.
 *
 * @param topicName the name of the topic to delete
 * @param httpRequest http request/*from  w ww  .j ava2 s .  c om*/
 * @return an HTTP 204 response if the request was successful
 */
@RequestMapping(method = RequestMethod.DELETE, value = "/registered", produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<?>> unregister(@PathVariable("name") String topicName,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<?>> deferredResult = new DeferredResult<>();

    service.unregister(topicName).lift(new RequestContextStashOperator<>()).last()
            .map(UnregisterTopicResponse::from).subscribeOn(Schedulers.io()).subscribe(body -> {
                deferredResult.setResult(ResponseEntity.ok(body));
            }, error -> {
                deferredResult.setErrorResult(errorHandler.handleError(httpRequest, error));
            });

    return deferredResult;
}

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

@RequestMapping("/deferred/foo")
@ResponseBody//from  w ww . j  a v a  2  s. co m
public DeferredResult<String> fooDeferred() {
    final DeferredResult<String> ret = new DeferredResult<>();
    new Fiber(new SuspendableCallable<String>() {
        @Override
        public String run() throws SuspendExecution, InterruptedException {
            try {
                return fooCallable(ret).call();
            } catch (Exception ex) {
                ret.setErrorResult(ret);
                throw new RuntimeException(ex);
            }
        }
    }).start();
    return ret;
}

From source file:com.kixeye.chassis.transport.http.ObserableReturnValueHandler.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.  jav a 2  s. c  o m
    }
    final DeferredResult<Object> deferredResult = new DeferredResult<>();
    ((Observable<?>) returnValue).subscribe(new Observer<Object>() {
        @Override
        public void onCompleted() {
            if (!deferredResult.hasResult()) {
                logger.error("onComplete before onNext");
                deferredResult.setResult(null);
            }
        }

        @Override
        public void onError(Throwable e) {
            deferredResult.setErrorResult(e);
        }

        @Override
        public void onNext(Object args) {
            deferredResult.setResult(args);
        }
    });
    WebAsyncUtils.getAsyncManager(webRequest).startDeferredResultProcessing(deferredResult, mavContainer);
}

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

@RequestMapping(value = "/deferred", method = RequestMethod.GET)
@ResponseBody//from   w w  w  .j a v a2  s.c  o m
public DeferredResult<Map<String, String>> helloDeferred() {
    final DeferredResult<Map<String, String>> ret = new DeferredResult<>();
    new Fiber(new SuspendableCallable<Map<String, String>>() {
        @Override
        public Map<String, String> run() throws SuspendExecution, InterruptedException {
            try {
                return helloCallable(ret).call();
            } catch (Exception ex) {
                ret.setErrorResult(ret);
                throw new RuntimeException(ex);
            }
        }
    }).start();
    return ret;
}

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

@RequestMapping(value = "/deferred", method = RequestMethod.POST)
@ResponseBody//from ww  w.j  av  a2s . co m
public DeferredResult<Map<String, Object>> ollehDeferred(@Validated final Message message) {
    final DeferredResult<Map<String, Object>> ret = new DeferredResult<>();
    new Fiber(new SuspendableCallable<Map<String, Object>>() {
        @Override
        public Map<String, Object> run() throws SuspendExecution, InterruptedException {
            try {
                return ollehCallable(message, ret).call();
            } catch (Exception ex) {
                ret.setErrorResult(ret);
                throw new RuntimeException(ex);
            }
        }
    }).start();
    return ret;
}

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

private Callable<String> fooCallable(final DeferredResult<String> optDeferred) throws SuspendExecution {
    return new Callable<String>() {
        @Override// www .ja v  a  2 s .  co m
        @Suspendable
        public String call() throws Exception {
            try {
                Fiber.sleep(10);
                throw new IllegalArgumentException("Server error");
            } catch (Throwable t) {
                if (optDeferred != null)
                    optDeferred.setErrorResult(t);
                throw t;
            }
        }
    };
}