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 2015/10/07 22:18:39 UTC

wicket git commit: WICKET-5996 Mounted packages throw IllegalArgumentException when visiting base package url.

Repository: wicket
Updated Branches:
  refs/heads/master ee127c029 -> fac99dd61


WICKET-5996 Mounted packages throw IllegalArgumentException when visiting base package url.

Return null UrlInfo if the class name is missing


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

Branch: refs/heads/master
Commit: fac99dd61b7324aa2b450617917735946f98bf0c
Parents: ee127c0
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Oct 7 22:18:21 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Oct 7 22:18:21 2015 +0200

----------------------------------------------------------------------
 .../core/request/mapper/BookmarkableMapper.java |  5 ++++
 .../core/request/mapper/PackageMapper.java      | 18 +++++++++++--
 .../request/mapper/BookmarkableMapperTest.java  | 24 +++++++++++++++++
 .../core/request/mapper/PackageMapperTest.java  | 28 +++++++++++++++++++-
 4 files changed, 72 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/fac99dd6/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
index bf1d888..8862c35 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
@@ -106,6 +106,11 @@ public class BookmarkableMapper extends AbstractBookmarkableMapper
 				className = segments.get(1);
 			}
 
+			if (Strings.isEmpty(className))
+			{
+				return null;
+			}
+
 			Class<? extends IRequestablePage> pageClass = getPageClass(className);
 
 			if (pageClass != null && IRequestablePage.class.isAssignableFrom(pageClass))

http://git-wip-us.apache.org/repos/asf/wicket/blob/fac99dd6/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 ff13a62..6883ece 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
@@ -17,6 +17,7 @@
 package org.apache.wicket.core.request.mapper;
 
 import java.lang.reflect.Modifier;
+import java.util.List;
 
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.Request;
@@ -28,6 +29,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.PackageName;
+import org.apache.wicket.util.string.Strings;
 
 /**
  * A request mapper that mounts all bookmarkable pages in a given package.
@@ -138,8 +140,20 @@ public class PackageMapper extends AbstractBookmarkableMapper
 			// try to extract page and component information from URL
 			PageComponentInfo info = getPageComponentInfo(url);
 
+			final List<String> segments = url.getSegments();
+			if (segments.size() <= mountSegments.length)
+			{
+				return null;
+			}
+
 			// load the page class
-			String name = url.getSegments().get(mountSegments.length);
+			String name = segments.get(mountSegments.length);
+
+			if (Strings.isEmpty(name))
+			{
+				return null;
+			}
+
 			String className = cleanClassName(name);
 
 			if (isValidClassName(className) == false)
@@ -178,7 +192,7 @@ public class PackageMapper extends AbstractBookmarkableMapper
 	private boolean isValidClassName(String className)
 	{
 		// darn simple check - feel free to enhance this method to your needs
-		if (className == null)
+		if (Strings.isEmpty(className))
 		{
 			return false;
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/fac99dd6/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 75ce9f1..bcd4ba6 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
@@ -471,6 +471,30 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 	}
 
 	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5996
+	 */
+	@Test
+	public void decode15()
+	{
+		Url url = Url.parse("wicket/bookmarkable");
+		final AbstractBookmarkableMapper.UrlInfo urlInfo = encoder.parseRequest(getRequest(url));
+
+		assertThat(urlInfo, is(nullValue()));
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5996
+	 */
+	@Test
+	public void decode16()
+	{
+		Url url = Url.parse("wicket/bookmarkable/");
+		final AbstractBookmarkableMapper.UrlInfo urlInfo = encoder.parseRequest(getRequest(url));
+
+		assertThat(urlInfo, is(nullValue()));
+	}
+
+	/**
 	 *
 	 */
 	@Test

http://git-wip-us.apache.org/repos/asf/wicket/blob/fac99dd6/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 413c70d..3716397 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
@@ -16,7 +16,9 @@
  */
 package org.apache.wicket.core.request.mapper;
 
-import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.nullValue;
+import static org.hamcrest.Matchers.is;
 
 import org.apache.wicket.MockPage;
 import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
@@ -372,6 +374,30 @@ public class PackageMapperTest extends AbstractMapperTest
 	}
 
 	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5996
+	 */
+	@Test
+	public void decode11()
+	{
+		Url url = Url.parse(MOUNT_PATH);
+		IRequestHandler handler = encoder.mapRequest(getRequest(url));
+
+		assertThat(handler, is(nullValue()));
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5996
+	 */
+	@Test
+	public void decode12()
+	{
+		Url url = Url.parse(MOUNT_PATH + '/');
+		IRequestHandler handler = encoder.mapRequest(getRequest(url));
+
+		assertThat(handler, is(nullValue()));
+	}
+
+	/**
 	 *
 	 */
 	@Test