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

svn commit: r1040669 - in /wicket/trunk: wicket-util/src/main/java/org/apache/wicket/util/upload/ wicket/src/main/java/org/apache/wicket/markup/html/form/upload/

Author: pete
Date: Tue Nov 30 18:13:12 2010
New Revision: 1040669

URL: http://svn.apache.org/viewvc?rev=1040669&view=rev
Log:
WICKET-2833: try to rename uploaded files first (which is faster), then copy them.

additionally:
  - fix possible serialization issue
  - log message when deletion of file fails
  - increase buffer size

Modified:
    wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java
    wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/FileItem.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java

Modified: wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java?rev=1040669&r1=1040668&r2=1040669&view=diff
==============================================================================
--- wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java (original)
+++ wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java Tue Nov 30 18:13:12 2010
@@ -31,6 +31,8 @@ import java.util.Map;
 import org.apache.wicket.util.file.FileCleaner;
 import org.apache.wicket.util.io.DeferredFileOutputStream;
 import org.apache.wicket.util.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * <p>
@@ -52,7 +54,7 @@ import org.apache.wicket.util.io.IOUtils
  */
 public class DiskFileItem implements FileItem
 {
-
+	private static final Logger log = LoggerFactory.getLogger(DiskFileItem.class);
 	private static final long serialVersionUID = 1L;
 
 	// ----------------------------------------------------- Manifest constants
@@ -126,7 +128,7 @@ public class DiskFileItem implements Fil
 	/**
 	 * Output stream for this item.
 	 */
-	private DeferredFileOutputStream dfos;
+	private transient DeferredFileOutputStream dfos;
 
 
 	// ----------------------------------------------------------- Constructors
@@ -367,7 +369,7 @@ public class DiskFileItem implements Fil
 	 * @exception Exception
 	 *                if an error occurs.
 	 */
-	public void write(File file) throws Exception
+	public void write(File file) throws IOException
 	{
 		if (isInMemory())
 		{
@@ -400,7 +402,7 @@ public class DiskFileItem implements Fil
 						in = new BufferedInputStream(new FileInputStream(outputFile));
 						out = new BufferedOutputStream(new FileOutputStream(file));
 						byte[] bytes = new byte[WRITE_BUFFER_SIZE];
-						int s = 0;
+						int s;
 						while ((s = in.read(bytes)) != -1)
 						{
 							out.write(bytes, 0, s);
@@ -436,7 +438,8 @@ public class DiskFileItem implements Fil
 		File outputFile = getStoreLocation();
 		if (outputFile != null && outputFile.exists())
 		{
-			outputFile.delete();
+			if(outputFile.delete())
+				log.debug("failed to delete file: " + outputFile.getAbsolutePath());
 		}
 	}
 
@@ -547,13 +550,16 @@ public class DiskFileItem implements Fil
 	 * Removes the file contents from the temporary storage.
 	 */
 	@Override
-	protected void finalize()
+	protected void finalize() throws Throwable
 	{
+		super.finalize(); // currently empty but there for safer refactoring
+
 		File outputFile = dfos.getFile();
 
 		if (outputFile != null && outputFile.exists())
 		{
-			outputFile.delete();
+			if(outputFile.delete() == false)
+				log.debug("failed to delete file: " + outputFile.getAbsolutePath());
 		}
 	}
 
@@ -569,12 +575,12 @@ public class DiskFileItem implements Fil
 	protected File getTempFile()
 	{
 		File tempDir = repository;
+
 		if (tempDir == null)
 		{
-			String systemTmp = null;
 			try
 			{
-				systemTmp = System.getProperty("java.io.tmpdir");
+				tempDir = new File(System.getProperty("java.io.tmpdir"));
 			}
 			catch (SecurityException e)
 			{
@@ -582,7 +588,6 @@ public class DiskFileItem implements Fil
 					+ " for the current security settings. The repository location needs to be"
 					+ " set manually, or upgrade permissions to allow reading the tmpdir property.");
 			}
-			tempDir = new File(systemTmp);
 		}
 
 		String fileName = "upload_" + getUniqueId() + ".tmp";

Modified: wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/FileItem.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/FileItem.java?rev=1040669&r1=1040668&r2=1040669&view=diff
==============================================================================
--- wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/FileItem.java (original)
+++ wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/upload/FileItem.java Tue Nov 30 18:13:12 2010
@@ -153,7 +153,7 @@ public interface FileItem extends IClust
 	 * @exception Exception
 	 *                if an error occurs.
 	 */
-	void write(File file) throws Exception;
+	void write(File file) throws IOException;
 
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java?rev=1040669&r1=1040668&r2=1040669&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/upload/FileUpload.java Tue Nov 30 18:13:12 2010
@@ -55,6 +55,7 @@ public class FileUpload implements IClus
 	 */
 	public FileUpload(final FileItem item)
 	{
+		Args.notNull(item, "item");
 		this.item = item;
 	}
 
@@ -217,7 +218,7 @@ public class FileUpload implements IClus
 	 */
 	public void writeTo(final File file) throws IOException
 	{
-		writeTo(file, 4096);
+		item.write(file);
 	}
 
 	/**