WICKET-4997: render bookmarkable urls for bookmarkable pages (not stateless)

Conflicts:
        
wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/bf43914f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/bf43914f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/bf43914f

Branch: refs/heads/master
Commit: bf43914fd7f0ed5ff57a56a82420cda76d3cbaee
Parents: 7ea31ba
Author: Emond Papegaaij <[email protected]>
Authored: Mon Aug 19 11:07:41 2013 +0200
Committer: Emond Papegaaij <[email protected]>
Committed: Mon Oct 28 10:21:57 2013 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  |  4 +--
 .../mapper/AbstractBookmarkableMapper.java      | 13 ++++++--
 .../core/request/mapper/MountedMapper.java      | 32 ++++++++------------
 3 files changed, 25 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/bf43914f/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java 
b/wicket-core/src/main/java/org/apache/wicket/Component.java
index 48b5edc..0c56063 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -3334,7 +3334,7 @@ public abstract class Component
                Page page = getPage();
                PageAndComponentProvider provider = new 
PageAndComponentProvider(page, this, parameters);
                IRequestHandler handler;
-               if (page.isPageStateless())
+               if (page.isBookmarkable())
                {
                        handler = new 
BookmarkableListenerInterfaceRequestHandler(provider, listener, id);
                }
@@ -3377,7 +3377,7 @@ public abstract class Component
                Page page = getPage();
                PageAndComponentProvider provider = new 
PageAndComponentProvider(page, this, parameters);
                IRequestHandler handler;
-               if (page.isPageStateless())
+               if (page.isBookmarkable())
                {
                        handler = new 
BookmarkableListenerInterfaceRequestHandler(provider, listener);
                }

http://git-wip-us.apache.org/repos/asf/wicket/blob/bf43914f/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index 93c22d2..bbe2e1c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@ -210,8 +210,7 @@ public abstract class AbstractBookmarkableMapper extends 
AbstractComponentMapper
                PageProvider provider = new PageProvider(pageInfo.getPageId(), 
pageClass, pageParameters,
                        renderCount);
                provider.setPageSource(getContext());
-               if (provider.isNewPageInstance() &&
-                       
!WebApplication.get().getPageSettings().getRecreateMountedPagesAfterExpiry())
+               if (provider.isNewPageInstance() && 
!getRecreateMountedPagesAfterExpiry())
                {
                        throw new 
PageExpiredException(String.format("Bookmarkable page id '%d' has expired.",
                                pageInfo.getPageId()));
@@ -222,6 +221,11 @@ public abstract class AbstractBookmarkableMapper extends 
AbstractComponentMapper
                }
        }
 
+       boolean getRecreateMountedPagesAfterExpiry()
+       {
+               return 
WebApplication.get().getPageSettings().getRecreateMountedPagesAfterExpiry();
+       }
+
        /**
         * Creates a {@code IRequestHandler} that processes a listener request.
         * 
@@ -420,8 +424,11 @@ public abstract class AbstractBookmarkableMapper extends 
AbstractComponentMapper
                                
requestListenerInterfaceToString(handler.getListenerInterface()),
                                handler.getComponentPath(), 
handler.getBehaviorIndex());
 
+                       PageParameters parameters = 
getRecreateMountedPagesAfterExpiry() ? new PageParameters(
+                               
handler.getPage().getPageParameters()).mergeWith(handler.getPageParameters())
+                               : handler.getPageParameters();
                        UrlInfo urlInfo = new UrlInfo(new 
PageComponentInfo(pageInfo, componentInfo),
-                               pageClass, handler.getPageParameters());
+                               pageClass, parameters);
                        return buildUrl(urlInfo);
                }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/bf43914f/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
index c55222e..c6d3d2a 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
@@ -19,7 +19,6 @@ package org.apache.wicket.core.request.mapper;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.wicket.Application;
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.request.IRequestHandler;
@@ -48,21 +47,21 @@ import org.apache.wicket.util.string.Strings;
  * are matched before optional parameters, and optional parameters eager (from 
left to right).
  * <p>
  * Decodes and encodes the following URLs:
- *
+ * 
  * <pre>
  *  Page Class - Render (BookmarkablePageRequestHandler for mounted pages)
  *  /mount/point
  *  (these will redirect to hybrid alternative if page is not stateless)
- *
+ * 
  *  IPage Instance - Render Hybrid (RenderPageRequestHandler for mounted pages)
  *  /mount/point?2
- *
+ * 
  *  IPage Instance - Bookmarkable Listener 
(BookmarkableListenerInterfaceRequestHandler for mounted pages)
  *  /mount/point?2-click-foo-bar-baz
  *  /mount/point?2-5.click.1-foo-bar-baz (1 is behavior index, 5 is render 
count)
  *  (these will redirect to hybrid if page is not stateless)
  * </pre>
- *
+ * 
  * @author Matej Knopp
  */
 public class MountedMapper extends AbstractBookmarkableMapper
@@ -142,7 +141,7 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
 
        /**
         * Construct.
-        *
+        * 
         * @param mountPath
         * @param pageClass
         */
@@ -153,19 +152,19 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
 
        /**
         * Construct.
-        *
+        * 
         * @param mountPath
         * @param pageClassProvider
         */
        public MountedMapper(String mountPath,
-                            IProvider<Class<? extends IRequestablePage>> 
pageClassProvider)
+               IProvider<Class<? extends IRequestablePage>> pageClassProvider)
        {
                this(mountPath, pageClassProvider, new PageParametersEncoder());
        }
 
        /**
         * Construct.
-        *
+        * 
         * @param mountPath
         * @param pageClass
         * @param pageParametersEncoder
@@ -178,14 +177,14 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
 
        /**
         * Construct.
-        *
+        * 
         * @param mountPath
         * @param pageClassProvider
         * @param pageParametersEncoder
         */
        public MountedMapper(String mountPath,
-                            IProvider<Class<? extends IRequestablePage>> 
pageClassProvider,
-                            IPageParametersEncoder pageParametersEncoder)
+               IProvider<Class<? extends IRequestablePage>> pageClassProvider,
+               IPageParametersEncoder pageParametersEncoder)
        {
                Args.notEmpty(mountPath, "mountPath");
                Args.notNull(pageClassProvider, "pageClassProvider");
@@ -397,11 +396,6 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
                return url;
        }
 
-       boolean getRecreateMountedPagesAfterExpiry()
-       {
-               return 
Application.get().getPageSettings().getRecreateMountedPagesAfterExpiry();
-       }
-
        /**
         * @see 
AbstractBookmarkableMapper#buildUrl(AbstractBookmarkableMapper.UrlInfo)
         */
@@ -453,7 +447,7 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
        /**
         * Check if the URL is for home page and the home page class match 
mounted class. If so,
         * redirect to mounted URL.
-        *
+        * 
         * @param url
         * @return request handler or <code>null</code>
         */
@@ -474,7 +468,7 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
         * If this method returns <code>true</code> and application home page 
class is same as the class
         * mounted with this encoder, request to home page will result in a 
redirect to the mounted
         * path.
-        *
+        * 
         * @return whether this encode should respond to home page request when 
home page class is same
         *         as mounted class.
         */

Reply via email to