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 2014/01/13 14:53:36 UTC

[2/2] git commit: WICKET-5068 PageParameters missing from re-created Page WICKET-5070 Optionally execute Callback Behavior on Re-construction after Expiry WICKET-5001 Recovery of bookmarkable Page after Session Expiry

WICKET-5068 PageParameters missing from re-created Page
WICKET-5070 Optionally execute Callback Behavior on Re-construction after Expiry
WICKET-5001 Recovery of bookmarkable Page after Session Expiry


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

Branch: refs/heads/sandbox/preserve-page-parameters-and-execute-listener-interface-after-expiration
Commit: a1f862629c223b675a31c4ba9fb7e07c27279090
Parents: ce702dc
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jan 13 15:52:17 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jan 13 15:52:17 2014 +0200

----------------------------------------------------------------------
 .../src/main/java/org/apache/wicket/Component.java  |  5 +++++
 .../handler/ListenerInterfaceRequestHandler.java    |  5 ++++-
 .../request/mapper/AbstractBookmarkableMapper.java  |  6 ------
 .../request/component/IRequestableComponent.java    |  6 ++++++
 .../org/apache/wicket/settings/PageSettings.java    | 16 ++++++++++++++++
 .../test/java/org/apache/wicket/MockComponent.java  |  6 ++++++
 .../core/request/mapper/PackageMapperTest.java      |  4 ++--
 .../markup/html/link/MountedPageLinkTest.java       |  4 +---
 8 files changed, 40 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/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 e139f99..62d67ac 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -4551,4 +4551,9 @@ public abstract class Component
 		return getBehaviors(null);
 	}
 
+	@Override
+	public boolean canCallListenerInterfaceAfterExpiry()
+	{
+		return getApplication().getPageSettings().canCallListenerInterfaceAfterExpiry();
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
index 84592d7..76fa264 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
@@ -186,7 +186,10 @@ public class ListenerInterfaceRequestHandler
 				: RedirectPolicy.AUTO_REDIRECT;
 			final IPageProvider pageProvider = new PageProvider(page);
 
-			if (freshPage && (isStateless == false || component == null))
+			final boolean canCallListenerInterfaceAfterExpiry = component != null
+					? component.canCallListenerInterfaceAfterExpiry()
+					: false;
+			if (!canCallListenerInterfaceAfterExpiry && freshPage && (isStateless == false || component == null))
 			{
 				// A listener interface is invoked on an expired page.
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/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 3e86718..5074ac0 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
@@ -279,12 +279,6 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 
 		if (listenerInterface != null)
 		{
-			if (pageInfo.getPageId() != null)
-			{
-				// WICKET-4594 - ignore the parsed parameters for stateful pages
-				pageParameters = null;
-			}
-
 			PageAndComponentProvider provider = new PageAndComponentProvider(pageInfo.getPageId(),
 				pageClass, pageParameters, renderCount, componentInfo.getComponentPath());
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java b/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
index adc0c9f..bea84e5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
@@ -105,4 +105,10 @@ public interface IRequestableComponent
 	 * </p>
 	 */
 	void detach();
+
+	/**
+	 * @return {@code true} if it is save to call the listener interface on this component
+	 *      when the owner page is freshly created after expiration
+	 */
+	boolean canCallListenerInterfaceAfterExpiry();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java b/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
index 19ddaa0..6096d1d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
@@ -45,6 +45,12 @@ public class PageSettings
 	private boolean recreateMountedPagesAfterExpiry = true;
 
 	/**
+	 * determines whether component's listener interface can be executed
+	 * when its owner page is freshly created after expiration
+	 */
+	private boolean canCallListenerInterfaceAfterExpiry = false;
+
+	/**
 	 * Adds a component resolver to the list.
 	 *
 	 * @param resolver
@@ -115,4 +121,14 @@ public class PageSettings
 	{
 		this.recreateMountedPagesAfterExpiry = recreateMountedPagesAfterExpiry;
 	}
+
+	public boolean canCallListenerInterfaceAfterExpiry()
+	{
+		return canCallListenerInterfaceAfterExpiry;
+	}
+
+	public void setCanCallListenerInterfaceAfterExpiry(boolean canCallListenerInterfaceAfterExpiry)
+	{
+		this.canCallListenerInterfaceAfterExpiry = canCallListenerInterfaceAfterExpiry;
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/wicket-core/src/test/java/org/apache/wicket/MockComponent.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/MockComponent.java b/wicket-core/src/test/java/org/apache/wicket/MockComponent.java
index aafe6e9..f0046f2 100644
--- a/wicket-core/src/test/java/org/apache/wicket/MockComponent.java
+++ b/wicket-core/src/test/java/org/apache/wicket/MockComponent.java
@@ -137,6 +137,12 @@ public class MockComponent implements IRequestableComponent
 	{
 	}
 
+	@Override
+	public boolean canCallListenerInterfaceAfterExpiry()
+	{
+		return false;
+	}
+
 	public boolean canCallListenerInterface()
 	{
 		return true;

http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
index bc2d8c4..2a4635b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
@@ -239,9 +239,9 @@ public class PackageMapperTest extends AbstractMapperTest
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 
 		PageParameters p = h.getPageParameters();
-		assertEquals(0, p.getIndexedCount());
+		assertEquals(2, p.getIndexedCount());
 
-		assertEquals(0, p.getNamedKeys().size());
+		assertEquals(2, p.getNamedKeys().size());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/a1f86262/wicket-core/src/test/java/org/apache/wicket/markup/html/link/MountedPageLinkTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/MountedPageLinkTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/MountedPageLinkTest.java
index 398638c..0093571 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/MountedPageLinkTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/MountedPageLinkTest.java
@@ -98,9 +98,7 @@ public class MountedPageLinkTest extends WicketTestCase
 		url = url.replace("?0", "?3");
 		tester.executeUrl(url);
 
-		// request parameters to callback urls should be ignored for the re-created page
-		// (WICKET-4594)
-		tester.assertContainsNot("param=value");
+		tester.assertContains("param=value");
 	}
 
 	/**