commit | 4de6beef47beba07582dc06afd9ac637e2d39e68 | [log] [tgz] |
---|---|---|
author | jansupol <jan.supol@oracle.com> | Thu Oct 19 23:37:46 2023 +0200 |
committer | jansupol <15908245+jansupol@users.noreply.github.com> | Fri Oct 20 09:38:28 2023 +0200 |
tree | 0489e06edad6a4905346b396bb95e3e4e5457023 | |
parent | ab217b3415286b11f381cf6f23acca1b44b57a96 [diff] |
Fix query param in UriBuilder Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/core-common/src/main/java/org/glassfish/jersey/uri/UriTemplate.java b/core-common/src/main/java/org/glassfish/jersey/uri/UriTemplate.java index 003a4b2..49bf77f 100644 --- a/core-common/src/main/java/org/glassfish/jersey/uri/UriTemplate.java +++ b/core-common/src/main/java/org/glassfish/jersey/uri/UriTemplate.java
@@ -887,7 +887,7 @@ offset, encode, mapValues, sb); if (sb.length() > sbLength) { char firstQuery = sb.charAt(sbLength); - if (firstQuery != '?' && firstQuery != '&') { + if (firstQuery != '?' && (query.trim().charAt(0) != '{' || firstQuery != '&')) { sb.insert(sbLength, '?'); } }
diff --git a/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/uri/internal/JerseyUriBuilderTest.java b/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/uri/internal/JerseyUriBuilderTest.java index c5acb88..fddf149 100644 --- a/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/uri/internal/JerseyUriBuilderTest.java +++ b/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/uri/internal/JerseyUriBuilderTest.java
@@ -1659,6 +1659,17 @@ "key1=val1&key1=val2&key2=val1&key1=val3"); } + + @Test + public void testQueryParam() { + URI uri = new JerseyUriBuilder().scheme("http").host("localhost").port(8080).uri("some") + .replacePath("NewPath") + .replaceQuery("&Second") + .build(); + Assertions.assertEquals("&Second", uri.getQuery()); + } + + @Test void testFragment5269() throws URISyntaxException { final URI uri = new URI("http://www.example.org/foo.xml#xpointer(//Rube)").normalize();