@@ -462,7 +462,7 @@ protected AntPathStringMatcher getStringMatcher(String pattern) {
462
462
matcher = this .stringMatcherCache .get (pattern );
463
463
}
464
464
if (matcher == null ) {
465
- matcher = new AntPathStringMatcher (pattern , this .caseSensitive );
465
+ matcher = new AntPathStringMatcher (pattern , this .pathSeparator , this . caseSensitive );
466
466
if (cachePatterns == null && this .stringMatcherCache .size () >= CACHE_TURNOFF_THRESHOLD ) {
467
467
// Try to adapt to the runtime situation that we're encountering:
468
468
// There are obviously too many different patterns coming in here...
@@ -646,8 +646,6 @@ public Comparator<String> getPatternComparator(String path) {
646
646
*/
647
647
protected static class AntPathStringMatcher {
648
648
649
- private static final Pattern GLOB_PATTERN = Pattern .compile ("\\ ?|\\ *|\\ {((?:\\ {[^/]+?\\ }|[^/{}]|\\ \\ [{}])+?)\\ }" );
650
-
651
649
private static final String DEFAULT_VARIABLE_PATTERN = "((?s).*)" ;
652
650
653
651
private final String rawPattern ;
@@ -661,15 +659,11 @@ protected static class AntPathStringMatcher {
661
659
662
660
private final List <String > variableNames = new ArrayList <>();
663
661
664
- public AntPathStringMatcher (String pattern ) {
665
- this (pattern , true );
666
- }
667
-
668
- public AntPathStringMatcher (String pattern , boolean caseSensitive ) {
662
+ public AntPathStringMatcher (String pattern , String pathSeparator , boolean caseSensitive ) {
669
663
this .rawPattern = pattern ;
670
664
this .caseSensitive = caseSensitive ;
671
665
StringBuilder patternBuilder = new StringBuilder ();
672
- Matcher matcher = GLOB_PATTERN .matcher (pattern );
666
+ Matcher matcher = getGlobPattern ( pathSeparator ) .matcher (pattern );
673
667
int end = 0 ;
674
668
while (matcher .find ()) {
675
669
patternBuilder .append (quote (pattern , end , matcher .start ()));
@@ -710,6 +704,10 @@ else if (match.startsWith("{") && match.endsWith("}")) {
710
704
}
711
705
}
712
706
707
+ private static Pattern getGlobPattern (String pathSeparator ) {
708
+ return Pattern .compile (String .format ("\\ ?|\\ *|\\ {((?:\\ {[^%s]+?\\ }|[^%s{}]|\\ \\ [{}])+?)\\ }" , pathSeparator , pathSeparator ));
709
+ }
710
+
713
711
private String quote (String s , int start , int end ) {
714
712
if (start == end ) {
715
713
return "" ;
0 commit comments