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/06/26 10:28:33 UTC

git commit: WICKET-4629 AbstractLink does not call getBody to get its body

Updated Branches:
  refs/heads/master 24018e53f -> 8e66613d3


WICKET-4629 AbstractLink does not call getBody to get its body


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

Branch: refs/heads/master
Commit: 8e66613d368dc74224aee93774c49f1a07fcbee7
Parents: 24018e5
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jun 26 11:28:00 2012 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jun 26 11:28:00 2012 +0300

----------------------------------------------------------------------
 .../wicket/markup/html/link/AbstractLink.java      |    7 ++-
 .../wicket/markup/html/link/AbstractLinkTest.java  |   34 +++++++++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/8e66613d/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
index 62ac136..86c2c89 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/AbstractLink.java
@@ -170,10 +170,13 @@ public abstract class AbstractLink extends WebMarkupContainer
 			getResponse().write(getBeforeDisabledLink());
 		}
 
-		if ((bodyModel != null) && (bodyModel.getObject() != null))
+		// Get a copy of the body model from the getBody() method. This method could be overridden.
+		IModel<?> tmpBodyModel = getBody();
+
+		if ((tmpBodyModel != null) && (tmpBodyModel.getObject() != null))
 		{
 			replaceComponentTagBody(markupStream, openTag,
-				getDefaultModelObjectAsString(bodyModel.getObject()));
+				getDefaultModelObjectAsString(tmpBodyModel.getObject()));
 		}
 		else
 		{

http://git-wip-us.apache.org/repos/asf/wicket/blob/8e66613d/wicket-core/src/test/java/org/apache/wicket/markup/html/link/AbstractLinkTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/AbstractLinkTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/AbstractLinkTest.java
index 83ac5da..cda714f 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/AbstractLinkTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/AbstractLinkTest.java
@@ -16,8 +16,11 @@
  */
 package org.apache.wicket.markup.html.link;
 
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.apache.wicket.MockPageWithLink;
 import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.tester.TagTester;
 import org.junit.Assert;
@@ -51,4 +54,35 @@ public class AbstractLinkTest extends WicketTestCase
 		Assert.assertEquals(linkBody, tagTester.getValue());
 	}
 
+	/**
+	 * Tests that the {@link AbstractLink} uses the {@link AbstractLink#getBody()} to get its body. This
+	 * method can be overridden to provide a dynamic model.
+	 */
+	@Test
+	public void testRenderUsingGetBody()
+	{
+		final AtomicInteger counter = new AtomicInteger(0);
+
+		MockPageWithLink mockPageWithLink = new MockPageWithLink();
+		AbstractLink link = new AbstractLink("link")
+		{
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public IModel<?> getBody()
+			{
+				return Model.of(counter.getAndIncrement());
+			}
+		};
+		link.setMarkupId("link");
+		mockPageWithLink.add(link);
+
+		tester.startPage(mockPageWithLink);
+		TagTester tagTester = tester.getTagById("link");
+		Assert.assertEquals("0", tagTester.getValue());
+
+		tester.startPage(mockPageWithLink);
+		tagTester = tester.getTagById("link");
+		Assert.assertEquals("1", tagTester.getValue());
+	}
 }