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