Repository: wicket Updated Branches: refs/heads/wicket-7.x b0a12b72d -> d519b75f1
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/d519b75f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d519b75f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d519b75f Branch: refs/heads/wicket-7.x Commit: d519b75f1d35f3d6300d444b32d73aa87ce87e85 Parents: b0a12b7 Author: Andrea Del Bene <[email protected]> Authored: Wed Oct 18 15:35:14 2017 +0200 Committer: Andrea Del Bene <[email protected]> Committed: Wed Oct 18 15:35:14 2017 +0200 ---------------------------------------------------------------------- .../core/request/mapper/PageInstanceMapper.java | 20 ++++++++++++++++++++ .../request/mapper/PageInstanceMapperTest.java | 14 +++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/d519b75f/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 a034642..a62fde1 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.RequestListenerInterface; import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler; import org.apache.wicket.core.request.handler.PageAndComponentProvider; @@ -178,6 +179,12 @@ public class PageInstanceMapper extends AbstractComponentMapper Url baseUrl = request.getClientUrl(); String namespace = getContext().getNamespace(); String pageIdentifier = getContext().getPageIdentifier(); + List<String> segments = url.getSegments(); + + if (isNotPageInstanceUrl(segments, pageIdentifier)) + { + return false; + } if (urlStartsWith(url, namespace, pageIdentifier)) { @@ -194,4 +201,17 @@ public class PageInstanceMapper extends AbstractComponentMapper return matches; } + + private boolean isNotPageInstanceUrl(List<String> segments, String pageIdentifier) + { + if (segments.size() > 2 ) + { + return true; + } + + int pageIdIndex = segments.indexOf(pageIdentifier); + + //check if we have segments after pageIdentifier + return pageIdIndex < 0 || segments.size() - 1 > pageIdIndex; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/d519b75f/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 fefd8c7..74df97f 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 @@ -73,7 +73,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)); @@ -86,6 +86,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-ILinkListener-a-b-c");
