Author: felixk
Date: Wed Sep 28 10:20:06 2011
New Revision: 1176812
URL: http://svn.apache.org/viewvc?rev=1176812&view=rev
Log:
Throw IOException if return value = false (MAILBOX-136)
Modified:
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
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
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=1176812&r1=1176811&r2=1176812&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
Wed Sep 28 10:20:06 2011
@@ -256,7 +256,8 @@ public class MaildirFolder {
*/
private void saveUidValidity(long uidValidity) throws IOException {
File validityFile = new File(rootFolder, VALIDITY_FILE);
- validityFile.createNewFile();
+ if (!validityFile.createNewFile())
+ throw new IOException("Could not create file " + validityFile);
FileOutputStream fos = new FileOutputStream(validityFile);
try {
fos.write(String.valueOf(uidValidity).getBytes());
@@ -432,7 +433,8 @@ public class MaildirFolder {
try {
if (!uidList.isFile()) {
- uidList.createNewFile();
+ if (!uidList.createNewFile())
+ throw new IOException("Could not create file " +
uidList);
String[] curFiles = curFolder.list();
String[] newFiles = newFolder.list();
messageCount = curFiles.length + newFiles.length;
@@ -511,7 +513,8 @@ public class MaildirFolder {
File uidList = uidFile;
PrintWriter pw = null;
try {
- uidList.createNewFile();
+ if (!uidList.createNewFile())
+ throw new IOException("Could not create file " + uidList);
lastUid = 0;
String[] curFiles = curFolder.list();
String[] newFiles = newFolder.list();
@@ -727,7 +730,8 @@ public class MaildirFolder {
}
else {
// create the file
- uidList.createNewFile();
+ if (!uidList.createNewFile())
+ throw new IOException("Could not create file " +
uidList);
String[] curFiles = curFolder.list();
String[] newFiles = newFolder.list();
messageCount = curFiles.length + newFiles.length;
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=1176812&r1=1176811&r2=1176812&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
Wed Sep 28 10:20:06 2011
@@ -75,8 +75,12 @@ public class MaildirMailboxMapper extend
FileUtils.deleteDirectory(new File(folder,
MaildirFolder.CUR));
FileUtils.deleteDirectory(new File(folder,
MaildirFolder.NEW));
FileUtils.deleteDirectory(new File(folder,
MaildirFolder.TMP));
- new File(folder, MaildirFolder.UIDLIST_FILE).delete();
- new File(folder, MaildirFolder.VALIDITY_FILE).delete();
+ File uidListFile = new File(folder,
MaildirFolder.UIDLIST_FILE);
+ File validityFile = new File(folder,
MaildirFolder.VALIDITY_FILE);
+ if (!uidListFile.delete())
+ throw new IOException("Could not delete file " +
uidListFile);
+ if (!validityFile.delete())
+ throw new IOException("Could not delete file " +
validityFile);
}
else {
// We simply delete all the folder for non INBOX mailboxes.
@@ -152,22 +156,36 @@ public class MaildirMailboxMapper extend
MaildirFolder originalFolder =
maildirStore.createMaildirFolder(originalMailbox);
// renaming the INBOX means to move its contents to the new
folder
if (originalMailbox.getName().equals(MailboxConstants.INBOX)) {
- File inboxFolder = originalFolder.getRootFile();
- File newFolder = folder.getRootFile();
- if (!newFolder.mkdirs())
- throw new MailboxException("Failed to saveMailbox " +
mailbox);
-
originalFolder.getCurFolder().renameTo(folder.getCurFolder());
-
originalFolder.getNewFolder().renameTo(folder.getNewFolder());
-
originalFolder.getTmpFolder().renameTo(folder.getTmpFolder());
- (new File(inboxFolder,
MaildirFolder.UIDLIST_FILE)).renameTo(
- (new File(newFolder, MaildirFolder.UIDLIST_FILE)));
- (new File(inboxFolder,
MaildirFolder.VALIDITY_FILE)).renameTo(
- (new File(newFolder,
MaildirFolder.VALIDITY_FILE)));
- // recreate the INBOX folders, uidvalidity and uidlist will
- // automatically be recreated later
- originalFolder.getCurFolder().mkdir();
- originalFolder.getNewFolder().mkdir();
- originalFolder.getTmpFolder().mkdir();
+ try {
+ File inboxFolder = originalFolder.getRootFile();
+ File newFolder = folder.getRootFile();
+ if (!newFolder.mkdirs())
+ throw new IOException("Could not create folder " +
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()))
+ throw new IOException("Could not rename folder " +
originalFolder.getNewFolder() + " to " + folder.getNewFolder());
+ if
(!originalFolder.getTmpFolder().renameTo(folder.getTmpFolder()))
+ throw new IOException("Could not rename folder " +
originalFolder.getTmpFolder() + " to " + folder.getTmpFolder());
+ File oldUidListFile = new File(inboxFolder,
MaildirFolder.UIDLIST_FILE);
+ File newUidListFile = new File(newFolder,
MaildirFolder.UIDLIST_FILE);
+ if (!oldUidListFile.renameTo(newUidListFile))
+ throw new IOException("Could not rename file " +
oldUidListFile + " to " + newUidListFile);
+ File oldValidityFile = new File(inboxFolder,
MaildirFolder.VALIDITY_FILE);
+ File newValidityFile = new File(newFolder,
MaildirFolder.VALIDITY_FILE);
+ if (!oldValidityFile.renameTo(newValidityFile))
+ 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());
+ } catch (IOException e) {
+ throw new MailboxException("Failed to save Mailbox " +
mailbox, e);
+ }
}
else {
if
(!originalFolder.getRootFile().renameTo(folder.getRootFile()))
Modified:
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java?rev=1176812&r1=1176811&r2=1176812&view=diff
==============================================================================
---
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
(original)
+++
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
Wed Sep 28 10:20:06 2011
@@ -295,7 +295,8 @@ public class MaildirMessageMapper extend
FileOutputStream fos = null;
InputStream input = null;
try {
- messageFile.createNewFile();
+ if (!messageFile.createNewFile())
+ throw new IOException("Could not create file " + messageFile);
fos = new FileOutputStream(messageFile);
input = message.getFullContent();
byte[] b = new byte[BUF_SIZE];
Modified:
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java?rev=1176812&r1=1176811&r2=1176812&view=diff
==============================================================================
---
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
(original)
+++
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
Wed Sep 28 10:20:06 2011
@@ -168,11 +168,15 @@ public class MaildirSubscriptionMapper e
private void writeSubscriptions(File mailboxFolder, final Set<String>
subscriptions) throws IOException {
List<String> sortedSubscriptions = new
ArrayList<String>(subscriptions);
Collections.sort(sortedSubscriptions);
- if (!mailboxFolder.exists()) mailboxFolder.mkdirs();
+ if (!mailboxFolder.exists())
+ if (!mailboxFolder.mkdirs())
+ throw new IOException("Could not create folder " +
mailboxFolder);
File subscriptionFile = new File(mailboxFolder, FILE_SUBSCRIPTION);
if (!subscriptionFile.exists())
- subscriptionFile.createNewFile();
+ if (!subscriptionFile.createNewFile())
+ throw new IOException("Could not create file " +
subscriptionFile);
+
FileWriter fileWriter = new FileWriter(subscriptionFile);
PrintWriter writer = new PrintWriter(fileWriter);
for (String subscription : sortedSubscriptions)
Modified:
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1176812&r1=1176811&r2=1176812&view=diff
==============================================================================
---
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
(original)
+++
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
Wed Sep 28 10:20:06 2011
@@ -345,7 +345,10 @@ public class StoreMessageManager<Id> imp
// delete the temporary file if one was specified
if (file != null) {
- file.delete();
+ if (!file.delete()) {
+ // Don't throw an IOException. The message could be
appended and the temporary file
+ // will be deleted hopefully some day
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]