Author: eric
Date: Mon Jan  3 13:57:04 2011
New Revision: 1054619

URL: http://svn.apache.org/viewvc?rev=1054619&view=rev
Log:
Throw exception instead of returning a boolean + Better manage the already 
existing mailboxes (MAILBOX-19)

Modified:
    
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopier.java
    
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java

Modified: 
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopier.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopier.java?rev=1054619&r1=1054618&r2=1054619&view=diff
==============================================================================
--- 
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopier.java
 (original)
+++ 
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopier.java
 Mon Jan  3 13:57:04 2011
@@ -18,6 +18,9 @@
  ****************************************************************/
 package org.apache.james.mailbox.copier;
 
+import java.io.IOException;
+
+import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.MailboxManager;
 
 /**
@@ -37,6 +40,6 @@ public interface MailboxCopier {
      * @return true if copy is completely successful, false if copy fails at 
any
      *         step.
      */
-    boolean copyMailboxes(MailboxManager src, MailboxManager dest);
+    void copyMailboxes(MailboxManager src, MailboxManager dest) throws 
MailboxException, IOException;
 
 }

Modified: 
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java?rev=1054619&r1=1054618&r2=1054619&view=diff
==============================================================================
--- 
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java
 (original)
+++ 
james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java
 Mon Jan  3 13:57:04 2011
@@ -19,6 +19,7 @@
 package org.apache.james.mailbox.copier;
 
 import java.io.IOException;
+import java.util.Calendar;
 import java.util.Iterator;
 import java.util.List;
 
@@ -26,8 +27,8 @@ import javax.mail.Flags.Flag;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.james.mailbox.BadCredentialsException;
 import org.apache.james.mailbox.MailboxException;
+import org.apache.james.mailbox.MailboxExistsException;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxPath;
 import org.apache.james.mailbox.MailboxSession;
@@ -46,98 +47,102 @@ public class MailboxCopierImpl implement
     /**
      * The logger.
      */
-    private Log log = LogFactory.getLog("org.apache.james.mailbox.copier");
-
+    private Log log = LogFactory.getLog(MailboxCopierImpl.class.getName());
 
     /*
      * (non-Javadoc)
      * @see 
org.apache.james.mailbox.copier.MailboxCopier#copyMailboxes(org.apache.james.mailbox.MailboxManager,
 org.apache.james.mailbox.MailboxManager)
      */
