Author: jcompagner
Date: Thu Nov  1 11:48:29 2007
New Revision: 591118

URL: http://svn.apache.org/viewvc?rev=591118&view=rev
Log:
delete after download patch
WICKET-1113

Modified:
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
    
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
    
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.html
    
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java?rev=591118&r1=591117&r2=591118&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
 Thu Nov  1 11:48:29 2007
@@ -18,6 +18,7 @@
 
 import java.io.File;
 
+import org.apache.wicket.RequestCycle;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.target.resource.ResourceStreamRequestTarget;
@@ -49,6 +50,8 @@
         */
        private String fileName;
 
+       private boolean deleteAfter;
+
 
        /**
         * Constructor. File name used will be the result of 
<code>file.getName()</code>
@@ -146,6 +149,32 @@
                        {
                                return fn;
                        }
+
+                       public void respond(RequestCycle requestCycle)
+                       {
+                               super.respond(requestCycle);
+
+                               if (deleteAfter)
+                                       file.delete();
+                       }
                });
+       }
+
+       /**
+        * USE THIS METHOD WITH CAUTION!
+        * 
+        * If true, the file will be deleted! The recommended way to use this 
setting, is to set this
+        * DownloadLink object's model with a LoadableDetachableModel instance 
and the resulting file
+        * being generated in a temporary folder.
+        * 
+        * @param deleteAfter
+        *            true to delete file after download succeeds
+        * @return component
+        */
+       public final DownloadLink setDeleteAfterDownload(boolean deleteAfter)
+       {
+               this.deleteAfter = deleteAfter;
+
+               return this;
        }
 }

Modified: 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java?rev=591118&r1=591117&r2=591118&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadLinkTest.java
 Thu Nov  1 11:48:29 2007
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.markup.html.link;
 
+import java.io.File;
+import java.io.IOException;
+
 import org.apache.wicket.WicketTestCase;
 import org.apache.wicket.protocol.http.MockServletContext;
 import org.slf4j.Logger;
@@ -77,5 +80,27 @@
                
assertTrue(tester.getContentDispositionFromResponseHeader().startsWith(
                                "attachment; filename="));
                assertEquals(0, tester.getContentLengthFromResponseHeader());
+       }
+
+       /**
+        * Tests file removal after download
+        */
+       public void testDeleteAfterLink()
+       {
+               DownloadPage page;
+
+               try
+               {
+                       page = new DownloadPage();
+               }
+               catch (IOException e)
+               {
+                       throw new RuntimeException(e);
+               }
+
+               tester.startPage(page);
+               File temporary = page.getTemporaryFile();
+               tester.clickLink(DownloadPage.DELETE_DOWNLOAD_LINK);
+               assertFalse(temporary.exists());
        }
 }

Modified: 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.html?rev=591118&r1=591117&r2=591118&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.html
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.html
 Thu Nov  1 11:48:29 2007
@@ -3,5 +3,6 @@
                <span wicket:id="textDownload"></span>
                <span wicket:id="pdfDownload"></span>
                <span wicket:id="customDownload"></span>
+        <span wicket:id="deleteDownload"></span>
        </body>
 </html>

Modified: 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.java?rev=591118&r1=591117&r2=591118&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/link/DownloadPage.java
 Thu Nov  1 11:48:29 2007
@@ -33,9 +33,11 @@
        static final String HELLO_WORLD = "Hello, World!";
        static final String TEXT_DOWNLOAD_LINK = "textDownload";
        static final String PDF_DOWNLOAD_LINK = "pdfDownload";
-
+       static final String DELETE_DOWNLOAD_LINK = "deleteDownload";
        static final String CUSTOM_DOWNLOAD_LINK = "customDownload";
 
+       private final File temporaryFile;
+
        /**
         * Construct.
         * 
@@ -54,5 +56,17 @@
 
                File customFile = File.createTempFile("Download", ".custom");
                add(new DownloadLink(CUSTOM_DOWNLOAD_LINK, customFile));
+
+               temporaryFile = File.createTempFile("Download", ".delete");
+               add(new DownloadLink(DELETE_DOWNLOAD_LINK, 
temporaryFile).setDeleteAfterDownload(true));
+       }
+
+       /**
+        * 
+        * @return temporary file
+        */
+       public File getTemporaryFile()
+       {
+               return temporaryFile;
        }
 }


Reply via email to