From e2a1708f861da8e7615c11d679a24022587f02c4 Mon Sep 17 00:00:00 2001 From: Benoit Tellier Date: Tue, 7 Jun 2016 13:59:16 +0700 Subject: [PATCH] JAMES-1746 As Maildir do not support NAMESPACE in the MailboxPath, introduce a related mailbox feature --- .../main/java/org/apache/james/mailbox/MailboxManager.java | 3 ++- .../james/mailbox/cassandra/CassandraMailboxManager.java | 2 +- .../apache/james/mailbox/hbase/HBaseMailboxManager.java | 7 +++++++ .../org/apache/james/mailbox/jcr/JCRMailboxManager.java | 6 ++++++ .../org/apache/james/mailbox/jpa/JPAMailboxManager.java | 7 +++++++ .../james/mailbox/inmemory/InMemoryMailboxManager.java | 2 +- 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java index 351d654525e..4e597b8128f 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java @@ -72,7 +72,8 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport { enum MailboxCapabilities { Move, - UserFlag + UserFlag, + Namespace } EnumSet getSupportedMailboxCapabilities(); diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java index 45290f0976b..1e087bd8e70 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java @@ -64,7 +64,7 @@ public void setMessageSearchIndex(MessageSearchIndex index) { @Override public EnumSet getSupportedMailboxCapabilities() { - return EnumSet.of(MailboxCapabilities.Move, MailboxCapabilities.UserFlag); + return EnumSet.of(MailboxCapabilities.Move, MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace); } @Override diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java index 17d5ef44c2b..cd3ce886008 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java @@ -18,6 +18,8 @@ ****************************************************************/ package org.apache.james.mailbox.hbase; +import java.util.EnumSet; + import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.acl.GroupMembershipResolver; @@ -79,6 +81,11 @@ public void runVoid() throws MailboxException { }); } + @Override + public EnumSet getSupportedMailboxCapabilities() { + return EnumSet.of(MailboxCapabilities.Namespace); + } + @Override protected StoreMessageManager createMessageManager(Mailbox mailboxRow, MailboxSession session) throws MailboxException { return new HBaseMessageManager(getMapperFactory(), diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java index 853d7c6ec92..1cb8f847d07 100644 --- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java +++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java @@ -18,6 +18,8 @@ ****************************************************************/ package org.apache.james.mailbox.jcr; +import java.util.EnumSet; + import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.acl.GroupMembershipResolver; @@ -50,6 +52,10 @@ public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authentic super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser); } + @Override + public EnumSet getSupportedMailboxCapabilities() { + return EnumSet.of(MailboxCapabilities.Namespace); + } @Override protected StoreMessageManager createMessageManager(Mailbox mailboxEntity, MailboxSession session) throws MailboxException{ diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java index 34db1067873..626f7dce147 100644 --- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java +++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java @@ -18,6 +18,8 @@ ****************************************************************/ package org.apache.james.mailbox.jpa; +import java.util.EnumSet; + import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.acl.GroupMembershipResolver; @@ -47,6 +49,11 @@ protected Mailbox doCreateMailbox(MailboxPath path, MailboxSession session) thro return new JPAMailbox(path, randomUidValidity()); } + @Override + public EnumSet getSupportedMailboxCapabilities() { + return EnumSet.of(MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace); + } + /** * Delete all mailboxes * diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java index 22fb603c806..0986aff370d 100644 --- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java +++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java @@ -44,7 +44,7 @@ public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFa @Override public EnumSet getSupportedMailboxCapabilities() { - return EnumSet.of(MailboxCapabilities.Move, MailboxCapabilities.UserFlag); + return EnumSet.of(MailboxCapabilities.Move, MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace); } @Override