Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 98f9c7aa8 -> a58cf45bd


WICKET-5911 reset all flags after render


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a58cf45b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a58cf45b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a58cf45b

Branch: refs/heads/wicket-6.x
Commit: a58cf45bd865fd488fac86b94202830a3354a934
Parents: 98f9c7a
Author: Sven Meier <[email protected]>
Authored: Wed May 20 21:01:24 2015 +0200
Committer: Sven Meier <[email protected]>
Committed: Wed May 20 21:10:22 2015 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  |  2 +-
 .../org/apache/wicket/MarkupContainerTest.java  | 52 ++++++++++++++++++++
 2 files changed, 53 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a58cf45b/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java 
b/wicket-core/src/main/java/org/apache/wicket/Component.java
index 9390afc..cfed144 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -928,7 +928,7 @@ public abstract class Component
                finally
                {
                        // this flag must always be set to false.
-                       setFlag(FLAG_RENDERING, false);
+                       markRendering(false);
                }
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/a58cf45b/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java 
b/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
index e9ea15a..ad29d5b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/MarkupContainerTest.java
@@ -118,6 +118,24 @@ public class MarkupContainerTest extends WicketTestCase
        }
 
        /**
+        * https://issues.apache.org/jira/browse/WICKET-5911
+        */
+       @Test
+       public void rerenderAfterRenderFailure()
+       {
+               FirstRenderFailsPage page = new FirstRenderFailsPage();
+               try {
+                       tester.startPage(page);
+               } catch (WicketRuntimeException expected) {
+               }
+
+               tester.startPage(page);
+
+               // rendering flags where properly reset, so second rendering 
works properly
+               assertEquals(2, page.beforeRenderCalls);
+       }
+
+       /**
         * https://issues.apache.org/jira/browse/WICKET-4012
         */
        @Test
@@ -184,4 +202,38 @@ public class MarkupContainerTest extends WicketTestCase
                                "<html><body><div wicket:id='a1'><div 
wicket:id='a2'><div wicket:id='a3'></div></div></div></body></html>");
                }
        }
+
+       private static class FirstRenderFailsPage extends WebPage implements 
IMarkupResourceStreamProvider
+       {
+               private boolean firstRender = true;
+
+               private int beforeRenderCalls = 0;
+
+               private FirstRenderFailsPage()
+               {
+
+                       WebMarkupContainer a1 = new WebMarkupContainer("a1") {
+                               @Override
+                               protected void onBeforeRender() {
+                                       super.onBeforeRender();
+
+                                       beforeRenderCalls++;
+
+                                       if (firstRender) {
+                                               firstRender = false;
+                                               throw new 
WicketRuntimeException();
+                                       }
+                               }
+                       };
+                       add(a1);
+               }
+
+               @Override
+               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
+                       Class<?> containerClass)
+               {
+                       return new StringResourceStream(
+                               "<html><body><div 
wicket:id='a1'></div></body></html>");
+               }
+       }
 }

Reply via email to