Add hasPatternSyntax method to PathPattern

This commit is contained in:
Rossen Stoyanchev
2019-05-13 18:05:24 -04:00
parent ac6c96a391
commit afc0ae3752
2 changed files with 21 additions and 0 deletions

View File

@@ -175,6 +175,17 @@ public class PathPattern implements Comparable<PathPattern> {
return this.patternString;
}
/**
* Whether the pattern string contains pattern syntax that would require
* use of {@link #matches(PathContainer)}, or if it is a regular String that
* could be compared directly to others.
* @since 5.2
*/
public boolean hasPatternSyntax() {
return this.score > 0 || this.patternString.indexOf('?') != -1;
}
/**
* Whether this pattern matches the given path.
* @param pathContainer the candidate path to attempt to match against

View File

@@ -57,6 +57,16 @@ public class PathPatternTests {
assertEquals("[/][/][/]",elementsToString(toPathContainer("///").elements()));
}
@Test
public void hasPatternSyntax() {
PathPatternParser parser = new PathPatternParser();
assertTrue(parser.parse("/foo/*").hasPatternSyntax());
assertTrue(parser.parse("/foo/**/bar").hasPatternSyntax());
assertTrue(parser.parse("/f?o").hasPatternSyntax());
assertTrue(parser.parse("/foo/{bar}/baz").hasPatternSyntax());
assertFalse(parser.parse("/foo/bar").hasPatternSyntax());
}
@Test
public void matching_LiteralPathElement() {
checkMatches("foo", "foo");