JAMES-1704 InMemory should support user flags operation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4e92aefc Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4e92aefc Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4e92aefc Branch: refs/heads/master Commit: 4e92aefccb24badcb187e30d1cf35cf392e50942 Parents: f1b3318 Author: Benoit Tellier <btell...@linagora.com> Authored: Thu Mar 24 09:57:20 2016 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Thu Mar 24 12:44:34 2016 +0700 ---------------------------------------------------------------------- .../apache/james/mailbox/MailboxManager.java | 3 +- .../cassandra/CassandraMailboxManager.java | 2 +- .../inmemory/InMemoryMailboxManager.java | 19 ++++++++++++- .../inmemory/InMemoryMessageManager.java | 30 ++++++++++++++++++++ 4 files changed, 51 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/4e92aefc/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java ---------------------------------------------------------------------- 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 22cad9d..1375d1d 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 @@ -71,7 +71,8 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport { enum Capabilities { Basic, - Move + Move, + UserFlags } List<Capabilities> getSupportedCapabilities(); http://git-wip-us.apache.org/repos/asf/james-project/blob/4e92aefc/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java ---------------------------------------------------------------------- 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 369a928..d404a76 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 @@ -65,7 +65,7 @@ public class CassandraMailboxManager extends StoreMailboxManager<CassandraId> { @Override public List<Capabilities> getSupportedCapabilities() { - return Lists.newArrayList(Capabilities.Basic, Capabilities.Move); + return Lists.newArrayList(Capabilities.Basic, Capabilities.Move, Capabilities.UserFlags); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/4e92aefc/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java ---------------------------------------------------------------------- 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 a1683c9..c8cf946 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 @@ -23,11 +23,15 @@ import java.util.List; import javax.inject.Inject; import org.apache.james.mailbox.MailboxPathLocker; +import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.acl.MailboxACLResolver; +import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.store.Authenticator; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.StoreMailboxManager; +import org.apache.james.mailbox.store.StoreMessageManager; +import org.apache.james.mailbox.store.mail.model.Mailbox; import com.google.common.collect.Lists; @@ -40,6 +44,19 @@ public class InMemoryMailboxManager extends StoreMailboxManager<InMemoryId> { @Override public List<Capabilities> getSupportedCapabilities() { - return Lists.newArrayList(Capabilities.Basic, Capabilities.Move); + return Lists.newArrayList(Capabilities.Basic, Capabilities.Move, Capabilities.UserFlags); + } + + @Override + protected StoreMessageManager<InMemoryId> createMessageManager(Mailbox<InMemoryId> mailbox, MailboxSession session) throws MailboxException { + return new InMemoryMessageManager(getMapperFactory(), + getMessageSearchIndex(), + getEventDispatcher(), + getLocker(), + mailbox, + getAclResolver(), + getGroupMembershipResolver(), + getQuotaManager(), + getQuotaRootResolver()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/4e92aefc/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java new file mode 100644 index 0000000..101ca55 --- /dev/null +++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java @@ -0,0 +1,30 @@ +package org.apache.james.mailbox.inmemory; + +import javax.mail.Flags; + +import org.apache.james.mailbox.MailboxPathLocker; +import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.acl.GroupMembershipResolver; +import org.apache.james.mailbox.acl.MailboxACLResolver; +import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.quota.QuotaManager; +import org.apache.james.mailbox.quota.QuotaRootResolver; +import org.apache.james.mailbox.store.StoreMessageManager; +import org.apache.james.mailbox.store.event.MailboxEventDispatcher; +import org.apache.james.mailbox.store.mail.MessageMapperFactory; +import org.apache.james.mailbox.store.mail.model.Mailbox; +import org.apache.james.mailbox.store.search.MessageSearchIndex; + +public class InMemoryMessageManager extends StoreMessageManager<InMemoryId> { + + public InMemoryMessageManager(MessageMapperFactory<InMemoryId> mapperFactory, MessageSearchIndex<InMemoryId> index, MailboxEventDispatcher<InMemoryId> dispatcher, MailboxPathLocker locker, Mailbox<InMemoryId> mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, QuotaManager quotaManager, QuotaRootResolver quotaRootResolver) throws MailboxException { + super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, quotaRootResolver); + } + + @Override + protected Flags getPermanentFlags(MailboxSession session) { + Flags permanentFlags = new Flags(super.getPermanentFlags(session)); + permanentFlags.add(Flags.Flag.USER); + return permanentFlags; + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org