Author: btellier Date: Thu Jul 9 07:42:48 2015 New Revision: 1690002 URL: http://svn.apache.org/r1690002 Log: JAMES-1584 Command to list all mailboxes of a user
Modified: james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java james/server/trunk/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java james/server/trunk/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java james/server/trunk/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java Modified: james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java URL: http://svn.apache.org/viewvc/james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java?rev=1690002&r1=1690001&r2=1690002&view=diff ============================================================================== --- james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java (original) +++ james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java Thu Jul 9 07:42:48 2015 @@ -235,6 +235,14 @@ public class ServerCmd { printUsage(); System.exit(1); } + } else if (CmdType.LISTUSERMAILBOXES.equals(cmdType)) { + if (cmdType.hasCorrectArguments(arguments.length)) { + Collection<String> mailboxes = probe.listUserMailboxes(arguments[1]); + sCmd.print(mailboxes.toArray(new String[mailboxes.size()]), System.out); + } else { + printUsage(); + System.exit(1); + } } else { System.err.println("Unrecognized command: " + cmdName + "."); printUsage(); @@ -300,7 +308,8 @@ public class ServerCmd { "listmappings%n" + // "copymailbox <srcbean> <dstbean>%n" + // "deleteusermailboxes <user>%n" + // - "createmailbox <namespace> <user> <name>%n" + "createmailbox <namespace> <user> <name>%n" + // + "listusermailboxes <user>%n" ); String usage = String.format("java %s --host <arg> <command>%n", ServerCmd.class.getName()); hf.printHelp(usage, "", options, header); Modified: james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java URL: http://svn.apache.org/viewvc/james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java?rev=1690002&r1=1690001&r2=1690002&view=diff ============================================================================== --- james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java (original) +++ james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java Thu Jul 9 07:42:48 2015 @@ -200,4 +200,12 @@ public interface ServerProbe extends Clo * @param name Name of the created mailbox */ void createMailbox(String namespace, String user, String name); + + /** + * List mailboxes belonging to the private namespace of a user + * + * @param user The given user + * @return List of mailboxes belonging to the private namespace of a user + */ + Collection<String> listUserMailboxes(String user); } Modified: james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java URL: http://svn.apache.org/viewvc/james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java?rev=1690002&r1=1690001&r2=1690002&view=diff ============================================================================== --- james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java (original) +++ james/server/trunk/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java Thu Jul 9 07:42:48 2015 @@ -203,4 +203,9 @@ public class JmxServerProbe implements S public void createMailbox(String namespace, String user, String name) { mailboxManagerManagement.createMailbox(namespace, user, name); } + + @Override + public Collection<String> listUserMailboxes(String user) { + return mailboxManagerManagement.listMailboxes(user); + } } Modified: james/server/trunk/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java URL: http://svn.apache.org/viewvc/james/server/trunk/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java?rev=1690002&r1=1690001&r2=1690002&view=diff ============================================================================== --- james/server/trunk/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java (original) +++ james/server/trunk/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java Thu Jul 9 07:42:48 2015 @@ -38,7 +38,8 @@ public enum CmdType { SETPASSWORD("setpassword", 3), // COPYMAILBOX("copymailbox", 3), // DELETEUSERMAILBOXES("deleteusermailboxes", 2), // - CREATEMAILBOX("createmailbox", 4) + CREATEMAILBOX("createmailbox", 4), // + LISTUSERMAILBOXES("listusermailboxes",2) // ; private final String command; private final int arguments; Modified: james/server/trunk/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java URL: http://svn.apache.org/viewvc/james/server/trunk/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java?rev=1690002&r1=1690001&r2=1690002&view=diff ============================================================================== --- james/server/trunk/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java (original) +++ james/server/trunk/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java Thu Jul 9 07:42:48 2015 @@ -75,14 +75,7 @@ public class MailboxManagerManagement ex } catch (MailboxException e) { log.error("Error while remove mailboxes for user " + username, e); } finally { - if (session != null) { - mailboxManager.endProcessingRequest(session); - try { - mailboxManager.logout(session, true); - } catch (MailboxException e) { - // ignore here - } - } + closeSession(session); } return false; } @@ -90,6 +83,7 @@ public class MailboxManagerManagement ex /** * @see org.apache.james.lifecycle.api.LogEnabled#setLog(org.slf4j.Logger) */ + @Override public void setLog(Logger log) { this.log = log; } @@ -101,6 +95,7 @@ public class MailboxManagerManagement ex */ @Override public List<String> listMailboxes(String username) { + Preconditions.checkArgument(username != null, "Username should not be null"); List<String> boxes = new ArrayList<String>(); MailboxSession session = null; try { @@ -114,14 +109,7 @@ public class MailboxManagerManagement ex } catch (MailboxException e) { log.error("Error list mailboxes for user " + username, e); } finally { - if (session != null) { - mailboxManager.endProcessingRequest(session); - try { - mailboxManager.logout(session, true); - } catch (MailboxException e) { - // ignore here - } - } + closeSession(session); } return boxes; } @@ -129,11 +117,26 @@ public class MailboxManagerManagement ex @Override public void createMailbox(String namespace, String user, String name) { Preconditions.checkArgument(namespace != null && user != null && name != null, "Provided mailbox path components should not be null"); + MailboxSession session = null; try { - MailboxSession session = mailboxManager.createSystemSession(user, log); + session = mailboxManager.createSystemSession(user, log); + mailboxManager.startProcessingRequest(session); mailboxManager.createMailbox(new MailboxPath(namespace, user, name), session); } catch (Exception e) { - throw new RuntimeException("Unable to create mailbox", e); + log.error("Unable to create mailbox", e); + } finally { + closeSession(session); + } + } + + private void closeSession(MailboxSession session) { + if (session != null) { + mailboxManager.endProcessingRequest(session); + try { + mailboxManager.logout(session, true); + } catch (MailboxException e) { + log.error("Can not log session out", e); + } } } Modified: james/server/trunk/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java?rev=1690002&r1=1690001&r2=1690002&view=diff ============================================================================== --- james/server/trunk/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java (original) +++ james/server/trunk/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java Thu Jul 9 07:42:48 2015 @@ -153,4 +153,26 @@ public class MailboxManagementTest { mailboxManagerManagement.createMailbox("", "", null); } + @Test + public void listMailboxesShouldReturnUserMailboxes() throws Exception { + Mailbox<InMemoryId> mailbox1 = new SimpleMailbox<InMemoryId>(new MailboxPath("#top", USER, "name1"), UID_VALIDITY); + Mailbox<InMemoryId> mailbox2 = new SimpleMailbox<InMemoryId>(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name2"), UID_VALIDITY); + Mailbox<InMemoryId> mailbox3 = new SimpleMailbox<InMemoryId>(new MailboxPath(MailboxConstants.USER_NAMESPACE, "other_user", "name3"), UID_VALIDITY); + Mailbox<InMemoryId> mailbox4 = new SimpleMailbox<InMemoryId>(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name4"), UID_VALIDITY); + Mailbox<InMemoryId> mailbox5 = new SimpleMailbox<InMemoryId>(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX"), UID_VALIDITY); + Mailbox<InMemoryId> mailbox6 = new SimpleMailbox<InMemoryId>(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX.toto"), UID_VALIDITY); + inMemoryMapperFactory.createMailboxMapper(session).save(mailbox1); + inMemoryMapperFactory.createMailboxMapper(session).save(mailbox2); + inMemoryMapperFactory.createMailboxMapper(session).save(mailbox3); + inMemoryMapperFactory.createMailboxMapper(session).save(mailbox4); + inMemoryMapperFactory.createMailboxMapper(session).save(mailbox5); + inMemoryMapperFactory.createMailboxMapper(session).save(mailbox6); + assertThat(mailboxManagerManagement.listMailboxes(USER)).containsOnly("name2", "name4", "INBOX", "INBOX.toto"); + } + + @Test(expected = IllegalArgumentException.class) + public void listMailboxesShouldThrowOnNullUserName() { + mailboxManagerManagement.listMailboxes(null); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org