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

Reply via email to