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 <[email protected]> Authored: Tue Oct 17 15:44:37 2017 +0200 Committer: Andrea Del Bene <[email protected]> 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");
