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