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: [email protected]
For additional commands, e-mail: [email protected]