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;
 	}