You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2013/10/28 09:16:59 UTC

[43/47] git commit: WICKET-4997: render bookmarkable urls for bookmarkable pages (not stateless)

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


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

Branch: refs/heads/wicket-4997
Commit: 9dd2c4ea9f4a99b1b29dd78f3e839d871045963a
Parents: eaed6ee
Author: Emond Papegaaij <em...@topicus.nl>
Authored: Mon Aug 19 11:07:41 2013 +0200
Committer: Emond Papegaaij <em...@topicus.nl>
Committed: Mon Oct 28 09:11:08 2013 +0100

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


http://git-wip-us.apache.org/repos/asf/wicket/blob/9dd2c4ea/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 8fa63a3..116eb86 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -3336,7 +3336,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);
 		}
@@ -3379,7 +3379,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/9dd2c4ea/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/9dd2c4ea/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 9b1db28..19212b6 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;
@@ -49,21 +48,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
@@ -143,7 +142,7 @@ public class MountedMapper extends AbstractBookmarkableMapper
 
 	/**
 	 * Construct.
-	 *
+	 * 
 	 * @param mountPath
 	 * @param pageClass
 	 */
@@ -154,32 +153,32 @@ public class MountedMapper extends AbstractBookmarkableMapper
 
 	/**
 	 * Construct.
-	 *
+	 * 
 	 * @param mountPath
 	 * @param pageClassProvider
 	 */
 	@Deprecated
 	public MountedMapper(String mountPath,
-	                     ClassProvider<? extends IRequestablePage> pageClassProvider)
+		ClassProvider<? extends IRequestablePage> pageClassProvider)
 	{
 		this(mountPath, new ClassReference(pageClassProvider.get()), new PageParametersEncoder());
 	}
 
 	/**
 	 * 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
@@ -192,7 +191,7 @@ public class MountedMapper extends AbstractBookmarkableMapper
 
 	/**
 	 * Construct.
-	 *
+	 * 
 	 * @param mountPath
 	 * @param pageClassProvider
 	 * @param pageParametersEncoder
@@ -202,20 +201,19 @@ public class MountedMapper extends AbstractBookmarkableMapper
 		ClassProvider<? extends IRequestablePage> pageClassProvider,
 		IPageParametersEncoder pageParametersEncoder)
 	{
-		this(mountPath, new ClassReference(pageClassProvider.get()),
-				pageParametersEncoder);
+		this(mountPath, new ClassReference(pageClassProvider.get()), pageParametersEncoder);
 	}
 
 	/**
 	 * 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");
@@ -427,11 +425,6 @@ public class MountedMapper extends AbstractBookmarkableMapper
 		return url;
 	}
 
-	boolean getRecreateMountedPagesAfterExpiry()
-	{
-		return Application.get().getPageSettings().getRecreateMountedPagesAfterExpiry();
-	}
-
 	/**
 	 * @see AbstractBookmarkableMapper#buildUrl(AbstractBookmarkableMapper.UrlInfo)
 	 */
@@ -483,7 +476,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>
 	 */
@@ -504,7 +497,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.
 	 */