You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2018/11/09 14:52:02 UTC
[09/21] wicket git commit: WICKET-6608 Stateless page,
mix of queue and add can cause unforseen consequences
WICKET-6608 Stateless page, mix of queue and add can cause unforseen
consequences
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/147f6d33
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/147f6d33
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/147f6d33
Branch: refs/heads/WICKET-6563
Commit: 147f6d33f839edd9a6eb53ce9c20b4cde07fc938
Parents: 426de32
Author: Andrea Del Bene <ad...@apache.org>
Authored: Tue Nov 6 15:29:03 2018 +0100
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Tue Nov 6 15:31:05 2018 +0100
----------------------------------------------------------------------
.../handler/PageAndComponentProvider.java | 50 +++++++++++++-------
1 file changed, 32 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/147f6d33/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
index 0638c9b..785c4a7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageAndComponentProvider.java
@@ -158,27 +158,10 @@ public class PageAndComponentProvider extends PageProvider implements IPageAndCo
component = page != null ? page.get(componentPath) : null;
if (component == null)
{
-
- /*
- * on stateless pages it is possible that the component may not yet exist because it
- * couldve been created in one of the lifecycle callbacks of this page. Lets invoke
- * the callbacks to give the page a chance to create the missing component.
- */
-
// make sure this page instance was just created so the page can be stateless
if (page.isPageStateless())
{
- Page p = (Page)page;
- p.internalInitialize();
-
- // preparation of feedbacks is delayed into the render phase
- try (FeedbackDelay delay = new FeedbackDelay(p.getRequestCycle())) {
- p.beforeRender();
- p.markRendering(false);
-
- // note: no invocation of delay.onBeforeRender()
- }
- component = page.get(componentPath);
+ component = resolveStatelessPageComponent((Page)page);
}
}
}
@@ -191,6 +174,37 @@ public class PageAndComponentProvider extends PageProvider implements IPageAndCo
}
/**
+ * On stateless pages it is possible that the component may not yet exist because it
+ * could have been created in one of the lifecycle callbacks of this page. Lets invoke
+ * the callbacks to give the page a chance to create the missing component.
+ **/
+ private IRequestableComponent resolveStatelessPageComponent(Page page)
+ {
+ //1-first let's try initializing the page
+ page.internalInitialize();
+
+ IRequestableComponent component = page.get(componentPath);
+
+ if (component != null)
+ {
+ return component;
+ }
+
+ //2-if component has not been found let's try rendering the page
+
+ // preparation of feedbacks is delayed into the render phase
+ try (FeedbackDelay delay = new FeedbackDelay(page.getRequestCycle()))
+ {
+ page.beforeRender();
+ page.markRendering(false);
+
+ // note: no invocation of delay.onBeforeRender()
+ }
+
+ return page.get(componentPath);
+ }
+
+ /**
* @see org.apache.wicket.core.request.handler.IPageAndComponentProvider#getComponentPath()
*/
@Override