Updated Branches:
  refs/heads/master 9b254fa7c -> ec9c3c7f9

WICKET-4409 Form#getJsForInterfaceUrl(..) works not correct if cookies are 
disabled


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ec9c3c7f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ec9c3c7f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ec9c3c7f

Branch: refs/heads/master
Commit: ec9c3c7f961adb0016d9ca4b78ae55006f74ced9
Parents: 9b254fa
Author: martin-g <[email protected]>
Authored: Mon Feb 20 15:27:20 2012 +0100
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Feb 20 15:28:24 2012 +0100

----------------------------------------------------------------------
 .../org/apache/wicket/markup/html/form/Form.java   |    5 ++-
 .../java/org/apache/wicket/request/UrlEncoder.java |    2 +
 .../org/apache/wicket/request/UrlEncoderTest.java  |   16 +++++++++++++-
 3 files changed, 19 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/ec9c3c7f/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index 78dcada..df2fcea 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -1041,12 +1041,13 @@ public class Form<T> extends WebMarkupContainer 
implements IFormSubmitListener
         */
        private void dispatchEvent(final Page page, final String url)
        {
-               // the current requst's url is most likely 
wicket/page?x-y.IFormSubmitListener-path-to-form
+               // the current request's url is most likely 
wicket/page?x-y.IFormSubmitListener-path-to-form
                // while the passed in url is most likely 
page?x.y.IOnChangeListener-path-to-component
                // we transform the passed in url into 
wicket/page?x-y.IOnChangeListener-path-to-component
                // so the system mapper can interpret it
+               String urlWoJSessionId = Strings.stripJSessionId(url);
                Url resolved = new Url(getRequest().getUrl());
-               resolved.resolveRelative(Url.parse(url));
+               resolved.resolveRelative(Url.parse(urlWoJSessionId));
 
                IRequestMapper mapper = getApplication().getRootRequestMapper();
                Request request = getRequest().cloneWithUrl(resolved);

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec9c3c7f/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java 
b/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java
index 2c79066..f3b9ae7 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/UrlEncoder.java
@@ -218,6 +218,8 @@ public class UrlEncoder
                                dontNeedEncoding.set('&');
                                dontNeedEncoding.set('=');
                                dontNeedEncoding.set('+');
+                               // don't encode semicolon because it is used in 
;jsessionid=
+                               dontNeedEncoding.set(';');
                                break;
 
                        // same as path, but '/' will not be encoded

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec9c3c7f/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java 
b/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java
index e08096d..f44234f 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/UrlEncoderTest.java
@@ -23,7 +23,7 @@ import org.junit.Test;
 /**
  * Tests for {@link UrlDecoder}
  */
-public class UrlEncoderTest
+public class UrlEncoderTest extends Assert
 {
 
        /**
@@ -34,7 +34,19 @@ public class UrlEncoderTest
        @Test
        public void encodeApostrophe()
        {
-               Assert.assertEquals("someone%27s%20bad%20url",
+               assertEquals("someone%27s%20bad%20url",
                        UrlEncoder.FULL_PATH_INSTANCE.encode("someone's bad 
url", CharEncoding.UTF_8));
        }
+
+       /**
+        * Do not encode semicolon in the Url's path because it is used in 
';jsessionid=...'
+        *
+        * https://issues.apache.org/jira/browse/WICKET-4409
+        */
+       @Test
+       public void dontEncodeSemicolon()
+       {
+               String encoded = 
UrlEncoder.PATH_INSTANCE.encode("path;jsessionid=1234567890", 
CharEncoding.UTF_8);
+               assertEquals("path;jsessionid=1234567890", encoded);
+       }
 }

Reply via email to