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 <[email protected]>
Authored: Thu Aug 30 18:41:58 2012 +0200
Committer: svenmeier <[email protected]>
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;
+               }
+       }
 }

Reply via email to