/** * Shortcut method for setting the same property on the underlying pattern * parser in use. For more details see: * <ul> * <li>{@link #getPathPatternParser()} -- the underlying pattern parser * <li>{@link PathPatternParser#setCaseSensitive(boolean)} -- the case * sensitive slash option, including its default value. * </ul> * <p><strong>Note:</strong> aside from */ public void setUseCaseSensitiveMatch(boolean caseSensitiveMatch) { this.patternParser.setCaseSensitive(caseSensitiveMatch); }
@Test public void pathPredicates() { PathPatternParser parser = new PathPatternParser(); parser.setCaseSensitive(false); Function<String, RequestPredicate> pathPredicates = RequestPredicates.pathPredicates(parser); URI uri = URI.create("http://localhost/path"); RequestPredicate predicate = pathPredicates.apply("/P*"); MockServerRequest request = MockServerRequest.builder().uri(uri).build(); assertTrue(predicate.test(request)); }
@Test // SPR-13286 public void caseInsensitive() { PathPatternParser pp = new PathPatternParser(); pp.setCaseSensitive(false); PathPattern p = pp.parse("/group/{groupName}/members"); assertMatches(p,"/group/sales/members"); assertMatches(p,"/Group/Sales/Members"); assertMatches(p,"/group/Sales/members"); }
@Test public void caseSensitivity() { PathPatternParser pp = new PathPatternParser(); pp.setCaseSensitive(false); PathPattern p = pp.parse("abc"); assertMatches(p,"AbC"); pp.setCaseSensitive(true); p = pp.parse("abc"); assertNoMatch(p,"AbC"); pp.setCaseSensitive(false); p = pp.parse("{foo:[A-Z]*}"); assertMatches(p,"abc"); pp.setCaseSensitive(true); p = pp.parse("{foo:[A-Z]*}"); assertNoMatch(p,"abc"); pp.setCaseSensitive(false); p = pp.parse("ab?"); assertMatches(p,"AbC"); pp.setCaseSensitive(true); p = pp.parse("ab?"); assertNoMatch(p,"AbC"); pp.setCaseSensitive(false); p = pp.parse("{abc:[A-Z]*}_{def:[A-Z]*}"); assertMatches(p,"abc_abc");
@Test public void equalsAndHashcode() { PathPatternParser caseInsensitiveParser = new PathPatternParser(); caseInsensitiveParser.setCaseSensitive(false); PathPatternParser caseSensitiveParser = new PathPatternParser(); PathPattern pp1 = caseInsensitiveParser.parse("/abc"); PathPattern pp2 = caseInsensitiveParser.parse("/abc"); PathPattern pp3 = caseInsensitiveParser.parse("/def"); assertEquals(pp1, pp2); assertEquals(pp1.hashCode(), pp2.hashCode()); assertNotEquals(pp1, pp3); assertFalse(pp1.equals("abc")); pp1 = caseInsensitiveParser.parse("/abc"); pp2 = caseSensitiveParser.parse("/abc"); assertFalse(pp1.equals(pp2)); assertNotEquals(pp1.hashCode(), pp2.hashCode()); }