Updated Branches: refs/heads/wicket-1.5.x c4cd6c5a6 -> 0b8c65a1e
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/0b8c65a1 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0b8c65a1 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0b8c65a1 Branch: refs/heads/wicket-1.5.x Commit: 0b8c65a1e1af06cc327e4a5493bf929e94714c22 Parents: c4cd6c5 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Thu Feb 9 11:48:35 2012 +0200 Committer: martin-g <[email protected]> Committed: Thu Feb 9 11:59:26 2012 +0200 ---------------------------------------------------------------------- .../main/java/org/apache/wicket/request/Url.java | 22 +++---- .../request/mapper/parameter/INamedParameters.java | 1 - .../request/mapper/parameter/PageParameters.java | 5 +- .../java/org/apache/wicket/request/UrlTest.java | 49 +++++++++++++++ 4 files changed, 59 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/0b8c65a1/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 39df118..76babdf 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 @@ -99,22 +99,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)); } /** @@ -245,7 +236,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)); + } } } http://git-wip-us.apache.org/repos/asf/wicket/blob/0b8c65a1/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 b17f900..4d36b6b 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 @@ -30,7 +30,6 @@ import org.apache.wicket.util.string.StringValue; */ public interface INamedParameters { - /** * Return set of all named parameter names. * http://git-wip-us.apache.org/repos/asf/wicket/blob/0b8c65a1/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java ---------------------------------------------------------------------- diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java index adc7488..e00bb74 100644 --- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java +++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java @@ -337,9 +337,8 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP */ public NamedPair(final String key, final String value) { - Args.notEmpty(key, "key"); - this.key = key; - this.value = value; + this.key = Args.notEmpty(key, "key");; + this.value = Args.notNull(value, "value"); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/0b8c65a1/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 d0f66ca..5c24416 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
