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/08/30 18:43:55 UTC

git commit: WICKET-4738 fileNameModel wrapOnAssignment and detach

Updated Branches:
  refs/heads/master 7c7ca07a3 -> a7ce7f913


WICKET-4738 fileNameModel wrapOnAssignment and detach


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

Branch: refs/heads/master
Commit: a7ce7f9135f223e9300d69c4350dca4b20309153
Parents: 7c7ca07
Author: svenmeier <sv...@apache.org>
Authored: Thu Aug 30 18:41:58 2012 +0200
Committer: svenmeier <sv...@apache.org>
Committed: Thu Aug 30 18:41:58 2012 +0200

----------------------------------------------------------------------
 .../wicket/markup/html/link/DownloadLink.java      |   13 +++-
 .../wicket/markup/html/link/DownloadLinkTest.java  |   67 +++++++++++++++
 2 files changed, 79 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a7ce7f91/wicket-core/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
index 3974b18..293a239 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
@@ -135,7 +135,18 @@ public class DownloadLink extends Link<File>
 	public DownloadLink(String id, IModel<File> fileModel, IModel<String> fileNameModel)
 	{
 		super(id, fileModel);
-		this.fileNameModel = fileNameModel;
+		this.fileNameModel = wrap(fileNameModel);
+	}
+
+	@Override
+	public void detachModels()
+	{
+		super.detachModels();
+
+		if (fileNameModel != null)
+		{
+			fileNameModel.detach();
+		}
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/a7ce7f91/wicket-core/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
index ae61f10..b711f1b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
@@ -19,7 +19,12 @@ package org.apache.wicket.markup.html.link;
 import java.io.File;
 import java.io.IOException;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.model.AbstractReadOnlyModel;
+import org.apache.wicket.model.IComponentAssignedModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.IWrapModel;
 import org.apache.wicket.protocol.http.mock.MockServletContext;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -98,4 +103,66 @@ public class DownloadLinkTest extends WicketTestCase
 		tester.clickLink(DownloadPage.DELETE_DOWNLOAD_LINK);
 		assertFalse(temporary.exists());
 	}
+
+	/**
+	 * WICKET-4738 wrapOnAssigment and detach on fileName
+	 */
+	@Test
+	public void fileNameModel()
+	{
+
+		FileNameModel fileNameModel = new FileNameModel();
+
+		DownloadLink link = new DownloadLink("test", new AbstractReadOnlyModel<File>()
+		{
+			@Override
+			public File getObject()
+			{
+				return null;
+			}
+		}, fileNameModel);
+
+		assertTrue(fileNameModel.wrapOnAssignmentCalled);
+
+		link.detach();
+
+		assertTrue(fileNameModel.detachCalled);
+	}
+
+	private class FileNameModel extends AbstractReadOnlyModel<String>
+		implements
+			IComponentAssignedModel<String>,
+			IWrapModel<String>
+	{
+		private static final long serialVersionUID = 1L;
+
+		boolean detachCalled = false;
+		boolean wrapOnAssignmentCalled;
+
+		@Override
+		public String getObject()
+		{
+			return null;
+		}
+
+		@Override
+		public IWrapModel<String> wrapOnAssignment(Component component)
+		{
+			wrapOnAssignmentCalled = true;
+
+			return this;
+		}
+
+		@Override
+		public void detach()
+		{
+			detachCalled = true;
+		}
+
+		@Override
+		public IModel<?> getWrappedModel()
+		{
+			return null;
+		}
+	}
 }