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