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

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

Introduction

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

Prototype

public boolean setResult(T result) 

Source Link

Document

Set the value for the DeferredResult and handle it.

Usage

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 www  .  j  a  v  a  2s . co  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);
}

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

@RequestMapping(method = RequestMethod.GET, value = "/topics/{topic}")
@ResponseBody//w  w  w .jav  a  2  s. c  o m
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: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/*  w w  w.  j  a va2  s. c om*/
        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: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 {/*from w w  w  .j a v  a 2 s.co  m*/
            deferredResult.setErrorResult(err);
            return null;
        }
    });

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

From source file:com.mmj.app.web.controller.comet.CometController.java

/**
 * <pre>/*  w w  w  .j a va  2 s  .  c o  m*/
 * [
 *     {
 *         "id": "1", 
 *         "minimumVersion": "1.0", 
 *         "supportedConnectionTypes": [
 *             "callback-polling", 
 *             "long-polling"
 *         ], 
 *         "successful": true, 
 *         "channel": "/meta/handshake", 
 *         "clientId": "ukpp1rfmxc8az72gwx3skxu2ythnl", 
 *         "version": "1.0"
 *     }
 * ]
 * </pre>
 * 
 * @return
 */
@RequestMapping(value = "/comet/handshake", headers = "accept=*/*", produces = "application/json", method = RequestMethod.POST)
@ResponseBody
public DeferredResult<String> handshake() {
    DeferredResult<String> deferredResult = new DeferredResult<String>();
    HandShakeVO handShake = new HandShakeVO("1", "1.0", true, "/meta/handshake",
            "ukpp1rfmxc8az72gwx3skxu2ythnl", "1.0", "callback-polling", "long-polling");
    deferredResult.setResult(new Gson().toJson(Arrays.asList(handShake)));
    return deferredResult;
}

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

/**
 * Deletes a specific client./*from  ww w  .  j av  a 2s . c  om*/
 *
 * @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.fengduo.bee.web.controller.upload.FileUploadController.java

@RequestMapping(value = "/Upload", headers = "accept=*/*", produces = "application/json", method = RequestMethod.POST)
@ResponseBody/*ww w  .j  a va2 s.c o  m*/
public DeferredResult<String> Upload(MultipartFile upload) {
    DeferredResult<String> deferredResult = new DeferredResult<String>();

    long size = upload.getSize();
    if (size == 0) {
        deferredResult.setResult("-1");
        return deferredResult;
    }
    PicsInfoEnum picInfoEnum = PicsInfoEnum.AVATAR_IMG;
    if (picInfoEnum == null) {
        deferredResult.setResult("-1");
        return deferredResult;
    }
    int maxSize = picInfoEnum.getMaxSize();
    if (size > maxSize) {
        deferredResult.setResult("-1");
        return deferredResult;
    }
    // ???
    String suffix = getSuffix(upload.getOriginalFilename());
    boolean isLegal = checkSuffixLegal(picInfoEnum.getSuffixs(), suffix);
    if (!isLegal) {
        deferredResult.setResult("-1");
        return deferredResult;
    }
    long userId = getCurrentUserId();
    String relativeUrl = null;
    relativeUrl = picInfoEnum.getDirPrefix() + "/" + userId + "/";
    final String _filePath = relativeUrl;
    Result result = fileService.createFilePath(upload, new IFileCreate() {

        public String build(String filePath, String suffix) {
            return _filePath + filePath + suffix;
        }
    });
    if (result.isSuccess()) {
        deferredResult.setResult("http://fengduo.co" + result.getData().toString());
        return deferredResult;
    } else {
        deferredResult.setResult("IOError");
        return deferredResult;
    }
}

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

/**
 * Finds a specific client.//from   w  ww. j a va2  s. c  om
 *
 * @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:com.mmj.app.web.controller.comet.CometController.java

@RequestMapping(value = "/comet/", headers = "accept=*/*", produces = "application/json", method = RequestMethod.POST)
@ResponseBody/*  w  ww .  j a  v  a2 s.c  o  m*/
public DeferredResult<String> comet() {
    DeferredResult<String> deferredResult = new DeferredResult<String>();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", "2");
    map.put("subscription", "/service/chouti-new");
    map.put("successful", true);
    map.put("channel", "/meta/subscribe");
    deferredResult.setResult(new Gson().toJson(Arrays.asList(map)));
    return deferredResult;
}

From source file:org.mimacom.sample.integration.patterns.user.service.web.AsyncUserController.java

@ResponseStatus(CREATED)
@RequestMapping(method = POST)//from   w  w  w  . j ava 2s  .  c  om
public DeferredResult<String> createUser(@RequestBody User user,
        @RequestParam(required = false) Integer waitTime) {
    DeferredResult<String> deferredResult = new DeferredResult<>();

    LOG.info("created user '{}' '{}'", user.getFirstName(), user.getLastName());
    this.userRepository.put(user.getId(), user);

    if (waitTime == null) {
        this.asyncSearchServiceIntegration.indexUser(user, ignored -> deferredResult.setResult(user.getId()),
                deferredResult::setErrorResult);
    } else {
        this.asyncSearchServiceIntegration.indexUserSlow(user, waitTime,
                ignored -> deferredResult.setResult(user.getId()), deferredResult::setErrorResult);
    }

    return deferredResult;
}