-    public boolean copyMailboxes(MailboxManager srcMailboxManager, 
MailboxManager dstMailboxManager) {
+    public void copyMailboxes(MailboxManager srcMailboxManager, MailboxManager 
dstMailboxManager) throws MailboxException, IOException {
+        
+        Calendar start = Calendar.getInstance();
 
         MailboxSession srcMailboxSession;
         MailboxSession dstMailboxSession;
 
-        try {
-            srcMailboxSession = 
srcMailboxManager.createSystemSession("manager", log);
-        } catch (BadCredentialsException e) {
-            log.error(e.getMessage());
-            return false;
-        } catch (MailboxException e) {
-            log.error(e.getMessage());
-            return false;
-        }
+        List<MailboxPath> mailboxPathList = null;
 
+        srcMailboxSession = srcMailboxManager.createSystemSession("manager", 
log);
         srcMailboxManager.startProcessingRequest(srcMailboxSession);
+        mailboxPathList = srcMailboxManager.list(srcMailboxSession);
+        srcMailboxManager.endProcessingRequest(srcMailboxSession);
 
-        try {
+        log.info("Found " + mailboxPathList.size() + " mailboxes in source 
mailbox manager.");
+        for (int i=0; i < mailboxPathList.size(); i++) {
+            log.info("Mailbox#" + i + " path=" + mailboxPathList.get(i));
+        }
 
-            List<MailboxPath> mailboxPathList = 
srcMailboxManager.list(srcMailboxSession);
+        MailboxPath mailboxPath = null;
+        
+        for (int i=0; i < mailboxPathList.size(); i++) {
+        
+            mailboxPath = mailboxPathList.get(i);
+            
+            if ((mailboxPath.getName() != null) && 
(mailboxPath.getName().trim().length() > 0)) {
+                
+                log.info("Ready to copy source mailbox path=" + 
mailboxPath.toString());
 
-            for (MailboxPath mailboxPath : mailboxPathList) {
+                srcMailboxSession = 
srcMailboxManager.createSystemSession(mailboxPath.getUser(), log);
+                dstMailboxSession = 
dstMailboxManager.createSystemSession(mailboxPath.getUser(), log);
 
+                dstMailboxManager.startProcessingRequest(dstMailboxSession);
                 try {
-                    dstMailboxSession = 
dstMailboxManager.createSystemSession(mailboxPath.getUser(), log);
-                } catch (BadCredentialsException e) {
-                    log.error(e.getMessage());
-                    return false;
-                } catch (MailboxException e) {
-                    log.error(e.getMessage());
-                    return false;
+                    dstMailboxManager.createMailbox(mailboxPath, 
dstMailboxSession);
+                    log.info("Destination mailbox " + i + "/" + 
mailboxPathList.size() 
+                            + " created with path=" + mailboxPath.toString()
+                            + " after " + 
(Calendar.getInstance().getTimeInMillis() - start.getTimeInMillis()) + " ms.");
+                } catch (MailboxExistsException e) {
+                    log.error("Mailbox " + i + " with path=" + 
mailboxPath.toString() + " already exists.", e);
                 }
-
-                dstMailboxManager.startProcessingRequest(dstMailboxSession);
-                dstMailboxManager.createMailbox(mailboxPath, 
dstMailboxSession);
                 dstMailboxManager.endProcessingRequest(dstMailboxSession);
 
+                srcMailboxManager.startProcessingRequest(srcMailboxSession);
                 MessageManager srcMessageManager = 
srcMailboxManager.getMailbox(mailboxPath, srcMailboxSession);
+                srcMailboxManager.endProcessingRequest(srcMailboxSession);
 
-                Iterator<MessageResult> messageResultIterator = 
srcMessageManager.getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, 
srcMailboxSession);
+                dstMailboxManager.startProcessingRequest(dstMailboxSession);
+                MessageManager dstMessageManager = 
dstMailboxManager.getMailbox(mailboxPath, dstMailboxSession);
+                dstMailboxManager.endProcessingRequest(dstMailboxSession);
 
+                int j=0;
+                Iterator<MessageResult> messageResultIterator = 
srcMessageManager.getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, 
srcMailboxSession);
+                
                 while (messageResultIterator.hasNext()) {
 
                     MessageResult messageResult = messageResultIterator.next();
                     InputStreamContent content = (InputStreamContent) 
messageResult.getFullContent();
 
-                    try {
-                        dstMailboxSession = 
dstMailboxManager.createSystemSession(mailboxPath.getUser(), log);
-                    } catch (BadCredentialsException e) {
-                        log.error(e.getMessage());
-                        return false;
-                    } catch (MailboxException e) {
-                        log.error(e.getMessage());
-                        return false;
-                    }
-
                     
dstMailboxManager.startProcessingRequest(dstMailboxSession);
-                    MessageManager dstMessageManager = 
dstMailboxManager.getMailbox(mailboxPath, dstMailboxSession);
                     dstMessageManager.appendMessage(content.getInputStream(), 
messageResult.getInternalDate(), dstMailboxSession, 
messageResult.getFlags().contains(Flag.RECENT), messageResult.getFlags());
                     dstMailboxManager.endProcessingRequest(dstMailboxSession);
+                    log.info("Message #" + j + " appended in destination 
mailbox with path=" + mailboxPath.toString());
+                    j++;
 
                 }
 
             }
+            
+            else {
+                
+                log.info("Destination mailbox " + i + "/" + 
mailboxPathList.size() 
+                        + " with path=" + mailboxPath.toString()
+                        + " has a null or empty name");
 
-        } catch (MailboxException e) {
-            log.error(e.getMessage());
-            return false;
-        } catch (IOException e) {
-            log.error(e.getMessage());
-            e.printStackTrace();
-            return false;
-        }
-
-        srcMailboxManager.endProcessingRequest(srcMailboxSession);
+            }
 
-        try {
-            srcMailboxManager.logout(srcMailboxSession, true);
-        } catch (MailboxException e) {
-            log.error(e.getMessage());
-            return false;
         }
 
-        return true;
+        log.info("Mailboxes copied in " + 
(Calendar.getInstance().getTimeInMillis() - start.getTimeInMillis()) + " ms.");
 
     }
+    
+    /**
+     * Set the logger.
+     * 
+     * @param log
+     */
+    public void setLog(Log log) {
+        this.log = log;
+    }
 
 }



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

Reply via email to