Repository: wicket Updated Branches: refs/heads/master 1271f9a6c -> c9b98b77d
WICKET-6231 wicket:enclosure and getVariation(). Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c9b98b77 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c9b98b77 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c9b98b77 Branch: refs/heads/master Commit: c9b98b77db80dc437474c83b08116a13b03bd3a4 Parents: 1271f9a Author: Andrea Del Bene <[email protected]> Authored: Mon Aug 29 15:14:59 2016 +0200 Committer: Andrea Del Bene <[email protected]> Committed: Mon Aug 29 17:27:58 2016 +0200 ---------------------------------------------------------------------- .../main/java/org/apache/wicket/Component.java | 15 ++++++++- .../wicket/markup/MarkupVariationTest.java | 32 ++++++++++++++++++-- 2 files changed, 44 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/c9b98b77/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 5aab92b..c2b6a92 100644 --- a/wicket-core/src/main/java/org/apache/wicket/Component.java +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java @@ -83,6 +83,7 @@ import org.apache.wicket.util.convert.IConverter; import org.apache.wicket.util.io.IClusterable; import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.lang.Classes; +import org.apache.wicket.util.lang.Objects; import org.apache.wicket.util.string.PrependingStringBuffer; import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.value.ValueMap; @@ -726,7 +727,7 @@ public abstract class Component public IMarkupFragment getMarkup() { // Markup already determined or preset? - if (markup != null) + if (markup != null && markupHasCurrentVariation()) { return markup; } @@ -758,6 +759,18 @@ public abstract class Component } /** + * Check if the loaded markup has the current + * variation. + * + * @return true if the markup has the current variation + */ + private boolean markupHasCurrentVariation() + { + return Objects.equal(getVariation(), + markup.getMarkupResourceStream().getVariation()); + } + + /** * @return The 'id' attribute from the associated markup tag */ public final String getMarkupIdFromMarkup() http://git-wip-us.apache.org/repos/asf/wicket/blob/c9b98b77/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java index 65cc4d2..705e075 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/MarkupVariationTest.java @@ -25,6 +25,7 @@ import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.StringResourceStream; +import org.apache.wicket.util.tester.FormTester; import org.apache.wicket.util.tester.WicketTestCase; import org.junit.Test; @@ -61,6 +62,20 @@ public class MarkupVariationTest extends WicketTestCase { return (MarkupContainer) tester.getComponentFromLastRenderedPage("p"); } + + /** + * https://issues.apache.org/jira/browse/WICKET-6231 + */ + @Test + public void changeVariationBeforeRendering() throws Exception + { + tester.startPage(new VariationPage()); + FormTester formTester = tester.newFormTester("p:a_form"); + + formTester.submit(); + + tester.assertContainsNot("One"); + } private static class VariationPage extends WebPage implements IMarkupResourceStreamProvider { @@ -95,14 +110,22 @@ public class MarkupVariationTest extends WicketTestCase @Override public void onClick(AjaxRequestTarget target) { - variation = "one".equals(variation) ? "two" : "one"; + changeVariation(); target.add(VariationPanel.this); } }); add(new Label("simpleLabel", "Label")); - add(new Form<Void>("a_form")); + add(new Form<Void>("a_form") + { + @Override + protected void onSubmit() + { + super.onSubmit(); + changeVariation(); + } + }); add(new Label("child", "Inline Enclosure child text")); add(new Label("nestedChild", "Nested Inline Enclosure child text")); @@ -114,5 +137,10 @@ public class MarkupVariationTest extends WicketTestCase { return variation; } + + private void changeVariation() + { + variation = "one".equals(variation) ? "two" : "one"; + } } }
