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 2012/01/07 10:24:47 UTC

git commit: WICKET-4323 StringResourceModels doesn't seem to detach properly

Updated Branches:
  refs/heads/master 061a478a0 -> e24874daa


WICKET-4323
StringResourceModels doesn't seem to detach properly


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

Branch: refs/heads/master
Commit: e24874daacb9a862e884365947dc5e14f2e537dd
Parents: 061a478
Author: martin-g <mg...@apache.org>
Authored: Sat Jan 7 11:24:37 2012 +0200
Committer: martin-g <mg...@apache.org>
Committed: Sat Jan 7 11:24:37 2012 +0200

----------------------------------------------------------------------
 .../apache/wicket/model/StringResourceModel.java   |   11 +++++
 .../wicket/model/StringResourceModelTest.java      |   34 +++++++++++++++
 2 files changed, 45 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/e24874da/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
index fe74c2f..573a162 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
@@ -233,6 +233,15 @@ public class StringResourceModel extends LoadableDetachableModel<String>
 		}
 
 		@Override
+		protected void onDetach()
+		{
+			if (StringResourceModel.this.component == null)
+			{
+				StringResourceModel.this.onDetach();
+			}
+		}
+
+		@Override
 		protected String load()
 		{
 			if (StringResourceModel.this.component != null)
@@ -582,6 +591,8 @@ public class StringResourceModel extends LoadableDetachableModel<String>
 	@Override
 	protected final void onDetach()
 	{
+		super.onDetach();
+
 		// detach any model
 		if (model != null)
 		{

http://git-wip-us.apache.org/repos/asf/wicket/blob/e24874da/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
index 5ca9dd7..15e9dd7 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
@@ -214,6 +214,40 @@ public class StringResourceModelTest extends WicketTestCase
 	}
 
 	/**
+	 * https://issues.apache.org/jira/browse/WICKET-4323
+	 */
+	@Test
+	public void detachSubstituteModelFromAssignmentWrapper()
+	{
+		IModel<WeatherStation> nullOnDetachModel = new Model<WeatherStation>()
+		{
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void detach()
+			{
+				setObject(null);
+			}
+		};
+
+		nullOnDetachModel.setObject(ws);
+		Label label1 = new Label("resourceModelWithComponent", new StringResourceModel(
+			"wrappedOnAssignment.text", page, nullOnDetachModel));
+		page.add(label1);
+		label1.getDefaultModelObject();
+		label1.detach();
+		Assert.assertNull(nullOnDetachModel.getObject());
+
+		nullOnDetachModel.setObject(ws);
+		Label label2 = new Label("resourceModelWithoutComponent", new StringResourceModel(
+			"wrappedOnAssignment.text", nullOnDetachModel));
+		page.add(label2);
+		label2.getDefaultModelObject();
+		label2.detach();
+		Assert.assertNull(nullOnDetachModel.getObject());
+	}
+
+	/**
 	 * Inner class used for testing.
 	 */
 	public static class WeatherStation implements Serializable