You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wicket.apache.org by Sebastien Briquet <sb...@apache.org> on 2015/04/21 22:59:25 UTC
Re: [2/2] wicket git commit: Added Form#wantSubmitOnParentFormSubmit
& UnitTest
Oops sorry, I forgot to reference the issue in the commit description !! :/
On Tue, Apr 21, 2015 at 10:56 PM, <sb...@apache.org> wrote:
> Added Form#wantSubmitOnParentFormSubmit & UnitTest
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/849cdc2b
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/849cdc2b
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/849cdc2b
>
> Branch: refs/heads/master
> Commit: 849cdc2ba76093b61a623da75b6999d575c77b4b
> Parents: de7e6fe
> Author: Sebastien Briquet <se...@amadeus.com>
> Authored: Tue Apr 21 14:37:19 2015 +0200
> Committer: Sebastien <se...@gmail.com>
> Committed: Tue Apr 21 22:46:16 2015 +0200
>
> ----------------------------------------------------------------------
> .../apache/wicket/markup/html/form/Form.java | 35 +++++++----
> .../markup/html/form/NestedFormSubmitTest.java | 64 +++++++++++++-------
> 2 files changed, 64 insertions(+), 35 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/849cdc2b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> index a871f1e..f3fdbb8 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> @@ -895,11 +895,23 @@ public class Form<T> extends WebMarkupContainer
> *
> * @return Whether this form wants to be submitted too if a nested
> form is submitted.
> */
> - public boolean wantSubmitOnNestedFormSubmit()
> + // TODO wicket-7 migration guide: changed from public to protected
> + protected boolean wantSubmitOnNestedFormSubmit()
> {
> return false;
> }
>
> + /**
> + * Whether this *nested* form wants to be submitted when parent
> form is submitted. By default,
> + * this is true, so when a parent form is submitted, the nested
> form is also submitted. If this
> + * method is overridden to return false, it will not be validated,
> processed nor submitted.
> + *
> + * @return {@code true} by default
> + */
> + protected boolean wantSubmitOnParentFormSubmit()
> + {
> + return true;
> + }
>
> /**
> * Process the form. Though you can override this method to
> provide your own algorithm, it is
> @@ -1011,7 +1023,8 @@ public class Form<T> extends WebMarkupContainer
> public void component(final Component component,
> final IVisit<Void> visit)
> {
> Form<?> form = (Form<?>)component;
> - if (form.isEnabledInHierarchy() &&
> isVisibleInHierarchy())
> + if (form.isEnabledInHierarchy() &&
> form.isVisibleInHierarchy() &&
> +
> form.wantSubmitOnParentFormSubmit())
> {
> form.setFlag(FLAG_SUBMITTED, true);
> return;
> @@ -1280,7 +1293,7 @@ public class Form<T> extends WebMarkupContainer
> @Override
> public void component(Form<?> form, IVisit<Void>
> visit)
> {
> - if (form.isEnabledInHierarchy() &&
> form.isVisibleInHierarchy())
> + if (form.isSubmitted())
> {
> forms.add(form);
> }
> @@ -1525,7 +1538,7 @@ public class Form<T> extends WebMarkupContainer
> @Override
> public void component(final Form<?> form, final
> IVisit<Void> visit)
> {
> - if (form.isEnabledInHierarchy() &&
> form.isVisibleInHierarchy())
> + if (form.isSubmitted())
> {
>
> form.internalMarkFormComponentsValid();
> }
> @@ -1692,7 +1705,7 @@ public class Form<T> extends WebMarkupContainer
> super.onComponentTagBody(markupStream, openTag);
> }
>
> - /*
> + /**
> * Writes the markup for the hidden input field and default button
> field if applicable to the
> * current response.
> */
> @@ -1829,10 +1842,9 @@ public class Form<T> extends WebMarkupContainer
> @Override
> public void component(final Form<?> form, final
> IVisit<Void> visit)
> {
> - if (form.isEnabledInHierarchy() &&
> form.isVisibleInHierarchy())
> + if (form.isSubmitted())
> {
>
> form.internalUpdateFormComponentModels();
> -
> }
> else
> {
> @@ -1891,11 +1903,11 @@ public class Form<T> extends WebMarkupContainer
> visitChildren(Form.class, new IVisitor<Form<?>, Void>()
> {
> @Override
> - public void component(Form<?> nestedForm,
> IVisit<Void> visit)
> + public void component(Form<?> form, IVisit<Void>
> visit)
> {
> - if (nestedForm.isEnabledInHierarchy() &&
> nestedForm.isVisibleInHierarchy())
> + if (form.isSubmitted())
> {
> -
> nestedForm.onValidateModelObjects();
> + form.onValidateModelObjects();
> }
> else
> {
> @@ -2037,7 +2049,7 @@ public class Form<T> extends WebMarkupContainer
> return;
> }
>
> - if (form.isEnabledInHierarchy() &&
> form.isVisibleInHierarchy())
> + if (form.isSubmitted())
> {
> form.validateComponents();
> form.validateFormValidators();
> @@ -2047,7 +2059,6 @@ public class Form<T> extends WebMarkupContainer
> }, new ClassVisitFilter(Form.class));
> }
>
> -
> /**
> * Allows to customize input names of form components inside this
> form.
> *
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/849cdc2b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java
> index c325f1f..b7c4417 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormSubmitTest.java
> @@ -33,12 +33,15 @@ public class NestedFormSubmitTest extends
> WicketTestCase
> private final IModel<Boolean> submitted;
> private final Button submit;
> private final boolean wantInclusion;
> + private final boolean wantExclusion;
>
> - TestForm(String id, IModel<Boolean> submitted, boolean
> wantInclusion)
> + TestForm(String id, IModel<Boolean> submitted, boolean
> wantInclusion, boolean wantExclusion)
> {
> super(id);
> this.submitted = submitted;
> this.wantInclusion = wantInclusion;
> + this.wantExclusion = wantExclusion;
> +
> submit = new Button("submit");
> add(submit);
> }
> @@ -55,23 +58,30 @@ public class NestedFormSubmitTest extends
> WicketTestCase
> {
> return wantInclusion;
> }
> +
> + @Override
> + public boolean wantSubmitOnParentFormSubmit()
> + {
> + return wantExclusion;
> + }
> }
>
> public class TestPage extends WebPage
> {
> - private final TestForm outer;
> - private final TestForm middle;
> - private final TestForm inner;
> + private final TestForm<?> outer;
> + private final TestForm<?> middle;
> + private final TestForm<?> inner;
>
> public TestPage(IModel<Boolean> submittedOuter, boolean
> outerWantsInclusion,
> IModel<Boolean> submittedMiddle, boolean
> middleWantsInclusion,
> - IModel<Boolean> submittedInner)
> + boolean middleWantsExclusion, IModel<Boolean>
> submittedInner)
> {
> - outer = new TestForm("outer", submittedOuter,
> outerWantsInclusion);
> + outer = new TestForm<Void>("outer",
> submittedOuter, outerWantsInclusion, true);
> this.add(outer);
> - middle = new TestForm("middle", submittedMiddle,
> middleWantsInclusion);
> + middle = new TestForm<Void>("middle",
> submittedMiddle, middleWantsInclusion,
> + middleWantsExclusion);
> outer.add(middle);
> - inner = new TestForm("inner", submittedInner,
> false);
> + inner = new TestForm<Void>("inner",
> submittedInner, false, true);
> middle.add(inner);
> }
> }
> @@ -97,13 +107,6 @@ public class NestedFormSubmitTest extends
> WicketTestCase
> submittedOuter.setObject(false);
> }
>
> - @Test
> - public void testDefaultOuterSubmitShouldSubmitAll() throws
> Exception
> - {
> - startPage(false, false);
> - assertFormSubmitOuter(true, true, true);
> - }
> -
> private void assertFormSubmitOuter(boolean expectSubmittedOuter,
> boolean expectSubmittedMiddle,
> boolean expectSubmittedInner)
> {
> @@ -137,37 +140,44 @@ public class NestedFormSubmitTest extends
> WicketTestCase
> }
>
> @Test
> + public void testDefaultOuterSubmitShouldSubmitAll() throws
> Exception
> + {
> + startPage(false, false, true);
> + assertFormSubmitOuter(true, true, true);
> + }
> +
> + @Test
> public void testDefaultMiddleSubmitShouldSubmitMiddleAndInner()
> throws Exception
> {
> - startPage(false, false);
> + startPage(false, false, true);
> assertFormSubmitMiddle(false, true, true);
> }
>
> @Test
> public void testDefaultInnerSubmitShouldSubmitOnlyInner() throws
> Exception
> {
> - startPage(false, false);
> + startPage(false, false, true);
> assertFormSubmitInner(false, false, true);
> }
>
> @Test
> public void testWithOuterInclusionOuterIsSubmittedOnMiddleSubmit()
> throws Exception
> {
> - startPage(true, false);
> + startPage(true, false, true);
> assertFormSubmitMiddle(true, true, true);
> }
>
> @Test
> public void testWithOuterInclusionOuterIsSubmittedOnInnerSubmit()
> throws Exception
> {
> - startPage(true, false);
> + startPage(true, false, true);
> assertFormSubmitInner(true, true, true);
> }
>
> @Test
> public void
> testWithMiddleInclusionMiddleIsSubmittedOnInnerSubmit() throws Exception
> {
> - startPage(false, true);
> + startPage(false, true, true);
> assertFormSubmitInner(false, true, true);
> }
>
> @@ -175,13 +185,21 @@ public class NestedFormSubmitTest extends
> WicketTestCase
> public void
> testWithMiddleAndOuterInclusionMiddleAndOuterIsSubmittedOnInnerSubmit()
> throws Exception
> {
> - startPage(true, true);
> + startPage(true, true, true);
> assertFormSubmitInner(true, true, true);
> }
>
> - private void startPage(boolean outerWantsInclusion, boolean
> middleWantsInclusion)
> + @Test
> + public void testWithMiddleExclusionAndOuterIsSubmitted() throws
> Exception
> + {
> + startPage(false, false, false);
> + assertFormSubmitOuter(true, false, false);
> + }
> +
> + private void startPage(boolean outerWantsInclusion, boolean
> middleWantsInclusion,
> + boolean middleWantsExclusion)
> {
> page = (TestPage)tester.startPage(new
> TestPage(submittedOuter, outerWantsInclusion,
> - submittedMiddle, middleWantsInclusion,
> submittedInner));
> + submittedMiddle, middleWantsInclusion,
> middleWantsExclusion, submittedInner));
> }
> }
>
>