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:09:31 UTC
svn commit: r1686799 - in /james/server/trunk:
container/core/src/main/java/org/apache/james/core/
container/filesystem-api/src/test/java/org/apache/james/filesystem/api/
data/data-file/src/main/java/org/apache/james/mailrepository/file/
data/data-file...
Author: btellier
Date: Mon Jun 22 08:09:30 2015
New Revision: 1686799
URL: http://svn.apache.org/r1686799
Log:
JAMES-1310 Use FileUtils when deleting files - contributed by Antoine Duprat
Modified:
james/server/trunk/container/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java
james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java
james/server/trunk/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
james/server/trunk/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
james/server/trunk/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java
james/server/trunk/data/data-library/src/main/java/org/apache/james/repository/file/AbstractFileRepository.java
james/server/trunk/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
james/server/trunk/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java
james/server/trunk/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
james/server/trunk/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
Modified: james/server/trunk/container/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/container/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java (original)
+++ james/server/trunk/container/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java Mon Jun 22 08:09:30 2015
@@ -19,14 +19,6 @@
package org.apache.james.core;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.output.DeferredFileOutputStream;
-import org.apache.james.lifecycle.api.Disposable;
-
-import javax.mail.MessagingException;
-import javax.mail.util.SharedByteArrayInputStream;
-import javax.mail.util.SharedFileInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -34,6 +26,15 @@ import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
+import javax.mail.MessagingException;
+import javax.mail.util.SharedByteArrayInputStream;
+import javax.mail.util.SharedFileInputStream;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.output.DeferredFileOutputStream;
+import org.apache.james.lifecycle.api.Disposable;
+
/**
* Takes an input stream and creates a repeatable input stream source for a
* MimeMessageWrapper. It does this by completely reading the input stream and
@@ -88,7 +89,7 @@ public class MimeMessageInputStreamSourc
File file = out.getFile();
if (file != null) {
- file.delete();
+ FileUtils.forceDelete(file);
}
}
} catch (IOException ioe) {
Modified: james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java (original)
+++ james/server/trunk/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/SieveFileRepositoryTestCase.java Mon Jun 22 08:09:30 2015
@@ -19,11 +19,27 @@
*/
package org.apache.james.filesystem.api;
-import java.io.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.List;
+
import org.apache.commons.io.FileUtils;
-import org.apache.james.managesieve.api.*;
-import static org.junit.Assert.*;
+import org.apache.james.managesieve.api.DuplicateException;
+import org.apache.james.managesieve.api.DuplicateUserException;
+import org.apache.james.managesieve.api.IsActiveException;
+import org.apache.james.managesieve.api.QuotaExceededException;
+import org.apache.james.managesieve.api.QuotaNotFoundException;
+import org.apache.james.managesieve.api.ScriptNotFoundException;
+import org.apache.james.managesieve.api.ScriptSummary;
+import org.apache.james.managesieve.api.SieveRepository;
+import org.apache.james.managesieve.api.StorageException;
+import org.apache.james.managesieve.api.UserNotFoundException;
import org.junit.Before;
import org.junit.Test;
@@ -63,7 +79,7 @@ public class SieveFileRepositoryTestCase
if (root.exists()) {
FileUtils.forceDelete(root);
}
- root.mkdir();
+ FileUtils.forceMkdir(root);
}
/**
Modified: james/server/trunk/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java (original)
+++ james/server/trunk/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java Mon Jun 22 08:09:30 2015
@@ -71,6 +71,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.io.FileUtils;
import org.apache.james.core.MailImpl;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.lifecycle.api.LogEnabled;
@@ -683,7 +684,9 @@ public class MBoxMailRepository implemen
// Just delete the MBOX file
String lockFileName = mboxFile + LOCKEXT;
File mBoxLock = new File(lockFileName);
- if (!mBoxLock.delete()) {
+ try {
+ FileUtils.forceDelete(mBoxLock);
+ } catch (IOException e) {
String logBuffer = this.getClass().getName() + " Failed to delete lock file " + lockFileName;
getLogger().error(logBuffer);
}
@@ -748,9 +751,7 @@ public class MBoxMailRepository implemen
outputFile.close();
// Delete the old mbox file
File mbox = new File(mboxFile);
- if (!mbox.delete()) {
- throw new IOException("Unable to delete file " + mbox);
- }
+ FileUtils.forceDelete(mbox);
// And rename the lock file to be the new mbox
mbox = new File(mboxFile + WORKEXT);
if (!mbox.renameTo(new File(mboxFile))) {
Modified: james/server/trunk/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java (original)
+++ james/server/trunk/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java Mon Jun 22 08:09:30 2015
@@ -33,6 +33,7 @@ import org.apache.james.lifecycle.api.Li
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
import org.apache.james.user.lib.AbstractUsersRepositoryTest;
+import org.junit.After;
import org.junit.Before;
import org.slf4j.LoggerFactory;
@@ -42,6 +43,7 @@ import org.slf4j.LoggerFactory;
public class UsersFileRepositoryTest extends AbstractUsersRepositoryTest {
private static final String TARGET_REPOSITORY_FOLDER = "target/var/users";
+ private File targetRepositoryFolder;
/**
* @see junit.framework.TestCase#setUp()
@@ -50,13 +52,15 @@ public class UsersFileRepositoryTest ext
@Override
public void setUp() throws Exception {
super.setUp();
- File targetRepositoryFolder = new File(TARGET_REPOSITORY_FOLDER);
- if (targetRepositoryFolder.exists()) {
- FileUtils.deleteDirectory(targetRepositoryFolder);
- }
+ targetRepositoryFolder = new File(TARGET_REPOSITORY_FOLDER);
this.usersRepository = getUsersRepository();
}
+ @After
+ public void tearDown() throws IOException {
+ FileUtils.forceDelete(targetRepositoryFolder);
+ }
+
/**
* Create the repository to be tested.
*
Modified: james/server/trunk/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java (original)
+++ james/server/trunk/data/data-jcr/src/test/java/org/apache/james/user/jcr/JcrUserRepositoryTest.java Mon Jun 22 08:09:30 2015
@@ -19,7 +19,10 @@
package org.apache.james.user.jcr;
import java.io.File;
+import java.io.IOException;
+
import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.core.RepositoryImpl;
import org.apache.jackrabbit.core.config.RepositoryConfig;
import org.apache.james.user.api.UsersRepository;
@@ -29,6 +32,8 @@ import org.junit.Before;
import org.slf4j.LoggerFactory;
import org.xml.sax.InputSource;
+import com.google.common.base.Throwables;
+
public class JcrUserRepositoryTest extends AbstractUsersRepositoryTest {
private static final String JACKRABBIT_HOME = "target/jackrabbit";
@@ -60,13 +65,11 @@ public class JcrUserRepositoryTest exten
}
private void delete(File file) {
- if (file.isDirectory()) {
- File[] contents = file.listFiles();
- for (File content : contents) {
- delete(content);
- }
+ try {
+ FileUtils.forceDelete(file);
+ } catch (IOException e) {
+ Throwables.propagate(e);
}
- file.delete();
}
@Override
Modified: james/server/trunk/data/data-library/src/main/java/org/apache/james/repository/file/AbstractFileRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/data/data-library/src/main/java/org/apache/james/repository/file/AbstractFileRepository.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/data/data-library/src/main/java/org/apache/james/repository/file/AbstractFileRepository.java (original)
+++ james/server/trunk/data/data-library/src/main/java/org/apache/james/repository/file/AbstractFileRepository.java Mon Jun 22 08:09:30 2015
@@ -37,6 +37,7 @@ import javax.inject.Named;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.io.FileUtils;
import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.lifecycle.api.LogEnabled;
@@ -107,9 +108,7 @@ public abstract class AbstractFileReposi
m_filter = new ExtensionFileFilter(m_extension);
// m_filter = new NumberedRepositoryFileFilter(getExtensionDecorator());
- if (!directory.exists() && !directory.mkdirs()) {
- throw new IOException("Unable to create directory " + directory);
- }
+ FileUtils.forceMkdir(directory);
getLogger().info(getClass().getName() + " opened in " + m_baseDirectory);
@@ -266,11 +265,12 @@ public abstract class AbstractFileReposi
*/
public synchronized void remove(final String key) {
try {
- final File file = getFile(key);
- file.delete();
+ FileUtils.forceDelete(getFile(key));
if (DEBUG)
getLogger().debug("removed key " + key);
- } catch (final Exception e) {
+ } catch (FileNotFoundException e) {
+ getLogger().debug("File for " + key + " not found: wasn't able to remove");
+ } catch (Exception e) {
throw new RuntimeException("Exception caught while removing" + " an object: " + e);
}
}
Modified: james/server/trunk/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
URL: http://svn.apache.org/viewvc/james/server/trunk/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java (original)
+++ james/server/trunk/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java Mon Jun 22 08:09:30 2015
@@ -27,6 +27,7 @@ import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.james.imap.api.ImapMessage;
import org.apache.james.imap.api.ImapSessionState;
@@ -134,9 +135,7 @@ public class ImapRequestFrameDecoder ext
@Override
public void close() throws IOException {
super.close();
- if (!f.delete()) {
- throw new IOException("Unable to delete file " + f);
- }
+ FileUtils.forceDelete(f);
}
}, retry);
Modified: james/server/trunk/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java
URL: http://svn.apache.org/viewvc/james/server/trunk/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java (original)
+++ james/server/trunk/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java Mon Jun 22 08:09:30 2015
@@ -18,14 +18,6 @@
****************************************************************/
package org.apache.james.queue.activemq;
-import org.apache.activemq.BlobMessage;
-import org.apache.activemq.blob.BlobDownloadStrategy;
-import org.apache.activemq.blob.BlobTransferPolicy;
-import org.apache.activemq.blob.BlobUploadStrategy;
-import org.apache.activemq.command.ActiveMQBlobMessage;
-import org.apache.james.filesystem.api.FileSystem;
-
-import javax.jms.JMSException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -34,6 +26,16 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import javax.jms.JMSException;
+
+import org.apache.activemq.BlobMessage;
+import org.apache.activemq.blob.BlobDownloadStrategy;
+import org.apache.activemq.blob.BlobTransferPolicy;
+import org.apache.activemq.blob.BlobUploadStrategy;
+import org.apache.activemq.command.ActiveMQBlobMessage;
+import org.apache.commons.io.FileUtils;
+import org.apache.james.filesystem.api.FileSystem;
+
/**
* {@link BlobUploadStrategy} and {@link BlobDownloadStrategy} implementation
* which use the {@link FileSystem} to lookup the {@link File} for the
@@ -94,9 +96,7 @@ public class FileSystemBlobStrategy impl
public void deleteFile(ActiveMQBlobMessage message) throws IOException, JMSException {
File f = getFile(message);
synchronized (lock) {
- if (f.exists() && !f.delete()) {
- throw new IOException("Unable to delete file " + f);
- }
+ FileUtils.forceDelete(f);
}
}
@@ -134,9 +134,7 @@ public class FileSystemBlobStrategy impl
synchronized (lock) {
// check if we need to create the queue folder
- if (!queueF.exists() && !queueF.mkdirs()) {
- throw new IOException("Unable to create directory " + queueF.getAbsolutePath());
- }
+ FileUtils.forceMkdir(queueF);
}
return fileSystem.getFile(queueUrl + "/" + filename);
Modified: james/server/trunk/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java (original)
+++ james/server/trunk/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java Mon Jun 22 08:09:30 2015
@@ -18,15 +18,18 @@
****************************************************************/
package org.apache.james.queue.activemq;
-import org.apache.activemq.ActiveMQConnectionFactory;
-import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.queue.jms.JMSMailQueue;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.commons.io.FileUtils;
+import org.apache.james.filesystem.api.FileSystem;
+import org.apache.james.queue.jms.JMSMailQueue;
+
+import com.google.common.base.Throwables;
+
public class ActiveMQMailQueueBlobTest extends ActiveMQMailQueueTest {
public final static String BASE_DIR = "file://target/james-test";
@@ -98,7 +101,13 @@ public class ActiveMQMailQueueBlobTest e
}
public void destroy() throws FileNotFoundException {
- getFile(BASE_DIR).delete();
+ try {
+ FileUtils.forceDelete(getFile(BASE_DIR));
+ } catch (FileNotFoundException e) {
+ throw e;
+ } catch (IOException e) {
+ Throwables.propagate(e);
+ }
}
}
}
Modified: james/server/trunk/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
URL: http://svn.apache.org/viewvc/james/server/trunk/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java?rev=1686799&r1=1686798&r2=1686799&view=diff
==============================================================================
--- james/server/trunk/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java (original)
+++ james/server/trunk/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java Mon Jun 22 08:09:30 2015
@@ -18,17 +18,6 @@
****************************************************************/
package org.apache.james.queue.file;
-import com.google.common.io.Closeables;
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageSource;
-import org.apache.james.lifecycle.api.Disposable;
-import org.apache.james.lifecycle.api.LifecycleUtil;
-import org.apache.james.queue.api.ManageableMailQueue;
-import org.apache.mailet.Mail;
-import org.slf4j.Logger;
-
-import javax.mail.MessagingException;
-import javax.mail.util.SharedFileInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -49,6 +38,20 @@ import java.util.concurrent.ScheduledExe
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
+import javax.mail.MessagingException;
+import javax.mail.util.SharedFileInputStream;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.james.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.core.MimeMessageSource;
+import org.apache.james.lifecycle.api.Disposable;
+import org.apache.james.lifecycle.api.LifecycleUtil;
+import org.apache.james.queue.api.ManageableMailQueue;
+import org.apache.mailet.Mail;
+import org.slf4j.Logger;
+
+import com.google.common.io.Closeables;
+
/**
* {@link ManageableMailQueue} implementation which use the fs to store {@link Mail}'s
* <p/>
@@ -84,9 +87,7 @@ public class FileMailQueue implements Ma
for (int i = 1; i <= SPLITCOUNT; i++) {
File qDir = new File(queueDir, Integer.toString(i));
- if (!qDir.exists() && !qDir.mkdirs()) {
- throw new IOException("Unable to create queue directory " + qDir);
- }
+ FileUtils.forceMkdir(qDir);
String[] files = qDir.list(new FilenameFilter() {
@Override
@@ -379,22 +380,18 @@ public class FileMailQueue implements Ma
}
public void delete() throws MailQueueException {
- File msgFile = new File(getMessageFile());
- File objectFile = new File(getObjectFile());
-
- if (objectFile.exists()) {
- if (!objectFile.delete()) {
- throw new MailQueueException("Unable to delete mail");
- }
+ try {
+ FileUtils.forceDelete(new File(getObjectFile()));
+ } catch (IOException e) {
+ throw new MailQueueException("Unable to delete mail");
}
- if (msgFile.exists()) {
- if (!msgFile.delete()) {
- log.debug("Remove of msg file for mail failed");
- }
+ try {
+ FileUtils.forceDelete(new File(getMessageFile()));
+ } catch (IOException e) {
+ log.debug("Remove of msg file for mail failed");
}
}
-
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org