You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/03/08 23:22:17 UTC

[2/3] wicket git commit: WICKET-6114 FormComponentPanel#clearInput() should delegate to its FormComponent children

WICKET-6114 FormComponentPanel#clearInput() should delegate to its FormComponent children


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

Branch: refs/heads/master
Commit: d470dd0c99be2b37e82d8063080f954d4de7795c
Parents: c303678
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Mar 8 20:27:04 2016 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Mar 8 23:21:14 2016 +0100

----------------------------------------------------------------------
 .../wicket/markup/html/form/FormComponent.java  |  2 +-
 .../markup/html/form/FormComponentPanel.java    | 15 +++++++++++
 .../form/FormComponentPanelProcessingTest.java  | 27 ++++++++++++++++++++
 3 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d470dd0c/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
index 266def3..012bff7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
@@ -634,7 +634,7 @@ public abstract class FormComponent<T> extends LabeledWebMarkupContainer impleme
 	/**
 	 * Clears the user input.
 	 */
-	public final void clearInput()
+	public void clearInput()
 	{
 		rawInput = NO_RAW_INPUT;
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d470dd0c/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
index fb7b961..0112614 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponentPanel.java
@@ -21,6 +21,7 @@ import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.visit.IVisitor;
 
 /**
  * Panel (has it's own markup, defined between <wicket:panel> tags), that can act as a form
@@ -158,4 +159,18 @@ public abstract class FormComponentPanel<T> extends FormComponent<T> implements
 		tag.remove("name");
 		tag.remove("disabled");
 	}
+
+	@Override
+	public void clearInput()
+	{
+		super.clearInput();
+
+		// Visit all the (visible) form components and clear the input on each.
+		visitFormComponentsPostOrder(this, (IVisitor<FormComponent<?>, Void>) (formComponent, visit) -> {
+			if (formComponent != FormComponentPanel.this && formComponent.isVisibleInHierarchy())
+			{
+				formComponent.clearInput();
+			}
+		});
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d470dd0c/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormComponentPanelProcessingTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormComponentPanelProcessingTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormComponentPanelProcessingTest.java
index 193d7a8..4562d24 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormComponentPanelProcessingTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormComponentPanelProcessingTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.markup.html.form;
 
+import static org.hamcrest.Matchers.is;
+
 import java.io.Serializable;
 
 import org.apache.wicket.MarkupContainer;
@@ -50,6 +52,19 @@ public class FormComponentPanelProcessingTest extends WicketTestCase
 		ft.submit();
 	}
 
+	@Test
+	public void clearInput()
+	{
+		tester.startPage(new TestPage());
+		tester.assertRenderedPage(TestPage.class);
+
+		TestFormComponentPanel fcp = (TestFormComponentPanel) tester.getComponentFromLastRenderedPage("form:panel");
+		assertThat(fcp.isChildClearInputCalled(), is(false));
+
+		fcp.clearInput();
+		assertThat(fcp.isChildClearInputCalled(), is(true));
+	}
+
 	private static class TestFormComponentPanel extends FormComponentPanel<Serializable>
 		implements
 			IMarkupResourceStreamProvider
@@ -58,6 +73,7 @@ public class FormComponentPanelProcessingTest extends WicketTestCase
 
 		private boolean childValidated = false;
 		private boolean childModelUpdated = false;
+		private boolean childClearInputCalled = false;
 
 		private TestFormComponentPanel(String id, IModel<Serializable> model)
 		{
@@ -79,9 +95,20 @@ public class FormComponentPanelProcessingTest extends WicketTestCase
 					super.updateModel();
 					childModelUpdated = true;
 				}
+
+				@Override
+				public void clearInput()
+				{
+					super.clearInput();
+					childClearInputCalled = true;
+				}
 			});
 		}
 
+		private boolean isChildClearInputCalled() {
+			return childClearInputCalled;
+		}
+
 		@Override
 		protected void onBeforeRender()
 		{