You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2013/06/21 14:57:18 UTC

git commit: WICKET-5247 don't map handler when value for required placeholder is missing

Updated Branches:
  refs/heads/master 4eca43fd1 -> 44a4132fc


WICKET-5247 don't map handler when value for required placeholder is
missing

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/44a4132f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/44a4132f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/44a4132f

Branch: refs/heads/master
Commit: 44a4132fca07bed782d13ff1f0a72e1b4bd863ec
Parents: 4eca43f
Author: svenmeier <sv...@meiers.net>
Authored: Fri Jun 21 14:54:25 2013 +0200
Committer: svenmeier <sv...@meiers.net>
Committed: Fri Jun 21 14:54:25 2013 +0200

----------------------------------------------------------------------
 .../core/request/mapper/MountedMapper.java      |  5 +++++
 .../core/request/mapper/MountedMapperTest.java  | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/44a4132f/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
index 12f8985..c55222e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
@@ -424,6 +424,11 @@ public class MountedMapper extends AbstractBookmarkableMapper
 			String optionalPlaceholder = getOptionalPlaceholder(mountSegments[i]);
 			if (placeholder != null)
 			{
+				if (!copy.getNamedKeys().contains(placeholder))
+				{
+					// no value for placeholder - cannot mount
+					return null;
+				}
 				url.getSegments().set(i - dropped, copy.get(placeholder).toString(""));
 				copy.remove(placeholder);
 			}

http://git-wip-us.apache.org/repos/asf/wicket/blob/44a4132f/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
index d8cccb5..555bf33 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
@@ -680,6 +680,26 @@ public class MountedMapperTest extends AbstractMapperTest
 		assertEquals("some/p1/path/p2/i1/i2?1&a=b&b=c", url.toString());
 	}
 
+	/**
+	 * WICKET-5247 page instantiated without required parameters won't be mapped
+	 */
+	@Test
+	public void placeholderEncode4()
+	{
+		PageProvider provider = new PageProvider(new MockPage())
+		{
+			@Override
+			public boolean isNewPageInstance()
+			{
+				return false;
+			}
+		};
+		provider.setPageSource(context);
+		IRequestHandler handler = new RenderPageRequestHandler(provider);
+		Url url = placeholderEncoder.mapHandler(handler);
+		assertNull(url);
+	}
+
 	/** */
 	@Test
 	public void optionPlaceholderDecode1()