JAMES-1849 Allow one implementation to skip some parts of the contracts

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

Branch: refs/heads/master
Commit: 76b627cf8c55b329822fd1f94fe130b3c04c5255
Parents: 1aeb43b
Author: Benoit Tellier <btell...@linagora.com>
Authored: Tue Oct 25 13:50:23 2016 +0200
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Thu Nov 3 15:26:07 2016 +0100

----------------------------------------------------------------------
 .../mailbox/cassandra/mail/CassandraMapperProvider.java  |  9 +++++++++
 .../mailbox/inmemory/mail/InMemoryMapperProvider.java    |  8 ++++++++
 .../mailbox/store/mail/model/AnnotationMapperTest.java   |  2 ++
 .../mailbox/store/mail/model/AttachmentMapperTest.java   |  5 ++++-
 .../mailbox/store/mail/model/MailboxMapperTest.java      |  3 +++
 .../james/mailbox/store/mail/model/MapperProvider.java   | 11 +++++++++++
 .../mailbox/store/mail/model/MessageMapperTest.java      |  6 +++++-
 .../james/mailbox/store/mail/model/MessageMoveTest.java  |  2 ++
 8 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
index ac8d177..e343f47 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.mailbox.cassandra.mail;
 
+import java.util.List;
+
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.CassandraId;
@@ -40,6 +42,8 @@ import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 
+import com.google.common.collect.ImmutableList;
+
 public class CassandraMapperProvider implements MapperProvider {
 
     private static final CassandraCluster cassandra = 
CassandraCluster.create(new CassandraModuleComposite(
@@ -120,4 +124,9 @@ public class CassandraMapperProvider implements 
MapperProvider {
                 new DefaultMessageId.Factory()
             ).getAnnotationMapper(new MockMailboxSession("benwa"));
     }
+
+    @Override
+    public List<Capabilities> getNotImplemented() {
+        return ImmutableList.of();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
index 815744c..25e14e3 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
@@ -1,5 +1,6 @@
 package org.apache.james.mailbox.inmemory.mail;
 
+import java.util.List;
 import java.util.Random;
 
 import org.apache.james.mailbox.exception.MailboxException;
@@ -14,6 +15,8 @@ import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 
+import com.google.common.collect.ImmutableList;
+
 public class InMemoryMapperProvider implements MapperProvider {
 
     private final Random random;
@@ -68,4 +71,9 @@ public class InMemoryMapperProvider implements MapperProvider 
{
     public MessageId generateMessageId() {
         return messageIdFactory.generate();
     }
+
+    @Override
+    public List<Capabilities> getNotImplemented() {
+        return ImmutableList.of();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/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
index ae0e305..59861ec 100644
--- 
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
@@ -27,6 +27,7 @@ import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
 import org.junit.After;
+import org.junit.Assume;
 import org.junit.Rule;
 import org.junit.rules.ExpectedException;
 import org.xenei.junit.contract.Contract;
@@ -64,6 +65,7 @@ public class AnnotationMapperTest<T extends MapperProvider> {
     @Contract.Inject
     public final void setProducer(IProducer<T> producer) throws 
MailboxException {
         T newInstance = producer.newInstance();
+        
Assume.assumeFalse(newInstance.getNotImplemented().contains(MapperProvider.Capabilities.ANNOTATION));
 
         this.producer = producer;
         this.annotationMapper = newInstance.createAnnotationMapper();

http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
index d3ba172..3640b8a 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.junit.After;
+import org.junit.Assume;
 import org.junit.Rule;
 import org.junit.rules.ExpectedException;
 import org.xenei.junit.contract.Contract;
@@ -50,7 +51,9 @@ public class AttachmentMapperTest<T extends MapperProvider> {
     @Contract.Inject
     public final void setProducer(IProducer<T> producer) throws 
MailboxException {
         this.producer = producer;
-        this.attachmentMapper = 
producer.newInstance().createAttachmentMapper();
+        T newInstance = producer.newInstance();
+        
Assume.assumeFalse(newInstance.getNotImplemented().contains(MapperProvider.Capabilities.ATTACHMENT));
+        this.attachmentMapper = newInstance.createAttachmentMapper();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
index d80c252..7fc2a15 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
@@ -31,6 +31,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
+import org.junit.Assume;
 import org.junit.Rule;
 import org.junit.rules.ExpectedException;
 import org.xenei.junit.contract.Contract;
@@ -89,6 +90,8 @@ public class MailboxMapperTest<T extends MapperProvider> {
     public final void setProducer(IProducer<T> producer) throws 
MailboxException {
         this.producer = producer;
         this.mapperProvider = producer.newInstance();
+        
Assume.assumeFalse(mapperProvider.getNotImplemented().contains(MapperProvider.Capabilities.MAILBOX));
+
         this.mapperProvider.ensureMapperPrepared();
         this.mailboxMapper = mapperProvider.createMailboxMapper();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/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 d2e4333..296671c 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
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox.store.mail.model;
 
+import java.util.List;
+
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
@@ -28,6 +30,15 @@ import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 
 public interface MapperProvider {
+    enum Capabilities {
+        MESSAGE,
+        MAILBOX,
+        ATTACHMENT,
+        ANNOTATION
+    }
+
+    List<Capabilities> getNotImplemented();
+
     MailboxMapper createMailboxMapper() throws MailboxException;
 
     MessageMapper createMessageMapper() throws MailboxException;

http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 909fe37..200b770 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -97,6 +97,10 @@ public class MessageMapperTest<T extends MapperProvider> {
         this.producer = producer;
         this.mapperProvider = producer.newInstance();
         this.mapperProvider.ensureMapperPrepared();
+
+        
Assume.assumeFalse(mapperProvider.getNotImplemented().contains(MapperProvider.Capabilities.MESSAGE));
+        
Assume.assumeFalse(mapperProvider.getNotImplemented().contains(MapperProvider.Capabilities.ATTACHMENT));
+
         this.messageMapper = mapperProvider.createMessageMapper();
         this.attachmentMapper = mapperProvider.createAttachmentMapper();
 
@@ -129,7 +133,7 @@ public class MessageMapperTest<T extends MapperProvider> {
                         .cid(Cid.from("cid"))
                         .isInline(true)
                         .build()));
-        message8With2Attachments = createMessage(attachmentsMailbox, 
mapperProvider.generateMessageId(), "Subject: Test8 \n\nBody8\n.\n", 
BODY_START, new PropertyBuilder(), 
+        message8With2Attachments = createMessage(attachmentsMailbox, 
mapperProvider.generateMessageId(), "Subject: Test8 \n\nBody8\n.\n", 
BODY_START, new PropertyBuilder(),
                 ImmutableList.of(
                         MessageAttachment.builder()
                             .attachment(attachment)

http://git-wip-us.apache.org/repos/asf/james-project/blob/76b627cf/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
index ae588c8..502b7d1 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
@@ -38,6 +38,7 @@ import 
org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.junit.After;
+import org.junit.Assume;
 import org.junit.Rule;
 import org.junit.rules.ExpectedException;
 import org.xenei.junit.contract.Contract;
@@ -70,6 +71,7 @@ public class MessageMoveTest<T extends MapperProvider> {
         this.mapperProvider = producer.newInstance();
         this.mapperProvider.ensureMapperPrepared();
         this.messageMapper = mapperProvider.createMessageMapper();
+        Assume.assumeNotNull(messageMapper);
 
         benwaInboxMailbox = createMailbox(new MailboxPath("#private", "benwa", 
"INBOX"));
         benwaWorkMailbox = createMailbox( new MailboxPath("#private", "benwa", 
"INBOX"+DELIMITER+"work"));


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