Author: jcompagner
Date: Tue May 22 08:42:24 2007
New Revision: 540610

URL: http://svn.apache.org/viewvc?view=rev&rev=540610
Log:
made sure that afterRender() is always called
else the flag rendering sticks to true 
This still can happen if there is a exception in onAfterRender for the childs..

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
    
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java?view=diff&rev=540610&r1=540609&r2=540610
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
 Tue May 22 08:42:24 2007
@@ -3076,21 +3076,27 @@
        {
                // if the component has been previously attached via attach()
                // detach it now
-               setFlag(FLAG_AFTER_RENDERING, true);
-               onAfterRender();
-               if (getFlag(FLAG_AFTER_RENDERING))
+               try
                {
-                       throw new IllegalStateException(
-                                       Component.class.getName()
-                                                       + " has not been 
properly detached. Something in the hierarchy of "
-                                                       + getClass().getName()
-                                                       + " has not called 
super.onAfterRender() in the override of onAfterRender() method");
+                       setFlag(FLAG_AFTER_RENDERING, true);
+                       onAfterRender();
+                       if (getFlag(FLAG_AFTER_RENDERING))
+                       {
+                               throw new IllegalStateException(
+                                               Component.class.getName()
+                                                               + " has not 
been properly detached. Something in the hierarchy of "
+                                                               + 
getClass().getName()
+                                                               + " has not 
called super.onAfterRender() in the override of onAfterRender() method");
+                       }
+                       // always detach children because components can be 
attached
+                       // independently of their parents
+                       onAfterRenderChildren();
+               }
+               finally
+               {
+                       // this flag must always be set to false.
+                       setFlag(FLAG_RENDERING, false);
                }
-               setFlag(FLAG_RENDERING, false);
-
-               // always detach children because components can be attached
-               // independently of their parents
-               onAfterRenderChildren();
        }
 
        /**

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java?view=diff&rev=540610&r1=540609&r2=540610
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java 
(original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java 
Tue May 22 08:42:24 2007
@@ -894,9 +894,14 @@
                });
 
                // Handle request by rendering page
-               render(null);
-
-               afterRender();
+               try
+               {
+                       render(null);
+               } 
+               finally
+               {
+                       afterRender();
+               }
 
                // Check rendering if it happened fully
                checkRendering(this);


Reply via email to