parent
9059fb3fc7
commit
7f121e82f4
|
@ -40,8 +40,13 @@ import org.springframework.util.StringUtils;
|
||||||
* @since 3.1
|
* @since 3.1
|
||||||
*/
|
*/
|
||||||
public final class RegexRequestMatcher implements RequestMatcher {
|
public final class RegexRequestMatcher implements RequestMatcher {
|
||||||
|
|
||||||
private final static Log logger = LogFactory.getLog(RegexRequestMatcher.class);
|
private final static Log logger = LogFactory.getLog(RegexRequestMatcher.class);
|
||||||
|
|
||||||
|
private static final int DEFAULT = Pattern.DOTALL;
|
||||||
|
|
||||||
|
private static final int CASE_INSENSITIVE = DEFAULT | Pattern.CASE_INSENSITIVE;
|
||||||
|
|
||||||
private final Pattern pattern;
|
private final Pattern pattern;
|
||||||
private final HttpMethod httpMethod;
|
private final HttpMethod httpMethod;
|
||||||
|
|
||||||
|
@ -64,14 +69,8 @@ public final class RegexRequestMatcher implements RequestMatcher {
|
||||||
* {@link Pattern#CASE_INSENSITIVE} flag set.
|
* {@link Pattern#CASE_INSENSITIVE} flag set.
|
||||||
*/
|
*/
|
||||||
public RegexRequestMatcher(String pattern, String httpMethod, boolean caseInsensitive) {
|
public RegexRequestMatcher(String pattern, String httpMethod, boolean caseInsensitive) {
|
||||||
if (caseInsensitive) {
|
this.pattern = Pattern.compile(pattern, caseInsensitive ? CASE_INSENSITIVE : DEFAULT);
|
||||||
this.pattern = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
|
this.httpMethod = StringUtils.hasText(httpMethod) ? HttpMethod.valueOf(httpMethod) : null;
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.pattern = Pattern.compile(pattern);
|
|
||||||
}
|
|
||||||
this.httpMethod = StringUtils.hasText(httpMethod) ? HttpMethod
|
|
||||||
.valueOf(httpMethod) : null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -108,6 +108,22 @@ public class RegexRequestMatcherTests {
|
||||||
assertThat(matcher.matches(request)).isFalse();
|
assertThat(matcher.matches(request)).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void matchesWithCarriageReturn() {
|
||||||
|
RegexRequestMatcher matcher = new RegexRequestMatcher(".*", null);
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/blah%0a");
|
||||||
|
request.setServletPath("/blah\n");
|
||||||
|
assertThat(matcher.matches(request)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void matchesWithLineFeed() {
|
||||||
|
RegexRequestMatcher matcher = new RegexRequestMatcher(".*", null);
|
||||||
|
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/blah%0d");
|
||||||
|
request.setServletPath("/blah\r");
|
||||||
|
assertThat(matcher.matches(request)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toStringThenFormatted() {
|
public void toStringThenFormatted() {
|
||||||
RegexRequestMatcher matcher = new RegexRequestMatcher("/blah", "GET");
|
RegexRequestMatcher matcher = new RegexRequestMatcher("/blah", "GET");
|
||||||
|
|
Loading…
Reference in New Issue