JAMES-2123 MailboxMessage should allow retrieving ComposeId
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b868488a Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b868488a Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b868488a Branch: refs/heads/master Commit: b868488a4e53afa2be9f5b985824e50958b1835f Parents: 219eb4e Author: benwa <btell...@linagora.com> Authored: Thu Aug 17 09:34:31 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Thu Aug 17 11:05:06 2017 +0700 ---------------------------------------------------------------------- .../cassandra/mail/CassandraMessageMapper.java | 19 ++++--------------- .../mailbox/hbase/mail/HBaseMailboxMessage.java | 11 +++++++++++ .../jcr/mail/model/JCRMailboxMessage.java | 11 +++++++++++ .../model/openjpa/AbstractJPAMailboxMessage.java | 11 +++++++++++ .../mail/model/MaildirMailboxMessage.java | 11 +++++++++++ .../mailbox/store/ImmutableMailboxMessage.java | 11 +++++++++++ .../mailbox/store/mail/model/MailboxMessage.java | 3 +++ .../mail/model/impl/SimpleMailboxMessage.java | 11 +++++++++++ .../mailbox/store/SimpleMailboxMembership.java | 11 +++++++++++ .../store/mail/model/ListMessageAssertTest.java | 11 +++++++++++ 10 files changed, 95 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java index 837a94d..dd475d9 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java @@ -144,18 +144,12 @@ public class CassandraMessageMapper implements MessageMapper { @Override public void delete(Mailbox mailbox, MailboxMessage message) { - CassandraId mailboxId = (CassandraId) mailbox.getMailboxId(); - - deleteAsFuture(message, mailboxId) + deleteAsFuture(message) .join(); } - private CompletableFuture<Void> deleteAsFuture(MailboxMessage message, CassandraId mailboxId) { - ComposedMessageIdWithMetaData composedMessageIdWithMetaData = ComposedMessageIdWithMetaData.builder() - .composedMessageId(new ComposedMessageId(mailboxId, message.getMessageId(), message.getUid())) - .flags(message.createFlags()) - .modSeq(message.getModSeq()) - .build(); + private CompletableFuture<Void> deleteAsFuture(MailboxMessage message) { + ComposedMessageIdWithMetaData composedMessageIdWithMetaData = message.getComposedMessageIdWithMetaData(); return deleteUsingMailboxId(composedMessageIdWithMetaData); } @@ -244,12 +238,7 @@ public class CassandraMessageMapper implements MessageMapper { @Override public MessageMetaData move(Mailbox destinationMailbox, MailboxMessage original) throws MailboxException { - CassandraId originalMailboxId = (CassandraId) original.getMailboxId(); - ComposedMessageIdWithMetaData composedMessageIdWithMetaData = ComposedMessageIdWithMetaData.builder() - .composedMessageId(new ComposedMessageId(originalMailboxId, original.getMessageId(), original.getUid())) - .flags(original.createFlags()) - .modSeq(original.getModSeq()) - .build(); + ComposedMessageIdWithMetaData composedMessageIdWithMetaData = original.getComposedMessageIdWithMetaData(); MessageMetaData messageMetaData = copy(destinationMailbox, original); deleteUsingMailboxId(composedMessageIdWithMetaData).join(); http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java index 3ef781d..3fe7f48 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java @@ -40,6 +40,8 @@ import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.hbase.HBaseId; import org.apache.james.mailbox.hbase.io.ChunkInputStream; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.FlagsBuilder; @@ -142,6 +144,15 @@ public class HBaseMailboxMessage implements MailboxMessage { } @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(modSeq) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(mailboxId, getMessageId(), uid)) + .build(); + } + + @Override public InputStream getBodyContent() throws IOException { return new ChunkInputStream(conf, MESSAGES_TABLE, MESSAGE_DATA_BODY_CF, messageRowKey(this)); } http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java index 2431826..2e7c233 100644 --- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java +++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java @@ -44,6 +44,8 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.jcr.JCRId; import org.apache.james.mailbox.jcr.JCRImapConstants; import org.apache.james.mailbox.jcr.Persistent; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.FlagsBuilder; @@ -165,6 +167,15 @@ public class JCRMailboxMessage implements MailboxMessage, JCRImapConstants, Pers } @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(modSeq) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(getMailboxId(), getMessageId(), uid)) + .build(); + } + + @Override public long getFullContentOctets() { if (isPersistent()) { try { http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java index 1a13ef1..800adb5 100644 --- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java +++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java @@ -49,6 +49,8 @@ import org.apache.james.mailbox.jpa.JPAId; import org.apache.james.mailbox.jpa.mail.model.JPAMailbox; import org.apache.james.mailbox.jpa.mail.model.JPAProperty; import org.apache.james.mailbox.jpa.mail.model.JPAUserFlag; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; @@ -314,6 +316,15 @@ public abstract class AbstractJPAMailboxMessage implements MailboxMessage { return false; } + @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(modSeq) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(mailbox.getMailboxId(), getMessageId(), MessageUid.of(uid))) + .build(); + } + /** * @see MailboxMessage#getModSeq() */ http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailboxMessage.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailboxMessage.java index ec0c361..4bb9227 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailboxMessage.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMailboxMessage.java @@ -28,6 +28,8 @@ import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.maildir.MaildirFolder; import org.apache.james.mailbox.maildir.MaildirId; import org.apache.james.mailbox.maildir.MaildirMessageName; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.store.mail.model.DelegatingMailboxMessage; import org.apache.james.mailbox.store.mail.model.Mailbox; @@ -68,6 +70,15 @@ public class MaildirMailboxMessage extends DelegatingMailboxMessage { setFlags(flags); } + @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(modSeq) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(mailbox.getMailboxId(), getMessageId(), uid)) + .build(); + } + @Override public MaildirId getMailboxId() { http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java index 1f2b4c5..eb8757a 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java @@ -31,6 +31,8 @@ import org.apache.commons.lang.NotImplementedException; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; @@ -144,6 +146,15 @@ public class ImmutableMailboxMessage implements MailboxMessage { this.userFlags = userFlags; } + @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(modSeq) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(mailboxId, getMessageId(), uid)) + .build(); + } + public MessageId getMessageId() { return messageId; } http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java index 2033917..556ee4b 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java @@ -21,6 +21,7 @@ package org.apache.james.mailbox.store.mail.model; import javax.mail.Flags; import org.apache.james.mailbox.MessageUid; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MailboxId; /** @@ -30,6 +31,8 @@ import org.apache.james.mailbox.model.MailboxId; */ public interface MailboxMessage extends Message, Comparable<MailboxMessage> { + ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData(); + /** * Return the mailbox id of the linked mailbox * http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java index 7f81690..f4c624c 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java @@ -31,6 +31,8 @@ import javax.mail.util.SharedByteArrayInputStream; import org.apache.commons.io.IOUtils; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; @@ -206,6 +208,15 @@ public class SimpleMailboxMessage extends DelegatingMailboxMessage { } @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(modSeq) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(mailboxId, getMessageId(), uid)) + .build(); + } + + @Override protected String[] createUserFlags() { return userFlags.clone(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java index 5d5ad03..d4c06b8 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java @@ -36,6 +36,8 @@ import javax.mail.Flags; import org.apache.commons.lang.NotImplementedException; import org.apache.james.mailbox.MessageUid; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.TestId; @@ -80,6 +82,15 @@ public class SimpleMailboxMembership implements MailboxMessage { setFlags(flags); } + @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(modSeq) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(mailboxId, getMessageId(), uid)) + .build(); + } + public Date getInternalDate() { return internalDate; } http://git-wip-us.apache.org/repos/asf/james-project/blob/b868488a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java index 8d76ccc..2f1d3db 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java @@ -30,6 +30,8 @@ import javax.mail.Flags; import javax.mail.util.SharedByteArrayInputStream; import org.apache.james.mailbox.MessageUid; +import org.apache.james.mailbox.model.ComposedMessageId; +import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageAttachment; @@ -83,6 +85,15 @@ public class ListMessageAssertTest { final Date internalDate, final String content, final int bodyStart, final PropertyBuilder propertyBuilder) { return new MailboxMessage() { @Override + public ComposedMessageIdWithMetaData getComposedMessageIdWithMetaData() { + return ComposedMessageIdWithMetaData.builder() + .modSeq(getModSeq()) + .flags(createFlags()) + .composedMessageId(new ComposedMessageId(mailboxId, getMessageId(), uid)) + .build(); + } + + @Override public MailboxId getMailboxId() { return mailboxId; } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org