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

Reply via email to