http://git-wip-us.apache.org/repos/asf/james-project/blob/60b612ae/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
new file mode 100644
index 0000000..196f8df
--- /dev/null
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
@@ -0,0 +1,117 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store.mail.model;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxAnnotation;
+import org.apache.james.mailbox.store.mail.AnnotationMapper;
+import org.junit.After;
+import org.junit.Rule;
+import org.junit.rules.ExpectedException;
+import org.xenei.junit.contract.Contract;
+import org.xenei.junit.contract.ContractTest;
+import org.xenei.junit.contract.IProducer;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
+
+@Contract(MapperProvider.class)
+public class AnnotationMapperTest<T extends MapperProvider> {
+    private static final MailboxAnnotation PRIVATE_ANNOTATION = 
MailboxAnnotation.newInstance("/private/comment", "My private comment");
+    private static final MailboxAnnotation PRIVATE_USER_ANNOTATION = 
MailboxAnnotation.newInstance("/private/comment/user", "My private comment");
+    private static final MailboxAnnotation PRIVATE_ANNOTATION_UPDATE = 
MailboxAnnotation.newInstance("/private/comment", "My updated private comment");
+    private static final MailboxAnnotation SHARED_ANNOTATION =  
MailboxAnnotation.newInstance("/shared/comment", "My shared comment");
+
+    private static final List<MailboxAnnotation> 
PRIVATE_AND_SHARED_ANNOTATIONS = Lists.newArrayList(PRIVATE_ANNOTATION, 
SHARED_ANNOTATION);
+
+
+    private IProducer<T> producer;
+    private AnnotationMapper annotationMapper;
+
+    @Rule
+    public ExpectedException expected = ExpectedException.none();
+
+    @Contract.Inject
+    public final void setProducer(IProducer<T> producer) throws 
MailboxException {
+        this.producer = producer;
+        this.annotationMapper = 
producer.newInstance().createAnnotationMapper();
+    }
+
+    @After
+    public void tearDown() {
+        producer.cleanUp();
+    }
+
+    @ContractTest
+    public void insertAnnotationShouldThrowExceptionWithNilData() {
+        expected.expect(IllegalArgumentException.class);
+        
annotationMapper.insertAnnotation(MailboxAnnotation.nil("/private/comment"));
+    }
+
+    @ContractTest
+    public void insertAnnotationShouldCreateNewAnnotation() throws 
MailboxException {
+        annotationMapper.insertAnnotation(PRIVATE_ANNOTATION);
+
+        
assertThat(annotationMapper.getAllAnnotations()).containsExactly(PRIVATE_ANNOTATION);
+    }
+
+    @ContractTest
+    public void insertAnnotationShouldUpdateExistedAnnotation() throws 
MailboxException {
+        annotationMapper.insertAnnotation(PRIVATE_ANNOTATION);
+        annotationMapper.insertAnnotation(PRIVATE_ANNOTATION_UPDATE);
+
+        
assertThat(annotationMapper.getAllAnnotations()).containsExactly(PRIVATE_ANNOTATION_UPDATE);
+    }
+
+    @ContractTest
+    public void deleteAnnotationShouldDeleteStoredAnnotation() throws 
MailboxException {
+        annotationMapper.insertAnnotation(PRIVATE_ANNOTATION);
+        annotationMapper.deleteAnnotation("/private/comment");
+
+        assertThat(annotationMapper.getAllAnnotations()).isEmpty();
+    }
+
+    @ContractTest
+    public void getEmptyAnnotationsWithNonStoredAnnotations() throws 
MailboxException {
+        assertThat(annotationMapper.getAllAnnotations()).isEmpty();
+    }
+
+    @ContractTest
+    public void getAllAnnotationsShouldRetrieveStoredAnnotations() throws 
MailboxException {
+        annotationMapper.insertAnnotation(PRIVATE_ANNOTATION);
+        annotationMapper.insertAnnotation(SHARED_ANNOTATION);
+
+        
assertThat(annotationMapper.getAllAnnotations()).containsExactlyElementsOf(PRIVATE_AND_SHARED_ANNOTATIONS);
+    }
+
+    @ContractTest
+    public void getAnnotationsByKeysShouldReturnStoredAnnotationWithFilter() 
throws MailboxException {
+        annotationMapper.insertAnnotation(PRIVATE_ANNOTATION);
+        annotationMapper.insertAnnotation(PRIVATE_USER_ANNOTATION);
+
+        
assertThat(annotationMapper.getAnnotationsByKeys(ImmutableSet.of("/private/comment")))
+            .containsOnly(PRIVATE_ANNOTATION);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/60b612ae/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
index bf47904..72b7183 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.store.mail.model;
 
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.store.mail.AnnotationMapper;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -31,6 +32,8 @@ public interface MapperProvider {
 
     AttachmentMapper createAttachmentMapper() throws MailboxException;
 
+    AnnotationMapper createAnnotationMapper() throws MailboxException;
+
     MailboxId generateId();
 
     void clearMapper() throws MailboxException;

http://git-wip-us.apache.org/repos/asf/james-project/blob/60b612ae/mpt/impl/imap-mailbox/elasticsearch/.gitignore
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/elasticsearch/.gitignore 
b/mpt/impl/imap-mailbox/elasticsearch/.gitignore
index dc711aa..c4c1e8f 100644
--- a/mpt/impl/imap-mailbox/elasticsearch/.gitignore
+++ b/mpt/impl/imap-mailbox/elasticsearch/.gitignore
@@ -1,3 +1,4 @@
 target
 data
 *.iml
+/bin/

http://git-wip-us.apache.org/repos/asf/james-project/blob/60b612ae/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index e34ec64..036ad33 100644
--- 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -33,6 +33,7 @@ import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.mail.Flags;
 
@@ -54,6 +55,7 @@ import 
org.apache.james.mailbox.model.MailboxACL.MailboxACLCommand;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLEntryKey;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRight;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
+import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MailboxQuery;
@@ -85,6 +87,10 @@ public class MailboxEventAnalyserTest {
             return EnumSet.noneOf(MessageCapabilities.class);
         }
         
+        public boolean hasCapability(MailboxCapabilities capability) {
+            return false;
+        }
+
         public void removeListener(MailboxPath mailboxPath, MailboxListener 
listner, MailboxSession session) throws MailboxException {
             
         }
@@ -362,6 +368,24 @@ public class MailboxEventAnalyserTest {
                 throws MailboxException {
             throw new NotImplementedException("Not implemented");
         }
+
+        @Override
+        public List<MailboxAnnotation> getAllAnnotations(MailboxPath 
mailboxPath, MailboxSession session)
+                throws MailboxException {
+            return null;
+        }
+
+        @Override
+        public List<MailboxAnnotation> getAnnotationsByKeys(MailboxPath 
mailboxPath, MailboxSession session,
+                Set<String> keys) throws MailboxException {
+            return null;
+        }
+
+        @Override
+        public void updateAnnotations(MailboxPath mailboxPath, MailboxSession 
session,
+                List<MailboxAnnotation> mailboxAnnotations) throws 
MailboxException {
+        }
+
     };
     
     private final class MyMailboxSession implements MailboxSession {

http://git-wip-us.apache.org/repos/asf/james-project/blob/60b612ae/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
index 1eb33c9..8dc4628 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
@@ -20,6 +20,7 @@ package org.apache.james.jmap;
 
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxManager;
@@ -31,6 +32,7 @@ import 
org.apache.james.mailbox.model.MailboxACL.MailboxACLCommand;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLEntryKey;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRight;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
+import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MailboxQuery;
@@ -202,7 +204,26 @@ public class FirstUserConnectionFilterThreadTest {
         public EnumSet<MessageCapabilities> getSupportedMessageCapabilities() {
             return null;
         }
-        
+
+        @Override
+        public List<MailboxAnnotation> getAllAnnotations(MailboxPath 
mailboxPath, MailboxSession session) throws MailboxException {
+            return null;
+        }
+
+        @Override
+        public List<MailboxAnnotation> getAnnotationsByKeys(MailboxPath 
mailboxPath, MailboxSession session, Set<String> keys) throws MailboxException {
+            return null;
+        }
+
+        @Override
+        public void updateAnnotations(MailboxPath mailboxPath, MailboxSession 
session, List<MailboxAnnotation> mailboxAnnotations) throws MailboxException {
+            
+        }
+
+        @Override
+        public boolean hasCapability(MailboxCapabilities capability) {
+            return false;
+        }
     }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to