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]

Reply via email to