You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2023/05/24 05:12:56 UTC
[struts] 01/01: WW-5310 Properly parses param value with equal sign
This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch WW-5310-equal-sign
in repository https://gitbox.apache.org/repos/asf/struts.git
commit b97339e31e8aab08a773d35f0c3d29ed106953f9
Author: Lukasz Lenart <lu...@apache.org>
AuthorDate: Wed May 24 07:06:15 2023 +0200
WW-5310 Properly parses param value with equal sign
---
.../struts2/url/StrutsQueryStringParser.java | 19 +++++++--------
.../struts2/url/StrutsQueryStringParserTest.java | 27 ++++++++++++++++++++++
2 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java b/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java
index f1764511e..3b3ec80eb 100644
--- a/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java
+++ b/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java
@@ -55,19 +55,16 @@ public class StrutsQueryStringParser implements QueryStringParser {
LOG.debug("Param [{}] is blank, skipping", param);
continue;
}
-
- String[] tmpParams = param.split("=");
- String paramName = null;
+ String paramName;
String paramValue = "";
- if (tmpParams.length > 0) {
- paramName = tmpParams[0];
- }
- if (tmpParams.length > 1) {
- paramValue = tmpParams[1];
- }
- if (paramName != null) {
- extractParam(paramName, paramValue, queryParams, forceValueArray);
+ int index = param.indexOf("=");
+ if (index > -1) {
+ paramName = param.substring(0, index);
+ paramValue = param.substring(index + 1);
+ } else {
+ paramName = param;
}
+ extractParam(paramName, paramValue, queryParams, forceValueArray);
}
return queryParams;
}
diff --git a/core/src/test/java/org/apache/struts2/url/StrutsQueryStringParserTest.java b/core/src/test/java/org/apache/struts2/url/StrutsQueryStringParserTest.java
index 001749edf..ab0622cd5 100644
--- a/core/src/test/java/org/apache/struts2/url/StrutsQueryStringParserTest.java
+++ b/core/src/test/java/org/apache/struts2/url/StrutsQueryStringParserTest.java
@@ -76,6 +76,33 @@ public class StrutsQueryStringParserTest {
assertEquals("value with space", queryParameters.get("name"));
}
+ @Test
+ public void shouldProperlySplitParamsWithDoubleEqualSign() {
+ Map<String, Object> queryParameters = parser.parse("id1=n123=&id2=n3456", false);
+
+ assertTrue(queryParameters.containsKey("id1"));
+ assertTrue(queryParameters.containsKey("id2"));
+ assertEquals("n123=", queryParameters.get("id1"));
+ assertEquals("n3456", queryParameters.get("id2"));
+ }
+
+ @Test
+ public void shouldHandleParamWithNoValue1() {
+ Map<String, Object> queryParameters = parser.parse("paramNoValue", false);
+
+ assertTrue(queryParameters.containsKey("paramNoValue"));
+ assertEquals("", queryParameters.get("paramNoValue"));
+ }
+
+ @Test
+ public void shouldHandleParamWithNoValue2() {
+ Map<String, Object> queryParameters = parser.parse("paramNoValue¶m1=1234", false);
+
+ assertTrue(queryParameters.containsKey("paramNoValue"));
+ assertTrue(queryParameters.containsKey("param1"));
+ assertEquals("1234", queryParameters.get("param1"));
+ }
+
@Before
public void setUp() throws Exception {
this.parser = new StrutsQueryStringParser(new StrutsUrlDecoder());