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 2013/06/18 10:09:29 UTC

[05/21] git commit: WICKET-5071 404 Error on Nested ModalWindows in IE7 and IE8

WICKET-5071 404 Error on Nested ModalWindows in IE7 and IE8


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

Branch: refs/heads/master
Commit: d3d42d42c5b71a2792c876498aaa898be94f67d4
Parents: f38d32e
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jun 17 10:40:48 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jun 17 10:41:17 2013 +0200

----------------------------------------------------------------------
 .../core/request/mapper/BookmarkableMapper.java |  5 ++
 .../core/request/mapper/PageInstanceMapper.java |  6 ++-
 .../request/mapper/BookmarkableMapperTest.java  | 56 ++++++++++++++++++++
 3 files changed, 65 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d3d42d42/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
index 1fd71d6..a9fd212 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
@@ -190,6 +190,11 @@ public class BookmarkableMapper extends AbstractBookmarkableMapper
 		{
 			matches = true;
 		}
+		// baseUrl = 'bookmarkable/com.example.SomePage', requestUrl = 'bookmarkable/com.example.SomePage'
+		else if (baseUrl.getSegments().size() == 2 && urlStartsWith(baseUrl, bookmarkableIdentifier) && url.getSegments().size() == 2 && urlStartsWith(url, bookmarkableIdentifier))
+		{
+			matches = true;
+		}
 		// baseUrl = 'wicket/page[?...]', requestUrl = 'bookmarkable/com.example.SomePage'
 		else if (baseUrl.getSegments().size() == 2 && urlStartsWith(baseUrl, namespace, pageIdentifier) && url.getSegments().size() >= 2 && urlStartsWith(url, bookmarkableIdentifier))
 		{

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3d42d42/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
index 3789a9f..a034642 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
@@ -175,17 +175,19 @@ public class PageInstanceMapper extends AbstractComponentMapper
 	{
 		boolean matches = false;
 		Url url = request.getUrl();
+		Url baseUrl = request.getClientUrl();
 		String namespace = getContext().getNamespace();
 		String pageIdentifier = getContext().getPageIdentifier();
+
 		if (urlStartsWith(url, namespace, pageIdentifier))
 		{
 			matches = true;
 		}
-		else if (urlStartsWith(request.getClientUrl(), namespace, pageIdentifier) && urlStartsWith(url, pageIdentifier))
+		else if (urlStartsWith(baseUrl, namespace, pageIdentifier) && urlStartsWith(url, pageIdentifier))
 		{
 			matches = true;
 		}
-		else if (urlStartsWith(request.getClientUrl(), pageIdentifier) && urlStartsWith(url, pageIdentifier))
+		else if (urlStartsWith(baseUrl, pageIdentifier) && urlStartsWith(url, pageIdentifier))
 		{
 			matches = true;
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3d42d42/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
index 874a525..4b71b65 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
@@ -357,6 +357,62 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 	}
 
 	/**
+	 * WICKET-5071
+	 *
+	 * Decodes a request to {@link org.apache.wicket.core.request.mapper.IMapperContext#getBookmarkableIdentifier()}/com.example.MyPage
+	 * when the current base url is
+	 * {@link org.apache.wicket.core.request.mapper.IMapperContext#getNamespace()}/{@link org.apache.wicket.core.request.mapper.IMapperContext#getPageIdentifier()}
+	 */
+	@Test
+	public void decode13()
+	{
+		final Url url = Url.parse(context.getBookmarkableIdentifier() + "/" + PAGE_CLASS_NAME);
+
+		Request request = new Request()
+		{
+			@Override
+			public Url getUrl()
+			{
+				return url;
+			}
+
+			@Override
+			public Locale getLocale()
+			{
+				return null;
+			}
+
+			@Override
+			public Charset getCharset()
+			{
+				return Charset.forName("UTF-8");
+			}
+
+			@Override
+			public Url getClientUrl()
+			{
+				StringBuilder url = new StringBuilder();
+				url.append(context.getBookmarkableIdentifier())
+					.append('/')
+					.append(PAGE_CLASS_NAME);
+				return Url.parse(url.toString());
+			}
+
+			@Override
+			public Object getContainerRequest()
+			{
+				return null;
+			}
+		};
+
+		IRequestHandler handler = encoder.mapRequest(request);
+		assertNotNull("A handler should be resolved for relative url to a bookmarkable page url!", handler);
+
+		IRequestablePage page = ((IPageRequestHandler) handler).getPage();
+		assertEquals(page.getClass().getName(), PAGE_CLASS_NAME);
+	}
+
+	/**
 	 *
 	 */
 	@Test