public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter implements DeferredResultProcessingInterceptor
RESPONSE_HANDLED, RESULT_NONE
Constructor and Description |
---|
AsyncRequestInterceptor(SessionFactory sessionFactory,
SessionHolder sessionHolder) |
Modifier and Type | Method and Description |
---|---|
<T> void |
afterCompletion(NativeWebRequest request,
Callable<T> task)
This implementation is empty.
|
<T> void |
afterCompletion(NativeWebRequest request,
DeferredResult<T> deferredResult)
Invoked from a container thread when an async request completed for any
reason including timeout and network error.
|
<T> void |
beforeConcurrentHandling(NativeWebRequest request,
DeferredResult<T> deferredResult)
Invoked immediately before the start of concurrent handling, in the same
thread that started it.
|
void |
bindSession() |
<T> Object |
handleTimeout(NativeWebRequest request,
Callable<T> task)
This implementation always returns
RESULT_NONE . |
<T> boolean |
handleTimeout(NativeWebRequest request,
DeferredResult<T> deferredResult)
Invoked from a container thread when an async request times out before
the
DeferredResult has been set. |
<T> void |
postProcess(NativeWebRequest request,
Callable<T> task,
Object concurrentResult)
This implementation is empty.
|
<T> void |
postProcess(NativeWebRequest request,
DeferredResult<T> deferredResult,
Object result)
Invoked after a
DeferredResult has been set, via
DeferredResult.setResult(Object) or
DeferredResult.setErrorResult(Object) , and is also ready to
handle the concurrent result. |
<T> void |
preProcess(NativeWebRequest request,
Callable<T> task)
This implementation is empty.
|
<T> void |
preProcess(NativeWebRequest request,
DeferredResult<T> deferredResult)
Invoked immediately after the start of concurrent handling, in the same
thread that started it.
|
beforeConcurrentHandling
public AsyncRequestInterceptor(SessionFactory sessionFactory, SessionHolder sessionHolder)
public <T> void preProcess(NativeWebRequest request, Callable<T> task)
CallableProcessingInterceptorAdapter
preProcess
in interface CallableProcessingInterceptor
preProcess
in class CallableProcessingInterceptorAdapter
request
- the current requesttask
- the task for the current async requestpublic void bindSession()
public <T> void postProcess(NativeWebRequest request, Callable<T> task, Object concurrentResult)
CallableProcessingInterceptorAdapter
postProcess
in interface CallableProcessingInterceptor
postProcess
in class CallableProcessingInterceptorAdapter
request
- the current requesttask
- the task for the current async requestconcurrentResult
- the result of concurrent processing, which could
be a Throwable
if the Callable
raised an exceptionpublic <T> Object handleTimeout(NativeWebRequest request, Callable<T> task)
CallableProcessingInterceptorAdapter
RESULT_NONE
.handleTimeout
in interface CallableProcessingInterceptor
handleTimeout
in class CallableProcessingInterceptorAdapter
request
- the current requesttask
- the task for the current async requestCallableProcessingInterceptor.RESULT_NONE
or CallableProcessingInterceptor.RESPONSE_HANDLED
, concurrent processing
is resumed and subsequent interceptors are not invokedpublic <T> void afterCompletion(NativeWebRequest request, Callable<T> task) throws Exception
CallableProcessingInterceptorAdapter
afterCompletion
in interface CallableProcessingInterceptor
afterCompletion
in class CallableProcessingInterceptorAdapter
request
- the current requesttask
- the task for the current async requestException
- in case of errorspublic <T> void beforeConcurrentHandling(NativeWebRequest request, DeferredResult<T> deferredResult)
DeferredResultProcessingInterceptor
DeferredResult
.beforeConcurrentHandling
in interface DeferredResultProcessingInterceptor
request
- the current requestdeferredResult
- the DeferredResult for the current requestpublic <T> void preProcess(NativeWebRequest request, DeferredResult<T> deferredResult)
DeferredResultProcessingInterceptor
DeferredResult
.
The DeferredResult
may have already been set, for example at
the time of its creation or by another thread.
preProcess
in interface DeferredResultProcessingInterceptor
request
- the current requestdeferredResult
- the DeferredResult for the current requestpublic <T> void postProcess(NativeWebRequest request, DeferredResult<T> deferredResult, Object result)
DeferredResultProcessingInterceptor
DeferredResult
has been set, via
DeferredResult.setResult(Object)
or
DeferredResult.setErrorResult(Object)
, and is also ready to
handle the concurrent result.
This method may also be invoked after a timeout when the
DeferredResult
was created with a constructor accepting a default
timeout result.
postProcess
in interface DeferredResultProcessingInterceptor
request
- the current requestdeferredResult
- the DeferredResult for the current requestresult
- the result to which the DeferredResult
public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> deferredResult)
DeferredResultProcessingInterceptor
DeferredResult
has been set. Implementations may invoke
setResult
or
setErrorResult
to resume processing.handleTimeout
in interface DeferredResultProcessingInterceptor
request
- the current requestdeferredResult
- the DeferredResult for the current request; if the
DeferredResult
is set, then concurrent processing is resumed and
subsequent interceptors are not invokedtrue
if processing should continue, or false
if
other interceptors should not be invokedpublic <T> void afterCompletion(NativeWebRequest request, DeferredResult<T> deferredResult)
DeferredResultProcessingInterceptor
DeferredResult
instance is no longer usable.afterCompletion
in interface DeferredResultProcessingInterceptor
request
- the current requestdeferredResult
- the DeferredResult for the current request