You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/11/01 19:48:30 UTC

svn commit: r591118 - in /wicket/trunk/jdk-1.4/wicket/src: main/java/org/apache/wicket/markup/html/link/ test/java/org/apache/wicket/markup/html/link/

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