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

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

Introduction

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

Prototype

DeferredResultProcessingInterceptor

Source Link

Usage

From source file:org.springframework.web.context.request.async.DeferredResult.java

final DeferredResultProcessingInterceptor getInterceptor() {
    return new DeferredResultProcessingInterceptor() {
        @Override/*  w  ww  .j av  a2  s  .  c  o m*/
        public <S> boolean handleTimeout(NativeWebRequest request, DeferredResult<S> deferredResult) {
            boolean continueProcessing = true;
            try {
                if (timeoutCallback != null) {
                    timeoutCallback.run();
                }
            } finally {
                if (timeoutResult != RESULT_NONE) {
                    continueProcessing = false;
                    try {
                        setResultInternal(timeoutResult);
                    } catch (Throwable ex) {
                        logger.debug("Failed to handle timeout result", ex);
                    }
                }
            }
            return continueProcessing;
        }

        @Override
        public <S> boolean handleError(NativeWebRequest request, DeferredResult<S> deferredResult,
                Throwable t) {
            try {
                if (errorCallback != null) {
                    errorCallback.accept(t);
                }
            } finally {
                try {
                    setResultInternal(t);
                } catch (Throwable ex) {
                    logger.debug("Failed to handle error result", ex);
                }
            }
            return false;
        }

        @Override
        public <S> void afterCompletion(NativeWebRequest request, DeferredResult<S> deferredResult) {
            expired = true;
            if (completionCallback != null) {
                completionCallback.run();
            }
        }
    };
}