You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2015/05/20 21:11:10 UTC

wicket git commit: WICKET-5911 reset all flags after render

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 <sv...@apache.org>
Authored: Wed May 20 21:01:24 2015 +0200
Committer: Sven Meier <sv...@apache.org>
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>");
+		}
+	}
 }