You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by er...@apache.org on 2011/01/03 14:57:05 UTC
svn commit: r1054619 - in
/james/mailbox/trunk/copier/src/main/java/org/apache/james/mailbox/copier:
MailboxCopier.java MailboxCopierImpl.java
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org