Interface CallableProcessingInterceptor
- All Known Implementing Classes:
- TimeoutCallableProcessingInterceptor
Callable on behalf of the application with
 an AsyncTaskExecutor.
 A CallableProcessingInterceptor is invoked before and after the
 invocation of the Callable task in the asynchronous thread, as well
 as on timeout/error from a container thread, or after completing for any reason
 including a timeout or network error.
 
As a general rule exceptions raised by interceptor methods will cause
 async processing to resume by dispatching back to the container and using
 the Exception instance as the concurrent result. Such exceptions will then
 be processed through the HandlerExceptionResolver mechanism.
 
The handleTimeout method
 can select a value to be used to resume processing.
- Since:
- 3.2
- Author:
- Rossen Stoyanchev, Rob Winch
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final ObjectConstant indicating that the response has been handled by this interceptor without a result and that no further interceptors are to be invoked.static final ObjectConstant indicating that no result has been determined by this interceptor, giving subsequent interceptors a chance.
- 
Method SummaryModifier and TypeMethodDescriptiondefault <T> voidafterCompletion(NativeWebRequest request, Callable<T> task) Invoked from a container thread when async processing completes for any reason including timeout or network error.default <T> voidbeforeConcurrentHandling(NativeWebRequest request, Callable<T> task) Invoked before the start of concurrent handling in the original thread in which theCallableis submitted for concurrent handling.default <T> ObjecthandleError(NativeWebRequest request, Callable<T> task, Throwable t) Invoked from a container thread when an error occurred while processing the async request before theCallabletask completes.default <T> ObjecthandleTimeout(NativeWebRequest request, Callable<T> task) Invoked from a container thread when the async request times out before theCallabletask completes.default <T> voidpostProcess(NativeWebRequest request, Callable<T> task, Object concurrentResult) Invoked after theCallablehas produced a result in the async thread in which theCallableis executed.default <T> voidpreProcess(NativeWebRequest request, Callable<T> task) Invoked after the start of concurrent handling in the async thread in which theCallableis executed and before the actual invocation of theCallable.
- 
Field Details- 
RESULT_NONEConstant indicating that no result has been determined by this interceptor, giving subsequent interceptors a chance.
- 
RESPONSE_HANDLEDConstant indicating that the response has been handled by this interceptor without a result and that no further interceptors are to be invoked.
 
- 
- 
Method Details- 
beforeConcurrentHandlingdefault <T> void beforeConcurrentHandling(NativeWebRequest request, Callable<T> task) throws Exception Invoked before the start of concurrent handling in the original thread in which theCallableis submitted for concurrent handling.This is useful for capturing the state of the current thread just prior to invoking the Callable. Once the state is captured, it can then be transferred to the newThreadinpreProcess(NativeWebRequest, Callable). Capturing the state of Spring Security's SecurityContextHolder and migrating it to the new Thread is a concrete example of where this is useful.The default implementation is empty. - Parameters:
- request- the current request
- task- the task for the current async request
- Throws:
- Exception- in case of errors
 
- 
preProcessInvoked after the start of concurrent handling in the async thread in which theCallableis executed and before the actual invocation of theCallable.The default implementation is empty. - Parameters:
- request- the current request
- task- the task for the current async request
- Throws:
- Exception- in case of errors
 
- 
postProcessdefault <T> void postProcess(NativeWebRequest request, Callable<T> task, @Nullable Object concurrentResult) throws Exception Invoked after theCallablehas produced a result in the async thread in which theCallableis executed. This method may be invoked later thanafterTimeoutorafterCompletiondepending on when theCallablefinishes processing.The default implementation is empty. 
- 
handleTimeoutInvoked from a container thread when the async request times out before theCallabletask completes. Implementations may return a value, including anException, to use instead of the value theCallabledid not return in time.The default implementation always returns RESULT_NONE.- Parameters:
- request- the current request
- task- the task for the current async request
- Returns:
- a concurrent result value; if the value is anything other than
 RESULT_NONEorRESPONSE_HANDLED, concurrent processing is resumed and subsequent interceptors are not invoked
- Throws:
- Exception- in case of errors
 
- 
handleErrordefault <T> Object handleError(NativeWebRequest request, Callable<T> task, Throwable t) throws Exception Invoked from a container thread when an error occurred while processing the async request before theCallabletask completes. Implementations may return a value, including anException, to use instead of the value theCallabledid not return in time.The default implementation always returns RESULT_NONE.- Parameters:
- request- the current request
- task- the task for the current async request
- t- the error that occurred while request processing
- Returns:
- a concurrent result value; if the value is anything other than
 RESULT_NONEorRESPONSE_HANDLED, concurrent processing is resumed and subsequent interceptors are not invoked
- Throws:
- Exception- in case of errors
- Since:
- 5.0
 
- 
afterCompletionInvoked from a container thread when async processing completes for any reason including timeout or network error.The default implementation is empty. - Parameters:
- request- the current request
- task- the task for the current async request
- Throws:
- Exception- in case of errors
 
 
-