You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2017/10/17 13:46:16 UTC

wicket git commit: WICKET-6481 PageInstanceMapper must not deal with anything that has more segments than "page".

Repository: wicket
Updated Branches:
  refs/heads/master e4f89ca99 -> 7c601fcce


WICKET-6481 PageInstanceMapper must not deal with anything that has
more segments than "page".

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

Branch: refs/heads/master
Commit: 7c601fccef5a8a32692e195988872f3c0ca3939a
Parents: e4f89ca
Author: Andrea Del Bene <ad...@apache.org>
Authored: Tue Oct 17 15:44:37 2017 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Tue Oct 17 15:44:37 2017 +0200

----------------------------------------------------------------------
 .../core/request/mapper/PageInstanceMapper.java     | 16 +++++++++++++++-
 .../core/request/mapper/PageInstanceMapperTest.java | 15 +++++++++++++--
 2 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/7c601fcc/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 b91d685..74b1368 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
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.core.request.mapper;
 
+import java.util.List;
 import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
@@ -170,7 +171,12 @@ public class PageInstanceMapper extends AbstractComponentMapper
 		Url baseUrl = request.getClientUrl();
 		String namespace = getContext().getNamespace();
 		String pageIdentifier = getContext().getPageIdentifier();
-
+		
+		if (hasSegmentsAfterPageIdentifier(url, pageIdentifier))
+		{
+			return false;
+		}
+		
 		if (urlStartsWith(url, namespace, pageIdentifier))
 		{
 			matches = true;
@@ -186,4 +192,12 @@ public class PageInstanceMapper extends AbstractComponentMapper
 
 		return matches;
 	}
+
+	private boolean hasSegmentsAfterPageIdentifier(Url url, String pageIdentifier) 
+	{
+		List<String> segments = url.getSegments();
+		int pageIdIndex = segments.indexOf(pageIdentifier);
+		
+		return pageIdIndex < 0 || segments.size() - 1 > pageIdIndex;
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/7c601fcc/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
index 2691070..2c99a7b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
@@ -20,7 +20,6 @@ import static org.hamcrest.CoreMatchers.instanceOf;
 
 import java.nio.charset.Charset;
 import java.util.Locale;
-
 import org.apache.wicket.MockPage;
 import org.apache.wicket.core.request.handler.IPageProvider;
 import org.apache.wicket.core.request.handler.IPageRequestHandler;
@@ -72,7 +71,7 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 	@Test
 	public void decode2()
 	{
-		Url url = Url.parse("wicket/page/ingore/me?4&a=3&b=3");
+		Url url = Url.parse("wicket/page?4&a=3&b=3");
 
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 		assertThat(handler, instanceOf(RenderPageRequestHandler.class));
@@ -85,6 +84,18 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 	 *
 	 */
 	@Test
+	public void ignoreIfPageIdentifierHasSegmentsAfterIt()
+	{
+		Url url = Url.parse("wicket/page/ingore/me?4&a=3&b=3");
+		
+		IRequestHandler handler = encoder.mapRequest(getRequest(url));
+		assertNull(handler);
+	}
+
+	/**
+	 *
+	 */
+	@Test
 	public void decode3()
 	{
 		Url url = Url.parse("wicket/page?4--a-b-c");