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()