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 2012/07/20 19:28:31 UTC

git commit: WICKET-4666 ResourceModel assignment

Updated Branches:
  refs/heads/master 803064915 -> 325049d69


WICKET-4666 ResourceModel assignment


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

Branch: refs/heads/master
Commit: 325049d69e0c1b2886d26d950d3c67b1dd154e99
Parents: 8030649
Author: svenmeier <sv...@apache.org>
Authored: Fri Jul 20 19:27:55 2012 +0200
Committer: svenmeier <sv...@apache.org>
Committed: Fri Jul 20 19:27:55 2012 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/model/ResourceModel.java     |   29 ++++++------
 .../wicket/model/ResourceModelTest$TestPage.html   |    1 +
 .../model/ResourceModelTest$TestPage.properties    |    3 +-
 .../model/ResourceModelTest$TestPage_expected.html |    1 +
 .../org/apache/wicket/model/ResourceModelTest.java |   34 ++++++++++++++-
 5 files changed, 51 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/325049d6/wicket-core/src/main/java/org/apache/wicket/model/ResourceModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/ResourceModel.java b/wicket-core/src/main/java/org/apache/wicket/model/ResourceModel.java
index c798e89..60703d7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/ResourceModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/ResourceModel.java
@@ -73,23 +73,27 @@ public class ResourceModel extends AbstractReadOnlyModel<String>
 	public String getObject()
 	{
 		// this shouldn't be called always wrapped!
-		return Application.get().getResourceSettings().getLocalizer().getString(resourceKey, null, defaultValue);
+		return Application.get()
+			.getResourceSettings()
+			.getLocalizer()
+			.getString(resourceKey, null, defaultValue);
 	}
 
-
 	/**
 	 * @see org.apache.wicket.model.IComponentAssignedModel#wrapOnAssignment(org.apache.wicket.Component)
 	 */
 	@Override
 	public IWrapModel<String> wrapOnAssignment(final Component component)
 	{
-		return new AssignmentWrapper(resourceKey, defaultValue, component);
+		return new AssignmentWrapper(component);
 	}
 
 	/**
 	 * 
 	 */
-	private class AssignmentWrapper extends ResourceModel implements IWrapModel<String>
+	private class AssignmentWrapper extends LoadableDetachableModel<String>
+		implements
+			IWrapModel<String>
 	{
 		private static final long serialVersionUID = 1L;
 
@@ -98,13 +102,10 @@ public class ResourceModel extends AbstractReadOnlyModel<String>
 		/**
 		 * Construct.
 		 * 
-		 * @param resourceKey
-		 * @param defaultValue
 		 * @param component
 		 */
-		public AssignmentWrapper(String resourceKey, String defaultValue, Component component)
+		public AssignmentWrapper(Component component)
 		{
-			super(resourceKey, defaultValue);
 			this.component = component;
 		}
 
@@ -117,20 +118,18 @@ public class ResourceModel extends AbstractReadOnlyModel<String>
 			return ResourceModel.this;
 		}
 
-		/**
-		 * @see org.apache.wicket.model.AbstractReadOnlyModel#getObject()
-		 */
 		@Override
-		public String getObject()
+		protected String load()
 		{
-			return Application.get().getResourceSettings().getLocalizer().getString(resourceKey,
-				component, defaultValue);
+			return Application.get()
+				.getResourceSettings()
+				.getLocalizer()
+				.getString(resourceKey, component, defaultValue);
 		}
 
 		@Override
 		public void detach()
 		{
-			super.detach();
 			ResourceModel.this.detach();
 		}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/325049d6/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.html b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.html
index f89464e..78a14a3 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.html
+++ b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.html
@@ -1,5 +1,6 @@
 <html>
 <body>
 <span wicket:id="testlabel">[a test]</span>
+<span wicket:id="otherlabel">[a test]</span>
 </body>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/325049d6/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.properties
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.properties b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.properties
index 5206d46..194f706 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.properties
+++ b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage.properties
@@ -1 +1,2 @@
-test.label=A test label from a resource bundle
+testlabel=A test label from a resource bundle
+otherlabel.testlabel=WILL NOT BE USED BECAUSE "otherlabel"'S RESOURCEMODEL IS ALREADY ASSIGNED TO "testlabel"

http://git-wip-us.apache.org/repos/asf/wicket/blob/325049d6/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage_expected.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage_expected.html b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage_expected.html
index cfa8b85..aa85a20 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage_expected.html
+++ b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest$TestPage_expected.html
@@ -1,5 +1,6 @@
 <html>
 <body>
 <span wicket:id="testlabel">A test label from a resource bundle</span>
+<span wicket:id="otherlabel">A test label from a resource bundle</span>
 </body>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/325049d6/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest.java
index bbd0b1e..381e598 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/ResourceModelTest.java
@@ -38,7 +38,10 @@ public class ResourceModelTest extends WicketTestCase
 		 */
 		public TestPage()
 		{
-			add(new Label("testlabel", new ResourceModel("test.label")));
+			add(new Label("testlabel", new ResourceModel("testlabel")));
+
+			// another label with a model explicitely assigned to the page
+			add(new Label("otherlabel", new ResourceModel("testlabel").wrapOnAssignment(this)));
 		}
 	}
 
@@ -52,4 +55,33 @@ public class ResourceModelTest extends WicketTestCase
 	{
 		executeTest(TestPage.class, "ResourceModelTest$TestPage_expected.html");
 	}
+
+	/**
+	 * Test forwarding of detach().
+	 */
+	@Test
+	public void detaching()
+	{
+
+		final boolean[] detached = { false };
+
+		ResourceModel model = new ResourceModel("test")
+		{
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void detach()
+			{
+				super.detach();
+
+				detached[0] = true;
+			}
+		};
+
+		IModel<String> wrapped = model.wrapOnAssignment(null);
+
+		wrapped.detach();
+
+		assertTrue(null, detached[0]);
+	}
 }