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/09/21 10:31:08 UTC

svn commit: r999269 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java

Author: mgrigorov
Date: Tue Sep 21 08:31:07 2010
New Revision: 999269

URL: http://svn.apache.org/viewvc?rev=999269&view=rev
Log:
WICKET-3065 HomePageMapper ignores request to '/' with query string parameters

HomePageMapper should map the request if there are no segments in the URL.
Use IPageParametersEncoder to parse the query parameters.

TODO:
- add a unit test
- PageParametersEncoder ignores parameters like '?name=' - fix it


Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java?rev=999269&r1=999268&r2=999269&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/HomePageMapper.java Tue Sep 21 08:31:07 2010
@@ -19,8 +19,13 @@ package org.apache.wicket.request.mapper
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
+import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.handler.PageProvider;
 import org.apache.wicket.request.handler.RenderPageRequestHandler;
+import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.util.lang.Args;
 
 /**
  * Mapper for rendering home page.
@@ -29,6 +34,28 @@ import org.apache.wicket.request.handler
  */
 public class HomePageMapper extends AbstractComponentMapper
 {
+	private final IPageParametersEncoder pageParametersEncoder;
+
+	/**
+	 * Construct.
+	 */
+	public HomePageMapper()
+	{
+		this(new PageParametersEncoder());
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param pageParametersEncoder
+	 */
+	public HomePageMapper(IPageParametersEncoder pageParametersEncoder)
+	{
+		Args.notNull(pageParametersEncoder, "pageParametersEncoder");
+
+		this.pageParametersEncoder = pageParametersEncoder;
+	}
+
 
 	public int getCompatibilityScore(Request request)
 	{
@@ -42,15 +69,30 @@ public class HomePageMapper extends Abst
 
 	public IRequestHandler mapRequest(Request request)
 	{
-		if (request.getUrl().getSegments().size() == 0 &&
-			request.getUrl().getQueryParameters().size() == 0)
+		final Url url = request.getUrl();
+
+		if (url.getSegments().size() == 0)
 		{
-			return new RenderPageRequestHandler(new PageProvider(getContext().getHomePageClass()));
+			final Class<? extends IRequestablePage> homePageClass = getContext().getHomePageClass();
+
+			final PageProvider pageProvider;
+
+			if (url.getQueryParameters().size() > 0)
+			{
+				PageParameters pageParameters = extractPageParameters(request, 0,
+					pageParametersEncoder);
+				pageProvider = new PageProvider(homePageClass, pageParameters);
+			}
+			else
+			{
+				pageProvider = new PageProvider(homePageClass);
+			}
+
+			return new RenderPageRequestHandler(pageProvider);
 		}
 		else
 		{
 			return null;
 		}
 	}
-
 }