MIME4J-245 Use FileUtils when deleting files - contributed by Antoine Duprat

git-svn-id: https://svn.apache.org/repos/asf/james/mime4j/trunk@1686797 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 059b04c..f2cc716 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,7 +69,7 @@
         <junit.version>4.10</junit.version>
         <mockito.version>1.9.5</mockito.version>
         <!-- Version 2.2 is required for Java 1.5 compatibility -->
-        <commons-io.version>2.2</commons-io.version>
+        <commons-io.version>2.4</commons-io.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
diff --git a/storage/pom.xml b/storage/pom.xml
index 5555c15..af8fac4 100644
--- a/storage/pom.xml
+++ b/storage/pom.xml
@@ -40,6 +40,10 @@
             <artifactId>apache-mime4j-dom</artifactId>
         </dependency>
         <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
diff --git a/storage/src/main/java/org/apache/james/mime4j/storage/TempFileStorageProvider.java b/storage/src/main/java/org/apache/james/mime4j/storage/TempFileStorageProvider.java
index 37ed92e..ac13cd9 100644
--- a/storage/src/main/java/org/apache/james/mime4j/storage/TempFileStorageProvider.java
+++ b/storage/src/main/java/org/apache/james/mime4j/storage/TempFileStorageProvider.java
@@ -30,6 +30,8 @@
 import java.util.Iterator;
 import java.util.Set;
 
+import org.apache.commons.io.FileUtils;
+
 /**
  * A {@link StorageProvider} that stores the data in temporary files. The files
  * are stored either in a user-specified directory or the default temporary-file
@@ -91,9 +93,13 @@
         if (prefix == null || prefix.length() < 3)
             throw new IllegalArgumentException("invalid prefix");
 
-        if (directory != null && !directory.isDirectory()
-                && !directory.mkdirs())
-            throw new IllegalArgumentException("invalid directory");
+        if (directory != null) {
+            try {
+                FileUtils.forceMkdir(directory);
+            } catch (IOException e) {
+                throw new IllegalArgumentException("invalid directory");
+            }
+        }
 
         this.prefix = prefix;
         this.suffix = suffix;
@@ -163,9 +169,10 @@
 
                 for (Iterator<File> iterator = filesToDelete.iterator(); iterator
                         .hasNext();) {
-                    File file = iterator.next();
-                    if (file.delete()) {
+                    try {
+                        FileUtils.forceDelete(iterator.next());
                         iterator.remove();
+                    } catch (IOException e) {
                     }
                 }
             }