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

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

Introduction

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

Prototype

public boolean hasResult() 

Source Link

Document

Return true if the DeferredResult has been set.

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/*w  ww. ja  v  a  2  s  . co 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: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 .j av a2  s  .  co  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);
}