List of usage examples for org.springframework.web.context.request.async DeferredResult setResult
public boolean setResult(T 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//from ww w .j a v a 2 s . c o 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; } } }; }
From source file:siddur.solidtrust.image.ImageController.java
@RequestMapping(value = "/api/images") public @ResponseBody DeferredResult<Object> findCarImages(final @RequestParam("id") String id, HttpServletRequest request) {/* w w w . j av a 2 s.c o m*/ final String ip = request.getRemoteHost(); final String username = request.getAttribute(SolidtrustConstants.CLIENT_ID) + ""; final int port = request.getLocalPort(); final String address = request.getLocalAddr(); final DeferredResult<Object> result = new DeferredResult<>(2000L, "no data"); log4j.info("Id=" + id + " ,Remaining: " + suspendedImageRequests.remainingCapacity()); try { suspendedImageRequests.add(result); } catch (Exception e1) { result.setResult("Image service is overload"); return result; } result.onCompletion(new Runnable() { @Override public void run() { suspendedImageRequests.remove(result); } }); new Thread(new Runnable() { @Override public void run() { AccessItem ai = new AccessItem(); ai.setIp(ip); ai.setUsername(username); ai.setService(Product.IMAGES.getId()); ai.setRequest(id); ImageProduct ip = null; try { ip = findImagesByLicensePlate(id); } catch (Exception e) { ai.setStatus(-1); log4j.error(e.getMessage(), e); ai.setResponse(e.getMessage()); free.save(ai); return; } if (ip == null) { ai.setStatus(-1); ai.setResponse("Not found:" + id); free.save(ai); return; } ai.setResponse(ip.getId() + ""); free.save(ai); ImageProduct resp = addPrefix(port, address, ip); result.setResult(resp); } }).start(); return result; }
From source file:co.paralleluniverse.springframework.web.method.support.FiberInvocableHandlerMethod.java
protected Object fiberDispatchInvoke(final Object... args) { final Object b = getBean(); final Method m = getBridgedMethod(); ReflectionUtils.makeAccessible(m);//from w ww .jav a2 s . c om // Returning deferred even for normal return values, Spring return handlers will take care dynamically based on the actual returned value final DeferredResult ret = new DeferredResult(); // The actual method execution and deferred completion is dispatched to a new fiber new Fiber(new SuspendableRunnable() { private Object deAsync(final Object o) throws SuspendExecution, Exception { if (o instanceof Callable) return deAsync(((Callable) o).call()); else return o; } @Override public void run() throws SuspendExecution, InterruptedException { try { Object originalRet = m.invoke(b, args); ret.setResult(deAsync(originalRet)); } catch (IllegalArgumentException ex) { assertTargetBean(m, b, args); ret.setErrorResult( new IllegalStateException(getInvocationErrorMessage(ex.getMessage(), args), ex)); } catch (InvocationTargetException ex) { // Unwrap for HandlerExceptionResolvers ... Throwable targetException = ex.getTargetException(); if (targetException instanceof RuntimeException || targetException instanceof Error || targetException instanceof Exception) { ret.setErrorResult(targetException); } else { String msg = getInvocationErrorMessage("Failed to invoke controller method", args); ret.setErrorResult(new IllegalStateException(msg, targetException)); } } catch (Exception ex) { ret.setErrorResult(ex); } } }).start(); return ret; }
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/* w w w. j a v a2s . 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.sishuok.chapter3.web.listener.ListenerController.java
@RequestMapping("/listener1") @ResponseBody/*from www .j ava 2 s . c o m*/ public DeferredResult<String> listener1() { final DeferredResult<String> result = new DeferredResult<String>(); result.onTimeout(new Runnable() { @Override public void run() { System.out.println("==="); } }); result.onCompletion(new Runnable() { @Override public void run() { System.out.println("===?"); } }); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2 * 1000L); } catch (InterruptedException e) { } System.out.println("DeferredResult?"); result.setResult("success"); } }).start(); return result; }
From source file:com.chessix.vas.web.ClasController.java
/** * Count the number of records for the CLAS with id {@code classId}. *//* w w w . j a v a 2 s . c om*/ @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. *//*from w ww . jav a 2 s . com*/ @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}. *///from w ww . j a v a 2 s. c o 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: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 ww w.j a v a 2s. c o m 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:com.sishuok.chapter3.web.listener.ListenerController.java
@RequestMapping("/listener2") @ResponseBody/* www . ja v a 2 s .co m*/ 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; }