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]