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

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

Introduction

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

Prototype

public DeferredResult() 

Source Link

Document

Create a DeferredResult.

Usage

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//  w  w w .j  ava 2s . co  m
 * @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:com.chessix.vas.web.ClasController.java

/**
 * Validate if for given {@code classId} the speed layer is in sync.
 *//*from  w w  w . ja v a  2s  . 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:comsat.sample.actuator.SampleController.java

@RequestMapping("/deferred/foo")
@ResponseBody/*w ww  .  j  ava2s .c  o  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.fengduo.bee.commons.result.JsonResultUtils.java

public static <T> DeferredResult<IResult> deferredResult(GenericsResult<T> iResult) {
    DeferredResult<IResult> dr = new DeferredResult<IResult>();
    dr.setResult(iResult);/*from   ww w . j a va 2 s  .  c  o m*/
    return dr;
}

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

/**
 * Find all SNS topics that are not registered with Dispatchr.
 *
 * @param offset index of item to start returning when using pagination
 * @param limit number of items to return when using pagination
 * @param sortDir sort order in which to return items when using pagination
 * @return an HTTP 200 response if the request was successful
 *//*w  w  w .  ja  v a2  s. co m*/
@RequestMapping(method = RequestMethod.GET, value = "/unregistered", produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<ResponseEntity<FindTopicsResponse>> findUnregistered(
        @RequestParam(value = "offset", defaultValue = "0") Long offset,
        @RequestParam(value = "limit", defaultValue = "25") Long limit,
        @RequestParam(value = "sort_dir", defaultValue = "asc") String sortDir,
        HttpServletRequest httpRequest) {
    final DeferredResult<ResponseEntity<FindTopicsResponse>> deferredResult = new DeferredResult<>();

    Observable.fromCallable(() -> SortDirectionValidator.validate(sortDir))
            .lift(new RequestContextStashOperator<>())
            .flatMap(valid -> Observable.create(new Observable.OnSubscribe<List<Topic>>() {
                List<Topic> topicMetadatas = new ArrayList<>();

                @Override
                public void call(Subscriber<? super List<Topic>> subscriber) {
                    service.findUnregistered(offset, limit, sortDir).collect(() -> topicMetadatas, List::add)
                            .subscribe(topicMetadatas -> {
                                subscriber.onNext(topicMetadatas);
                                subscriber.onCompleted();
                            });
                }
            })).map(FindTopicsResponse::from).subscribeOn(Schedulers.io()).subscribe(body -> {
                deferredResult.setResult(ResponseEntity.ok(body));
            }, 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  . com*/
            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.mmj.app.web.controller.topic.TopicController.java

@RequestMapping(value = "/checknewfeed", headers = "accept=*/*", produces = "application/json", method = RequestMethod.POST)
@ResponseBody//  ww  w . jav  a 2s  .co m
public DeferredResult<String> checknewfeed(Long maxId) {
    DeferredResult<String> deferredResult = new DeferredResult<String>();
    if (maxId == null) {
        deferredResult.setResult("0");
        return deferredResult;
    }
    Integer count = topicService.refreshcount(maxId);
    deferredResult.setResult(count + "");
    return deferredResult;
}

From source file:com.kixeye.chassis.transport.websocket.WebSocketAction.java

/**
 * Invokes this action.//from   ww w  .  j  a v a  2  s. co m
 *
 * @param handler
 * @param message
 * @param envelope
 * @param session
 * @return
 * @throws MethodArgumentNotValidException
 *
 * @throws InvocationTargetException
 * @throws IllegalArgumentException
 * @throws IllegalAccessException
 */
public DeferredResult<?> invoke(Object handler, RawWebSocketMessage<?> message, WebSocketEnvelope envelope,
        WebSocketSession session) throws Exception {
    Object response = null;

    // invoke the method
    Object[] parameters = new Object[method.getParameterTypes().length];

    Integer payloadParamIndex = parameterTypes.get(ParameterType.ACTION_PAYLOAD);
    if (payloadParamIndex != null) {
        parameters[payloadParamIndex] = message.deserialize(this);
    }

    Integer sessionParamIndex = parameterTypes.get(ParameterType.WEB_SOCKET_SESSION);
    if (sessionParamIndex != null) {
        parameters[sessionParamIndex] = session;
    }

    Integer transactionParamIndex = parameterTypes.get(ParameterType.TRANSACTION_ID);
    if (transactionParamIndex != null) {
        parameters[transactionParamIndex] = envelope.getTransactionId();
    }

    Integer envelopeParamIndex = parameterTypes.get(ParameterType.ENVELOPE);
    if (envelopeParamIndex != null) {
        parameters[envelopeParamIndex] = envelope;
    }

    resolveCustomArguments(parameters, method, session, envelope);

    // now do actual invoke
    response = method.invoke(handler, parameters);

    // otherwise there was no error
    if (response != null) {

        // find a converter
        for (WebSocketResponseConverter converter : responseConverters.get()) {
            if (converter.canConvertResponse(response)) {
                return converter.convertToDeferredResult(response);
            }
        }

        // default to using the object as is
        final DeferredResult<Object> deferredResult = new DeferredResult<>();
        deferredResult.setResult(response);
        return deferredResult;
    } else {
        return null;
    }
}

From source file:be.solidx.hot.data.rest.RestDataStore.java

private DeferredResult<ResponseEntity<byte[]>> blockingCall(final Callable<ResponseEntity<byte[]>> dbCall) {

    final DeferredResult<ResponseEntity<byte[]>> deferredResult = new DeferredResult<>();

    DeferredManager deferredManager = new DefaultDeferredManager(blockingTaskThreadPool);

    deferredManager.when(dbCall).done(new DoneCallback<ResponseEntity<byte[]>>() {
        @Override//from   w w  w  . java 2 s.  com
        public void onDone(ResponseEntity<byte[]> result) {
            deferredResult.setResult(result);
        }
    }).fail(new FailCallback<Throwable>() {
        @Override
        public void onFail(Throwable e) {
            deferredResult.setErrorResult(new ResponseEntity<byte[]>(extractStackTrace(e).getBytes(),
                    HttpStatus.INTERNAL_SERVER_ERROR));

        }
    });
    return deferredResult;
}

From source file:net.tenorite.web.TempoController.java

@RequestMapping("/t/{tempo}/channels")
public DeferredResult<ModelAndView> channels(@PathVariable("tempo") Tempo tempo) {
    DeferredResult<ModelAndView> deferred = new DeferredResult<>();

    channelsRegistry.listChannels(tempo).whenComplete((channels, throwable) -> {
        if (throwable != null) {
            deferred.setErrorResult(throwable);
        } else {//from   w ww.  ja v  a 2s . co m
            List<Channel> sorted = channels.stream().sorted(new PropertyComparator<>("name", true, true))
                    .collect(toList());

            ModelAndView mav = new ModelAndView("channels").addObject("tempo", tempo)
                    .addObject("gameModes", gameModes).addObject("channels", sorted);

            deferred.setResult(mav);
        }
    });

    return deferred;
}