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 2011/07/11 00:08:45 UTC
svn commit: r1144977 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
Author: sergeyb
Date: Sun Jul 10 22:08:45 2011
New Revision: 1144977
URL: http://svn.apache.org/viewvc?rev=1144977&view=rev
Log:
[CXF-3641] Support for explicit collections of Form params with proxies
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java?rev=1144977&r1=1144976&r2=1144977&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java Sun Jul 10 22:08:45 2011
@@ -25,6 +25,8 @@ import java.lang.reflect.InvocationHandl
import java.lang.reflect.Method;
import java.net.URI;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -388,8 +390,18 @@ public class ClientProxyImpl extends Abs
List<Parameter> fm = getParameters(map, ParameterType.FORM);
for (Parameter p : fm) {
- if (params[p.getIndex()] != null) {
- FormUtils.addPropertyToForm(form, p.getName(), params[p.getIndex()]);
+ Object pValue = params[p.getIndex()];
+ if (pValue != null) {
+ if (InjectionUtils.isSupportedCollectionOrArray(pValue.getClass())) {
+ Collection<?> c = pValue.getClass().isArray()
+ ? Arrays.asList((Object[]) pValue) : (Collection) pValue;
+ for (Iterator<?> it = c.iterator(); it.hasNext();) {
+ FormUtils.addPropertyToForm(form, p.getName(), it.next());
+ }
+ } else {
+ FormUtils.addPropertyToForm(form, p.getName(), pValue);
+ }
+
}
}
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java?rev=1144977&r1=1144976&r2=1144977&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java Sun Jul 10 22:08:45 2011
@@ -19,6 +19,8 @@
package org.apache.cxf.systest.jaxrs;
+import java.util.List;
+
import javax.ws.rs.Consumes;
import javax.ws.rs.CookieParam;
import javax.ws.rs.FormParam;
@@ -58,8 +60,7 @@ public interface BookSubresource {
@POST
@Path("/subresource3")
Book getTheBook3(@FormParam("id") String id,
- @FormParam("name") String name,
- @FormParam("nameid") Integer nameid) throws BookNotFoundFault;
+ @FormParam("name") List<String> nameParts) throws BookNotFoundFault;
@POST
@Path("/subresource4/{id}/{name}")
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java?rev=1144977&r1=1144976&r2=1144977&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java Sun Jul 10 22:08:45 2011
@@ -19,6 +19,8 @@
package org.apache.cxf.systest.jaxrs;
+import java.util.List;
+
public class BookSubresourceImpl implements BookSubresource {
@@ -55,11 +57,15 @@ public class BookSubresourceImpl impleme
return b;
}
- public Book getTheBook3(String sid, String name, Integer nameid) throws BookNotFoundFault {
+ public Book getTheBook3(String sid, List<String> nameParts) throws BookNotFoundFault {
+ if (nameParts.size() != 2) {
+ throw new RuntimeException("Wrong number of name parts");
+ }
+
Book b = new Book();
b.setId(Long.valueOf(sid));
- b.setName(name + nameid.toString());
+ b.setName(nameParts.get(0) + nameParts.get(1));
return b;
}
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java?rev=1144977&r1=1144976&r2=1144977&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Sun Jul 10 22:08:45 2011
@@ -579,8 +579,8 @@ public class JAXRSSoapBookTest extends A
WebClient wc = WebClient.create(baseAddress);
MultivaluedMap<String, Object> map = new MetadataMap<String, Object>();
map.putSingle("id", "679");
- map.putSingle("name", "CXF in Action - ");
- map.putSingle("nameid", "679");
+ map.add("name", "CXF in Action - ");
+ map.add("name", "679");
Book b = readBook((InputStream)wc.accept("application/xml")
.form((Map<String, List<Object>>)map).getEntity());
assertEquals(679, b.getId());
@@ -595,7 +595,7 @@ public class JAXRSSoapBookTest extends A
WebClient wc = WebClient.create(baseAddress);
Form f = new Form();
f.set("id", "679").set("name", "CXF in Action - ")
- .set("nameid", "679");
+ .set("name", "679");
Book b = readBook((InputStream)wc.accept("application/xml")
.form(f).getEntity());
assertEquals(679, b.getId());
@@ -609,7 +609,10 @@ public class JAXRSSoapBookTest extends A
BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
BookStoreJaxrsJaxws.class);
BookSubresource bs = proxy.getBookSubresource("679");
- Book b = bs.getTheBook3("679", "CXF in Action - ", new Integer(679));
+ List<String> parts = new ArrayList<String>();
+ parts.add("CXF in Action - ");
+ parts.add(Integer.toString(679));
+ Book b = bs.getTheBook3("679", parts);
assertEquals(679, b.getId());
assertEquals("CXF in Action - 679", b.getName());
}