Repository: wicket Updated Branches: refs/heads/master 077e1c3d5 -> 010f0efde
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/010f0efd Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/010f0efd Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/010f0efd Branch: refs/heads/master Commit: 010f0efdef14977bfef83f5975b96f24ac808ebe Parents: 077e1c3 Author: Sven Meier <[email protected]> Authored: Wed May 20 21:01:24 2015 +0200 Committer: Sven Meier <[email protected]> Committed: Wed May 20 21:13:08 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/010f0efd/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 e59fabb..947f69c 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/010f0efd/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..248cbba 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>"); + } + } }
