Disable AntPathRequestMatcher trim tokens

Issue gh-3831
This commit is contained in:
Rob Winch 2016-04-19 15:21:56 -05:00
parent 510cd59980
commit 6fa1588de9
2 changed files with 18 additions and 1 deletions

View File

@ -253,7 +253,7 @@ public final class AntPathRequestMatcher implements RequestMatcher {
}
private static class SpringAntMatcher implements Matcher {
private static final AntPathMatcher antMatcher = new AntPathMatcher();
private static final AntPathMatcher antMatcher = createMatcher();
private final String pattern;
@ -270,6 +270,12 @@ public final class AntPathRequestMatcher implements RequestMatcher {
public Map<String, String> extractUriTemplateVariables(String path) {
return antMatcher.extractUriTemplateVariables(this.pattern, path);
}
private static AntPathMatcher createMatcher() {
AntPathMatcher matcher = new AntPathMatcher();
matcher.setTrimTokens(false);
return matcher;
}
}
/**

View File

@ -162,6 +162,17 @@ public class AntPathRequestMatcherTests {
.isTrue();
}
@Test
public void spacesInPathSegmentsAreNotIgnored() {
AntPathRequestMatcher matcher = new AntPathRequestMatcher("/path/*/bar");
MockHttpServletRequest request = createRequest("/path /foo/bar");
assertThat(matcher.matches(request)).isFalse();
matcher = new AntPathRequestMatcher("/path/foo");
request = createRequest("/path /foo");
assertThat(matcher.matches(request)).isFalse();
}
@Test
public void equalsBehavesCorrectly() throws Exception {
// Both universal wildcard options should be equal