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>"); + } + } }
