Repository: wicket
Updated Branches:
  refs/heads/wicket-7.x f1f34994c -> 286bf943d


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/286bf943
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/286bf943
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/286bf943

Branch: refs/heads/wicket-7.x
Commit: 286bf943de105c434babf92dd706772376a7338b
Parents: f1f3499
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 15:14:59 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/286bf943/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 2f6715e..441de32 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -85,6 +85,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/286bf943/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";
+               }
        }
 }

Reply via email to