JAMES-1945 Use FirstUnseenDAO for retrieving first unseen message in 
CassandraMessageMapper

Test suite already convers :
 - First unseen on MessageMapper
 - Comination between MessageIdManager and MessageManager


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

Branch: refs/heads/master
Commit: 6b5d52789815826bc1ae5f7a86888de659a2a614
Parents: 72bb769
Author: benwa <[email protected]>
Authored: Tue Feb 21 17:20:35 2017 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Tue Feb 21 16:41:55 2017 +0100

----------------------------------------------------------------------
 .../CassandraMailboxSessionMapperFactory.java     |  2 +-
 .../cassandra/mail/CassandraMessageMapper.java    | 18 +++++++-----------
 2 files changed, 8 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6b5d5278/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
index 927bee5..3172410 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
@@ -102,7 +102,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
     @Override
     public CassandraMessageMapper createMessageMapper(MailboxSession 
mailboxSession) {
         return new CassandraMessageMapper(uidProvider, modSeqProvider, null, 
maxRetry, createAttachmentMapper(mailboxSession),
-                messageDAO, messageIdDAO, imapUidDAO, mailboxCounterDAO, 
mailboxRecentsDAO, indexTableHandler);
+                messageDAO, messageIdDAO, imapUidDAO, mailboxCounterDAO, 
mailboxRecentsDAO, indexTableHandler, firstUnseenDAO);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/6b5d5278/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 c43f26b..c81ed79 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
@@ -82,11 +82,13 @@ public class CassandraMessageMapper implements 
MessageMapper {
     private final CassandraMailboxCounterDAO mailboxCounterDAO;
     private final CassandraMailboxRecentsDAO mailboxRecentDAO;
     private final CassandraIndexTableHandler indexTableHandler;
+    private final CassandraFirstUnseenDAO firstUnseenDAO;
 
     public CassandraMessageMapper(UidProvider uidProvider, ModSeqProvider 
modSeqProvider,
                                   MailboxSession mailboxSession, int 
maxRetries, AttachmentMapper attachmentMapper,
                                   CassandraMessageDAO messageDAO, 
CassandraMessageIdDAO messageIdDAO, CassandraMessageIdToImapUidDAO imapUidDAO,
-                                  CassandraMailboxCounterDAO 
mailboxCounterDAO, CassandraMailboxRecentsDAO mailboxRecentDAO, 
CassandraIndexTableHandler indexTableHandler) {
+                                  CassandraMailboxCounterDAO 
mailboxCounterDAO, CassandraMailboxRecentsDAO mailboxRecentDAO,
+                                  CassandraIndexTableHandler 
indexTableHandler, CassandraFirstUnseenDAO firstUnseenDAO) {
         this.uidProvider = uidProvider;
         this.modSeqProvider = modSeqProvider;
         this.mailboxSession = mailboxSession;
@@ -98,6 +100,7 @@ public class CassandraMessageMapper implements MessageMapper 
{
         this.mailboxCounterDAO = mailboxCounterDAO;
         this.mailboxRecentDAO = mailboxRecentDAO;
         this.indexTableHandler = indexTableHandler;
+        this.firstUnseenDAO = firstUnseenDAO;
     }
 
     @Override
@@ -188,14 +191,9 @@ public class CassandraMessageMapper implements 
MessageMapper {
     @Override
     public MessageUid findFirstUnseenMessageUid(Mailbox mailbox) throws 
MailboxException {
         CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
-        return retrieveMessages(retrieveMessageIds(mailboxId, 
MessageRange.all()), FetchType.Metadata, Optional.empty())
-                .filter(message -> !message.isSeen())
-                .flatMap(message -> imapUidDAO.retrieve((CassandraMessageId) 
message.getMessageId(), Optional.ofNullable(mailboxId)).join())
-                .map(ComposedMessageIdWithMetaData::getComposedMessageId)
-                .map(ComposedMessageId::getUid)
-                .sorted()
-                .findFirst()
-                .orElse(null);
+        return firstUnseenDAO.retrieveFirstUnread(mailboxId)
+            .join()
+            .orElse(null);
     }
 
     @Override
@@ -238,8 +236,6 @@ public class CassandraMessageMapper implements 
MessageMapper {
         return new SimpleMessageMetaData(message);
     }
 
-
-
     @Override
     public Iterator<UpdatedFlags> updateFlags(Mailbox mailbox, 
FlagsUpdateCalculator flagUpdateCalculator, MessageRange set) throws 
MailboxException {
         CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to