Author: mgrigorov
Date: Sat Jul 24 17:35:53 2010
New Revision: 978908

URL: http://svn.apache.org/viewvc?rev=978908&view=rev
Log:
WICKET-2961 Adding a component in Component#onInitialize() leads to 
StackOverflowError

Add a unit test and a fix.


Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.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=978908&r1=978907&r2=978908&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 Jul 
24 17:35:53 2010
@@ -967,8 +967,8 @@ public abstract class Component implemen
        {
                if (!getFlag(FLAG_INITIALIZED))
                {
-                       onInitialize();
                        setFlag(FLAG_INITIALIZED, true);
+                       onInitialize();
                }
        }
 

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=978908&r1=978907&r2=978908&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 Jul 24 17:35:53 2010
@@ -19,6 +19,7 @@ package org.apache.wicket;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.tester.WicketTester;
@@ -121,6 +122,8 @@ public class ComponentInitializationTest
                protected void onInitialize()
                {
                        count++;
+                       add(new Label("addedComponent",
+                               "Testing addition of a component to show 
StackOverflowError"));
                }
 
                public int getCount()
@@ -131,7 +134,8 @@ public class ComponentInitializationTest
                public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
                        Class<?> containerClass)
                {
-                       return new StringResourceStream("<html></html>");
+                       return new StringResourceStream(
+                               "<html><body><span 
wicket:id=\"addedComponent\"></span></body></html>");
                }
        }
 


Reply via email to