SPR-8858 Fix in AntPathMatcher.combine(..)

Currently the combine method consolidates "/*" and "/hotel" 
into "/hotel". However if the first pattern contains URI template 
variables, the consolidation seems wrong. The fix is to prevent
the consolidation if the first pattern contains "{".
This commit is contained in:
Rossen Stoyanchev
2011-11-23 17:53:18 +00:00
parent e695a21688
commit b5bcfa0ae3
3 changed files with 9 additions and 5 deletions

View File

@@ -299,7 +299,7 @@ public class AntPathMatcher implements PathMatcher {
else if (!StringUtils.hasText(pattern2)) {
return pattern1;
}
else if (match(pattern1, pattern2)) {
else if (!pattern1.contains("{") && match(pattern1, pattern2)) {
return pattern2;
}
else if (pattern1.endsWith("/*")) {

View File

@@ -407,7 +407,10 @@ public class AntPathMatcherTests {
assertEquals("/hotel.html", pathMatcher.combine("/*.html", "/hotel.html"));
assertEquals("/hotel.html", pathMatcher.combine("/*.html", "/hotel"));
assertEquals("/hotel.html", pathMatcher.combine("/*.html", "/hotel.*"));
assertEquals("/*.html", pathMatcher.combine("/**", "/*.html"));
assertEquals("/*.html", pathMatcher.combine("/*", "/*.html"));
assertEquals("/*.html", pathMatcher.combine("/*.*", "/*.html"));
assertEquals("/{foo}/bar", pathMatcher.combine("/{foo}", "/bar"));
}
@Test

View File

@@ -148,10 +148,11 @@ public class ServletAnnotationMappingUtilsTests {
@Test
public void checkHeadersKeyValueNoMatchWithNegation() {
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
request.addHeader("header1", "value1");
String[] headers = new String[]{"header1!=value1"};
boolean result = ServletAnnotationMappingUtils.checkHeaders(headers, request);
assertFalse("Invalid request method result", result);
request.addHeader("Accept-Encoding", "gzip");
String[] headers1 = new String[]{"Accept-Encoding!=gzip"};
String[] headers2 = new String[]{"Accept-Encoding=gzip"};
assertFalse(ServletAnnotationMappingUtils.checkHeaders(headers1, request));
assertTrue(ServletAnnotationMappingUtils.checkHeaders(headers2, request));
}
@Test