You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2015/06/22 10:15:03 UTC

svn commit: r1686804 - in /james/mailbox/trunk: jcr/src/test/java/org/apache/james/mailbox/jcr/ maildir/src/main/java/org/apache/james/mailbox/maildir/ maildir/src/main/java/org/apache/james/mailbox/maildir/mail/

Author: btellier
Date: Mon Jun 22 08:15:02 2015
New Revision: 1686804

URL: http://svn.apache.org/r1686804
Log:
MAILBOX-232 Use FileUtils when deleting files - contributed by Antoine Duprat

Modified:
    james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
    james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java
    james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java
    james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
    james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java

Modified: james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java?rev=1686804&r1=1686803&r2=1686804&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java (original)
+++ james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java Mon Jun 22 08:15:02 2015
@@ -18,6 +18,13 @@
  ****************************************************************/
 package org.apache.james.mailbox.jcr;
 
+import static org.junit.Assert.fail;
+
+import java.io.File;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.ConfigurationException;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
@@ -32,14 +39,10 @@ import org.apache.james.mailbox.jcr.mail
 import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.junit.After;
-import static org.junit.Assert.fail;
 import org.junit.Before;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.InputSource;
 
-import javax.jcr.RepositoryException;
-import java.io.File;
-
 /**
  * JCRMailboxManagerTest that extends the StoreMailboxManagerTest.
  */
@@ -57,17 +60,14 @@ public class JCRMailboxManagerTest exten
     }
 
     @After
