diff --git a/core/src/main/java/org/apache/struts2/dispatcher/HttpParameters.java b/core/src/main/java/org/apache/struts2/dispatcher/HttpParameters.java index a2d4675e0..54f465eea 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/HttpParameters.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/HttpParameters.java @@ -111,11 +111,11 @@ public class HttpParameters implements Map { @Override public Parameter get(Object key) { - if (key != null) { - return parameters.get(String.valueOf(key)); - } else { - return null; + if (key == null) { + return new Parameter.Empty("null"); } + Parameter val = parameters.get(key.toString()); + return val != null ? val : new Parameter.Empty(key.toString()); } @Override diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Parameter.java b/core/src/main/java/org/apache/struts2/dispatcher/Parameter.java index b8a227083..edae6c3a1 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Parameter.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Parameter.java @@ -166,6 +166,19 @@ public interface Parameter { "name='" + name + '\'' + '}'; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Empty)) return false; + Empty empty = (Empty) o; + return Objects.equals(name, empty.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } } } diff --git a/core/src/test/java/org/apache/struts2/dispatcher/HttpParametersTest.java b/core/src/test/java/org/apache/struts2/dispatcher/HttpParametersTest.java index b8b0a3038..aea4a7b00 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/HttpParametersTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/HttpParametersTest.java @@ -24,7 +24,6 @@ import java.util.HashMap; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class HttpParametersTest { @@ -51,7 +50,7 @@ public class HttpParametersTest { // then assertFalse(params.remove("Param1").contains("param1")); - assertNull(params.get("param1")); + assertEquals(new Parameter.Empty("param1"), params.get("param1")); } @Test