Repository: cxf Updated Branches: refs/heads/2.7.x-fixes 4c509a532 -> 3762de320
[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/3762de32 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3762de32 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3762de32 Branch: refs/heads/2.7.x-fixes Commit: 3762de3200f988541c0b0964bed7b816487d531d Parents: 4c509a5 Author: Sergey Beryozkin <sberyoz...@talend.com> Authored: Tue Oct 7 12:00:22 2014 +0100 Committer: Sergey Beryozkin <sberyoz...@talend.com> Committed: Tue Oct 7 12:53:47 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/3762de32/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java index c6b8e14..7725355 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java +++ b/rt/frontend/jaxrs/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; @@ -44,6 +46,7 @@ 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.provider.ProviderFactory; +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 { @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/3762de32/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 78a1e51..e794383 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 @@ -872,7 +872,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/3762de32/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 9d3adf6..596e904 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 @@ -688,7 +688,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()); } @@ -701,7 +701,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()); } @@ -710,7 +710,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()); }