Skip to content

Commit 2b77c08

Browse files
committed
Clear path pattern in HandlerMapping
This commit refactors cb2b141 to move the cleaning code from a DeferredResultProcessingInterceptor to the RouterFunctionMapping. See gh-26239
1 parent cb2b141 commit 2b77c08

File tree

2 files changed

+6
-15
lines changed

2 files changed

+6
-15
lines changed

spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultAsyncServerResponse.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,8 @@
4040
import org.springframework.util.Assert;
4141
import org.springframework.util.ClassUtils;
4242
import org.springframework.util.MultiValueMap;
43-
import org.springframework.web.context.request.NativeWebRequest;
44-
import org.springframework.web.context.request.RequestAttributes;
4543
import org.springframework.web.context.request.async.AsyncWebRequest;
4644
import org.springframework.web.context.request.async.DeferredResult;
47-
import org.springframework.web.context.request.async.DeferredResultProcessingInterceptor;
4845
import org.springframework.web.context.request.async.WebAsyncManager;
4946
import org.springframework.web.context.request.async.WebAsyncUtils;
5047
import org.springframework.web.servlet.ModelAndView;
@@ -57,16 +54,6 @@
5754
*/
5855
final class DefaultAsyncServerResponse extends ErrorHandlingServerResponse implements AsyncServerResponse {
5956

60-
private static final DeferredResultProcessingInterceptor CLEAR_PATTERN_ATTRIBUTE_INTERCEPTOR =
61-
new DeferredResultProcessingInterceptor() {
62-
@Override
63-
public <T> void postProcess(NativeWebRequest request, DeferredResult<T> deferredResult,
64-
Object concurrentResult) {
65-
request.removeAttribute(RouterFunctions.MATCHING_PATTERN_ATTRIBUTE,
66-
RequestAttributes.SCOPE_REQUEST);
67-
}
68-
};
69-
7057
static final boolean reactiveStreamsPresent = ClassUtils.isPresent(
7158
"org.reactivestreams.Publisher", DefaultAsyncServerResponse.class.getClassLoader());
7259

@@ -141,7 +128,6 @@ static void writeAsync(HttpServletRequest request, HttpServletResponse response,
141128
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
142129
AsyncWebRequest asyncWebRequest = WebAsyncUtils.createAsyncWebRequest(request, response);
143130
asyncManager.setAsyncWebRequest(asyncWebRequest);
144-
asyncManager.registerDeferredResultInterceptors(CLEAR_PATTERN_ATTRIBUTE_INTERCEPTOR);
145131
try {
146132
asyncManager.startDeferredResultProcessing(deferredResult);
147133
}

spring-webmvc/src/main/java/org/springframework/web/servlet/function/support/RouterFunctionMapping.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,17 @@ private void initMessageConverters() {
189189
protected Object getHandlerInternal(HttpServletRequest servletRequest) throws Exception {
190190
if (this.routerFunction != null) {
191191
ServerRequest request = ServerRequest.create(servletRequest, this.messageConverters);
192-
servletRequest.setAttribute(RouterFunctions.REQUEST_ATTRIBUTE, request);
192+
setAttributes(servletRequest, request);
193193
return this.routerFunction.route(request).orElse(null);
194194
}
195195
else {
196196
return null;
197197
}
198198
}
199199

200+
private void setAttributes(HttpServletRequest servletRequest, ServerRequest request) {
201+
servletRequest.removeAttribute(RouterFunctions.MATCHING_PATTERN_ATTRIBUTE);
202+
servletRequest.setAttribute(RouterFunctions.REQUEST_ATTRIBUTE, request);
203+
}
204+
200205
}

0 commit comments

Comments
 (0)