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");