diff --git a/spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java b/spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java index 11b80df19c..d3a5a5d0d7 100644 --- a/spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java +++ b/spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java @@ -339,7 +339,7 @@ public class PathPattern implements Comparable { } } } - resultPath = PathContainer.parsePath(buf.toString()); + resultPath = PathContainer.parsePath(buf.toString(), String.valueOf(this.separator)); } else if (startIndex >= endIndex) { resultPath = PathContainer.parsePath(""); diff --git a/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java b/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java index 2337f01be7..02782c5221 100644 --- a/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java @@ -707,6 +707,17 @@ public class PathPatternTests { checkExtractPathWithinPattern("/", "//", ""); } + @Test + public void extractPathWithinPatternCustomSeparator() { + PathPatternParser ppp = new PathPatternParser(); + ppp.setSeparator('.'); + PathPattern pp = ppp.parse("test.**"); + PathContainer pathContainer = PathContainer.parsePath("test.projects..spring-framework", "."); + PathContainer result = pp.extractPathWithinPattern(pathContainer); + assertThat(result.value()).isEqualTo("projects.spring-framework"); + assertThat(result.elements()).hasSize(3); + } + @Test public void extractUriTemplateVariables_spr15264() { PathPattern pp;