Author: norman
Date: Tue Sep  1 16:07:48 2009
New Revision: 810106

URL: http://svn.apache.org/viewvc?rev=810106&view=rev
Log:
use UID expunge if possible. If this is not the case use "normal" expunge
Check if we can move deleted messages to the trash folder

Modified:
    
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java
    
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/MoveMessageHandler.java

Modified: 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java?rev=810106&r1=810105&r2=810106&view=diff
==============================================================================
--- 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java
 (original)
+++ 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java
 Tue Sep  1 16:07:48 2009
@@ -24,6 +24,7 @@
 
 import javax.mail.Flags;
 import javax.mail.Message;
+import javax.mail.MessagingException;
 import javax.servlet.http.HttpSession;
 
 import net.customware.gwt.dispatch.server.ExecutionContext;
@@ -83,17 +84,29 @@
                        if 
(folder.getFullName().equalsIgnoreCase(IMAPFolder.DEFAULT_TRASH) == false) {
                                com.sun.mail.imap.IMAPFolder trashFolder = 
(com.sun.mail.imap.IMAPFolder) store.getFolder(IMAPFolder.DEFAULT_TRASH);
                                
+                               boolean trashFound = false;
                                // if the trash folder does not exist we create 
it
                                if (trashFolder.exists() == false) {
-                                       
trashFolder.create(com.sun.mail.imap.IMAPFolder.READ_WRITE);
+                                       trashFound = 
trashFolder.create(com.sun.mail.imap.IMAPFolder.READ_WRITE);
+                               } else {
+                                       trashFound = true;
+                               }
+                               
+                               // Check if we are able to copy the messages to 
the trash folder
+                               if (trashFound) {
+                                       // copy the messages to the trashfolder
+                                       f.copyMessages(mArray,trashFolder);
                                }
-                               // copy the messages to the trashfolder
-                               f.copyMessages(mArray,trashFolder);
                        } 
                        // delete the messages from the folder
                        f.setFlags(mArray, new Flags(Flags.Flag.DELETED), true);
-                       f.expunge(mArray);
-                       f.close(false);
+                       try {
+                               f.expunge(mArray);
+                               f.close(false);
+                       } catch (MessagingException e) {
+                               // prolly UID expunge is not supported
+                               f.close(true);
+                       }
                } catch (Exception e) {
                        logger.error("Error while deleting messages with uids 
"+ action.getMessageUids() + " for user " + user + " in folder" + 
action.getFolder(),e);
                        throw new ActionException("Error while deleting 
messages",e);

Modified: 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/MoveMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/MoveMessageHandler.java?rev=810106&r1=810105&r2=810106&view=diff
==============================================================================
--- 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/MoveMessageHandler.java
 (original)
+++ 
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/MoveMessageHandler.java
 Tue Sep  1 16:07:48 2009
@@ -68,11 +68,16 @@
                        Message[] mArray = new Message[] {m};
                        folder.copyMessages(mArray, 
store.getFolder(action.getNewFolder().getFullName()));
                        folder.setFlags(mArray, new Flags(Flags.Flag.DELETED), 
true);
-                       folder.expunge(mArray);
-                       folder.close(true);
+                       try {
+                               folder.expunge(mArray);
+                               folder.close(false);
+                       } catch (MessagingException e) {
+                               // prolly UID expunge is not supported
+                               folder.close(true);
+                       }
                        return new MoveMessageResult();
                } catch (MessagingException e) {
-                       logger.error("Error while moving message " + 
action.getMessageUid() + " from folder" + action.getOldFolder() + " to " + 
action.getNewFolder(),e);
+                       logger.error("Error while moving message " + 
action.getMessageUid() + " from folder " + action.getOldFolder() + " to " + 
action.getNewFolder(),e);
                        throw new ActionException(e);
                }
        }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to