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


Reply via email to