You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/02/06 11:36:40 UTC
[2/2] git commit: WICKET-5500 Ignore the path parameters when reading
the page class
WICKET-5500 Ignore the path parameters when reading the page class
(cherry picked from commit 28e1b0fe4c297633453c92a0fd36bbac77a93784)
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/825da305
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/825da305
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/825da305
Branch: refs/heads/master
Commit: 825da3055e9792ae5b4b0e86f47a6b08c9e7ce0e
Parents: 0c1cf1a
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Feb 6 11:24:20 2014 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Feb 6 11:36:14 2014 +0100
----------------------------------------------------------------------
.../request/mapper/AbstractComponentMapper.java | 23 ++++++++++++++++++--
.../core/request/mapper/PackageMapper.java | 3 ++-
.../request/mapper/BookmarkableMapperTest.java | 16 ++++++++++++++
.../core/request/mapper/PackageMapperTest.java | 15 +++++++++++++
4 files changed, 54 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/825da305/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
index b1480ee..efd77c6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
@@ -130,9 +130,28 @@ public abstract class AbstractComponentMapper extends AbstractMapper implements
*/
protected Class<? extends IRequestablePage> getPageClass(String name)
{
- Args.notEmpty(name, "name");
+ String cleanedClassName = cleanClassName(name);
+ return WicketObjects.resolveClass(cleanedClassName);
+ }
+
+ /**
+ * Cleans the class name from any extra information that may be there.
+ *
+ * @param className
+ * The raw class name parsed from the url
+ * @return The cleaned class name
+ */
+ protected String cleanClassName(String className)
+ {
+ Args.notEmpty(className, "className");
+
+ if (Strings.indexOf(className, ';') > -1)
+ {
+ // remove any path parameters set manually by the user. WICKET-5500
+ className = Strings.beforeFirst(className, ';');
+ }
- return WicketObjects.resolveClass(name);
+ return className;
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/825da305/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
index 41c6696..ad15d6d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
@@ -139,7 +139,8 @@ public class PackageMapper extends AbstractBookmarkableMapper
PageComponentInfo info = getPageComponentInfo(url);
// load the page class
- String className = url.getSegments().get(mountSegments.length);
+ String name = url.getSegments().get(mountSegments.length);
+ String className = cleanClassName(name);
if (isValidClassName(className) == false)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/825da305/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
index c8c2a0f..910c821 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
@@ -77,6 +77,22 @@ public class BookmarkableMapperTest extends AbstractMapperTest
}
/**
+ * https://issues.apache.org/jira/browse/WICKET-5500
+ */
+ @Test
+ public void decodePageClassWithPathParameters()
+ {
+ Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + ";something=else");
+ IRequestHandler handler = encoder.mapRequest(getRequest(url));
+
+ assertTrue(handler instanceof RenderPageRequestHandler);
+ IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
+ assertEquals(PAGE_CLASS_NAME, page.getClass().getName());
+ assertEquals(0, page.getPageParameters().getIndexedCount());
+ assertTrue(page.getPageParameters().getNamedKeys().isEmpty());
+ }
+
+ /**
*
*/
@Test
http://git-wip-us.apache.org/repos/asf/wicket/blob/825da305/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
index e469b10..0666061 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
@@ -143,6 +143,21 @@ public class PackageMapperTest extends AbstractMapperTest
assertEquals(0, page.getPageParameters().getIndexedCount());
assertTrue(page.getPageParameters().getNamedKeys().isEmpty());
}
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-5500
+ */
+ @Test
+ public void decodePageClassWithPathParameters()
+ {
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + ";something=else");
+ IRequestHandler handler = encoder.mapRequest(getRequest(url));
+
+ assertTrue(handler instanceof RenderPageRequestHandler);
+ IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
+ assertEquals(PAGE_CLASS_NAME, page.getClass().getSimpleName());
+ assertEquals(0, page.getPageParameters().getIndexedCount());
+ assertTrue(page.getPageParameters().getNamedKeys().isEmpty());
+ }
/**
*