You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2014/10/07 13:00:57 UTC

git commit: [CXF-6015] Excluding header and cokkie params from being url auto-encoded

Repository: cxf
Updated Branches:
  refs/heads/master 9c053334d -> aa237f26f


[CXF-6015] Excluding header and cokkie params from being url auto-encoded


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/aa237f26
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/aa237f26
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/aa237f26

Branch: refs/heads/master
Commit: aa237f26fcbc023240c79694e61d8dd2d0a34377
Parents: 9c05333
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Tue Oct 7 12:00:22 2014 +0100
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Tue Oct 7 12:00:22 2014 +0100

----------------------------------------------------------------------
 .../org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java   | 7 ++++++-
 .../src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java | 6 +++++-
 .../apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java   | 6 +++---
 3 files changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/aa237f26/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
index 5fdd141..d41a76e 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
@@ -25,6 +25,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
 
+import javax.ws.rs.CookieParam;
+import javax.ws.rs.HeaderParam;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.ParamConverter;
 import javax.ws.rs.ext.ParamConverterProvider;
@@ -43,6 +45,7 @@ import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
 import org.apache.cxf.jaxrs.JAXRSServiceImpl;
 import org.apache.cxf.jaxrs.impl.MetadataMap;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.jaxrs.utils.AnnotationUtils;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.factory.FactoryBeanListener;
 
@@ -384,7 +387,9 @@ public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
                 @SuppressWarnings("unchecked")
                 @Override
                 public <T> ParamConverter<T> getConverter(Class<T> cls, Type t, Annotation[] anns) {
-                    if (cls == String.class) {
+                    if (cls == String.class
+                        && AnnotationUtils.getAnnotation(anns, HeaderParam.class) == null
+                        && AnnotationUtils.getAnnotation(anns, CookieParam.class) == null) {
                         return (ParamConverter<T>)new UrlEncodingParamConverter(encodeClientParametersList);
                     } else {
                         return null;

http://git-wip-us.apache.org/repos/asf/cxf/blob/aa237f26/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
index af45433..299afd8 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
@@ -931,7 +931,11 @@ public class BookStore {
     @GET
     @Path("/thebooks/{bookId}/")
     @Produces("application/xml")
-    public Book getBookWithSemicolon(@Encoded @PathParam("bookId") String id) {
+    public Book getBookWithSemicolon(@Encoded @PathParam("bookId") String id,
+                                     @HeaderParam("customheader") String custom) {
+        if (!"custom;:header".equals(custom)) {
+            throw new RuntimeException();
+        }
         Book b = new Book();
         b.setId(Long.valueOf(id.substring(0, 3)));
         b.setName("CXF in Action" + id.substring(3));

http://git-wip-us.apache.org/repos/asf/cxf/blob/aa237f26/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
index e51d515..d0f4b21 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
@@ -695,7 +695,7 @@ public class JAXRSClientServerBookTest extends AbstractBusClientServerTestBase {
         bean.setAddress("http://localhost:" + PORT);
         bean.setProperties(Collections.<String, Object>singletonMap("url.encode.client.parameters", Boolean.TRUE));
         BookStore store = bean.create(BookStore.class);
-        Book book = store.getBookWithSemicolon("123;:");
+        Book book = store.getBookWithSemicolon("123;:", "custom;:header");
         assertEquals(123L, book.getId());
         assertEquals("CXF in Action%3B%3A", book.getName());
     }
@@ -708,7 +708,7 @@ public class JAXRSClientServerBookTest extends AbstractBusClientServerTestBase {
         bean.getProperties(true).put("url.encode.client.parameters", "true");
         bean.getProperties(true).put("url.encode.client.parameters.list", ";");
         BookStore store = bean.create(BookStore.class);
-        Book book = store.getBookWithSemicolon("123;:");
+        Book book = store.getBookWithSemicolon("123;:", "custom;:header");
         assertEquals(123L, book.getId());
         assertEquals("CXF in Action%3B:", book.getName());
     }
@@ -717,7 +717,7 @@ public class JAXRSClientServerBookTest extends AbstractBusClientServerTestBase {
     public void testBookWithSpaceProxyNonEncodedSemicolon() throws Exception {
         BookStore store = JAXRSClientFactory.create("http://localhost:" + PORT,
                                                     BookStore.class);
-        Book book = store.getBookWithSemicolon("123;");
+        Book book = store.getBookWithSemicolon("123;", "custom;:header");
         assertEquals(123L, book.getId());
         assertEquals("CXF in Action;", book.getName());
     }