This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 3.3.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 1495a7c1e308b5f8d788664465dccbcf853d4b5b Author: Andriy Redko <[email protected]> AuthorDate: Thu Jun 17 20:32:33 2021 -0400 Added more UriBuilderImpl tests and documentation clarifications (cherry picked from commit 20576fbaa10c32a465b9d8c3383c5d4aac24d93d) (cherry picked from commit 6ec36084f23b5b9a5e41659b68aa8a24838f32d3) --- .../org/apache/cxf/jaxrs/impl/UriBuilderImpl.java | 9 +++++++++ .../org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java index fc614b5..ef49a29 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java @@ -46,6 +46,15 @@ import org.apache.cxf.jaxrs.model.URITemplate; import org.apache.cxf.jaxrs.utils.HttpUtils; import org.apache.cxf.jaxrs.utils.JAXRSUtils; +/** + * Implements the {@link UriBuilder} abstract class. A few notes with respect to CXF specifics: + * <ul> + * <li>it uses standard {@link URI} internally, so it does not conform to + * RFC-3986 which {@link UriBuilder} mandates</li> + * <li>it encodes URI components if it encounters '%XX' pattern within name (if applicable) or value (those + * are treated as partially encoded)</li> + * </ul + */ public class UriBuilderImpl extends UriBuilder implements Cloneable { private static final String EXPAND_QUERY_VALUE_AS_COLLECTION = "expand.query.value.as.collection"; diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java index 0fc683e..bef65a4 100644 --- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java +++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java @@ -1832,4 +1832,23 @@ public class UriBuilderImplTest { assertEquals(expected, uri.toString()); } + + @Test + public void queryParamToTemplatePartiallyEncoded() { + final String template = UriBuilder + .fromUri("my/path") + .queryParam("p", "%250%") + .toTemplate(); + assertEquals("my/path?p=%250%25", template); + } + + @Test + public void queryParamToTemplateNotEncoded() { + final String template = UriBuilder + .fromUri("my/path") + .queryParam("p", "{p}") + .resolveTemplate("p", "%250%") + .toTemplate(); + assertEquals("my/path?p=%25250%25", template); + } } \ No newline at end of file
