This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 518e6b27a7fb4dc880ebd722e0c70454baaeb87d
Author: Benoit Tellier <[email protected]>
AuthorDate: Tue Oct 20 15:25:05 2020 +0700

    JAMES-3430 Use CassandraMessageDAOV3 in mappers
    
    Fallback to CassandraMessageDAO
---
 .../CassandraMailboxSessionMapperFactory.java      | 10 +++++---
 .../mailbox/cassandra/DeleteMessageListener.java   | 14 +++++++---
 .../cassandra/mail/CassandraMessageDAOV3.java      | 30 +++++++++++-----------
 .../cassandra/mail/CassandraMessageIdMapper.java   |  9 ++++---
 .../cassandra/mail/CassandraMessageMapper.java     | 14 ++++++----
 .../cassandra/CassandraMailboxManagerTest.java     |  6 ++---
 .../CassandraSubscriptionManagerTest.java          |  3 +++
 .../mail/CassandraMessageIdMapperTest.java         |  2 +-
 .../cassandra/mail/CassandraMessageMapperTest.java |  4 +--
 .../tools/indexer/CassandraReIndexerImplTest.java  |  2 +-
 10 files changed, 57 insertions(+), 37 deletions(-)

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 f0e5609..26a8a04 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
@@ -44,6 +44,7 @@ import 
org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathV2DAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathV3DAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV3;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
@@ -75,6 +76,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
     private final CassandraUidProvider uidProvider;
     private final CassandraModSeqProvider modSeqProvider;
     private final CassandraMessageDAO messageDAO;
+    private final CassandraMessageDAOV3 messageDAOV3;
     private final CassandraMessageIdDAO messageIdDAO;
     private final CassandraMessageIdToImapUidDAO imapUidDAO;
     private final CassandraMailboxCounterDAO mailboxCounterDAO;
