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

Reply via email to