#1802 - Allow dots in template variable names.

This commit is contained in:
Oliver Drotbohm
2022-06-18 19:10:46 +02:00
parent 5d3136060d
commit 8169fe92cb
2 changed files with 11 additions and 2 deletions

View File

@@ -50,8 +50,9 @@ import org.springframework.web.util.UriUtils;
*/
public class UriTemplate implements Iterable<TemplateVariable>, Serializable {
private static final Pattern VARIABLE_REGEX = Pattern.compile("\\{([\\?\\&#/\\.\\+\\;]?)([\\w(\\:\\d+)*%\\,*]+)\\}");
private static final Pattern ELEMENT_REGEX = Pattern.compile("([\\w\\%]+)(\\:\\d+)?(\\*)?");
private static final Pattern VARIABLE_REGEX = Pattern
.compile("\\{([\\?\\&#/\\.\\+\\;]?)([\\w\\.(\\:\\d+)*%\\,*]+)\\}");
private static final Pattern ELEMENT_REGEX = Pattern.compile("([\\w\\.\\%]+)(\\:\\d+)?(\\*)?");
private static final long serialVersionUID = -1007874653930162262L;
private final TemplateVariables variables;

View File

@@ -382,6 +382,14 @@ class UriTemplateUnitTest {
.doesNotThrowAnyException();
}
@Test // #1802
void supportsDotsInVariableName() {
UriTemplate template = UriTemplate.of("/path/{foo.bar}");
assertThat(template.getVariableNames()).contains("foo.bar");
}
private static void assertVariables(UriTemplate template, TemplateVariable... variables) {
assertVariables(template, Arrays.asList(variables));
}