MAILBOX-310 Introduce ACL capability

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5de2d001
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5de2d001
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5de2d001

Branch: refs/heads/master
Commit: 5de2d001fe3bd630a388359801a513b2debd8ecb
Parents: d26baea
Author: Antoine Duprat <adup...@linagora.com>
Authored: Mon Oct 2 15:09:01 2017 +0200
Committer: Matthieu Baechler <matth...@apache.org>
Committed: Thu Oct 5 20:00:37 2017 +0200

----------------------------------------------------------------------
 .../org/apache/james/mailbox/MailboxManager.java   |  3 ++-
 .../apache/james/mailbox/MailboxManagerTest.java   |  2 +-
 .../mailbox/cassandra/CassandraMailboxManager.java |  2 +-
 .../mailbox/inmemory/InMemoryMailboxManager.java   |  6 +++++-
 .../apache/james/JamesCapabilitiesServerTest.java  | 17 +++++++++++++++++
 .../java/org/apache/james/jmap/JMAPModule.java     |  2 ++
 6 files changed, 28 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/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 093219a..38414cc 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
@@ -80,7 +80,8 @@ public interface MailboxManager extends RequestAware, 
MailboxListenerSupport {
         Annotation,
         Move,
         Namespace,
-        UserFlag
+        UserFlag,
+        ACL
     }
 
     EnumSet<MailboxCapabilities> getSupportedMailboxCapabilities();

http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java 
b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 66ff86c..f33ffcf 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -441,7 +441,7 @@ public abstract class MailboxManagerTest {
 
     @Test
     public void searchShouldIncludeDelegatedMailboxes() throws 
MailboxException {
-        
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.RightSearch));
+        
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.ACL));
         MailboxSession session1 = mailboxManager.createSystemSession(USER_1);
         MailboxSession session2 = mailboxManager.createSystemSession(USER_2);
         MailboxPath inbox1 = MailboxPath.inbox(session1);

http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/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 b17deb1..57cfc9c 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
@@ -111,7 +111,7 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
 
     @Override
     public EnumSet<MailboxManager.MailboxCapabilities> 
getSupportedMailboxCapabilities() {
-        return EnumSet.of(MailboxCapabilities.Move, 
MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace, 
MailboxCapabilities.Annotation);
+        return EnumSet.of(MailboxCapabilities.Move, 
MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace, 
MailboxCapabilities.Annotation, MailboxCapabilities.ACL);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/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 adf3044..9aca010 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
@@ -73,7 +73,11 @@ public class InMemoryMailboxManager extends 
StoreMailboxManager {
 
     @Override
     public EnumSet<MailboxCapabilities> getSupportedMailboxCapabilities() {
-        return EnumSet.of(MailboxCapabilities.Move, 
MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace, 
MailboxCapabilities.Annotation);
+        return EnumSet.of(MailboxCapabilities.Move,
+            MailboxCapabilities.UserFlag,
+            MailboxCapabilities.Namespace,
+            MailboxCapabilities.Annotation,
+            MailboxCapabilities.ACL);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
index 5b03a23..48eca9d 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
@@ -86,6 +86,21 @@ public class JamesCapabilitiesServerTest {
     }
     
     @Test
+    public void startShouldFailWhenNoACLCapability() throws Exception {
+        MailboxManager mailboxManager = mock(MailboxManager.class);
+        when(mailboxManager.getSupportedMailboxCapabilities())
+            
.thenReturn(EnumSet.complementOf(EnumSet.of(MailboxManager.MailboxCapabilities.ACL)));
+        when(mailboxManager.getSupportedMessageCapabilities())
+            
.thenReturn(EnumSet.allOf(MailboxManager.MessageCapabilities.class));
+        when(mailboxManager.getSupportedSearchCapabilities())
+            
.thenReturn(EnumSet.allOf(MailboxManager.SearchCapabilities.class));
+
+        server = createCassandraJamesServer(mailboxManager);
+        
+        assertThatThrownBy(() -> 
server.start()).isInstanceOf(IllegalArgumentException.class);
+    }
+    
+    @Test
     public void startShouldFailWhenNoAttachmentCapability() throws Exception {
         MailboxManager mailboxManager = mock(MailboxManager.class);
         when(mailboxManager.getSupportedMailboxCapabilities())
@@ -150,6 +165,8 @@ public class JamesCapabilitiesServerTest {
         MailboxManager mailboxManager = mock(MailboxManager.class);
         
when(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.Move))
             .thenReturn(true);
+        
when(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.ACL))
+            .thenReturn(true);
         when(mailboxManager.getSupportedMessageCapabilities())
             
.thenReturn(EnumSet.allOf(MailboxManager.MessageCapabilities.class));
         when(mailboxManager.getSupportedSearchCapabilities())

http://git-wip-us.apache.org/repos/asf/james-project/blob/5de2d001/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
 
b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
index b0909a5..f5f6a29 100644
--- 
a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
+++ 
b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
@@ -141,6 +141,8 @@ public class JMAPModule extends AbstractModule {
         public void initModule() {
             
Preconditions.checkArgument(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.Move),
                     "MOVE support in MailboxManager is required by JMAP 
Module");
+            
Preconditions.checkArgument(mailboxManager.hasCapability(MailboxManager.MailboxCapabilities.ACL),
+                    "ACL support in MailboxManager is required by JMAP 
Module");
 
             EnumSet<MailboxManager.MessageCapabilities> messageCapabilities = 
mailboxManager.getSupportedMessageCapabilities();
             
Preconditions.checkArgument(messageCapabilities.contains(MailboxManager.MessageCapabilities.Attachment),


---------------------------------------------------------------------
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