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

lukaszlenart pushed a commit to branch feature/http-params-case
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/feature/http-params-case by 
this push:
     new c40978f8c WW-5370 Uses TreeMap with case-insensitive comparator
c40978f8c is described below

commit c40978f8cd29d510f6b9d214db141dc6becc7342
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Tue Dec 12 08:52:57 2023 +0100

    WW-5370 Uses TreeMap with case-insensitive comparator
---
 .../java/org/apache/struts2/dispatcher/HttpParameters.java   | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

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 f35d47583..e44f06273 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/HttpParameters.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/HttpParameters.java
@@ -34,7 +34,8 @@ public class HttpParameters implements Map<String, Parameter> 
{
     final private Map<String, Parameter> parameters;
 
     private HttpParameters(Map<String, Parameter> parameters) {
-        this.parameters = parameters;
+        this.parameters = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+        this.parameters.putAll(parameters);
     }
 
     @SuppressWarnings("rawtypes")
@@ -43,7 +44,7 @@ public class HttpParameters implements Map<String, Parameter> 
{
     }
 
     public static Builder create() {
-        return new Builder(new HashMap<>());
+        return new Builder(new TreeMap<>(String.CASE_INSENSITIVE_ORDER));
     }
 
     public HttpParameters remove(Set<String> paramsToRemove) {
@@ -60,7 +61,7 @@ public class HttpParameters implements Map<String, Parameter> 
{
     }
 
     public boolean contains(String name) {
-        return parameters.keySet().stream().anyMatch(p -> 
p.equalsIgnoreCase(name));
+        return parameters.containsKey(name);
     }
 
     /**
@@ -112,10 +113,7 @@ public class HttpParameters implements Map<String, 
Parameter> {
     @Override
     public Parameter get(Object key) {
         if (key != null && contains(String.valueOf(key))) {
-            return parameters.entrySet().stream()
-                .filter(p -> p.getKey().equalsIgnoreCase(String.valueOf(key)))
-                .findFirst().map(Entry::getValue)
-                .orElse(new Parameter.Empty(String.valueOf(key)));
+            return parameters.get(key);
         } else {
             return new Parameter.Empty(String.valueOf(key));
         }

Reply via email to