@@ -101,7 +103,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
     @Inject
     public CassandraMailboxSessionMapperFactory(CassandraUidProvider 
uidProvider, CassandraModSeqProvider modSeqProvider, Session session,
                                                 CassandraMessageDAO messageDAO,
-                                                CassandraMessageIdDAO 
messageIdDAO, CassandraMessageIdToImapUidDAO imapUidDAO,
+                                                CassandraMessageDAOV3 
messageDAOV3, CassandraMessageIdDAO messageIdDAO, 
CassandraMessageIdToImapUidDAO imapUidDAO,
                                                 CassandraMailboxCounterDAO 
mailboxCounterDAO, CassandraMailboxRecentsDAO mailboxRecentsDAO, 
CassandraMailboxDAO mailboxDAO,
                                                 CassandraMailboxPathDAOImpl 
mailboxPathDAO, CassandraMailboxPathV2DAO mailboxPathV2DAO, 
CassandraMailboxPathV3DAO mailboxPathV3DAO, CassandraFirstUnseenDAO 
firstUnseenDAO, CassandraApplicableFlagDAO applicableFlagDAO,
                                                 CassandraAttachmentDAOV2 
attachmentDAOV2, CassandraDeletedMessageDAO deletedMessageDAO,
@@ -115,6 +117,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
         this.modSeqProvider = modSeqProvider;
         this.session = session;
         this.messageDAO = messageDAO;
+        this.messageDAOV3 = messageDAOV3;
         this.messageIdDAO = messageIdDAO;
         this.imapUidDAO = imapUidDAO;
         this.mailboxCounterDAO = mailboxCounterDAO;
@@ -151,6 +154,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
                                           modSeqProvider,
                                           
createAttachmentMapper(mailboxSession),
                                           messageDAO,
+                                          messageDAOV3,
                                           messageIdDAO,
                                           imapUidDAO,
                                           mailboxCounterDAO,
@@ -166,7 +170,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
     public MessageIdMapper createMessageIdMapper(MailboxSession 
mailboxSession) {
         return new CassandraMessageIdMapper(getMailboxMapper(mailboxSession), 
mailboxDAO,
                 createAttachmentMapper(mailboxSession),
-                imapUidDAO, messageIdDAO, messageDAO, indexTableHandler, 
modSeqProvider,
+                imapUidDAO, messageIdDAO, messageDAO, messageDAOV3, 
indexTableHandler, modSeqProvider,
                 cassandraConfiguration);
     }
 
@@ -211,7 +215,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
     }
 
     public DeleteMessageListener deleteMessageListener() {
-        return new DeleteMessageListener(imapUidDAO, messageIdDAO, messageDAO, 
attachmentDAOV2, ownerDAO,
+        return new DeleteMessageListener(imapUidDAO, messageIdDAO, messageDAO, 
messageDAOV3, attachmentDAOV2, ownerDAO,
             attachmentMessageIdDAO, aclMapper, userMailboxRightsDAO, 
applicableFlagDAO, firstUnseenDAO, deletedMessageDAO,
             mailboxCounterDAO, mailboxRecentsDAO, blobStore);
     }
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java
index fa70727..fc37174 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java
@@ -40,6 +40,7 @@ import 
org.apache.james.mailbox.cassandra.mail.CassandraFirstUnseenDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV3;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraUserMailboxRightsDAO;
@@ -79,6 +80,7 @@ public class DeleteMessageListener implements 
MailboxListener.GroupMailboxListen
     private final CassandraMessageIdToImapUidDAO imapUidDAO;
     private final CassandraMessageIdDAO messageIdDAO;
     private final CassandraMessageDAO messageDAO;
+    private final CassandraMessageDAOV3 messageDAOV3;
     private final CassandraAttachmentDAOV2 attachmentDAO;
     private final CassandraAttachmentOwnerDAO ownerDAO;
     private final CassandraAttachmentMessageIdDAO attachmentMessageIdDAO;
@@ -93,13 +95,14 @@ public class DeleteMessageListener implements 
MailboxListener.GroupMailboxListen
 
     @Inject
     public DeleteMessageListener(CassandraMessageIdToImapUidDAO imapUidDAO, 
CassandraMessageIdDAO messageIdDAO, CassandraMessageDAO messageDAO,
-                                 CassandraAttachmentDAOV2 attachmentDAO, 
CassandraAttachmentOwnerDAO ownerDAO,
+                                 CassandraMessageDAOV3 messageDAOV3, 
CassandraAttachmentDAOV2 attachmentDAO, CassandraAttachmentOwnerDAO ownerDAO,
                                  CassandraAttachmentMessageIdDAO 
attachmentMessageIdDAO, CassandraACLMapper aclMapper,
                                  CassandraUserMailboxRightsDAO rightsDAO, 
CassandraApplicableFlagDAO applicableFlagDAO,
                                  CassandraFirstUnseenDAO firstUnseenDAO, 
CassandraDeletedMessageDAO deletedMessageDAO, CassandraMailboxCounterDAO 
counterDAO, CassandraMailboxRecentsDAO recentsDAO, BlobStore blobStore) {
         this.imapUidDAO = imapUidDAO;
         this.messageIdDAO = messageIdDAO;
         this.messageDAO = messageDAO;
+        this.messageDAOV3 = messageDAOV3;
         this.attachmentDAO = attachmentDAO;
         this.ownerDAO = ownerDAO;
         this.attachmentMessageIdDAO = attachmentMessageIdDAO;
@@ -180,7 +183,8 @@ public class DeleteMessageListener implements 
MailboxListener.GroupMailboxListen
                 .flatMap(message -> 
deleteUnreferencedAttachments(message).thenReturn(message))
                 .flatMap(this::deleteMessageBlobs)
                 .flatMap(this::deleteAttachmentMessageIds)
-                .then(messageDAO.delete(messageId)));
+                .then(messageDAO.delete(messageId))
+                .then(messageDAOV3.delete(messageId)));
     }
 
     private Mono<Void> 
handleMessageDeletionAsPartOfMailboxDeletion(CassandraMessageId messageId, 
CassandraId excludedId) {
@@ -190,7 +194,8 @@ public class DeleteMessageListener implements 
MailboxListener.GroupMailboxListen
                 .flatMap(message -> 
deleteUnreferencedAttachments(message).thenReturn(message))
                 .flatMap(this::deleteMessageBlobs)
                 .flatMap(this::deleteAttachmentMessageIds)
-                .then(messageDAO.delete(messageId)));
+                .then(messageDAO.delete(messageId))
+                .then(messageDAOV3.delete(messageId)));
     }
 
     private Mono<MessageRepresentation> 
