You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/02/20 15:27:27 UTC

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

Updated Branches:
  refs/heads/wicket-1.5.x e69f3798e -> 89c9dd783


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/89c9dd78
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/89c9dd78
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/89c9dd78

Branch: refs/heads/wicket-1.5.x
Commit: 89c9dd78308e038d77fff5873063fba04d4c99c7
Parents: e69f379
Author: martin-g <mg...@apache.org>
Authored: Mon Feb 20 15:27:20 2012 +0100
Committer: martin-g <mg...@apache.org>
Committed: Mon Feb 20 15:27:20 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/89c9dd78/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 561b596..d29f3af 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
@@ -1031,12 +1031,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/89c9dd78/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/89c9dd78/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);
+	}
 }