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)); }