This is an automated email from the ASF dual-hosted git repository.
mbrohl pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 765fdbb Extend UtilHttp.urlEncodeArgs API with
preserveEmpty-parameter (OFBIZ-10198)
765fdbb is described below
commit 765fdbbbd8583281b64b0c701ffb6be1f7b39c53
Author: Michael Brohl <[email protected]>
AuthorDate: Thu Jan 30 21:33:41 2020 +0100
Extend UtilHttp.urlEncodeArgs API with preserveEmpty-parameter
(OFBIZ-10198)
This patch extends the current UtilHttp.urlEncodeArgs() method with an
additional input parameter: boolean preserveEmpty.
It allows to get a query string with empty parameters, useful if the
receiver expects mandatory parameters or wants to explicit
override/clear existing values with an empty one.
Thanks Martin Becker for reporting and providing the patch.
---
.../main/java/org/apache/ofbiz/base/util/UtilHttp.java | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git
a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java
b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java
index ed8babb..ad0f3ac 100644
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java
@@ -914,19 +914,26 @@ public final class UtilHttp {
}
}
- /** URL Encodes a Map of arguements */
+ /** URL Encodes a Map of arguments */
public static String urlEncodeArgs(Map<String, ? extends Object> args) {
return urlEncodeArgs(args, true);
}
- /** URL Encodes a Map of arguements */
+ /** URL Encodes a Map of arguments */
public static String urlEncodeArgs(Map<String, ? extends Object> args,
boolean useExpandedEntites) {
+ return urlEncodeArgs(args, useExpandedEntites, false);
+ }
+
+ /** URL Encodes a Map of arguments */
+ public static String urlEncodeArgs(Map<String, ? extends Object> args,
boolean useExpandedEntites, boolean preserveEmpty) {
StringBuilder buf = new StringBuilder();
if (args != null) {
for (Map.Entry<String, ? extends Object> entry: args.entrySet()) {
String name = entry.getKey();
Object value = entry.getValue();
- String valueStr = null;
+ if (preserveEmpty && value == null) {
+ value = "";
+ }
if (name == null || value == null) {
continue;
}
@@ -941,6 +948,8 @@ public final class UtilHttp {
} else {
col = Arrays.asList(value);
}
+
+ String valueStr = null;
for (Object colValue: col) {
if (colValue instanceof String) {
valueStr = (String) colValue;
@@ -950,7 +959,7 @@ public final class UtilHttp {
valueStr = colValue.toString();
}
- if (UtilValidate.isNotEmpty(valueStr)) {
+ if (UtilValidate.isNotEmpty(valueStr) || preserveEmpty) {
if (buf.length() > 0) {
if (useExpandedEntites) {
buf.append("&");