This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch fix/WW-5423-query-params
in repository https://gitbox.apache.org/repos/asf/struts.git

commit 3e72844fd042a874803029c84ce159dc8e7a4e18
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Tue Jun 4 11:52:19 2024 +0200

    WW-5423 Fixes returning null instead of empty array in case of non-existing 
param
---
 .../struts2/dispatcher/multipart/AbstractMultiPartRequest.java     | 7 +++++--
 .../org/apache/struts2/dispatcher/multipart/MultiPartRequest.java  | 1 +
 .../struts2/dispatcher/multipart/AbstractMultiPartRequestTest.java | 2 ++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
index 630d2ca43..f1b254238 100644
--- 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
+++ 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
@@ -372,8 +372,11 @@ public abstract class AbstractMultiPartRequest implements 
MultiPartRequest {
      * @see 
org.apache.struts2.dispatcher.multipart.MultiPartRequest#getParameterValues(java.lang.String)
      */
     public String[] getParameterValues(String name) {
-        return parameters.getOrDefault(name, Collections.emptyList())
-                .toArray(String[]::new);
+        List<String> values = parameters.get(name);
+        if (values == null) {
+            return null;
+        }
+        return values.toArray(new String[0]);
     }
 
     /* (non-Javadoc)
diff --git 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
index 72392cd6f..dd801d306 100644
--- 
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
+++ 
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/MultiPartRequest.java
@@ -95,6 +95,7 @@ public interface MultiPartRequest {
     /**
      * Returns a list of all parameter values associated with a parameter 
name. If there is only
      * one parameter value per name the resulting array will be of length 1.
+     * If the parameter doesn't exist, null should be returned instead of 
empty array.
      *
      * @param name the name of the parameter.
      * @return an array of all values associated with the parameter name.
diff --git 
a/core/src/test/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequestTest.java
 
b/core/src/test/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequestTest.java
index fb30bb289..25b86d6b2 100644
--- 
a/core/src/test/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequestTest.java
+++ 
b/core/src/test/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequestTest.java
@@ -458,6 +458,8 @@ abstract class AbstractMultiPartRequestTest {
                 .isEqualTo("short text");
         assertThat(multiPart.getParameterValues("multi"))
                 .containsOnly("multi1", "multi2");
+        assertThat(multiPart.getParameterValues("not-existing"))
+                .isNull();
     }
 
     @Test

Reply via email to