-    public void tearDown() throws MailboxException {
+    public void tearDown() throws Exception {
         MailboxSession session = getMailboxManager().createSystemSession("test", LoggerFactory.getLogger("Test"));
         session.close();
         repository.shutdown();
-        new File(JACKRABBIT_HOME).delete();
+        FileUtils.forceDelete(new File(JACKRABBIT_HOME));
     }
 
     protected void createMailboxManager() throws MailboxException {
-
-        new File(JACKRABBIT_HOME).delete();
-
         String user = "user";
         String pass = "pass";
         String workspace = null;

Modified: james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java?rev=1686804&r1=1686803&r2=1686804&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java (original)
+++ james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java Mon Jun 22 08:15:02 2015
@@ -18,6 +18,12 @@
  ****************************************************************/
 package org.apache.james.mailbox.jcr;
 
+import java.io.File;
+import java.io.IOException;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 import org.apache.james.mailbox.AbstractStressTest;
@@ -36,9 +42,6 @@ import org.junit.Before;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.InputSource;
 
-import javax.jcr.RepositoryException;
-import java.io.File;
-
 public class JCRStressTest extends AbstractStressTest {
 
     private JCRMailboxManager mailboxManager;
@@ -47,9 +50,6 @@ public class JCRStressTest extends Abstr
 
     @Before
     public void setUp() throws RepositoryException, MailboxException {
-
-        new File(JACKRABBIT_HOME).delete();
-
         String user = "user";
         String pass = "pass";
         String workspace = null;
@@ -71,11 +71,11 @@ public class JCRStressTest extends Abstr
     }
 
     @After
-    public void tearDown() {
+    public void tearDown() throws IOException {
         MailboxSession session = mailboxManager.createSystemSession("test", LoggerFactory.getLogger(JCRStressTest.class));
         session.close();
         repository.shutdown();
-        new File(JACKRABBIT_HOME).delete();
+        FileUtils.forceDelete(new File(JACKRABBIT_HOME));
     }
 
     @Override

Modified: james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java?rev=1686804&r1=1686803&r2=1686804&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java (original)
+++ james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java Mon Jun 22 08:15:02 2015
@@ -18,6 +18,12 @@
  ****************************************************************/
 package org.apache.james.mailbox.jcr;
 
+import java.io.File;
+import java.io.IOException;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 import org.apache.james.mailbox.AbstractSubscriptionManagerTest;
@@ -26,9 +32,6 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.xml.sax.InputSource;
 
-import javax.jcr.RepositoryException;
-import java.io.File;
-
 public class JCRSubscriptionManagerTest extends AbstractSubscriptionManagerTest {
     private static final String JACKRABBIT_HOME = "target/jackrabbit";
 
@@ -49,17 +52,15 @@ public class JCRSubscriptionManagerTest
     }
 
     @AfterClass
-    public static void after() {
+    public static void after() throws IOException {
         if (repository != null) {
             repository.shutdown();
         }
-        new File(JACKRABBIT_HOME).delete();
+        FileUtils.forceDelete(new File(JACKRABBIT_HOME));
     }
 
     @Override
     public SubscriptionManager createSubscriptionManager() {
-
-        new File(JACKRABBIT_HOME).delete();
         MailboxSessionJCRRepository sessionRepos = new GlobalMailboxSessionJCRRepository(repository, workspace, user, pass);
         JCRMailboxSessionMapperFactory mf = new JCRMailboxSessionMapperFactory(sessionRepos, null, null);
         JCRSubscriptionManager sm = new JCRSubscriptionManager(mf);

Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java?rev=1686804&r1=1686803&r2=1686804&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java Mon Jun 22 08:15:02 2015
@@ -40,17 +40,18 @@ import java.util.Properties;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution;
+import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.SimpleMailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLEntryKey;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
-import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.SimpleMailboxACL;
 
 public class MaildirFolder {
 
@@ -896,8 +897,7 @@ public class MaildirFolder {
                         }
                     }
                     if (deletedMessage != null) {
-                        if (!deletedMessage.getFile().delete())
-                            throw new IOException("Cannot delete file " + deletedMessage.getFile().getAbsolutePath());
+                        FileUtils.forceDelete(deletedMessage.getFile());
                         writer = new PrintWriter(uidList);
                         writer.println(createUidListHeader());
                         for (String entry : lines)

Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java?rev=1686804&r1=1686803&r2=1686804&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java Mon Jun 22 08:15:02 2015
@@ -70,30 +70,37 @@ public class MaildirMailboxMapper extend
         String folderName = maildirStore.getFolderName(mailbox);
         File folder = new File(folderName);
         if (folder.isDirectory()) {
+            // Shouldn't fail on file deletion, else the mailbox will never be deleted
+            if (mailbox.getName().equals(MailboxConstants.INBOX)) {
+                // We must only delete cur, new, tmp and metadata for top INBOX mailbox.
+                delete(new File(folder, MaildirFolder.CUR), 
+                        new File(folder, MaildirFolder.NEW),
+                        new File(folder, MaildirFolder.TMP),
+                        new File(folder, MaildirFolder.UIDLIST_FILE),
+                        new File(folder, MaildirFolder.VALIDITY_FILE));
+            }
+            else {
+                // We simply delete all the folder for non INBOX mailboxes.
+                delete(folder);
+            }
+        }
+        else
+            throw new MailboxNotFoundException(mailbox.getName());
+    }
+
+    private void delete(File...files) {
+        for (File file : files) {
             try {
-                if (mailbox.getName().equals(MailboxConstants.INBOX)) {
-                    // We must only delete cur, new, tmp and metadata for top INBOX mailbox.
-                    FileUtils.deleteDirectory(new File(folder, MaildirFolder.CUR));
-                    FileUtils.deleteDirectory(new File(folder, MaildirFolder.NEW));
-                    FileUtils.deleteDirectory(new File(folder, MaildirFolder.TMP));
-                    File uidListFile = new File(folder, MaildirFolder.UIDLIST_FILE);
-                    uidListFile.delete();
-                    File validityFile = new File(folder, MaildirFolder.VALIDITY_FILE);
-                    validityFile.delete();
-                }
-                else {
-                    // We simply delete all the folder for non INBOX mailboxes.
-                    FileUtils.deleteDirectory(folder);
+                if (file.isDirectory()) {
+                        FileUtils.deleteDirectory(file);
+                } else {
+                    FileUtils.forceDelete(file);
                 }
             } catch (IOException e) {
                 e.printStackTrace();
-                throw new MailboxException("Unable to delete Mailbox " + mailbox, e);
             }
         }
-        else
-            throw new MailboxNotFoundException(mailbox.getName());
     }
-
    
     /**
      * @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxByPath(org.apache.james.mailbox.model.MailboxPath)
@@ -160,8 +167,7 @@ public class MaildirMailboxMapper extend
                     try {
                         File inboxFolder = originalFolder.getRootFile();
                         File newFolder = folder.getRootFile();
-                        if (!newFolder.mkdirs())
-                            throw new IOException("Could not create folder " + newFolder);
+                        FileUtils.forceMkdir(newFolder);
                         if (!originalFolder.getCurFolder().renameTo(folder.getCurFolder()))
                             throw new IOException("Could not rename folder " + originalFolder.getCurFolder() + " to " + folder.getCurFolder());
                         if (!originalFolder.getNewFolder().renameTo(folder.getNewFolder()))
@@ -178,12 +184,9 @@ public class MaildirMailboxMapper extend
                             throw new IOException("Could not rename file " + oldValidityFile + " to " + newValidityFile);
                         // recreate the INBOX folders, uidvalidity and uidlist will
                         // automatically be recreated later
-                        if (!originalFolder.getCurFolder().mkdir())
-                            throw new IOException("Could not create folder " + originalFolder.getCurFolder());
-                        if (!originalFolder.getNewFolder().mkdir())
-                            throw new IOException("Could not create folder " + originalFolder.getNewFolder());
-                        if (!originalFolder.getTmpFolder().mkdir())
-                            throw new IOException("Could not create folder " + originalFolder.getTmpFolder());
+                        FileUtils.forceMkdir(originalFolder.getCurFolder());
+                        FileUtils.forceMkdir(originalFolder.getNewFolder());
+                        FileUtils.forceMkdir(originalFolder.getTmpFolder());
                     } catch (IOException e) {
                         throw new MailboxException("Failed to save Mailbox " + mailbox, e);
                     }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org