2626import org .springframework .web .context .request .NativeWebRequest ;
2727
2828/**
29- * {@code DeferredResult} provides an alternative to using a {@link Callable}
30- * for asynchronous request processing. While a {@code Callable} is executed
31- * concurrently on behalf of the application, with a {@code DeferredResult} the
32- * application can produce the result from a thread of its choice.
29+ * {@code DeferredResult} provides an alternative to using a {@link Callable} for
30+ * asynchronous request processing. While a {@code Callable} is executed concurrently
31+ * on behalf of the application, with a {@code DeferredResult} the application can
32+ * produce the result from a thread of its choice.
3333 *
34- * <p>Subclasses can extend this class to easily associate additional data or
35- * behavior with the {@link DeferredResult}. For example, one might want to
36- * associate the user used to create the {@link DeferredResult} by extending the
37- * class and adding an additional property for the user. In this way, the user
38- * could easily be accessed later without the need to use a data structure to do
39- * the mapping.
34+ * <p>Subclasses can extend this class to easily associate additional data or behavior
35+ * with the {@link DeferredResult}. For example, one might want to associate the user
36+ * used to create the {@link DeferredResult} by extending the class and adding an
37+ * additional property for the user. In this way, the user could easily be accessed
38+ * later without the need to use a data structure to do the mapping.
4039 *
41- * <p>An example of associating additional behavior to this class might be
42- * realized by extending the class to implement an additional interface. For
43- * example, one might want to implement {@link Comparable} so that when the
44- * {@link DeferredResult} is added to a {@link PriorityQueue} it is handled in
45- * the correct order.
40+ * <p>An example of associating additional behavior to this class might be realized
41+ * by extending the class to implement an additional interface. For example, one
42+ * might want to implement {@link Comparable} so that when the {@link DeferredResult}
43+ * is added to a {@link PriorityQueue} it is handled in the correct order.
4644 *
4745 * @author Rossen Stoyanchev
4846 * @author Rob Winch
4947 * @since 3.2
5048 */
5149public class DeferredResult <T > {
5250
53- private static final Log logger = LogFactory .getLog (DeferredResult .class );
54-
5551 private static final Object RESULT_NONE = new Object ();
5652
53+ private static final Log logger = LogFactory .getLog (DeferredResult .class );
54+
5755
5856 private final Long timeout ;
5957
@@ -88,7 +86,7 @@ public DeferredResult(long timeout) {
8886 /**
8987 * Create a DeferredResult with a timeout value and a default result to use
9088 * in case of timeout.
91- * @param timeout timeout value in milliseconds; ignored if {@code null}
89+ * @param timeout timeout value in milliseconds ( ignored if {@code null})
9290 * @param timeoutResult the result to use
9391 */
9492 public DeferredResult (Long timeout , Object timeoutResult ) {
@@ -117,22 +115,21 @@ final Long getTimeoutValue() {
117115 }
118116
119117 /**
120- * Register code to invoke when the async request times out. This method is
121- * called from a container thread when an async request times out before the
122- * {@code DeferredResult} has been set. It may invoke
123- * {@link DeferredResult#setResult(Object) setResult} or
124- * {@link DeferredResult#setErrorResult(Object) setErrorResult} to resume
125- * processing.
118+ * Register code to invoke when the async request times out.
119+ * <p>This method is called from a container thread when an async request
120+ * times out before the {@code DeferredResult} has been populated.
121+ * It may invoke {@link DeferredResult#setResult setResult} or
122+ * {@link DeferredResult#setErrorResult setErrorResult} to resume processing.
126123 */
127124 public void onTimeout (Runnable callback ) {
128125 this .timeoutCallback = callback ;
129126 }
130127
131128 /**
132- * Register code to invoke when the async request completes. This method is
133- * called from a container thread when an async request completed for any
134- * reason including timeout and network error. This method is useful for
135- * detecting that a {@code DeferredResult} instance is no longer usable.
129+ * Register code to invoke when the async request completes.
130+ * <p>This method is called from a container thread when an async request
131+ * completed for any reason including timeout and network error. This is useful
132+ * for detecting that a {@code DeferredResult} instance is no longer usable.
136133 */
137134 public void onCompletion (Runnable callback ) {
138135 this .completionCallback = callback ;
@@ -161,8 +158,8 @@ public final void setResultHandler(DeferredResultHandler resultHandler) {
161158 /**
162159 * Set the value for the DeferredResult and handle it.
163160 * @param result the value to set
164- * @return "true" if the result was set and passed on for handling; "false"
165- * if the result was already set or the async request expired.
161+ * @return "true" if the result was set and passed on for handling;
162+ * "false" if the result was already set or the async request expired
166163 * @see #isSetOrExpired()
167164 */
168165 public boolean setResult (T result ) {
@@ -183,13 +180,12 @@ private boolean setResultInternal(Object result) {
183180 }
184181
185182 /**
186- * Set an error value for the {@link DeferredResult} and handle it. The value
187- * may be an {@link Exception} or {@link Throwable} in which case it will be
188- * processed as if a handler raised the exception.
183+ * Set an error value for the {@link DeferredResult} and handle it.
184+ * The value may be an {@link Exception} or {@link Throwable} in which case
185+ * it will be processed as if a handler raised the exception.
189186 * @param result the error result value
190187 * @return "true" if the result was set to the error value and passed on for
191- * handling; "false" if the result was already set or the async request
192- * expired.
188+ * handling; "false" if the result was already set or the async request expired
193189 * @see #isSetOrExpired()
194190 */
195191 public boolean setErrorResult (Object result ) {
0 commit comments