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

Reply via email to