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 2014/07/30 22:58:29 UTC

git commit: WICKET-5655 clear FLAG_INHERITABLE_MODEL reliably

Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x fd2dcbe51 -> 611dffb27


WICKET-5655 clear FLAG_INHERITABLE_MODEL reliably

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

Branch: refs/heads/wicket-6.x
Commit: 611dffb273f0cc4aba32af335a0dd72b9733ea7d
Parents: fd2dcbe
Author: svenmeier <sv...@meiers.net>
Authored: Wed Jul 30 22:57:55 2014 +0200
Committer: svenmeier <sv...@meiers.net>
Committed: Wed Jul 30 22:57:55 2014 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  |  9 ++----
 .../apache/wicket/model/InheritedModelTest.java | 31 ++++++++++++++++++++
 2 files changed, 34 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/611dffb2/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 a0c5def..d5e28cc 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -2948,6 +2948,9 @@ public abstract class Component
 			modelChanging();
 			setModelImpl(wrap(model));
 			modelChanged();
+
+			// WICKET-3413 reset 'inherited model' when model is explicitely set
+			setFlag(FLAG_INHERITABLE_MODEL, false);
 		}
 
 		return this;
@@ -2976,12 +2979,6 @@ public abstract class Component
 			if (model != null)
 			{
 				data_set(0, model);
-				// WICKET-3413 reset 'inherited model' flag if model changed
-				// and a new one is not IComponentInheritedModel
-				if (getFlag(FLAG_INHERITABLE_MODEL) && !(model instanceof IComponentInheritedModel))
-				{
-					setFlag(FLAG_INHERITABLE_MODEL, false);
-				}
 			}
 			else
 			{

http://git-wip-us.apache.org/repos/asf/wicket/blob/611dffb2/wicket-core/src/test/java/org/apache/wicket/model/InheritedModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/InheritedModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/InheritedModelTest.java
index f8c7f1d..4e27602 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/InheritedModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/InheritedModelTest.java
@@ -20,6 +20,7 @@ import org.apache.wicket.WicketTestCase;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.util.value.ValueMap;
+import org.junit.Test;
 
 /**
  * Tests the inheritance of models.
@@ -100,4 +101,34 @@ public class InheritedModelTest extends WicketTestCase
 		tester.startPage(page);
 		assertEquals("bar", page.label.getDefaultModelObject());
 	}
+
+
+	/**
+	 * Tests if Component#FLAG_INHERITABLE_MODEL reset after model change (WICKET-5655).
+	 */
+	@Test
+	public void testResetInheritedModelFlag2()
+	{
+		ValueMap data1 = new ValueMap();
+		data1.put("label", "foo");
+
+		ValueMap data2 = new ValueMap();
+		data2.put("value", "bar");
+
+		InheritedTestPage page = new InheritedTestPage();
+
+		page.setDefaultModel(new CompoundPropertyModel<ValueMap>(data1));
+		tester.startPage(page);
+		assertEquals("foo", page.label.getDefaultModelObject());
+
+		page.label.setDefaultModel(new CompoundPropertyModel<String>(new PropertyModel<String>(
+			data2, "value")));
+		tester.startPage(page);
+		assertEquals("bar", page.label.getDefaultModelObject());
+
+		page.detach();
+
+		tester.startPage(page);
+		assertEquals("bar", page.label.getDefaultModelObject());
+	}
 }