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 2012/02/09 10:48:52 UTC

git commit: WICKET-4398 Any empty url-parameter will make wicket 1.5 crash

Updated Branches:
  refs/heads/master 831b11ccc -> f88721fdc


WICKET-4398 Any empty url-parameter will make wicket 1.5 crash


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

Branch: refs/heads/master
Commit: f88721fdc5b72998d2012a4d75044ecf2b936709
Parents: 831b11c
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Feb 9 11:48:35 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Feb 9 11:48:35 2012 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/request/Url.java   |   22 +++----
 .../request/mapper/parameter/INamedParameters.java |    5 +-
 .../java/org/apache/wicket/request/UrlTest.java    |   49 +++++++++++++++
 3 files changed, 59 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/f88721fd/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 bbaf6ea..d387a13 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
@@ -298,7 +298,10 @@ public final class Url implements Serializable
 			String queryArray[] = Strings.split(queryString, '&');
 			for (String s : queryArray)
 			{
-				result.parameters.add(parseQueryParameter(s, charset));
+				if (Strings.isEmpty(s) == false)
+				{
+					result.parameters.add(parseQueryParameter(s, charset));
+				}
 			}
 		}
 
@@ -315,22 +318,13 @@ public final class Url implements Serializable
 	{
 		if (qp.indexOf('=') == -1)
 		{
+			// name => empty value
 			return new QueryParameter(decodeParameter(qp, charset), "");
 		}
+
 		String parts[] = Strings.split(qp, '=');
-		if (parts.length == 0)
-		{
-			return new QueryParameter("", "");
-		}
-		else if (parts.length == 1)
-		{
-			return new QueryParameter("", decodeParameter(parts[0], charset));
-		}
-		else
-		{
-			return new QueryParameter(decodeParameter(parts[0], charset), decodeParameter(parts[1],
-				charset));
-		}
+		return new QueryParameter(decodeParameter(parts[0], charset), decodeParameter(parts[1],
+			charset));
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/f88721fd/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
index e84ed21..bcf16be 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
@@ -49,9 +49,8 @@ public interface INamedParameters
 		 */
 		public NamedPair(final String key, final String value)
 		{
-			Args.notEmpty(key, "key");
-			this.key = key;
-			this.value = value;
+			this.key = Args.notNull(key, "key");;
+			this.value = Args.notNull(value, "value");
 		}
 
 		/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/f88721fd/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 f4562ec..236f425 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
@@ -164,6 +164,55 @@ public class UrlTest extends Assert
 	}
 
 	/**
+	 *
+	 */
+	@Test
+	public void testParse10()
+	{
+		String s = "/?a";
+		Url url = Url.parse(s);
+		checkSegments(url, "", "");
+		checkQueryParams(url, "a", "");
+	}
+
+	/**
+	 *
+	 */
+	@Test
+	public void testParse11()
+	{
+		String s = "/?a=";
+		Url url = Url.parse(s);
+		checkSegments(url, "", "");
+		checkQueryParams(url, "a", "");
+	}
+
+	/**
+	 *
+	 */
+	@Test
+	public void testParse12()
+	{
+		String s = "/?=b";
+		Url url = Url.parse(s);
+		checkSegments(url, "", "");
+		checkQueryParams(url, "", "b");
+	}
+
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-4398
+	 */
+	@Test
+	public void testParse13()
+	{
+		String s = "/?a=b&";
+		Url url = Url.parse(s);
+		checkSegments(url, "", "");
+		checkQueryParams(url, "a", "b");
+	}
+
+	/**
 	 * 
 	 */
 	@Test