Author: norman
Date: Wed Sep  8 17:28:36 2010
New Revision: 995164

URL: http://svn.apache.org/viewvc?rev=995164&view=rev
Log:
move rename of INBOX handling to processor to make the mailbox implementation 
not imap specific (IMAP-208)

Modified:
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java
    
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java?rev=995164&r1=995163&r2=995164&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java
 Wed Sep  8 17:28:36 2010
@@ -19,7 +19,10 @@
 
 package org.apache.james.imap.processor;
 
+import javax.mail.Flags;
+
 import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.message.request.ImapRequest;
@@ -33,6 +36,8 @@ import org.apache.james.mailbox.MailboxE
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxNotFoundException;
 import org.apache.james.mailbox.MailboxPath;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageRange;
 
 public class RenameProcessor extends AbstractMailboxProcessor {
 
@@ -53,7 +58,24 @@ public class RenameProcessor extends Abs
         final MailboxPath newPath = buildFullPath(session, 
request.getNewName());
         try {
             final MailboxManager mailboxManager = getMailboxManager();
-            mailboxManager.renameMailbox(existingPath, newPath, 
ImapSessionUtils.getMailboxSession(session));
+            MailboxSession mailboxsession = 
ImapSessionUtils.getMailboxSession(session);
+            if 
(existingPath.getName().equalsIgnoreCase(ImapConstants.INBOX_NAME)) {
+
+                // if the mailbox is INBOX we need to move move the messages
+                // https://issues.apache.org/jira/browse/IMAP-188              
             
+                MessageRange range = MessageRange.all();
+                // create the mailbox if it not exist yet
+                if (mailboxManager.mailboxExists(newPath, mailboxsession) == 
false) {
+                    mailboxManager.createMailbox(newPath, mailboxsession);
+                }
+                mailboxManager.copyMessages(range, existingPath, newPath, 
mailboxsession);
+                
+                org.apache.james.mailbox.MessageManager inbox = 
mailboxManager.getMailbox(existingPath, mailboxsession);
+                inbox.setFlags(new Flags(Flags.Flag.DELETED), true, false, 
range, mailboxsession);
+                inbox.expunge(range, mailboxsession);
+            } else {
+                mailboxManager.renameMailbox(existingPath, newPath, 
mailboxsession);
+            }
             okComplete(command, tag, responder);
             unsolicitedResponses(session, responder, false);
         } catch (MailboxExistsException e) {

Modified: 
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java?rev=995164&r1=995163&r2=995164&view=diff
==============================================================================
--- 
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 (original)
+++ 
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 Wed Sep  8 17:28:36 2010
@@ -25,8 +25,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Random;
 
-import javax.mail.Flags;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.james.mailbox.BadCredentialsException;
@@ -292,38 +290,15 @@ public abstract class StoreMailboxManage
                         final String subNewName = to.getName() + 
subOriginalName.substring(from.getName().length());
                         final MailboxPath fromPath = new MailboxPath(children, 
subOriginalName);
                         final MailboxPath toPath = new MailboxPath(children, 
subNewName);
-                        
-                        
-                        // TODO: Move to processor
-                        if (sub.getName().equalsIgnoreCase("INBOX") == false) {
-                           
-                            sub.setName(subNewName);
-                            mapper.save(sub);
-                            dispatcher.mailboxRenamed(fromPath, toPath, 
session.getSessionId());
-
-                            if (log.isDebugEnabled())
-                                log.debug("Rename mailbox sub-mailbox " + 
subOriginalName + " to " + subNewName);
-                            
-                        } else {
-                           
-                            // if the mailbox is INBOX we need to move move 
the messages
-                            // https://issues.apache.org/jira/browse/IMAP-188  
                         
-                            MessageRange range = MessageRange.all();
-                            
-                            // create the mailbox if it not exist yet
-                            if (mailboxExists(toPath, session) == false) {
-                                createMailbox(toPath, session);
-                            }
-                            copyMessages(range, fromPath, toPath, session);
-                            
-                            org.apache.james.mailbox.MessageManager inbox = 
getMailbox(fromPath, session);
-                            inbox.setFlags(new Flags(Flags.Flag.DELETED), 
true, false, range, session);
-                            inbox.expunge(range, session);
-                            
-                        }
-
 
+                        sub.setName(subNewName);
+                        mapper.save(sub);
+                        dispatcher.mailboxRenamed(fromPath, toPath, 
session.getSessionId());
 
+                        if (log.isDebugEnabled())
+                            log.debug("Rename mailbox sub-mailbox " + 
subOriginalName + " to " + subNewName);
+                            
+                      
                     }
                 } finally {
                     lock.unlock(children);



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

Reply via email to