You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2017/08/17 11:20:13 UTC

[1/4] james-project git commit: JAMES-2123 Avoid a read before moving out messages

Repository: james-project
Updated Branches:
  refs/heads/master 6bd459a86 -> dcca8fcc8


JAMES-2123 Avoid a read before moving out messages

This read was failing in case of denormalization issues, leading to impossible to move messages


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

Branch: refs/heads/master
Commit: c3bae34853acebad589c5a9dc3a7b59a28c2fca9
Parents: 34d6302
Author: benwa <bt...@linagora.com>
Authored: Thu Aug 17 08:46:28 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 17 11:04:52 2017 +0700

----------------------------------------------------------------------
 .../mailbox/cassandra/mail/CassandraMessageMapper.java | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c3bae348/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 e782127..0bad299 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
@@ -39,9 +39,9 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.utils.Limit;
 import org.apache.james.mailbox.cassandra.mail.migration.V1ToV2Migration;
 import org.apache.james.mailbox.cassandra.mail.utils.FlagsUpdateStageResult;
+import org.apache.james.mailbox.cassandra.mail.utils.Limit;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
@@ -246,10 +246,15 @@ 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();
+
         MessageMetaData messageMetaData = copy(destinationMailbox, original);
-        retrieveMessageId(originalMailboxId, original)
-            .thenCompose(optional -> optional.map(this::deleteUsingMailboxId).orElse(CompletableFuture.completedFuture(null)))
-            .join();
+        deleteUsingMailboxId(composedMessageIdWithMetaData).join();
+
         return messageMetaData;
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[2/4] james-project git commit: JAMES-2123 Avoid a read before deleting out messages

Posted by ma...@apache.org.
JAMES-2123 Avoid a read before deleting out messages

This read was failing in case of denormalization issues, leading to impossible to move messages


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

Branch: refs/heads/master
Commit: 219eb4ec2c2b01b876682b645a719c5d9a9298d0
Parents: c3bae34
Author: benwa <bt...@linagora.com>
Authored: Thu Aug 17 08:48:14 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 17 11:05:02 2017 +0700

----------------------------------------------------------------------
 .../cassandra/mail/CassandraMessageMapper.java       | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/219eb4ec/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 0bad299..837a94d 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
@@ -151,10 +151,13 @@ public class CassandraMessageMapper implements MessageMapper {
     }
 
     private CompletableFuture<Void> deleteAsFuture(MailboxMessage message, CassandraId mailboxId) {
-        return messageIdDAO.retrieve(mailboxId, message.getUid())
-            .thenCompose(optional -> optional
-                .map(this::deleteUsingMailboxId)
-                .orElse(CompletableFuture.completedFuture(null)));
+        ComposedMessageIdWithMetaData composedMessageIdWithMetaData = ComposedMessageIdWithMetaData.builder()
+            .composedMessageId(new ComposedMessageId(mailboxId, message.getMessageId(), message.getUid()))
+            .flags(message.createFlags())
+            .modSeq(message.getModSeq())
+            .build();
+
+        return deleteUsingMailboxId(composedMessageIdWithMetaData);
     }
 
     private CompletableFuture<Void> deleteUsingMailboxId(ComposedMessageIdWithMetaData composedMessageIdWithMetaData) {
@@ -168,10 +171,6 @@ public class CassandraMessageMapper implements MessageMapper {
         ).thenCompose(voidValue -> indexTableHandler.updateIndexOnDelete(composedMessageIdWithMetaData, mailboxId));
     }
 
-    private CompletableFuture<Optional<ComposedMessageIdWithMetaData>> retrieveMessageId(CassandraId mailboxId, MailboxMessage message) {
-        return messageIdDAO.retrieve(mailboxId, message.getUid());
-    }
-
     @Override
     public Iterator<MailboxMessage> findInMailbox(Mailbox mailbox, MessageRange messageRange, FetchType ftype, int max) throws MailboxException {
         CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[3/4] james-project git commit: JAMES-2123 MailboxMessage should allow retrieving ComposeId

Posted by ma...@apache.org.
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 <bt...@linagora.com>
Authored: Thu Aug 17 09:34:31 2017 +0700
Committer: benwa <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[4/4] james-project git commit: Merge remote-tracking branch 'linagora/pr/937'

Posted by ma...@apache.org.
Merge remote-tracking branch 'linagora/pr/937'


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

Branch: refs/heads/master
Commit: dcca8fcc803214876499bf2c16ce16c1b7c9b78d
Parents: 6bd459a b868488
Author: Matthieu Baechler <ma...@apache.org>
Authored: Thu Aug 17 13:19:20 2017 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Thu Aug 17 13:19:20 2017 +0200

----------------------------------------------------------------------
 .../cassandra/mail/CassandraMessageMapper.java  | 25 +++++++-------------
 .../mailbox/hbase/mail/HBaseMailboxMessage.java | 11 +++++++++
 .../jcr/mail/model/JCRMailboxMessage.java       | 11 +++++++++
 .../openjpa/AbstractJPAMailboxMessage.java      | 11 +++++++++
 .../mail/model/MaildirMailboxMessage.java       | 11 +++++++++
 .../mailbox/store/ImmutableMailboxMessage.java  | 11 +++++++++
 .../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, 100 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/dcca8fcc/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org