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 <[email protected]> Authored: Thu Feb 9 11:48:35 2012 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> 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
