Repository: incubator-juneau
Updated Branches:
  refs/heads/master ce2d7fbe1 -> 25e490e59


@QueryIfNE should ignore empty collections. 

This closes #2

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/25e490e5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/25e490e5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/25e490e5

Branch: refs/heads/master
Commit: 25e490e59fcece2379b8a06f0d0d52c6de903923
Parents: ce2d7fb
Author: JamesBognar <[email protected]>
Authored: Tue May 30 20:22:47 2017 -0400
Committer: JamesBognar <[email protected]>
Committed: Tue May 30 20:22:47 2017 -0400

----------------------------------------------------------------------
 .../org/apache/juneau/internal/ObjectUtils.java | 29 ++++++++++++++++++++
 .../org/apache/juneau/rest/client/RestCall.java |  7 +++--
 2 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/25e490e5/juneau-core/src/main/java/org/apache/juneau/internal/ObjectUtils.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/internal/ObjectUtils.java 
b/juneau-core/src/main/java/org/apache/juneau/internal/ObjectUtils.java
index fac4337..699b0fc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/ObjectUtils.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/ObjectUtils.java
@@ -12,6 +12,9 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.internal;
 
+import java.lang.reflect.*;
+import java.util.*;
+
 /**
  * Object-related utility methods.
  */
@@ -33,4 +36,30 @@ public class ObjectUtils {
                        return false;
                return o1.equals(o2);
        }
+
+       /**
+        * Returns <jk>true</jk> if the specified object is empty.
+        * <p>
+        * Return <jk>true</jk> if the value is any of the following:
+        * <ul>
+        *      <li><jk>null</jk>
+        *      <li>An empty Collection
+        *      <li>An empty array
+        *      <li>An empty CharSequence
+        *      <li>An empty String when serialized to a string using {@link 
Object#toString()}.
+        * </ul>
+        *
+        * @param o The object to test.
+        * @return <jk>true</jk> if the specified object is empty.
+        */
+       @SuppressWarnings("rawtypes")
+       public static boolean isEmpty(Object o) {
+               if (o == null)
+                       return true;
+               if (o instanceof Collection)
+                       return ((Collection)o).isEmpty();
+               if (o.getClass().isArray())
+                       return (Array.getLength(o) == 0);
+               return o.toString().isEmpty();
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/25e490e5/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
index ca1f541..769e5eb 100644
--- 
a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
+++ 
b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
@@ -33,6 +33,7 @@ import org.apache.http.util.*;
 import org.apache.juneau.*;
 import org.apache.juneau.encoders.*;
 import org.apache.juneau.internal.*;
+import org.apache.juneau.internal.ObjectUtils;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.parser.ParseException;
 import org.apache.juneau.serializer.*;
@@ -186,7 +187,7 @@ public final class RestCall {
                if (partSerializer == null)
                        partSerializer = client.getPartSerializer();
                if (! ("*".equals(name) || isEmpty(name))) {
-                       if (value != null && ! (isEmpty(value) && skipIfEmpty))
+                       if (value != null && ! (ObjectUtils.isEmpty(value) && 
skipIfEmpty))
                                uriBuilder.addParameter(name, 
partSerializer.serialize(PartType.QUERY, value));
                } else if (value instanceof NameValuePairs) {
                        for (NameValuePair p : (NameValuePairs)value)
@@ -286,7 +287,7 @@ public final class RestCall {
                if (partSerializer == null)
                        partSerializer = client.getPartSerializer();
                if (! ("*".equals(name) || isEmpty(name))) {
-                       if (value != null && ! (isEmpty(value) && skipIfEmpty))
+                       if (value != null && ! (ObjectUtils.isEmpty(value) && 
skipIfEmpty))
                                formData.add(new SerializedNameValuePair(name, 
value, partSerializer));
                } else if (value instanceof NameValuePairs) {
                        for (NameValuePair p : (NameValuePairs)value)
@@ -503,7 +504,7 @@ public final class RestCall {
                if (partSerializer == null)
                        partSerializer = client.getPartSerializer();
                if (! ("*".equals(name) || isEmpty(name))) {
-                       if (value != null && ! (isEmpty(value) && skipIfEmpty))
+                       if (value != null && ! (ObjectUtils.isEmpty(value) && 
skipIfEmpty))
                                request.setHeader(name, 
partSerializer.serialize(PartType.HEADER, value));
                } else if (value instanceof NameValuePairs) {
                        for (NameValuePair p : (NameValuePairs)value)

Reply via email to