Browse Source

PathPatternParser allows '-' in variables

The isJavaIdentifier check is not really required, but also seems
intuitive for variables to be Java identifier-like. This commit relaxes
the constraint a bit by also allowing "-".

Closes gh-23101
pull/23837/head
Rossen Stoyanchev 6 years ago
parent
commit
7b697266be
  1. 4
      spring-web/src/main/java/org/springframework/web/util/pattern/InternalPathPatternParser.java
  2. 3
      spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternParserTests.java

4
spring-web/src/main/java/org/springframework/web/util/pattern/InternalPathPatternParser.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -172,7 +172,7 @@ class InternalPathPatternParser { @@ -172,7 +172,7 @@ class InternalPathPatternParser {
}
else if ((this.pos > (this.variableCaptureStart + 1 + (this.isCaptureTheRestVariable ? 1 : 0)) &&
!Character.isJavaIdentifierPart(ch))) {
!Character.isJavaIdentifierPart(ch) && ch != '-')) {
throw new PatternParseException(this.pos, this.pathPatternData,
PatternMessage.ILLEGAL_CHARACTER_IN_CAPTURE_DESCRIPTOR,
Character.toString(ch));

3
spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternParserTests.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -185,6 +185,7 @@ public class PathPatternParserTests { @@ -185,6 +185,7 @@ public class PathPatternParserTests {
checkStructure("/{foo}");
checkStructure("/{f}/");
checkStructure("/{foo}/{bar}/{wibble}");
checkStructure("/{mobile-number}"); // gh-23101
}
@Test

Loading…
Cancel
Save