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 2010/08/07 02:49:31 UTC
svn commit: r983153 - in /wicket/trunk/wicket/src:
main/java/org/apache/wicket/Component.java
main/java/org/apache/wicket/MarkupContainer.java
test/java/org/apache/wicket/ComponentInitializationTest.java
Author: ivaynberg
Date: Sat Aug 7 00:49:31 2010
New Revision: 983153
URL: http://svn.apache.org/viewvc?rev=983153&view=rev
Log:
WICKET-2969
Issue: WICKET-2969
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/ComponentInitializationTest.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=983153&r1=983152&r2=983153&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Sat Aug 7 00:49:31 2010
@@ -375,8 +375,8 @@ public abstract class Component implemen
/** True when a component is being removed from the hierarchy */
protected static final int FLAG_REMOVING_FROM_HIERARCHY = 0x200000;
- private static final int FLAG_BEFORE_RENDERING_SUPER_CALL_VERIFIED = 0x1000000;
-
+ private static final int FLAG_BEFORE_RENDER_SUPER_CALL_VERIFIED = 0x1000000;
+ private static final int FLAG_INITIALIZE_SUPER_CALL_VERIFIED = 0x10000000;
/**
* Flag that makes we are in before-render callback phase Set after component.onBeforeRender is
* invoked (right before invoking beforeRender on children)
@@ -948,6 +948,7 @@ public abstract class Component implemen
*/
protected void onInitialize()
{
+ setFlag(FLAG_INITIALIZE_SUPER_CALL_VERIFIED, true);
}
/**
@@ -965,18 +966,27 @@ public abstract class Component implemen
*/
void initialize()
{
- doInitialize();
+ fireInitialize();
}
/**
* Used to call {@link #onInitialize()}
*/
- final void doInitialize()
+ final void fireInitialize()
{
if (!getFlag(FLAG_INITIALIZED))
{
setFlag(FLAG_INITIALIZED, true);
+ setFlag(FLAG_INITIALIZE_SUPER_CALL_VERIFIED, false);
onInitialize();
+ if (!getFlag(FLAG_INITIALIZE_SUPER_CALL_VERIFIED))
+ {
+ throw new IllegalStateException(Component.class.getName() +
+ " has not been properly initialized. Something in the hierarchy of " +
+ getClass().getName() +
+ " has not called super.onInitializer() in the override of onInitialize() method");
+ }
+ setFlag(FLAG_INITIALIZE_SUPER_CALL_VERIFIED, false);
}
}
@@ -1100,7 +1110,7 @@ public abstract class Component implemen
if ((determineVisibility() || callOnBeforeRenderIfNotVisible()) &&
!getFlag(FLAG_RENDERING) && !getFlag(FLAG_PREPARED_FOR_RENDER))
{
- setFlag(FLAG_BEFORE_RENDERING_SUPER_CALL_VERIFIED, false);
+ setFlag(FLAG_BEFORE_RENDER_SUPER_CALL_VERIFIED, false);
getApplication().notifyPreComponentOnBeforeRenderListeners(this);
@@ -1111,7 +1121,7 @@ public abstract class Component implemen
onBeforeRender();
getApplication().notifyPostComponentOnBeforeRenderListeners(this);
- if (!getFlag(FLAG_BEFORE_RENDERING_SUPER_CALL_VERIFIED))
+ if (!getFlag(FLAG_BEFORE_RENDER_SUPER_CALL_VERIFIED))
{
throw new IllegalStateException(Component.class.getName() +
" has not been properly rendered. Something in the hierarchy of " +
@@ -3878,7 +3888,7 @@ public abstract class Component implemen
{
setFlag(FLAG_PREPARED_FOR_RENDER, true);
onBeforeRenderChildren();
- setFlag(FLAG_BEFORE_RENDERING_SUPER_CALL_VERIFIED, true);
+ setFlag(FLAG_BEFORE_RENDER_SUPER_CALL_VERIFIED, true);
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=983153&r1=983152&r2=983153&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java Sat Aug 7 00:49:31 2010
@@ -987,20 +987,20 @@ public abstract class MarkupContainer ex
}
/**
- * Overrides {@link Component#initialize()} to call {@link Component#doInitialize()} for itself
+ * Overrides {@link Component#initialize()} to call {@link Component#fireInitialize()} for itself
* and for all its children.
*
- * @see org.apache.wicket.Component#doInitialize()
+ * @see org.apache.wicket.Component#fireInitialize()
*/
@Override
final void initialize()
{
- super.doInitialize();
+ super.fireInitialize();
visitChildren(new IVisitor<Component, Void>()
{
public void component(final Component component, final IVisit<Void> visit)
{
- component.doInitialize();
+ component.fireInitialize();
}
});
}
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ComponentInitializationTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ComponentInitializationTest.java?rev=983153&r1=983152&r2=983153&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ComponentInitializationTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ComponentInitializationTest.java Sat Aug 7 00:49:31 2010
@@ -17,6 +17,7 @@
package org.apache.wicket;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.html.WebComponent;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
@@ -110,6 +111,21 @@ public class ComponentInitializationTest
assertEquals(1, page.getCount());
}
+ public void testOnInitializeSuperVerified()
+ {
+ TestPage page = new TestPage();
+ boolean illegalState = false;
+ try
+ {
+ page.add(new PossibleDevelopedComponent("addedComponent"));
+ }
+ catch (IllegalStateException e)
+ {
+ illegalState = true;
+ }
+ assertTrue(illegalState);
+ }
+
public static class TestPage extends WebPage implements IMarkupResourceStreamProvider
{
private int count = 0;
@@ -121,6 +137,7 @@ public class ComponentInitializationTest
@Override
protected void onInitialize()
{
+ super.onInitialize();
count++;
add(new Label("addedComponent",
"Testing addition of a component to show StackOverflowError"));
@@ -153,6 +170,7 @@ public class ComponentInitializationTest
@Override
protected void onInitialize()
{
+ super.onInitialize();
count++;
}
@@ -163,4 +181,30 @@ public class ComponentInitializationTest
}
+
+ private static class PossibleDevelopedComponent extends WebComponent
+ {
+ private final boolean initialized = false;
+
+ public PossibleDevelopedComponent(String id)
+ {
+ super(id);
+ }
+
+ @Override
+ protected void onBeforeRender()
+ {
+ super.onBeforeRender();
+ if (!initialized)
+ {
+ onInitialize();
+ }
+ }
+
+ @Override
+ protected void onInitialize()
+ {
+ // possible already implemented method by some user
+ }
+ }
}