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 ad...@apache.org on 2017/01/18 07:51:57 UTC

[3/8] james-project git commit: MAILBOX-285 Allow duplicates in mailboxId argument of CassandraMessageIdMapper

MAILBOX-285 Allow duplicates in mailboxId argument of CassandraMessageIdMapper


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

Branch: refs/heads/master
Commit: 040c1b52f87216a117f315ffcdc62f73f516f31c
Parents: 0944974
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Jan 11 14:28:55 2017 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Jan 17 10:44:40 2017 +0700

----------------------------------------------------------------------
 .../mail/CassandraMessageIdMapper.java          |  1 +
 .../store/mail/model/MessageIdMapperTest.java   | 23 ++++++++++++++++++++
 2 files changed, 24 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/040c1b52/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index ea4c27d..b3a2e07 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -211,6 +211,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
         CassandraMessageId cassandraMessageId = (CassandraMessageId) messageId;
 
         return mailboxIds.stream()
+            .distinct()
             .map(mailboxId -> (CassandraId) mailboxId)
             .flatMap(mailboxId -> imapUidDAO.retrieve(cassandraMessageId, Optional.of(mailboxId)).join())
             .map(composedMessageId -> flagsUpdateWithRetry(newState, updateMode, composedMessageId))

http://git-wip-us.apache.org/repos/asf/james-project/blob/040c1b52/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 55db651..09d3960 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -572,6 +572,29 @@ public class MessageIdMapperTest<T extends MapperProvider> {
     }
 
     @ContractTest
+    public void setFlagsShouldWorkWhenCalledOnDuplicatedMailbox() throws Exception {
+        message1.setUid(mapperProvider.generateMessageUid());
+        message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        sut.save(message1);
+        message2.setUid(mapperProvider.generateMessageUid());
+        message2.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        sut.save(message2);
+        message3.setUid(mapperProvider.generateMessageUid());
+        message3.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        sut.save(message3);
+        message4.setUid(mapperProvider.generateMessageUid());
+        message4.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        sut.save(message4);
+
+        MessageId messageId = message1.getMessageId();
+        sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId(), message1.getMailboxId()), new Flags(Flag.ANSWERED), FlagsUpdateMode.ADD);
+
+        List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), MessageMapper.FetchType.Body);
+        assertThat(messages).hasSize(1);
+        assertThat(messages.get(0).isAnswered()).isTrue();
+    }
+
+    @ContractTest
     public void countMessageShouldReturnWhenCreateNewMessage() throws Exception {
         message1.setUid(mapperProvider.generateMessageUid());
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));


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