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);
        }
 
        /**


Reply via email to