Add trySet method to DeferredResult
The method absorbs any potential StaleAsyncWebRequestException and returns false instead. Issue: SPR-8517
This commit is contained in:
@@ -103,6 +103,22 @@ public final class DeferredResult {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A variant of {@link #set(Object)} that absorbs a potential, resulting
|
||||
* {@link StaleAsyncWebRequestException}.
|
||||
* @return {@code false} if the outcome was a {@code StaleAsyncWebRequestException}
|
||||
*/
|
||||
public boolean trySet(Object result) throws StaleAsyncWebRequestException {
|
||||
try {
|
||||
set(result);
|
||||
return true;
|
||||
}
|
||||
catch (StaleAsyncWebRequestException ex) {
|
||||
// absorb
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked to complete async processing when a timeout occurs before
|
||||
* {@link #set(Object)} is called. Or if {@link #set(Object)} is already in
|
||||
|
||||
@@ -388,10 +388,11 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter i
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an AsyncTaskExecutor to use when a controller method returns a Callable.
|
||||
* <p>The default is a {@link SimpleAsyncTaskExecutor}
|
||||
*
|
||||
* TODO... need a better default
|
||||
* Set the AsyncTaskExecutor to use when a controller method returns a
|
||||
* {@code Callable}.
|
||||
* <p>The default instance type is a {@link SimpleAsyncTaskExecutor}.
|
||||
* It's recommended to change that default in production as the simple
|
||||
* executor does not re-use threads.
|
||||
*/
|
||||
public void setAsyncTaskExecutor(AsyncTaskExecutor taskExecutor) {
|
||||
this.taskExecutor = taskExecutor;
|
||||
|
||||
Reference in New Issue
Block a user