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