deleteMessageBlobs(MessageRepresentation message) {
@@ -202,7 +207,8 @@ public class DeleteMessageListener implements 
MailboxListener.GroupMailboxListen
     }
 
     private Mono<MessageRepresentation> readMessage(CassandraMessageId id) {
-        return messageDAO.retrieveMessage(id, 
MessageMapper.FetchType.Metadata);
+        return messageDAOV3.retrieveMessage(id, 
MessageMapper.FetchType.Metadata)
+            .switchIfEmpty(messageDAO.retrieveMessage(id, 
MessageMapper.FetchType.Metadata));
     }
 
     private Mono<Void> deleteUnreferencedAttachments(MessageRepresentation 
message) {
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java
index dc1b1c0..2c6b5ae 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV3.java
@@ -70,6 +70,7 @@ import 
org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
 import org.apache.james.mailbox.model.MessageAttachmentMetadata;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.mailbox.store.mail.model.impl.Properties;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 
 import com.datastax.driver.core.BoundStatement;
@@ -174,7 +175,6 @@ public class CassandraMessageDAOV3 {
 
     private BoundStatement boundWriteStatement(MailboxMessage message, 
Tuple2<BlobId, BlobId> pair) {
         CassandraMessageId messageId = (CassandraMessageId) 
message.getMessageId();
-        PropertyBuilder propertyBuilder = new 
PropertyBuilder(message.getProperties());
         return insert.bind()
             .setUUID(MESSAGE_ID, messageId.get())
             .setTimestamp(INTERNAL_DATE, message.getInternalDate())
@@ -184,17 +184,17 @@ public class CassandraMessageDAOV3 {
             .setString(BODY_CONTENT, pair.getT2().asString())
             .setString(HEADER_CONTENT, pair.getT1().asString())
             .setLong(TEXTUAL_LINE_COUNT, 
Optional.ofNullable(message.getTextualLineCount()).orElse(DEFAULT_LONG_VALUE))
-            .setString(CONTENT_DESCRIPTION, 
propertyBuilder.getContentDescription())
-            .setString(CONTENT_DISPOSITION_TYPE, 
propertyBuilder.getContentDispositionType())
-            .setString(MEDIA_TYPE, propertyBuilder.getMediaType())
-            .setString(SUB_TYPE, propertyBuilder.getSubType())
-            .setString(CONTENT_ID, propertyBuilder.getContentID())
-            .setString(CONTENT_MD5, propertyBuilder.getContentMD5())
-            .setString(CONTENT_TRANSFER_ENCODING, 
propertyBuilder.getContentTransferEncoding())
-            .setString(CONTENT_LOCATION, propertyBuilder.getContentLocation())
-            .setList(CONTENT_LANGUAGE, propertyBuilder.getContentLanguage())
-            .setMap(CONTENT_DISPOSITION_PARAMETERS, 
propertyBuilder.getContentDispositionParameters())
-            .setMap(CONTENT_TYPE_PARAMETERS, 
propertyBuilder.getContentTypeParameters())
+            .setString(CONTENT_DESCRIPTION, 
message.getProperties().getContentDescription())
+            .setString(CONTENT_DISPOSITION_TYPE, 
message.getProperties().getContentDispositionType())
+            .setString(MEDIA_TYPE, message.getProperties().getMediaType())
+            .setString(SUB_TYPE, message.getProperties().getSubType())
+            .setString(CONTENT_ID, message.getProperties().getContentID())
+            .setString(CONTENT_MD5, message.getProperties().getContentMD5())
+            .setString(CONTENT_TRANSFER_ENCODING, 
message.getProperties().getContentTransferEncoding())
+            .setString(CONTENT_LOCATION, 
message.getProperties().getContentLocation())
+            .setList(CONTENT_LANGUAGE, 
message.getProperties().getContentLanguage())
+            .setMap(CONTENT_DISPOSITION_PARAMETERS, 
message.getProperties().getContentDispositionParameters())
+            .setMap(CONTENT_TYPE_PARAMETERS, 
message.getProperties().getContentTypeParameters())
             .setList(ATTACHMENTS, buildAttachmentUdt(message));
     }
 
@@ -251,13 +251,13 @@ public class CassandraMessageDAOV3 {
                 row.getLong(FULL_CONTENT_OCTETS),
                 row.getInt(BODY_START_OCTET),
                 new SharedByteArrayInputStream(content),
-                getPropertyBuilder(row),
+                getProperties(row),
                 getAttachments(row).collect(Guavate.toImmutableList()),
                 headerId,
                 bodyId));
     }
 
-    private PropertyBuilder getPropertyBuilder(Row row) {
+    private Properties getProperties(Row row) {
         PropertyBuilder property = new PropertyBuilder();
         property.setContentDescription(row.getString(CONTENT_DESCRIPTION));
         
property.setContentDispositionType(row.getString(CONTENT_DISPOSITION_TYPE));
@@ -271,7 +271,7 @@ public class CassandraMessageDAOV3 {
         
property.setContentDispositionParameters(row.getMap(CONTENT_DISPOSITION_PARAMETERS,
 String.class, String.class));
         property.setContentTypeParameters(row.getMap(CONTENT_TYPE_PARAMETERS, 
String.class, String.class));
         property.setTextualLineCount(row.getLong(TEXTUAL_LINE_COUNT));
-        return property;
+        return property.build();
     }
 
     private Stream<MessageAttachmentRepresentation> getAttachments(Row row) {
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 7c09008..e9cc5eb 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
@@ -72,6 +72,7 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
     private final CassandraMessageIdToImapUidDAO imapUidDAO;
     private final CassandraMessageIdDAO messageIdDAO;
     private final CassandraMessageDAO messageDAO;
+    private final CassandraMessageDAOV3 messageDAOV3;
     private final CassandraIndexTableHandler indexTableHandler;
     private final ModSeqProvider modSeqProvider;
     private final AttachmentLoader attachmentLoader;
@@ -79,7 +80,7 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
 
     public CassandraMessageIdMapper(MailboxMapper mailboxMapper, 
CassandraMailboxDAO mailboxDAO, CassandraAttachmentMapper attachmentMapper,
                                     CassandraMessageIdToImapUidDAO imapUidDAO, 
CassandraMessageIdDAO messageIdDAO,
-                                    CassandraMessageDAO messageDAO, 
CassandraIndexTableHandler indexTableHandler,
+                                    CassandraMessageDAO messageDAO, 
CassandraMessageDAOV3 messageDAOV3, CassandraIndexTableHandler 
indexTableHandler,
                                     ModSeqProvider modSeqProvider, 
CassandraConfiguration cassandraConfiguration) {
 
         this.mailboxMapper = mailboxMapper;
@@ -87,6 +88,7 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
         this.imapUidDAO = imapUidDAO;
         this.messageIdDAO = messageIdDAO;
         this.messageDAO = messageDAO;
+        this.messageDAOV3 = messageDAOV3;
         this.indexTableHandler = indexTableHandler;
         this.modSeqProvider = modSeqProvider;
         this.attachmentLoader = new AttachmentLoader(attachmentMapper);
@@ -104,7 +106,8 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
     public Flux<MailboxMessage> findReactive(Collection<MessageId> messageIds, 
FetchType fetchType) {
         return Flux.fromIterable(messageIds)
             .flatMap(messageId -> imapUidDAO.retrieve((CassandraMessageId) 
messageId, Optional.empty()), cassandraConfiguration.getMessageReadChunkSize())
-            .flatMap(composedMessageId -> 
messageDAO.retrieveMessage(composedMessageId, fetchType)
+            .flatMap(composedMessageId -> 
messageDAOV3.retrieveMessage(composedMessageId, fetchType)
+                .switchIfEmpty(messageDAO.retrieveMessage(composedMessageId, 
fetchType))
                 .map(messageRepresentation -> Pair.of(composedMessageId, 
messageRepresentation)), cassandraConfiguration.getMessageReadChunkSize())
             .flatMap(messageRepresentation -> 
attachmentLoader.addAttachmentToMessage(messageRepresentation, fetchType), 
cassandraConfiguration.getMessageReadChunkSize())
             .groupBy(MailboxMessage::getMailboxId)
@@ -142,7 +145,7 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
         CassandraId mailboxId = (CassandraId) mailboxMessage.getMailboxId();
         MailboxReactorUtils.block(mailboxMapper.findMailboxById(mailboxId)
             .switchIfEmpty(Mono.error(() -> new 
MailboxNotFoundException(mailboxId)))
-            .then(messageDAO.save(mailboxMessage))
+            .then(messageDAOV3.save(mailboxMessage))
             .thenEmpty(saveMessageMetadata(mailboxMessage, mailboxId)));
     }
 
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 df29d11..84841ac 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
@@ -78,6 +78,7 @@ public class CassandraMessageMapper implements MessageMapper {
     private final CassandraModSeqProvider modSeqProvider;
     private final CassandraUidProvider uidProvider;
     private final CassandraMessageDAO messageDAO;
+    private final CassandraMessageDAOV3 messageDAOV3;
     private final CassandraMessageIdDAO messageIdDAO;
     private final CassandraMessageIdToImapUidDAO imapUidDAO;
     private final CassandraMailboxCounterDAO mailboxCounterDAO;
@@ -93,7 +94,7 @@ public class CassandraMessageMapper implements MessageMapper {
 
     public CassandraMessageMapper(CassandraUidProvider uidProvider, 
CassandraModSeqProvider modSeqProvider,
                                   CassandraAttachmentMapper attachmentMapper,
-                                  CassandraMessageDAO messageDAO, 
CassandraMessageIdDAO messageIdDAO,
+                                  CassandraMessageDAO messageDAO, 
CassandraMessageDAOV3 messageDAOV3, CassandraMessageIdDAO messageIdDAO,
                                   CassandraMessageIdToImapUidDAO imapUidDAO, 
CassandraMailboxCounterDAO mailboxCounterDAO,
                                   CassandraMailboxRecentsDAO mailboxRecentDAO, 
CassandraApplicableFlagDAO applicableFlagDAO,
                                   CassandraIndexTableHandler 
indexTableHandler, CassandraFirstUnseenDAO firstUnseenDAO,
@@ -102,6 +103,7 @@ public class CassandraMessageMapper implements 
MessageMapper {
         this.uidProvider = uidProvider;
         this.modSeqProvider = modSeqProvider;
         this.messageDAO = messageDAO;
+        this.messageDAOV3 = messageDAOV3;
         this.messageIdDAO = messageIdDAO;
         this.imapUidDAO = imapUidDAO;
         this.mailboxCounterDAO = mailboxCounterDAO;
@@ -229,7 +231,8 @@ public class CassandraMessageMapper implements 
MessageMapper {
     }
 
     private Mono<MailboxMessage> retrieveMessage(ComposedMessageIdWithMetaData 
messageId, FetchType fetchType) {
-        return messageDAO.retrieveMessage(messageId, fetchType)
+        return messageDAOV3.retrieveMessage(messageId, fetchType)
+            .switchIfEmpty(messageDAO.retrieveMessage(messageId, fetchType))
             .flatMap(messageRepresentation -> 
attachmentLoader.addAttachmentToMessage(Pair.of(messageId, 
messageRepresentation), fetchType));
     }
 
@@ -274,8 +277,9 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
     private Mono<SimpleMailboxMessage> 
expungeOne(ComposedMessageIdWithMetaData metaData) {
         return delete(metaData)
-            .then(messageDAO.retrieveMessage(metaData, FetchType.Metadata)
-                .map(pair -> pair.toMailboxMessage(metaData, 
ImmutableList.of())));
+            .then(messageDAOV3.retrieveMessage(metaData, FetchType.Metadata)
+                .switchIfEmpty(messageDAO.retrieveMessage(metaData, 
FetchType.Metadata)))
+            .map(pair -> pair.toMailboxMessage(metaData, ImmutableList.of()));
     }
 
     @Override
@@ -446,7 +450,7 @@ public class CassandraMessageMapper implements 
MessageMapper {
 
     private Mono<Void> save(Mailbox mailbox, MailboxMessage message) throws 
MailboxException {
         CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
-        return messageDAO.save(message)
+        return messageDAOV3.save(message)
             .thenEmpty(insertIds(message, mailboxId));
     }
 
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index 83e024e..5552bda 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -53,7 +53,7 @@ import 
org.apache.james.mailbox.cassandra.mail.CassandraDeletedMessageDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraFirstUnseenDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV3;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraUserMailboxRightsDAO;
@@ -820,8 +820,8 @@ public class CassandraMailboxManagerTest extends 
MailboxManagerTest<CassandraMai
                 new CassandraMessageId.Factory());
         }
 
-        private CassandraMessageDAO messageDAO(CassandraCluster 
cassandraCluster) {
-            return new CassandraMessageDAO(
+        private CassandraMessageDAOV3 messageDAO(CassandraCluster 
cassandraCluster) {
+            return new CassandraMessageDAOV3(
                 cassandraCluster.getConf(),
                 cassandraCluster.getTypesProvider(),
                 mock(BlobStore.class),
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
index 9919308..d5dd72a 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
@@ -40,6 +40,7 @@ import 
org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathV2DAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathV3DAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV3;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
@@ -70,6 +71,7 @@ class CassandraSubscriptionManagerTest implements 
SubscriptionManagerContract {
     void setUp() {
         CassandraMessageIdToImapUidDAO imapUidDAO = null;
         CassandraMessageDAO messageDAO = null;
+        CassandraMessageDAOV3 messageDAOV3 = null;
         CassandraMessageIdDAO messageIdDAO = null;
         CassandraMailboxCounterDAO mailboxCounterDAO = null;
         CassandraMailboxRecentsDAO mailboxRecentsDAO = null;
@@ -97,6 +99,7 @@ class CassandraSubscriptionManagerTest implements 
SubscriptionManagerContract {
                 modSeqProvider,
                 cassandraCluster.getCassandraCluster().getConf(),
                 messageDAO,
+                messageDAOV3,
                 messageIdDAO,
                 imapUidDAO,
                 mailboxCounterDAO,
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
index fb69a32..d031a38 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
@@ -122,7 +122,7 @@ class CassandraMessageIdMapperTest extends 
MessageIdMapperTest {
             cassandra.getConf()
                 .registerScenario(fail()
                     .forever()
-                    .whenQueryStartsWith("INSERT INTO messageV2 
(messageId,internalDate,bodyStartOctet,fullContentOctets,bodyOctets,bodyContent,headerContent,properties,textualLineCount,attachments)"));
+                    .whenQueryStartsWith("INSERT INTO messageV3"));
 
             try {
                 message1.setUid(mapperProvider.generateMessageUid());
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index 20de2e5..f7a5d7d 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -198,7 +198,7 @@ class CassandraMessageMapperTest extends MessageMapperTest {
 
 
             
assertThat(statementRecorder.listExecutedStatements(Selector.preparedStatement(
-                "SELECT * FROM messageV2 WHERE messageId=:messageId;")))
+                "SELECT * FROM messageV3 WHERE messageId=:messageId;")))
                 .hasSize(limit);
         }
 
@@ -228,7 +228,7 @@ class CassandraMessageMapperTest extends MessageMapperTest {
             cassandra.getConf()
                 .registerScenario(fail()
                     .forever()
-                    .whenQueryStartsWith("INSERT INTO messageV2 
(messageId,internalDate,bodyStartOctet,fullContentOctets,bodyOctets,bodyContent,headerContent,properties,textualLineCount,attachments)"));
+                    .whenQueryStartsWith("INSERT INTO messageV3"));
 
             try {
                 messageMapper.add(benwaInboxMailbox, message1);
diff --git 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
index cbf263e..a2f0c08 100644
--- 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
+++ 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
@@ -318,7 +318,7 @@ public class CassandraReIndexerImplTest {
             cassandra.getConf()
                 .registerScenario(fail()
                     .forever()
-                    .whenQueryStartsWith("SELECT * FROM messageV2 WHERE 
messageId=:messageId;"));
+                    .whenQueryStartsWith("SELECT * FROM messageV3 WHERE 
messageId=:messageId;"));
 
             Task task = reIndexer.reIndex(ReIndexer.RunningOptions.DEFAULT);
             task.run();


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

Reply via email to