svn commit: r1863441 - /ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1863441 - /ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java

mthl
Author: mthl
Date: Fri Jul 19 22:08:53 2019
New Revision: 1863441

URL: http://svn.apache.org/viewvc?rev=1863441&view=rev
Log:
Improved: Refactor ‘Makeparamlistwithsuffix’
(OFBIZ-11138)

Modified:
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java

Modified: ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java?rev=1863441&r1=1863440&r2=1863441&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilHttp.java Fri Jul 19 22:08:53 2019
@@ -37,7 +37,6 @@ import java.net.URLConnection;
 import java.nio.ByteBuffer;
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -49,6 +48,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import java.util.StringTokenizer;
@@ -56,6 +56,7 @@ import java.util.TimeZone;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import javax.net.ssl.SSLContext;
 import javax.servlet.http.HttpServletRequest;
@@ -594,40 +595,46 @@ public final class UtilHttp {
         return paramMap;
     }
 
+    /**
+     * Constructs a list of parameter values whose keys are matching a given prefix and suffix.
+     *
+     * @param request  the HTTP request containing the parameters
+     * @param suffix  the suffix that must be matched which can be {@code null}
+     * @param prefix  the prefix that must be matched which can be {@code null}
+     * @return the list of parameter values whose keys are matching {@code prefix} and {@code suffix}.
+     * @throws NullPointerException when {@code request} is {@code null}.
+     */
     public static List<Object> makeParamListWithSuffix(HttpServletRequest request, String suffix, String prefix) {
-        return makeParamListWithSuffix(request, null, suffix, prefix);
+        return makeParamListWithSuffix(request, Collections.emptyMap(), suffix, prefix);
     }
 
-    public static List<Object> makeParamListWithSuffix(HttpServletRequest request, Map<String, ? extends Object> additionalFields, String suffix, String prefix) {
-        List<Object> paramList = new ArrayList<>();
-        request.getParameterMap().forEach((parameterName, values) -> {
-            if (parameterName.endsWith(suffix)) {
-                if (UtilValidate.isNotEmpty(prefix)) {
-                    if (parameterName.startsWith(prefix)) {
-                        String value = values[0];
-                        paramList.add(value);
-                    }
-                } else {
-                    String value = values[0];
-                    paramList.add(value);
-                }
-            }
-        });
-        if (additionalFields != null) {
-            for (Map.Entry<String, ? extends Object> entry: additionalFields.entrySet()) {
-                String fieldName = entry.getKey();
-                if (fieldName.endsWith(suffix)) {
-                    if (UtilValidate.isNotEmpty(prefix)) {
-                        if (fieldName.startsWith(prefix)) {
-                            paramList.add(entry.getValue());
-                        }
-                    } else {
-                        paramList.add(entry.getValue());
-                    }
-                }
-            }
-        }
-        return paramList;
+    /**
+     * Constructs a list of parameter values whose keys are matching a given prefix and suffix.
+     *
+     * @param request  the HTTP request containing the parameters
+     * @param additionalFields  the additional parameters
+     * @param suffix  the suffix that must be matched which can be {@code null}
+     * @param prefix  the prefix that must be matched which can be {@code null}
+     * @return the list of parameter values whose keys are matching {@code prefix} and {@code suffix}.
+     * @throws NullPointerException when {@code request} or {@code additionalFields} are {@code null}.
+     */
+    public static List<Object> makeParamListWithSuffix(HttpServletRequest request, Map<String, ?> additionalFields,
+            String suffix, String prefix) {
+        Objects.requireNonNull(request);
+        Objects.requireNonNull(additionalFields);
+        Predicate<Map.Entry<String, ?>> pred = UtilValidate.isEmpty(prefix)
+                ? e -> e.getKey().endsWith(suffix)
+                : e -> e.getKey().endsWith(suffix) && e.getKey().startsWith(prefix);
+
+        Stream<Object> params = request.getParameterMap().entrySet().stream()
+                .filter(pred)
+                .map(e -> e.getValue()[0]);
+
+        Stream<Object> additionalParams = additionalFields.entrySet().stream()
+                .filter(pred)
+                .map(Map.Entry::getValue);
+
+        return Stream.concat(params, additionalParams).collect(Collectors.toList());
     }
 
     /**