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 2015/11/20 15:44:18 UTC
[1/2] cxf git commit: [CXF-6688] Updating ClientProxyImpl to do the
best effort at mapping BeanParam bean's PathParam values to class-level
template vars
Repository: cxf
Updated Branches:
refs/heads/master 5e5a4ed20 -> 955d69b34
[CXF-6688] Updating ClientProxyImpl to do the best effort at mapping BeanParam bean's PathParam values to class-level template vars
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8eea5c1a
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8eea5c1a
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8eea5c1a
Branch: refs/heads/master
Commit: 8eea5c1abb25ec98a6c1f4c643d0e5318aee7bb4
Parents: bfe6427
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Fri Nov 20 14:40:21 2015 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Fri Nov 20 14:43:47 2015 +0000
----------------------------------------------------------------------
.../cxf/jaxrs/client/ClientProxyImpl.java | 28 +++++++++++++++-----
.../cxf/systest/jaxrs/BookStoreSimple.java | 22 +++++++++++++++
...ientServerResourceCreatedSpringBookTest.java | 19 +++++++++++++
3 files changed, 63 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/8eea5c1a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
index d41721f..37b798f 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
@@ -398,12 +398,32 @@ public class ClientProxyImpl extends AbstractClient implements
OperationResourceInfo ori,
int bodyIndex) {
List<Object> list = new LinkedList<Object>();
+
+ List<String> methodVars = ori.getURITemplate().getVariables();
+ List<Parameter> paramsList = getParameters(map, ParameterType.PATH);
+ Map<String, BeanPair> beanParamValues = new HashMap<String, BeanPair>(beanParams.size());
+ for (Parameter p : beanParams) {
+ beanParamValues.putAll(getValuesFromBeanParam(params[p.getIndex()], PathParam.class));
+ }
+ if (!beanParamValues.isEmpty() && !methodVars.containsAll(beanParamValues.keySet())) {
+ List<String> classVars = ori.getClassResourceInfo().getURITemplate().getVariables();
+ for (String classVar : classVars) {
+ BeanPair pair = beanParamValues.get(classVar);
+ if (pair != null) {
+ Object paramValue = convertParamValue(pair.getValue(), pair.getAnns());
+ if (isRoot) {
+ valuesMap.put(classVar, paramValue);
+ } else {
+ list.add(paramValue);
+ }
+ }
+ }
+ }
if (isRoot) {
list.addAll(valuesMap.values());
}
- List<String> methodVars = ori.getURITemplate().getVariables();
- List<Parameter> paramsList = getParameters(map, ParameterType.PATH);
+
Map<String, Parameter> paramsMap = new LinkedHashMap<String, Parameter>();
for (Parameter p : paramsList) {
if (p.getName().length() == 0) {
@@ -417,10 +437,6 @@ public class ClientProxyImpl extends AbstractClient implements
}
}
- Map<String, BeanPair> beanParamValues = new HashMap<String, BeanPair>(beanParams.size());
- for (Parameter p : beanParams) {
- beanParamValues.putAll(getValuesFromBeanParam(params[p.getIndex()], PathParam.class));
- }
Object requestBody = bodyIndex == -1 ? null : params[bodyIndex];
for (String varName : methodVars) {
Parameter p = paramsMap.remove(varName);
http://git-wip-us.apache.org/repos/asf/cxf/blob/8eea5c1a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSimple.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSimple.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSimple.java
index a046a42..46ee30c 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSimple.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSimple.java
@@ -20,12 +20,29 @@ package org.apache.cxf.systest.jaxrs;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
+import javax.ws.rs.BeanParam;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/simplebooks/{id}")
public class BookStoreSimple {
+ public static class BookBean {
+ private long id;
+ public BookBean() {
+
+ }
+ public BookBean(long id) {
+ this.id = id;
+ }
+ public long getId() {
+ return id;
+ }
+ @PathParam("id")
+ public void setId(long id) {
+ this.id = id;
+ }
+ }
@Resource
private Book injectedBook;
@@ -46,4 +63,9 @@ public class BookStoreSimple {
throw new IllegalStateException("Book resource has not been injected");
}
}
+ @GET
+ @Path("/beanparam")
+ public Book getBookBeanParam(@BeanParam BookBean bookBean) {
+ return getBook(bookBean.getId());
+ }
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/8eea5c1a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java
index 58736ef..efa661f 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerResourceCreatedSpringBookTest.java
@@ -25,6 +25,7 @@ import java.net.URLConnection;
import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
@@ -67,6 +68,24 @@ public class JAXRSClientServerResourceCreatedSpringBookTest extends AbstractBusC
}
@Test
+ public void testGetBookSimpleProxy() throws Exception {
+
+ String address = "http://localhost:" + PORT + "/webapp/rest";
+ BookStoreSimple bookStore = JAXRSClientFactory.create(address, BookStoreSimple.class);
+ Book book = bookStore.getBook(444L);
+ assertEquals(444L, book.getId());
+ }
+
+ @Test
+ public void testGetBookSimpleBeanParamProxy() throws Exception {
+
+ String address = "http://localhost:" + PORT + "/webapp/rest";
+ BookStoreSimple bookStore = JAXRSClientFactory.create(address, BookStoreSimple.class);
+ Book book = bookStore.getBookBeanParam(new BookStoreSimple.BookBean(444));
+ assertEquals(444L, book.getId());
+ }
+
+ @Test
public void testGetBook123() throws Exception {
String endpointAddress =
[2/2] cxf git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/cxf
Posted by se...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/cxf
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/955d69b3
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/955d69b3
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/955d69b3
Branch: refs/heads/master
Commit: 955d69b349051685bc6c0c22ac1b0108a174a4eb
Parents: 8eea5c1 5e5a4ed
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Fri Nov 20 14:44:03 2015 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Fri Nov 20 14:44:03 2015 +0000
----------------------------------------------------------------------
----------------------------------------------------------------------