Improvement in AntPathMatcher.combine method
Issues: SPR-7970
This commit is contained in:
parent
4653dbe73f
commit
9833a4c385
|
|
@ -299,7 +299,9 @@ public class AntPathMatcher implements PathMatcher {
|
||||||
else if (!StringUtils.hasText(pattern2)) {
|
else if (!StringUtils.hasText(pattern2)) {
|
||||||
return pattern1;
|
return pattern1;
|
||||||
}
|
}
|
||||||
else if (!pattern1.contains("{") && match(pattern1, pattern2)) {
|
else if (!pattern1.equals(pattern2) && !pattern1.contains("{") && match(pattern1, pattern2)) {
|
||||||
|
// /* + /hotel -> /hotel ; "/*.*" + "/*.html" -> /*.html
|
||||||
|
// However /user + /user -> /usr/user ; /{foo} + /bar -> /{foo}/bar
|
||||||
return pattern2;
|
return pattern2;
|
||||||
}
|
}
|
||||||
else if (pattern1.endsWith("/*")) {
|
else if (pattern1.endsWith("/*")) {
|
||||||
|
|
|
||||||
|
|
@ -348,13 +348,13 @@ public class AntPathMatcherTests {
|
||||||
assertEquals("com.example", result.get("symbolicName"));
|
assertEquals("com.example", result.get("symbolicName"));
|
||||||
assertEquals("1.0.0", result.get("version"));
|
assertEquals("1.0.0", result.get("version"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// SPR-7787
|
// SPR-7787
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void extractUriTemplateVarsRegexQualifiers() {
|
public void extractUriTemplateVarsRegexQualifiers() {
|
||||||
Map<String, String> result = pathMatcher.extractUriTemplateVariables(
|
Map<String, String> result = pathMatcher.extractUriTemplateVariables(
|
||||||
"{symbolicName:[\\p{L}\\.]+}-sources-{version:[\\p{N}\\.]+}.jar",
|
"{symbolicName:[\\p{L}\\.]+}-sources-{version:[\\p{N}\\.]+}.jar",
|
||||||
"com.example-sources-1.0.0.jar");
|
"com.example-sources-1.0.0.jar");
|
||||||
assertEquals("com.example", result.get("symbolicName"));
|
assertEquals("com.example", result.get("symbolicName"));
|
||||||
assertEquals("1.0.0", result.get("version"));
|
assertEquals("1.0.0", result.get("version"));
|
||||||
|
|
@ -376,18 +376,18 @@ public class AntPathMatcherTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SPR-8455
|
// SPR-8455
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void extractUriTemplateVarsRegexCapturingGroups() {
|
public void extractUriTemplateVarsRegexCapturingGroups() {
|
||||||
try {
|
try {
|
||||||
pathMatcher.extractUriTemplateVariables("/web/{id:foo(bar)?}", "/web/foobar");
|
pathMatcher.extractUriTemplateVariables("/web/{id:foo(bar)?}", "/web/foobar");
|
||||||
fail("Expected exception");
|
fail("Expected exception");
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
assertTrue("Expected helpful message on the use of capturing groups",
|
assertTrue("Expected helpful message on the use of capturing groups",
|
||||||
e.getMessage().contains("The number of capturing groups in the pattern"));
|
e.getMessage().contains("The number of capturing groups in the pattern"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void combine() {
|
public void combine() {
|
||||||
assertEquals("", pathMatcher.combine(null, null));
|
assertEquals("", pathMatcher.combine(null, null));
|
||||||
|
|
@ -410,7 +410,8 @@ public class AntPathMatcherTests {
|
||||||
assertEquals("/*.html", pathMatcher.combine("/**", "/*.html"));
|
assertEquals("/*.html", pathMatcher.combine("/**", "/*.html"));
|
||||||
assertEquals("/*.html", pathMatcher.combine("/*", "/*.html"));
|
assertEquals("/*.html", pathMatcher.combine("/*", "/*.html"));
|
||||||
assertEquals("/*.html", pathMatcher.combine("/*.*", "/*.html"));
|
assertEquals("/*.html", pathMatcher.combine("/*.*", "/*.html"));
|
||||||
assertEquals("/{foo}/bar", pathMatcher.combine("/{foo}", "/bar"));
|
assertEquals("/{foo}/bar", pathMatcher.combine("/{foo}", "/bar")); // SPR-8858
|
||||||
|
assertEquals("/user/user", pathMatcher.combine("/user", "/user")); // SPR-7970
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue