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

Reply via email to