You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/05/31 00:22:51 UTC

incubator-juneau git commit: @QueryIfNE should ignore empty collections.

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 <ja...@apache.org>
Authored: Tue May 30 20:22:47 2017 -0400
Committer: JamesBognar <ja...@apache.org>
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)