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;
+ }
+ }
}