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 2012/11/04 22:43:03 UTC

svn commit: r1405642 - in /cxf/trunk/rt/frontend/jaxrs/src: main/java/org/apache/cxf/jaxrs/client/AbstractClient.java test/java/org/apache/cxf/jaxrs/client/WebClientTest.java

Author: sergeyb
Date: Sun Nov  4 21:43:02 2012
New Revision: 1405642

URL: http://svn.apache.org/viewvc?rev=1405642&view=rev
Log:
Fixing the regression in the way empty query parameters are handled

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=1405642&r1=1405641&r2=1405642&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Sun Nov  4 21:43:02 2012
@@ -617,47 +617,54 @@ public abstract class AbstractClient imp
                                                  String paramName, 
                                                  ParameterType pt,
                                                  Object... pValues) {
-        if (pValues == null) {
-            throw new IllegalArgumentException("Null parameters are not supported");
-        }
         if (pt != ParameterType.MATRIX && pt != ParameterType.QUERY) {
             throw new IllegalArgumentException("This method currently deal "
                                                + "with matrix and query parameters only");
         }
         if (!"".equals(paramName)) {
-            for (Object pValue : pValues) {
-                if (InjectionUtils.isSupportedCollectionOrArray(pValue.getClass())) {
-                    Collection<?> c = pValue.getClass().isArray() 
-                        ? Arrays.asList((Object[]) pValue) : (Collection<?>) pValue;
-                    for (Iterator<?> it = c.iterator(); it.hasNext();) {
-                        addMatrixOrQueryToBuilder(ub, paramName, it.next(), pt);
+            if (pValues != null && pValues.length > 0) {
+                for (Object pValue : pValues) {
+                    if (InjectionUtils.isSupportedCollectionOrArray(pValue.getClass())) {
+                        Collection<?> c = pValue.getClass().isArray() 
+                            ? Arrays.asList((Object[]) pValue) : (Collection<?>) pValue;
+                        for (Iterator<?> it = c.iterator(); it.hasNext();) {
+                            convertMatrixOrQueryToBuilder(ub, paramName, it.next(), pt);
+                        }
+                    } else { 
+                        convertMatrixOrQueryToBuilder(ub, paramName, pValue, pt); 
                     }
-                } else { 
-                    addMatrixOrQueryToBuilder(ub, paramName, pValue, pt); 
                 }
-            }    
-                    
+            } else {
+                addMatrixOrQueryToBuilder(ub, paramName, pt, pValues);    
+            }
         } else {
             Object pValue = pValues[0];
             MultivaluedMap<String, Object> values = 
                 InjectionUtils.extractValuesFromBean(pValue, "");
             for (Map.Entry<String, List<Object>> entry : values.entrySet()) {
                 for (Object v : entry.getValue()) {
-                    addMatrixOrQueryToBuilder(ub, entry.getKey(), v, pt);
+                    convertMatrixOrQueryToBuilder(ub, entry.getKey(), v, pt);
                 }
             }
         }
     }
 
-    private void addMatrixOrQueryToBuilder(UriBuilder ub, 
+    private void convertMatrixOrQueryToBuilder(UriBuilder ub, 
                                            String paramName, 
                                            Object pValue,
                                            ParameterType pt) {
         Object convertedValue = convertParamValue(pValue);
+        addMatrixOrQueryToBuilder(ub, paramName, pt, convertedValue);
+    }
+    
+    private void addMatrixOrQueryToBuilder(UriBuilder ub, 
+                                           String paramName, 
+                                           ParameterType pt,
+                                           Object... pValue) {
         if (pt == ParameterType.MATRIX) {
-            ub.matrixParam(paramName, convertedValue);
+            ub.matrixParam(paramName, pValue);
         } else {
-            ub.queryParam(paramName, convertedValue);
+            ub.queryParam(paramName, pValue);
         }
     }
     

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java?rev=1405642&r1=1405641&r2=1405642&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java Sun Nov  4 21:43:02 2012
@@ -97,6 +97,13 @@ public class WebClientTest extends Asser
     }
     
     @Test 
+    public void testEmptyQuery() {
+        WebClient wc = WebClient.create("http://foo");
+        wc.query("_wadl");
+        assertEquals("http://foo?_wadl", wc.getCurrentURI().toString());
+    }
+    
+    @Test 
     public void testForward() {
         WebClient wc = WebClient.create("http://foo");
         wc.to("http://foo/bar", true);