You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/04/26 14:57:32 UTC

git commit: WICKET-5157 URL query parameter values containing equals sign get cut off

Updated Branches:
  refs/heads/wicket-1.5.x fb6330bc4 -> f7b4df17f


WICKET-5157 URL query parameter values containing equals sign get cut off


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/f7b4df17
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/f7b4df17
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/f7b4df17

Branch: refs/heads/wicket-1.5.x
Commit: f7b4df17fe757a138dc2212f37a2af1c2c96c630
Parents: fb6330b
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri Apr 26 14:57:08 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri Apr 26 14:57:08 2013 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/request/Url.java   |    9 +++++----
 .../java/org/apache/wicket/request/UrlTest.java    |   14 ++++++++++++++
 2 files changed, 19 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/f7b4df17/wicket-request/src/main/java/org/apache/wicket/request/Url.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/Url.java b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
index f2d4394..e47142a 100755
--- a/wicket-request/src/main/java/org/apache/wicket/request/Url.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
@@ -97,15 +97,16 @@ public class Url implements Serializable
 	 */
 	private static QueryParameter parseQueryParameter(final String qp, final Charset charset)
 	{
-		if (qp.indexOf('=') == -1)
+		int idxOfEquals = qp.indexOf('=');
+		if (idxOfEquals == -1)
 		{
 			// name => empty value
 			return new QueryParameter(decodeParameter(qp, charset), "");
 		}
 
-		String parts[] = Strings.split(qp, '=');
-		return new QueryParameter(decodeParameter(parts[0], charset), decodeParameter(parts[1],
-			charset));
+		String parameterName = qp.substring(0, idxOfEquals);
+		String parameterValue = qp.substring(idxOfEquals + 1);
+		return new QueryParameter(decodeParameter(parameterName, charset), decodeParameter(parameterValue, charset));
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/f7b4df17/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
index 09e6b93..617938b 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/UrlTest.java
@@ -816,4 +816,18 @@ public class UrlTest extends Assert
 		url.toString(StringMode.FULL);
 	}
 
+	/**
+	 * Should accept parameter values containing equals sign(s)
+	 * https://issues.apache.org/jira/browse/WICKET-5157
+	 */
+	@Test
+	public void parseQueryStringWithEqualsSignInParameterValue()
+	{
+		String s = "/?a=b=c&d=e=f";
+		Url url = Url.parse(s);
+		assertTrue(url.isAbsolute());
+		checkSegments(url, "", "");
+		checkQueryParams(url, "a", "b=c", "d", "e=f");
+	}
+
 }