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 2009/06/01 19:34:25 UTC
svn commit: r780741 - in /cxf/trunk/rt/frontend/jaxrs/src:
main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java
test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java
Author: sergeyb
Date: Mon Jun 1 17:34:25 2009
New Revision: 780741
URL: http://svn.apache.org/viewvc?rev=780741&view=rev
Log:
CXF-2242 : applying a fix proposed by Nacho G. Mac Dowell
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java?rev=780741&r1=780740&r2=780741&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java Mon Jun 1 17:34:25 2009
@@ -147,15 +147,17 @@
boolean encoded = AnnotationUtils.getAnnotation(anns, Encoded.class) != null;
for (Iterator<Map.Entry<String, List<String>>> it = map.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, List<String>> entry = it.next();
- for (String value : entry.getValue()) {
+ for (Iterator<String> entryIterator = entry.getValue().iterator(); entryIterator.hasNext();) {
+ String value = entryIterator.next();
os.write(entry.getKey().getBytes("UTF-8"));
os.write('=');
- String data = encoded ? value : HttpUtils.urlEncode(value);
+ String data = encoded ? value : HttpUtils.urlEncode(value);
os.write(data.getBytes("UTF-8"));
- if (it.hasNext()) {
+ if (entryIterator.hasNext() || it.hasNext()) {
os.write('&');
}
}
+
}
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java?rev=780741&r1=780740&r2=780741&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java Mon Jun 1 17:34:25 2009
@@ -20,6 +20,7 @@
package org.apache.cxf.jaxrs.provider;
import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.util.List;
@@ -126,6 +127,48 @@
}
+ @Test
+ public void testWriteMultipleValues() throws Exception {
+ MultivaluedMap<String, String> mvMap = new MetadataMap<String, String>();
+ mvMap.add("a", "a1");
+ mvMap.add("a", "a2");
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ferp.writeTo(mvMap, MultivaluedMap.class, MultivaluedMap.class,
+ new Annotation[0], MediaType.APPLICATION_FORM_URLENCODED_TYPE,
+ new MetadataMap<String, Object>(), bos);
+ String result = bos.toString();
+ assertEquals("Wrong value", "a=a1&a=a2", result);
+ }
+
+ @Test
+ public void testWriteMultipleValues2() throws Exception {
+ MultivaluedMap<String, String> mvMap = new MetadataMap<String, String>();
+ mvMap.add("a", "a1");
+ mvMap.add("a", "a2");
+ mvMap.add("b", "b1");
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ferp.writeTo(mvMap, MultivaluedMap.class, MultivaluedMap.class,
+ new Annotation[0], MediaType.APPLICATION_FORM_URLENCODED_TYPE,
+ new MetadataMap<String, Object>(), bos);
+ String result = bos.toString();
+ assertEquals("Wrong value", "a=a1&a=a2&b=b1", result);
+ }
+
+ @Test
+ public void testWrite() throws Exception {
+ MultivaluedMap<String, String> mvMap = new MetadataMap<String, String>();
+ mvMap.add("a", "a1");
+ mvMap.add("b", "b1");
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ferp.writeTo(mvMap, MultivaluedMap.class, MultivaluedMap.class,
+ new Annotation[0], MediaType.APPLICATION_FORM_URLENCODED_TYPE,
+ new MetadataMap<String, Object>(), bos);
+ String result = bos.toString();
+ assertEquals("Wrong value", "a=a1&b=b1", result);
+ }
+
@SuppressWarnings("unchecked")
@Test
public void testValidation() throws Exception {