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:25:12 UTC
[1/2] git commit: WICKET-5500 Ignore the path parameters when reading
the page class
Updated Branches:
refs/heads/wicket-6.x 7cc191318 -> 28e1b0fe4
WICKET-5500 Ignore the path parameters when reading the page class
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/28e1b0fe
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/28e1b0fe
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/28e1b0fe
Branch: refs/heads/wicket-6.x
Commit: 28e1b0fe4c297633453c92a0fd36bbac77a93784
Parents: 8299990
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:25:03 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/28e1b0fe/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/28e1b0fe/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 63e5914..b8a29ff 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
@@ -136,7 +136,8 @@ public class PackageMapper extends AbstractBookmarkableMapper
PageComponentInfo info = getPageComponentInfo(url);
// load the page class
- String className = url.getSegments().get(0);
+ String name = url.getSegments().get(0);
+ String className = cleanClassName(name);
if (isValidClassName(className) == false)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/28e1b0fe/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 07850a3..9138bfa 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/28e1b0fe/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 b08b112..15f339d 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
@@ -115,6 +115,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(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());
+ }
/**
*
[2/2] git commit: Use Args#notNull and thus simplify the method
Posted by mg...@apache.org.
Use Args#notNull and thus simplify the method
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/82999908
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/82999908
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/82999908
Branch: refs/heads/wicket-6.x
Commit: 82999908fa0f3ad412713825c4341be354b8f1cf
Parents: 7cc1913
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Feb 6 10:57:34 2014 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Feb 6 11:25:03 2014 +0100
----------------------------------------------------------------------
.../request/mapper/AbstractComponentMapper.java | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/82999908/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 f3e3770..b1480ee 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
@@ -83,24 +83,20 @@ public abstract class AbstractComponentMapper extends AbstractMapper implements
*/
protected PageComponentInfo getPageComponentInfo(final Url url)
{
- if (url == null)
- {
- throw new IllegalStateException("Argument 'url' may not be null.");
- }
- else
+ Args.notNull(url, "url");
+
+ for (QueryParameter queryParameter : url.getQueryParameters())
{
- for (QueryParameter queryParameter : url.getQueryParameters())
+ if (Strings.isEmpty(queryParameter.getValue()))
{
- if (Strings.isEmpty(queryParameter.getValue()))
+ PageComponentInfo pageComponentInfo = PageComponentInfo.parse(queryParameter.getName());
+ if (pageComponentInfo != null)
{
- PageComponentInfo pageComponentInfo = PageComponentInfo.parse(queryParameter.getName());
- if (pageComponentInfo != null)
- {
- return pageComponentInfo;
- }
+ return pageComponentInfo;
}
}
}
+
return null;
}