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 2011/09/07 16:27:42 UTC

svn commit: r1166194 - in /wicket/trunk/wicket-core/src: main/java/org/apache/wicket/request/mapper/MountedMapper.java test/java/org/apache/wicket/request/mapper/MountedMapperTest.java

Author: mgrigorov
Date: Wed Sep  7 14:27:41 2011
New Revision: 1166194

URL: http://svn.apache.org/viewvc?rev=1166194&view=rev
Log:
WICKET-4014 Wicket 1.5 Form Post Action and Link Get discard Page Class Information


Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
    wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java?rev=1166194&r1=1166193&r2=1166194&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java Wed Sep  7 14:27:41 2011
@@ -19,10 +19,15 @@ package org.apache.wicket.request.mapper
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.wicket.RequestListenerInterface;
+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.ListenerInterfaceRequestHandler;
+import org.apache.wicket.request.mapper.info.ComponentInfo;
 import org.apache.wicket.request.mapper.info.PageComponentInfo;
+import org.apache.wicket.request.mapper.info.PageInfo;
 import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
@@ -354,6 +359,41 @@ public class MountedMapper extends Abstr
 		return new PageParameters();
 	}
 
+	@Override
+	public Url mapHandler(IRequestHandler requestHandler)
+	{
+		Url url = super.mapHandler(requestHandler);
+
+		if (url == null && requestHandler instanceof ListenerInterfaceRequestHandler)
+		{
+			ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler)requestHandler;
+			IRequestablePage page = handler.getPage();
+			Class<? extends IRequestablePage> pageClass = page.getClass();
+			if (checkPageClass(pageClass))
+			{
+				String componentPath = handler.getComponentPath();
+				RequestListenerInterface listenerInterface = handler.getListenerInterface();
+
+				Integer renderCount = null;
+				if (listenerInterface.isIncludeRenderCount())
+				{
+					renderCount = page.getRenderCount();
+				}
+
+				PageInfo pageInfo = new PageInfo(page.getPageId());
+				ComponentInfo componentInfo = new ComponentInfo(renderCount,
+					requestListenerInterfaceToString(listenerInterface), componentPath,
+					handler.getBehaviorIndex());
+				PageComponentInfo pageComponentInfo = new PageComponentInfo(pageInfo, componentInfo);
+				UrlInfo urlInfo = new UrlInfo(pageComponentInfo, page.getClass(),
+					handler.getPageParameters());
+				url = buildUrl(urlInfo);
+			}
+		}
+
+		return url;
+	}
+
 	/**
 	 * @see org.apache.wicket.request.mapper.AbstractBookmarkableMapper#buildUrl(org.apache.wicket.request.mapper.AbstractBookmarkableMapper.UrlInfo)
 	 */

Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java?rev=1166194&r1=1166193&r2=1166194&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java Wed Sep  7 14:27:41 2011
@@ -393,6 +393,36 @@ public class MountedMapperTest extends A
 	}
 
 	/**
+	 * https://issues.apache.org/jira/browse/WICKET-4014
+	 * 
+	 * The difference with testEncode7 is that here ListenerInterfaceRequestHandler is used instead
+	 * of BookmarkableListenerInterfaceRequestHandler
+	 */
+	public void testEncode6_1()
+	{
+		MockPage page = new MockPage(15);
+		page.getPageParameters().set(0, "i1");
+		page.getPageParameters().set(1, "i2");
+		page.getPageParameters().set("a", "b");
+		page.getPageParameters().set("b", "c");
+		page.setRenderCount(4);
+
+		// shouldn't make any difference for ListenerInterfaceRequestHandler,
+		// as this explicitely says the url must be bookmarkable
+		page.setCreatedBookmarkable(false);
+
+		IRequestableComponent c = page.get("foo:bar");
+
+		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
+		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider,
+			ILinkListener.INTERFACE);
+
+		Url url = encoder.mapHandler(handler);
+
+		assertEquals("some/mount/path/i1/i2?15-4.ILinkListener-foo-bar&a=b&b=c", url.toString());
+	}
+
+	/**
 	 * 
 	 */
 	public void testEncode7()
@@ -420,6 +450,36 @@ public class MountedMapperTest extends A
 	}
 
 	/**
+	 * https://issues.apache.org/jira/browse/WICKET-4014
+	 * 
+	 * The difference with testEncode7 is that here ListenerInterfaceRequestHandler is used instead
+	 * of BookmarkableListenerInterfaceRequestHandler
+	 */
+	public void testEncode7_1()
+	{
+		MockPage page = new MockPage(15);
+		page.getPageParameters().set(0, "i1");
+		page.getPageParameters().set(1, "i2");
+		page.getPageParameters().set("a", "b");
+		page.getPageParameters().set("b", "c");
+		page.setRenderCount(5);
+
+		// shouldn't make any difference for ListenerInterfaceRequestHandler,
+		// as this explicitely says the url must be bookmarkable
+		page.setCreatedBookmarkable(false);
+
+		IRequestableComponent c = page.get("foo:bar");
+
+		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
+		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider,
+			ILinkListener.INTERFACE, 4);
+
+		Url url = encoder.mapHandler(handler);
+
+		assertEquals("some/mount/path/i1/i2?15-5.ILinkListener.4-foo-bar&a=b&b=c", url.toString());
+	}
+
+	/**
 	 * 
 	 */
 	public void testEncode8()