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");
}
/**