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)
