Deprecate UrlPathHelper shortcuts on AbstractHandlerMapping
Given the availability of two alternatives mechanisms for URL path matching, PathPatternParser and AntPathMatcher, and now that parsed patterns are enabled by default, it makes sense to reduce the proliferation of options on AbstractHandlerMapping by deprecating shortcuts related to String path matching. Most applications rely on Boot and on the MVC config to do all this. See gh-28607
This commit is contained in:
@@ -27,6 +27,7 @@ import org.springframework.web.servlet.HandlerExecutionChain;
|
||||
import org.springframework.web.servlet.HandlerMapping;
|
||||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
||||
import org.springframework.web.testfixture.servlet.MockServletContext;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
@@ -118,9 +119,13 @@ public class BeanNameUrlHandlerMappingTests {
|
||||
|
||||
@Test
|
||||
public void requestsWithFullPaths() throws Exception {
|
||||
|
||||
UrlPathHelper pathHelper = new UrlPathHelper();
|
||||
pathHelper.setAlwaysUseFullPath(true);
|
||||
|
||||
BeanNameUrlHandlerMapping hm = new BeanNameUrlHandlerMapping();
|
||||
hm.setPatternParser(null); // the test targets AntPathPatcher-specific feature
|
||||
hm.setAlwaysUseFullPath(true);
|
||||
hm.setUrlPathHelper(pathHelper);
|
||||
hm.setApplicationContext(wac);
|
||||
Object bean = wac.getBean("godCtrl");
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.HandlerMapping;
|
||||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
||||
import org.springframework.web.testfixture.servlet.MockServletContext;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
import org.springframework.web.util.WebUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -70,8 +71,10 @@ public class SimpleUrlHandlerMappingTests {
|
||||
@Test
|
||||
public void testNewlineInRequest() throws Exception {
|
||||
Object controller = new Object();
|
||||
UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||
urlPathHelper.setUrlDecode(false);
|
||||
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping(Collections.singletonMap("/*/baz", controller));
|
||||
mapping.setUrlDecode(false);
|
||||
mapping.setUrlPathHelper(urlPathHelper);
|
||||
mapping.setApplicationContext(new StaticApplicationContext());
|
||||
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo%0a%0dbar/baz");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-202 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -57,7 +57,6 @@ import org.springframework.web.servlet.handler.PathPatternsParameterizedTest;
|
||||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
||||
import org.springframework.web.util.ServletRequestPathUtils;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
import org.springframework.web.util.pattern.PathPatternParser;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
@@ -75,10 +74,12 @@ class RequestMappingInfoHandlerMappingTests {
|
||||
TestController controller = new TestController();
|
||||
|
||||
TestRequestMappingInfoHandlerMapping mapping1 = new TestRequestMappingInfoHandlerMapping();
|
||||
mapping1.setPatternParser(new PathPatternParser());
|
||||
|
||||
UrlPathHelper pathHelper = new UrlPathHelper();
|
||||
pathHelper.setRemoveSemicolonContent(false);
|
||||
|
||||
TestRequestMappingInfoHandlerMapping mapping2 = new TestRequestMappingInfoHandlerMapping();
|
||||
mapping2.setRemoveSemicolonContent(false);
|
||||
mapping2.setUrlPathHelper(pathHelper);
|
||||
|
||||
return Stream.of(mapping1, mapping2).peek(mapping -> {
|
||||
mapping.setApplicationContext(new StaticWebApplicationContext());
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -51,7 +51,6 @@ import org.springframework.web.servlet.handler.PathPatternsParameterizedTest;
|
||||
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
|
||||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
||||
import org.springframework.web.util.ServletRequestPathUtils;
|
||||
import org.springframework.web.util.pattern.PathPatternParser;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
@@ -78,10 +77,10 @@ class CrossOriginTests {
|
||||
wac.refresh();
|
||||
|
||||
TestRequestMappingInfoHandlerMapping mapping1 = new TestRequestMappingInfoHandlerMapping();
|
||||
mapping1.setPatternParser(new PathPatternParser());
|
||||
wac.getAutowireCapableBeanFactory().initializeBean(mapping1, "mapping1");
|
||||
|
||||
TestRequestMappingInfoHandlerMapping mapping2 = new TestRequestMappingInfoHandlerMapping();
|
||||
mapping2.setPatternParser(null);
|
||||
wac.getAutowireCapableBeanFactory().initializeBean(mapping2, "mapping2");
|
||||
wac.close();
|
||||
|
||||
|
||||
@@ -69,11 +69,12 @@ public class RequestMappingHandlerMappingTests {
|
||||
static Stream<Arguments> pathPatternsArguments() {
|
||||
RequestMappingHandlerMapping mapping1 = new RequestMappingHandlerMapping();
|
||||
StaticWebApplicationContext wac1 = new StaticWebApplicationContext();
|
||||
mapping1.setPatternParser(new PathPatternParser());
|
||||
mapping1.setApplicationContext(wac1);
|
||||
|
||||
RequestMappingHandlerMapping mapping2 = new RequestMappingHandlerMapping();
|
||||
StaticWebApplicationContext wac2 = new StaticWebApplicationContext();
|
||||
|
||||
RequestMappingHandlerMapping mapping2 = new RequestMappingHandlerMapping();
|
||||
mapping2.setPatternParser(null);
|
||||
mapping2.setApplicationContext(wac2);
|
||||
|
||||
return Stream.of(Arguments.of(mapping1, wac1), Arguments.of(mapping2, wac2));
|
||||
|
||||
Reference in New Issue
Block a user