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

Reply via email to