Updated Branches: refs/heads/wicket-1.5.x 8606a8736 -> d149893ee
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/d149893e Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d149893e Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d149893e Branch: refs/heads/wicket-1.5.x Commit: d149893ee1e2d197131af955119f628668d7a4b2 Parents: 8606a87 Author: svenmeier <[email protected]> Authored: Thu Aug 30 18:47:45 2012 +0200 Committer: svenmeier <[email protected]> Committed: Thu Aug 30 18:47:45 2012 +0200 ---------------------------------------------------------------------- .../wicket/markup/html/link/DownloadLink.java | 13 +++- .../wicket/markup/html/link/DownloadLinkTest.java | 66 +++++++++++++++ 2 files changed, 78 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/d149893e/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 b3b8848..c90cbaa 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/d149893e/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..a7de152 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,65 @@ 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; + } + + public IWrapModel<String> wrapOnAssignment(Component component) + { + wrapOnAssignmentCalled = true; + + return this; + } + + @Override + public void detach() + { + detachCalled = true; + } + + public IModel<?> getWrappedModel() + { + return null; + } + } }
