From 42ae74b90d231965ccb4ff2ed6a6c998afc20798 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Sat, 18 Jun 2022 19:10:46 +0200 Subject: [PATCH] #1800 - Allow dots in template variable names. --- src/main/java/org/springframework/hateoas/UriTemplate.java | 5 +++-- .../org/springframework/hateoas/UriTemplateUnitTest.java | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/UriTemplate.java b/src/main/java/org/springframework/hateoas/UriTemplate.java index 3af0f30c..a2716e5b 100644 --- a/src/main/java/org/springframework/hateoas/UriTemplate.java +++ b/src/main/java/org/springframework/hateoas/UriTemplate.java @@ -50,8 +50,9 @@ import org.springframework.web.util.UriUtils; */ public class UriTemplate implements Iterable, 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; diff --git a/src/test/java/org/springframework/hateoas/UriTemplateUnitTest.java b/src/test/java/org/springframework/hateoas/UriTemplateUnitTest.java index 1eae84b6..18b72b8d 100755 --- a/src/test/java/org/springframework/hateoas/UriTemplateUnitTest.java +++ b/src/test/java/org/springframework/hateoas/UriTemplateUnitTest.java @@ -382,6 +382,11 @@ class UriTemplateUnitTest { .doesNotThrowAnyException(); } + @Test // #1800 + void supportsDotsInVariableName() { + assertThat(UriTemplate.of("/path/{foo.bar}").getVariableNames()).contains("foo.bar"); + } + private static void assertVariables(UriTemplate template, TemplateVariable... variables) { assertVariables(template, Arrays.asList(variables)); }