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 2010/08/15 20:14:09 UTC
svn commit: r985727 - in /wicket/trunk/wicket/src:
main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
Author: mgrigorov
Date: Sun Aug 15 18:14:09 2010
New Revision: 985727
URL: http://svn.apache.org/viewvc?rev=985727&view=rev
Log:
WICKET-2993 ClassCastException when requesting for non-page class
Create a request handler only if the resolved class is assignable to Page.class
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java?rev=985727&r1=985726&r2=985727&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java Sun Aug 15 18:14:09 2010
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.request.mapper;
+import org.apache.wicket.Page;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.component.IRequestablePage;
@@ -102,10 +103,15 @@ public class BookmarkableMapper extends
String className = url.getSegments().get(2);
Class<? extends IRequestablePage> pageClass = getPageClass(className);
- // extract the PageParameters from URL if there are any
- PageParameters pageParameters = extractPageParameters(request, 3, pageParametersEncoder);
+ if (Page.class.isAssignableFrom(pageClass))
+ {
- return new UrlInfo(info, pageClass, pageParameters);
+ // extract the PageParameters from URL if there are any
+ PageParameters pageParameters = extractPageParameters(request, 3,
+ pageParametersEncoder);
+
+ return new UrlInfo(info, pageClass, pageParameters);
+ }
}
return null;
}
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java?rev=985727&r1=985726&r2=985727&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java Sun Aug 15 18:14:09 2010
@@ -30,9 +30,6 @@ import org.apache.wicket.request.handler
import org.apache.wicket.request.handler.PageAndComponentProvider;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler;
-import org.apache.wicket.request.mapper.BookmarkableMapper;
-import org.apache.wicket.request.mapper.IMapperContext;
-import org.apache.wicket.request.mapper.StalePageException;
import org.apache.wicket.request.mapper.parameter.PageParameters;
/**
@@ -244,6 +241,18 @@ public class BookmarkableMapperTest exte
}
/**
+ * WICKET-2993
+ */
+ public void testDecode10()
+ {
+ // use String.class but any other non-Page will do the job as well
+ Url url = Url.parse("wicket/bookmarkable/" + String.class.getName());
+
+ IRequestHandler handler = encoder.mapRequest(getRequest(url));
+ assertNull("A non-page class should not create a request handler!", handler);
+ }
+
+ /**
*
*/
public void testEncode1()