You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/03/09 08:38:53 UTC
svn commit: r1079685 - in
/wicket/trunk/wicket-core/src/main/java/org/apache/wicket: Component.java
MarkupContainer.java Page.java request/handler/PageAndComponentProvider.java
request/handler/PageProvider.java
Author: ivaynberg
Date: Wed Mar 9 07:38:53 2011
New Revision: 1079685
URL: http://svn.apache.org/viewvc?rev=1079685&view=rev
Log:
minimize the chance of having to call onbeforerender() on a page before invoking a listener by restricting it to cases where component is not initially found and the page is a newly created instance of a bookmarkable page.
Issue: WICKET-3493
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Page.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java?rev=1079685&r1=1079684&r2=1079685&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java Wed Mar 9 07:38:53 2011
@@ -967,9 +967,11 @@ public abstract class Component
}
/**
+ * THIS METHOD IS NOT PART OF THE PUBLIC API, DO NOT CALL IT
+ *
* Used to call {@link #onInitialize()}
*/
- void initialize()
+ public void internalInitialize()
{
fireInitialize();
}
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java?rev=1079685&r1=1079684&r2=1079685&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java Wed Mar 9 07:38:53 2011
@@ -925,7 +925,7 @@ public abstract class MarkupContainer ex
page.componentAdded(child);
// initialie the component
- child.initialize();
+ child.internalInitialize();
}
// if the PREPARED_FOR_RENDER flag is set, we have already called
@@ -937,13 +937,15 @@ public abstract class MarkupContainer ex
}
/**
- * Overrides {@link Component#initialize()} to call {@link Component#fireInitialize()} for
- * itself and for all its children.
+ * THIS METHOD IS NOT PART OF THE PUBLIC API, DO NOT CALL IT
+ *
+ * Overrides {@link Component#internalInitialize()} to call {@link Component#fireInitialize()}
+ * for itself and for all its children.
*
* @see org.apache.wicket.Component#fireInitialize()
*/
@Override
- final void initialize()
+ public final void internalInitialize()
{
super.fireInitialize();
visitChildren(new IVisitor<Component, Void>()
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Page.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Page.java?rev=1079685&r1=1079684&r2=1079685&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Page.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Page.java Wed Mar 9 07:38:53 2011
@@ -323,7 +323,7 @@ public abstract class Page extends Marku
if (!getFlag(FLAG_INITIALIZED))
{
// initialize the page if not yet initialized
- initialize();
+ internalInitialize();
}
super.internalPrepareForRender(setRenderingFlag);
}
@@ -1061,7 +1061,7 @@ public abstract class Page extends Marku
if (!getFlag(FLAG_INITIALIZED))
{
// initialize the page if not yet initialized
- initialize();
+ internalInitialize();
}
if (!component.isAuto())
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java?rev=1079685&r1=1079684&r2=1079685&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageAndComponentProvider.java Wed Mar 9 07:38:53 2011
@@ -16,14 +16,15 @@
*/
package org.apache.wicket.request.handler;
+import org.apache.wicket.Page;
import org.apache.wicket.request.component.IRequestableComponent;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.lang.Args;
/**
- * Extension of {@link PageProvider} that is also capable of providing a Component belonging
- * to the page.
+ * Extension of {@link PageProvider} that is also capable of providing a Component belonging to the
+ * page.
*
* @see PageProvider
*
@@ -134,15 +135,6 @@ public class PageAndComponentProvider ex
}
/**
- * @see org.apache.wicket.request.handler.PageProvider#prepareForRenderNewPage()
- */
- @Override
- protected boolean prepareForRenderNewPage()
- {
- return true;
- }
-
- /**
* @see org.apache.wicket.request.handler.IPageAndComponentProvider#getComponent()
*/
public IRequestableComponent getComponent()
@@ -151,6 +143,24 @@ public class PageAndComponentProvider ex
{
IRequestablePage page = getPageInstance();
component = page.get(componentPath);
+ 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 (getPageId() == null)
+ {
+ Page p = (Page)page;
+ p.internalInitialize();
+ p.internalPrepareForRender(false);
+ component = page.get(componentPath);
+ }
+ }
}
if (component == null)
{
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java?rev=1079685&r1=1079684&r2=1079685&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java Wed Mar 9 07:38:53 2011
@@ -17,7 +17,6 @@
package org.apache.wicket.request.handler;
import org.apache.wicket.Application;
-import org.apache.wicket.Page;
import org.apache.wicket.page.IPageManager;
import org.apache.wicket.protocol.http.PageExpiredException;
import org.apache.wicket.request.IRequestHandler;
@@ -206,15 +205,6 @@ public class PageProvider implements IPa
}
}
- /**
- *
- * @return always false
- */
- protected boolean prepareForRenderNewPage()
- {
- return false;
- }
-
protected IPageSource getPageSource()
{
if (pageSource != null)
@@ -258,10 +248,6 @@ public class PageProvider implements IPa
{
page = getPageSource().newPageInstance(pageClass, pageParameters);
freshCreated = true;
- if (prepareForRenderNewPage() && page instanceof Page)
- {
- ((Page)page).internalPrepareForRender(false);
- }
}
}
@@ -333,4 +319,9 @@ public class PageProvider implements IPa
Application.get().getPageManager().touchPage(pageInstance);
}
}
+
+ public Integer getPageId()
+ {
+ return pageId;
+ }
}