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