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 bt...@apache.org on 2017/08/22 03:32:02 UTC

[7/9] james-project git commit: JAMES-2111 Remove Message V1 related code

JAMES-2111 Remove Message V1 related code

A new schema version 3 is created with table Message


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

Branch: refs/heads/master
Commit: 4e0f131028a608dbe2e53ad932f7a2ecc340cc4e
Parents: 55300fe
Author: benwa <bt...@linagora.com>
Authored: Fri Aug 18 09:08:57 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Aug 22 10:31:07 2017 +0700

----------------------------------------------------------------------
 .../versions/CassandraSchemaVersionManager.java |   6 +-
 .../CassandraMailboxSessionMapperFactory.java   |  22 +-
 .../cassandra/mail/CassandraMessageDAO.java     | 418 -------------------
 .../cassandra/mail/CassandraMessageDAOV2.java   |  43 +-
 .../mail/CassandraMessageIdMapper.java          |  22 +-
 .../cassandra/mail/CassandraMessageMapper.java  |  27 +-
 .../mail/migration/V1ToV2Migration.java         | 154 -------
 .../mail/migration/V1ToV2MigrationThread.java   |  96 -----
 .../modules/CassandraMessageModule.java         |  39 +-
 .../table/CassandraMessageV1Table.java          |  54 ---
 .../CassandraMailboxManagerProvider.java        |   3 -
 .../CassandraSubscriptionManagerTest.java       |   5 +-
 .../cassandra/CassandraTestSystemFixture.java   |   5 +-
 .../CassandraMailboxManagerAttachmentTest.java  |   4 +-
 .../cassandra/mail/CassandraMapperProvider.java |   4 +-
 .../cassandra/mail/CassandraMessageDAOTest.java | 166 --------
 .../mail/migration/V1ToV2MigrationTest.java     | 304 --------------
 .../cassandra/host/CassandraHostSystem.java     |   5 +-
 .../modules/mailbox/CassandraMailboxModule.java |   2 -
 .../modules/server/CassandraRoutesModule.java   |   9 +-
 20 files changed, 44 insertions(+), 1344 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java
index 45fa2a2..79072b7 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionManager.java
@@ -33,9 +33,9 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 
 public class CassandraSchemaVersionManager {
-    public static final int MIN_VERSION = 1;
-    public static final int MAX_VERSION = 2;
-    public static final int DEFAULT_VERSION = 1;
+    public static final int MIN_VERSION = 2;
+    public static final int MAX_VERSION = 3;
+    public static final int DEFAULT_VERSION = 2;
 
     private static final Logger LOGGER = LoggerFactory.getLogger(CassandraSchemaVersionManager.class);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/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 cabd043..e02d5cd 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
@@ -27,6 +27,7 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.cassandra.mail.CassandraAnnotationMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentMapper;
+import org.apache.james.mailbox.cassandra.mail.CassandraDeletedMessageDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraFirstUnseenDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraIndexTableHandler;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
@@ -34,15 +35,13 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV2;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
-import org.apache.james.mailbox.cassandra.mail.*;
-import org.apache.james.mailbox.cassandra.mail.migration.V1ToV2Migration;
 import org.apache.james.mailbox.cassandra.user.CassandraSubscriptionMapper;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
@@ -64,7 +63,6 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
     private final Session session;
     private final CassandraUidProvider uidProvider;
     private final CassandraModSeqProvider modSeqProvider;
-    private final CassandraMessageDAO messageDAO;
     private final CassandraMessageDAOV2 messageDAOV2;
     private final CassandraMessageIdDAO messageIdDAO;
     private final CassandraMessageIdToImapUidDAO imapUidDAO;
@@ -75,22 +73,20 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
     private final CassandraMailboxPathDAO mailboxPathDAO;
     private final CassandraFirstUnseenDAO firstUnseenDAO;
     private final CassandraApplicableFlagDAO applicableFlagDAO;
-    private final V1ToV2Migration v1ToV2Migration;
     private CassandraUtils cassandraUtils;
     private CassandraConfiguration cassandraConfiguration;
     private final CassandraDeletedMessageDAO deletedMessageDAO;
 
     @Inject
     public CassandraMailboxSessionMapperFactory(CassandraUidProvider uidProvider, CassandraModSeqProvider modSeqProvider, Session session,
-                                                CassandraMessageDAO messageDAO, CassandraMessageDAOV2 messageDAOV2,
+                                                CassandraMessageDAOV2 messageDAOV2,
                                                 CassandraMessageIdDAO messageIdDAO, CassandraMessageIdToImapUidDAO imapUidDAO,
                                                 CassandraMailboxCounterDAO mailboxCounterDAO, CassandraMailboxRecentsDAO mailboxRecentsDAO, CassandraMailboxDAO mailboxDAO,
                                                 CassandraMailboxPathDAO mailboxPathDAO, CassandraFirstUnseenDAO firstUnseenDAO, CassandraApplicableFlagDAO applicableFlagDAO,
-                                                CassandraDeletedMessageDAO deletedMessageDAO, V1ToV2Migration v1ToV2Migration, CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) {
+                                                CassandraDeletedMessageDAO deletedMessageDAO, CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) {
         this.uidProvider = uidProvider;
         this.modSeqProvider = modSeqProvider;
         this.session = session;
-        this.messageDAO = messageDAO;
         this.messageDAOV2 = messageDAOV2;
         this.messageIdDAO = messageIdDAO;
         this.imapUidDAO = imapUidDAO;
@@ -109,14 +105,12 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
             firstUnseenDAO,
             applicableFlagDAO,
             deletedMessageDAO);
-        this.v1ToV2Migration = v1ToV2Migration;
     }
 
     public CassandraMailboxSessionMapperFactory(
         CassandraUidProvider uidProvider,
         CassandraModSeqProvider modSeqProvider,
         Session session,
-        CassandraMessageDAO messageDAO,
         CassandraMessageDAOV2 messageDAOV2,
         CassandraMessageIdDAO messageIdDAO,
         CassandraMessageIdToImapUidDAO imapUidDAO,
@@ -128,9 +122,8 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
         CassandraApplicableFlagDAO applicableFlagDAO,
         CassandraDeletedMessageDAO deletedMesageDAO) {
 
-        this(uidProvider, modSeqProvider, session, messageDAO, messageDAOV2, messageIdDAO, imapUidDAO, mailboxCounterDAO,
+        this(uidProvider, modSeqProvider, session, messageDAOV2, messageIdDAO, imapUidDAO, mailboxCounterDAO,
             mailboxRecentsDAO, mailboxDAO, mailboxPathDAO, firstUnseenDAO, applicableFlagDAO, deletedMesageDAO,
-            new V1ToV2Migration(messageDAO, messageDAOV2, new CassandraAttachmentMapper(session), CassandraConfiguration.DEFAULT_CONFIGURATION),
             CassandraUtils.WITH_DEFAULT_CONFIGURATION, CassandraConfiguration.DEFAULT_CONFIGURATION);
     }
 
@@ -150,7 +143,6 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
                                           indexTableHandler,
                                           firstUnseenDAO,
                                           deletedMessageDAO,
-                                          v1ToV2Migration,
                                           cassandraConfiguration);
     }
 
@@ -158,8 +150,8 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
     public MessageIdMapper createMessageIdMapper(MailboxSession mailboxSession) throws MailboxException {
         return new CassandraMessageIdMapper(getMailboxMapper(mailboxSession), mailboxDAO,
                 (CassandraAttachmentMapper) getAttachmentMapper(mailboxSession),
-                imapUidDAO, messageIdDAO, messageDAO, messageDAOV2, indexTableHandler, modSeqProvider, mailboxSession,
-                v1ToV2Migration, cassandraConfiguration);
+                imapUidDAO, messageIdDAO, messageDAOV2, indexTableHandler, modSeqProvider, mailboxSession,
+                cassandraConfiguration);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
deleted file mode 100644
index 35c6a3f..0000000
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
+++ /dev/null
@@ -1,418 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailbox.cassandra.mail;
-
-import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageIds.MESSAGE_ID;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.ATTACHMENTS;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.BODY;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.BODY_CONTENT;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.BODY_OCTECTS;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.BODY_START_OCTET;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.FIELDS;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.FULL_CONTENT_OCTETS;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.HEADERS;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.HEADER_CONTENT;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.INTERNAL_DATE;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.METADATA;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.PROPERTIES;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.TABLE_NAME;
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.TEXTUAL_LINE_COUNT;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import javax.inject.Inject;
-import javax.mail.util.SharedByteArrayInputStream;
-
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
-import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
-import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
-import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.utils.Limit;
-import org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.Attachments;
-import org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table.Properties;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.AttachmentId;
-import org.apache.james.mailbox.model.Cid;
-import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
-import org.apache.james.mailbox.model.MessageId;
-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.PropertyBuilder;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleProperty;
-import org.apache.james.util.CompletableFutureUtil;
-import org.apache.james.util.FluentFutureStream;
-import org.apache.james.util.OptionalConverter;
-import org.apache.james.util.streams.JamesCollectors;
-
-import com.datastax.driver.core.BoundStatement;
-import com.datastax.driver.core.PreparedStatement;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Row;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.UDTValue;
-import com.datastax.driver.core.querybuilder.QueryBuilder;
-import com.github.steveash.guavate.Guavate;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.io.ByteStreams;
-import com.google.common.primitives.Bytes;
-
-public class CassandraMessageDAO {
-    private final CassandraAsyncExecutor cassandraAsyncExecutor;
-    private final CassandraTypesProvider typesProvider;
-    private final PreparedStatement insert;
-    private final PreparedStatement delete;
-    private final PreparedStatement selectMetadata;
-    private final PreparedStatement selectHeaders;
-    private final PreparedStatement selectFields;
-    private final PreparedStatement selectBody;
-    private final PreparedStatement selectByBatch;
-    private CassandraUtils cassandraUtils;
-    private final CassandraConfiguration cassandraConfiguration;
-    private final Cid.CidParser cidParser;
-
-    @Inject
-    public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider, CassandraConfiguration cassandraConfiguration,
-                               CassandraUtils cassandraUtils) {
-        this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
-        this.typesProvider = typesProvider;
-        this.insert = prepareInsert(session);
-        this.delete = prepareDelete(session);
-        this.selectMetadata = prepareSelect(session, METADATA);
-        this.selectHeaders = prepareSelect(session, HEADERS);
-        this.selectFields = prepareSelect(session, FIELDS);
-        this.selectBody = prepareSelect(session, BODY);
-        this.cassandraConfiguration = cassandraConfiguration;
-        this.selectByBatch = prepareSelectBatch(session, cassandraConfiguration);
-        this.cassandraUtils = cassandraUtils;
-        this.cidParser = Cid.parser().relaxed();
-    }
-
-    @VisibleForTesting
-    public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider) {
-        this(session, typesProvider, CassandraConfiguration.DEFAULT_CONFIGURATION, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
-    }
-
-    private PreparedStatement prepareSelectBatch(Session session, CassandraConfiguration cassandraConfiguration) {
-        return session.prepare(select().from(TABLE_NAME)
-            .limit(cassandraConfiguration.getFetchNextPageInAdvanceRow()));
-    }
-
-    private PreparedStatement prepareSelect(Session session, String[] fields) {
-        return session.prepare(select(fields)
-            .from(TABLE_NAME)
-            .where(eq(MESSAGE_ID, bindMarker(MESSAGE_ID))));
-    }
-
-    private PreparedStatement prepareInsert(Session session) {
-        return session.prepare(insertInto(TABLE_NAME)
-                .value(MESSAGE_ID, bindMarker(MESSAGE_ID))
-                .value(INTERNAL_DATE, bindMarker(INTERNAL_DATE))
-                .value(BODY_START_OCTET, bindMarker(BODY_START_OCTET))
-                .value(FULL_CONTENT_OCTETS, bindMarker(FULL_CONTENT_OCTETS))
-                .value(BODY_OCTECTS, bindMarker(BODY_OCTECTS))
-                .value(BODY_CONTENT, bindMarker(BODY_CONTENT))
-                .value(HEADER_CONTENT, bindMarker(HEADER_CONTENT))
-                .value(PROPERTIES, bindMarker(PROPERTIES))
-                .value(TEXTUAL_LINE_COUNT, bindMarker(TEXTUAL_LINE_COUNT))
-                .value(ATTACHMENTS, bindMarker(ATTACHMENTS)));
-    }
-
-    private PreparedStatement prepareDelete(Session session) {
-        return session.prepare(QueryBuilder.delete()
-                .from(TABLE_NAME)
-                .where(eq(MESSAGE_ID, bindMarker(MESSAGE_ID))));
-    }
-
-    public List<RawMessage> readBatch() {
-        return cassandraUtils.convertToStream(
-            cassandraAsyncExecutor.execute(selectByBatch.bind()
-                .setFetchSize(cassandraConfiguration.getV1ReadFetchSize()))
-                .join())
-            .map(this::fromRow)
-            .collect(Guavate.toImmutableList());
-    }
-
-    public CompletableFuture<Void> save(MailboxMessage message) throws MailboxException {
-        try {
-            CassandraMessageId messageId = (CassandraMessageId) message.getMessageId();
-            BoundStatement boundStatement = insert.bind()
-                .setUUID(MESSAGE_ID, messageId.get())
-                .setTimestamp(INTERNAL_DATE, message.getInternalDate())
-                .setInt(BODY_START_OCTET, (int) (message.getHeaderOctets()))
-                .setLong(FULL_CONTENT_OCTETS, message.getFullContentOctets())
-                .setLong(BODY_OCTECTS, message.getBodyOctets())
-                .setBytes(BODY_CONTENT, toByteBuffer(message.getBodyContent()))
-                .setBytes(HEADER_CONTENT, toByteBuffer(message.getHeaderContent()))
-                .setList(PROPERTIES, message.getProperties().stream()
-                    .map(x -> typesProvider.getDefinedUserType(PROPERTIES)
-                        .newValue()
-                        .setString(Properties.NAMESPACE, x.getNamespace())
-                        .setString(Properties.NAME, x.getLocalName())
-                        .setString(Properties.VALUE, x.getValue()))
-                    .collect(Collectors.toList()))
-                .setList(ATTACHMENTS, message.getAttachments().stream()
-                    .map(this::toUDT)
-                    .collect(Collectors.toList()));
-
-            return cassandraAsyncExecutor.executeVoid(setTextualLineCount(boundStatement, message.getTextualLineCount()));
-
-        } catch (IOException e) {
-            throw new MailboxException("Error saving mail", e);
-        }
-    }
-
-    private BoundStatement setTextualLineCount(BoundStatement boundStatement, Long textualLineCount) {
-        return Optional.ofNullable(textualLineCount)
-               .map(value -> boundStatement.setLong(TEXTUAL_LINE_COUNT, value))
-               .orElseGet(() -> boundStatement.setToNull(TEXTUAL_LINE_COUNT));
-    }
-
-    private UDTValue toUDT(org.apache.james.mailbox.model.MessageAttachment messageAttachment) {
-        return typesProvider.getDefinedUserType(ATTACHMENTS)
-            .newValue()
-            .setString(Attachments.ID, messageAttachment.getAttachmentId().getId())
-            .setString(Attachments.NAME, messageAttachment.getName().orNull())
-            .setString(Attachments.CID, messageAttachment.getCid().transform(Cid::getValue).orNull())
-            .setBool(Attachments.IS_INLINE, messageAttachment.isInline());
-    }
-
-    private ByteBuffer toByteBuffer(InputStream stream) throws IOException {
-        return ByteBuffer.wrap(ByteStreams.toByteArray(stream));
-    }
-
-    public CompletableFuture<Stream<Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>>>> retrieveMessages(
-        List<ComposedMessageIdWithMetaData> messageIds,
-        FetchType fetchType,
-        Limit limit
-    ) {
-        return CompletableFutureUtil.chainAll(
-            limit.applyOnStream(messageIds.stream().distinct())
-                .collect(JamesCollectors.chunker(cassandraConfiguration.getMessageReadChunkSize())),
-            ids -> FluentFutureStream.of(
-                ids.stream()
-                    .map(id -> retrieveRow(id, fetchType)
-                        .thenApply((ResultSet resultSet) ->
-                            message(resultSet.one(), id, fetchType))))
-                .completableFuture())
-            .thenApply(stream -> stream.flatMap(Function.identity()));
-    }
-
-    private CompletableFuture<ResultSet> retrieveRow(ComposedMessageIdWithMetaData messageId, FetchType fetchType) {
-        CassandraMessageId cassandraMessageId = (CassandraMessageId) messageId.getComposedMessageId().getMessageId();
-
-        return cassandraAsyncExecutor.execute(retrieveSelect(fetchType)
-            .bind()
-            .setUUID(MESSAGE_ID, cassandraMessageId.get()));
-    }
-
-    private Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>> message(Row row, ComposedMessageIdWithMetaData messageIdWithMetaData, FetchType fetchType) {
-        ComposedMessageId messageId = messageIdWithMetaData.getComposedMessageId();
-
-        MessageWithoutAttachment messageWithoutAttachment =
-            new MessageWithoutAttachment(
-                messageId.getMessageId(),
-                row.getTimestamp(INTERNAL_DATE),
-                row.getLong(FULL_CONTENT_OCTETS),
-                row.getInt(BODY_START_OCTET),
-                buildContent(row, fetchType),
-                messageIdWithMetaData.getFlags(),
-                retrievePropertyBuilder(row),
-                messageId.getMailboxId(),
-                messageId.getUid(),
-                messageIdWithMetaData.getModSeq());
-        return Pair.of(messageWithoutAttachment, retrieveAttachments(row, fetchType));
-    }
-
-    private PropertyBuilder retrievePropertyBuilder(Row row) {
-        PropertyBuilder property = new PropertyBuilder(
-            row.getList(PROPERTIES, UDTValue.class).stream()
-                .map(x -> new SimpleProperty(x.getString(Properties.NAMESPACE), x.getString(Properties.NAME), x.getString(Properties.VALUE)))
-                .collect(Collectors.toList()));
-        property.setTextualLineCount(row.getLong(TEXTUAL_LINE_COUNT));
-        return property;
-    }
-
-    private Stream<MessageAttachmentRepresentation> retrieveAttachments(Row row, FetchType fetchType) {
-        switch (fetchType) {
-        case Full:
-        case Body:
-            List<UDTValue> udtValues = row.getList(ATTACHMENTS, UDTValue.class);
-
-            return attachmentByIds(udtValues);
-        default:
-            return Stream.of();
-        }
-    }
-
-    private Stream<MessageAttachmentRepresentation> attachmentByIds(List<UDTValue> udtValues) {
-        return udtValues.stream()
-            .map(this::messageAttachmentByIdFrom);
-    }
-
-    private MessageAttachmentRepresentation messageAttachmentByIdFrom(UDTValue udtValue) {
-        return MessageAttachmentRepresentation.builder()
-                .attachmentId(AttachmentId.from(udtValue.getString(Attachments.ID)))
-                .name(udtValue.getString(Attachments.NAME))
-                .cid(OptionalConverter.fromGuava(
-                    cidParser.parse(udtValue.getString(Attachments.CID))))
-                .isInline(udtValue.getBool(Attachments.IS_INLINE))
-                .build();
-    }
-
-    private PreparedStatement retrieveSelect(FetchType fetchType) {
-        switch (fetchType) {
-            case Body:
-                return selectBody;
-            case Full:
-                return selectFields;
-            case Headers:
-                return selectHeaders;
-            case Metadata:
-                return selectMetadata;
-            default:
-                throw new RuntimeException("Unknown FetchType " + fetchType);
-        }
-    }
-
-    public CompletableFuture<Void> delete(CassandraMessageId messageId) {
-        return cassandraAsyncExecutor.executeVoid(delete.bind()
-            .setUUID(MESSAGE_ID, messageId.get()));
-    }
-
-    private SharedByteArrayInputStream buildContent(Row row, FetchType fetchType) {
-        switch (fetchType) {
-            case Full:
-                return new SharedByteArrayInputStream(getFullContent(row));
-            case Headers:
-                return new SharedByteArrayInputStream(getFieldContent(HEADER_CONTENT, row));
-            case Body:
-                return new SharedByteArrayInputStream(getBodyContent(row));
-            case Metadata:
-                return new SharedByteArrayInputStream(new byte[]{});
-            default:
-                throw new RuntimeException("Unknown FetchType " + fetchType);
-        }
-    }
-
-    private byte[] getFullContent(Row row) {
-        return Bytes.concat(getFieldContent(HEADER_CONTENT, row), getFieldContent(BODY_CONTENT, row));
-    }
-
-    private byte[] getBodyContent(Row row) {
-        return Bytes.concat(new byte[row.getInt(BODY_START_OCTET)], getFieldContent(BODY_CONTENT, row));
-    }
-
-    private byte[] getFieldContent(String field, Row row) {
-        byte[] headerContent = new byte[row.getBytes(field).remaining()];
-        row.getBytes(field).get(headerContent);
-        return headerContent;
-    }
-
-    private RawMessage fromRow(Row row) {
-        return new RawMessage(
-            row.getTimestamp(INTERNAL_DATE),
-            new CassandraMessageId.Factory().of(row.getUUID(MESSAGE_ID)),
-            row.getInt(BODY_START_OCTET),
-            row.getLong(FULL_CONTENT_OCTETS),
-            getFieldContent(BODY_CONTENT, row),
-            getFieldContent(HEADER_CONTENT, row),
-            retrievePropertyBuilder(row),
-            row.getLong(TEXTUAL_LINE_COUNT),
-            retrieveAttachments(row, FetchType.Full).collect(Guavate.toImmutableList()));
-    }
-
-    public static class RawMessage {
-        private final Date internalDate;
-        private final MessageId messageId;
-        private final int bodyStartOctet;
-        private final long fullContentOctet;
-        private final byte[] bodyContent;
-        private final byte[] headerContent;
-        private final PropertyBuilder propertyBuilder;
-        private final long textuaLineCount;
-        private final List<MessageAttachmentRepresentation> attachments;
-
-        private RawMessage(Date internalDate, MessageId messageId, int bodyStartOctet, long fullContentOctet, byte[] bodyContent,
-                          byte[] headerContent, PropertyBuilder propertyBuilder, long textuaLineCount,
-                          List<MessageAttachmentRepresentation> attachments) {
-            this.internalDate = internalDate;
-            this.messageId = messageId;
-            this.bodyStartOctet = bodyStartOctet;
-            this.fullContentOctet = fullContentOctet;
-            this.bodyContent = bodyContent;
-            this.headerContent = headerContent;
-            this.propertyBuilder = propertyBuilder;
-            this.textuaLineCount = textuaLineCount;
-            this.attachments = attachments;
-        }
-
-        public Date getInternalDate() {
-            return internalDate;
-        }
-
-        public MessageId getMessageId() {
-            return messageId;
-        }
-
-        public int getBodyStartOctet() {
-            return bodyStartOctet;
-        }
-
-        public long getFullContentOctet() {
-            return fullContentOctet;
-        }
-
-        public byte[] getBodyContent() {
-            return bodyContent;
-        }
-
-        public byte[] getHeaderContent() {
-            return headerContent;
-        }
-
-        public PropertyBuilder getPropertyBuilder() {
-            return propertyBuilder;
-        }
-
-        public long getTextuaLineCount() {
-            return textuaLineCount;
-        }
-
-        public List<MessageAttachmentRepresentation> getAttachments() {
-            return attachments;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV2.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV2.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV2.java
index b44bd8c..ae86d59 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV2.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOV2.java
@@ -59,7 +59,7 @@ import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.BlobId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.mail.utils.Limit;
-import org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table;
+import org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.Attachments;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.Properties;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -213,30 +213,6 @@ public class CassandraMessageDAOV2 {
             .setBool(Attachments.IS_INLINE, messageAttachment.isInline());
     }
 
-    public CompletableFuture<Void> save(CassandraMessageDAO.RawMessage rawMessage) {
-        return CompletableFutureUtil.combine(
-            blobsDAO.save(rawMessage.getHeaderContent()),
-            blobsDAO.save(rawMessage.getBodyContent()),
-            Pair::of)
-            .thenCompose(pair ->
-                cassandraAsyncExecutor.executeVoid(boundWriteStatement(rawMessage, pair)));
-    }
-
-    private BoundStatement boundWriteStatement(CassandraMessageDAO.RawMessage message, Pair<Optional<BlobId>, Optional<BlobId>> pair) {
-        CassandraMessageId messageId = (CassandraMessageId) message.getMessageId();
-        return insert.bind()
-            .setUUID(MESSAGE_ID, messageId.get())
-            .setTimestamp(INTERNAL_DATE, message.getInternalDate())
-            .setInt(BODY_START_OCTET, message.getBodyStartOctet())
-            .setLong(FULL_CONTENT_OCTETS, message.getFullContentOctet())
-            .setLong(BODY_OCTECTS, message.getFullContentOctet() - message.getBodyStartOctet())
-            .setString(BODY_CONTENT, pair.getRight().map(BlobId::getId).orElse(DEFAULT_OBJECT_VALUE))
-            .setString(HEADER_CONTENT, pair.getLeft().map(BlobId::getId).orElse(DEFAULT_OBJECT_VALUE))
-            .setLong(TEXTUAL_LINE_COUNT, message.getTextuaLineCount())
-            .setList(PROPERTIES, buildPropertiesUdt(message.getPropertyBuilder().toProperties()))
-            .setList(ATTACHMENTS, buildAttachmentUdt(message));
-    }
-
     private List<UDTValue> buildPropertiesUdt(MailboxMessage message) {
         return message.getProperties().stream()
             .map(x -> typesProvider.getDefinedUserType(PROPERTIES)
@@ -247,21 +223,6 @@ public class CassandraMessageDAOV2 {
             .collect(Guavate.toImmutableList());
     }
 
-    private ImmutableList<UDTValue> buildAttachmentUdt(CassandraMessageDAO.RawMessage message) {
-        return message.getAttachments().stream()
-            .map(this::toUDT)
-            .collect(Guavate.toImmutableList());
-    }
-
-    private UDTValue toUDT(MessageAttachmentRepresentation messageAttachment) {
-        return typesProvider.getDefinedUserType(ATTACHMENTS)
-            .newValue()
-            .setString(Attachments.ID, messageAttachment.getAttachmentId().getId())
-            .setString(Attachments.NAME, messageAttachment.getName().orElse(null))
-            .setString(Attachments.CID, messageAttachment.getCid().map(Cid::getValue).orElse(null))
-            .setBool(Attachments.IS_INLINE, messageAttachment.isInline());
-    }
-
     public CompletableFuture<Stream<MessageResult>> retrieveMessages(List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Limit limit) {
         return CompletableFutureUtil.chainAll(
                 limit.applyOnStream(messageIds.stream().distinct())
@@ -345,7 +306,7 @@ public class CassandraMessageDAOV2 {
             .attachmentId(AttachmentId.from(udtValue.getString(Attachments.ID)))
             .name(udtValue.getString(Attachments.NAME))
             .cid(OptionalConverter.fromGuava(
-                cidParser.parse(udtValue.getString(CassandraMessageV1Table.Attachments.CID))))
+                cidParser.parse(udtValue.getString(CassandraMessageV2Table.Attachments.CID))))
             .isInline(udtValue.getBool(Attachments.IS_INLINE))
             .build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/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 0af8c74..868b382 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
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.migration.V1ToV2Migration;
 import org.apache.james.mailbox.cassandra.mail.utils.Limit;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
@@ -56,7 +55,6 @@ import org.slf4j.LoggerFactory;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
 
 public class CassandraMessageIdMapper implements MessageIdMapper {
     private static final Logger LOGGER = LoggerFactory.getLogger(CassandraMessageIdMapper.class);
@@ -70,14 +68,12 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
     private final ModSeqProvider modSeqProvider;
     private final MailboxSession mailboxSession;
     private final AttachmentLoader attachmentLoader;
-    private final V1ToV2Migration v1ToV2Migration;
     private final CassandraConfiguration cassandraConfiguration;
 
     public CassandraMessageIdMapper(MailboxMapper mailboxMapper, CassandraMailboxDAO mailboxDAO, CassandraAttachmentMapper attachmentMapper,
                                     CassandraMessageIdToImapUidDAO imapUidDAO, CassandraMessageIdDAO messageIdDAO,
-                                    CassandraMessageDAO messageDAOV1, CassandraMessageDAOV2 messageDAOV2,
-                                    CassandraIndexTableHandler indexTableHandler, ModSeqProvider modSeqProvider, MailboxSession mailboxSession,
-                                    V1ToV2Migration v1ToV2Migration, CassandraConfiguration cassandraConfiguration) {
+                                    CassandraMessageDAOV2 messageDAOV2, CassandraIndexTableHandler indexTableHandler,
+                                    ModSeqProvider modSeqProvider, MailboxSession mailboxSession, CassandraConfiguration cassandraConfiguration) {
 
         this.mailboxMapper = mailboxMapper;
         this.mailboxDAO = mailboxDAO;
@@ -89,7 +85,6 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
         this.mailboxSession = mailboxSession;
         this.attachmentLoader = new AttachmentLoader(attachmentMapper);
         this.cassandraConfiguration = cassandraConfiguration;
-        this.v1ToV2Migration = v1ToV2Migration;
     }
 
     @Override
@@ -104,21 +99,16 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
                 .map(messageId -> imapUidDAO.retrieve((CassandraMessageId) messageId, Optional.empty())))
             .completableFuture()
             .thenApply(stream -> stream.collect(Guavate.toImmutableList()))
-            .thenCompose(composedMessageIds -> retrieveMessagesAndDoMigrationIfNeeded(fetchType, composedMessageIds))
+            .thenCompose(composedMessageIds -> messageDAOV2.retrieveMessages(composedMessageIds, fetchType, Limit.unlimited()))
+            .thenApply(stream -> stream
+                .filter(CassandraMessageDAOV2.MessageResult::isFound)
+                .map(CassandraMessageDAOV2.MessageResult::message))
             .thenCompose(stream -> attachmentLoader.addAttachmentToMessages(stream, fetchType))
             .thenCompose(this::filterMessagesWithExistingMailbox)
             .join()
             .sorted(Comparator.comparing(MailboxMessage::getUid));
     }
 
-    private CompletableFuture<Stream<Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>>>>
-            retrieveMessagesAndDoMigrationIfNeeded(FetchType fetchType, ImmutableList<ComposedMessageIdWithMetaData> composedMessageIds) {
-
-        return FluentFutureStream.of(messageDAOV2.retrieveMessages(composedMessageIds, fetchType, Limit.unlimited()))
-            .thenComposeOnAll(v1ToV2Migration::getFromV2orElseFromV1AfterMigration)
-            .completableFuture();
-    }
-
     private CompletableFuture<Stream<SimpleMailboxMessage>> filterMessagesWithExistingMailbox(Stream<SimpleMailboxMessage> stream) {
         return FluentFutureStream.ofOptionals(stream.map(this::keepMessageIfMailboxExists))
             .completableFuture();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/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 859f551..074f336 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
@@ -31,7 +31,6 @@ import java.util.stream.Stream;
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.backends.cassandra.CassandraConfiguration;
 import org.apache.james.mailbox.ApplicableFlagBuilder;
 import org.apache.james.mailbox.FlagsBuilder;
@@ -39,7 +38,6 @@ 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.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;
@@ -85,7 +83,6 @@ public class CassandraMessageMapper implements MessageMapper {
     private final CassandraFirstUnseenDAO firstUnseenDAO;
     private final AttachmentLoader attachmentLoader;
     private final CassandraDeletedMessageDAO deletedMessageDAO;
-    private final V1ToV2Migration v1ToV2Migration;
     private final CassandraConfiguration cassandraConfiguration;
 
     public CassandraMessageMapper(CassandraUidProvider uidProvider, CassandraModSeqProvider modSeqProvider,
@@ -94,8 +91,7 @@ public class CassandraMessageMapper implements MessageMapper {
                                   CassandraMessageIdToImapUidDAO imapUidDAO, CassandraMailboxCounterDAO mailboxCounterDAO,
                                   CassandraMailboxRecentsDAO mailboxRecentDAO, CassandraApplicableFlagDAO applicableFlagDAO,
                                   CassandraIndexTableHandler indexTableHandler, CassandraFirstUnseenDAO firstUnseenDAO,
-                                  CassandraDeletedMessageDAO deletedMessageDAO, V1ToV2Migration v1ToV2Migration,
-                                  CassandraConfiguration cassandraConfiguration) {
+                                  CassandraDeletedMessageDAO deletedMessageDAO, CassandraConfiguration cassandraConfiguration) {
         this.uidProvider = uidProvider;
         this.modSeqProvider = modSeqProvider;
         this.mailboxSession = mailboxSession;
@@ -109,7 +105,6 @@ public class CassandraMessageMapper implements MessageMapper {
         this.attachmentLoader = new AttachmentLoader(attachmentMapper);
         this.applicableFlagDAO = applicableFlagDAO;
         this.deletedMessageDAO = deletedMessageDAO;
-        this.v1ToV2Migration = v1ToV2Migration;
         this.cassandraConfiguration = cassandraConfiguration;
     }
 
@@ -183,10 +178,10 @@ public class CassandraMessageMapper implements MessageMapper {
     }
 
     private CompletableFuture<Stream<SimpleMailboxMessage>> retrieveMessages(List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Limit limit) {
-        CompletableFuture<Stream<Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>>>>
-            messageRepresentations = retrieveMessagesAndDoMigrationIfNeeded(messageIds, fetchType, limit);
-
-        return messageRepresentations
+        return messageDAOV2.retrieveMessages(messageIds, fetchType, limit)
+            .thenApply(steam -> steam
+                .filter(CassandraMessageDAOV2.MessageResult::isFound)
+                .map(CassandraMessageDAOV2.MessageResult::message))
             .thenCompose(stream -> attachmentLoader.addAttachmentToMessages(stream, fetchType));
     }
 
@@ -222,7 +217,9 @@ public class CassandraMessageMapper implements MessageMapper {
         return FluentFutureStream.ofOptionals(
                 uidChunk.stream().map(uid -> retrieveComposedId(mailboxId, uid)))
             .performOnAll(this::deleteUsingMailboxId)
-            .thenFlatCompose(idWithMetadata -> retrieveMessagesAndDoMigrationIfNeeded(ImmutableList.of(idWithMetadata), FetchType.Metadata, Limit.unlimited()))
+            .thenFlatCompose(idWithMetadata -> messageDAOV2.retrieveMessages(ImmutableList.of(idWithMetadata), FetchType.Metadata, Limit.unlimited()))
+            .filter(CassandraMessageDAOV2.MessageResult::isFound)
+            .map(CassandraMessageDAOV2.MessageResult::message)
             .map(pair -> pair.getKey().toMailboxMessage(ImmutableList.of()))
             .completableFuture();
     }
@@ -233,14 +230,6 @@ public class CassandraMessageMapper implements MessageMapper {
                 () -> LOGGER.warn("Could not retrieve message {} {}", mailboxId, uid)));
     }
 
-    private CompletableFuture<Stream<Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>>>> retrieveMessagesAndDoMigrationIfNeeded(
-        List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Limit limit) {
-
-        return FluentFutureStream.of(messageDAOV2.retrieveMessages(messageIds, fetchType, limit))
-            .thenComposeOnAll(v1ToV2Migration::getFromV2orElseFromV1AfterMigration)
-            .completableFuture();
-    }
-
     @Override
     public MessageMetaData move(Mailbox destinationMailbox, MailboxMessage original) throws MailboxException {
         ComposedMessageIdWithMetaData composedMessageIdWithMetaData = original.getComposedMessageIdWithMetaData();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2Migration.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2Migration.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2Migration.java
deleted file mode 100644
index db87065..0000000
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2Migration.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailbox.cassandra.mail.migration;
-
-import java.util.List;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.stream.IntStream;
-import java.util.stream.Stream;
-
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
-import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.AttachmentLoader;
-import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentMapper;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV2;
-import org.apache.james.mailbox.cassandra.mail.MessageAttachmentRepresentation;
-import org.apache.james.mailbox.cassandra.mail.MessageWithoutAttachment;
-import org.apache.james.mailbox.cassandra.mail.utils.Limit;
-import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.github.fge.lambdas.Throwing;
-import com.github.steveash.guavate.Guavate;
-import com.google.common.collect.ImmutableList;
-
-public class V1ToV2Migration implements Migration {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(V1ToV2MigrationThread.class);
-
-    private final CassandraMessageDAO messageDAOV1;
-    private final CassandraMessageDAOV2 messageDAOV2;
-    private final AttachmentLoader attachmentLoader;
-    private final CassandraConfiguration cassandraConfiguration;
-    private final ExecutorService migrationExecutor;
-    private final ArrayBlockingQueue<Pair<MessageWithoutAttachment, List<MessageAttachmentRepresentation>>> messagesToBeMigrated;
-
-    @Inject
-    public V1ToV2Migration(CassandraMessageDAO messageDAOV1, CassandraMessageDAOV2 messageDAOV2,
-                           CassandraAttachmentMapper attachmentMapper, CassandraConfiguration cassandraConfiguration) {
-        this.messageDAOV1 = messageDAOV1;
-        this.messageDAOV2 = messageDAOV2;
-        this.attachmentLoader = new AttachmentLoader(attachmentMapper);
-        this.cassandraConfiguration = cassandraConfiguration;
-        this.migrationExecutor = Executors.newFixedThreadPool(cassandraConfiguration.getV1ToV2ThreadCount());
-        boolean ensureFifoOrder = false;
-        this.messagesToBeMigrated = new ArrayBlockingQueue<>(cassandraConfiguration.getV1ToV2QueueLength(), ensureFifoOrder);
-        executeMigrationThread(messageDAOV1, messageDAOV2, cassandraConfiguration);
-    }
-
-    private void executeMigrationThread(CassandraMessageDAO messageDAOV1, CassandraMessageDAOV2 messageDAOV2, CassandraConfiguration cassandraConfiguration) {
-        if (cassandraConfiguration.isOnTheFlyV1ToV2Migration()) {
-            IntStream.range(0, cassandraConfiguration.getV1ToV2ThreadCount())
-                .mapToObj(i -> new V1ToV2MigrationThread(messagesToBeMigrated, messageDAOV1, messageDAOV2, attachmentLoader))
-                .forEach(migrationExecutor::execute);
-        }
-    }
-
-    @PreDestroy
-    public void stop() {
-        migrationExecutor.shutdownNow();
-    }
-
-    public CompletableFuture<Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>>>
-            getFromV2orElseFromV1AfterMigration(CassandraMessageDAOV2.MessageResult result) {
-
-        if (result.isFound()) {
-            return CompletableFuture.completedFuture(result.message());
-        }
-
-        return messageDAOV1.retrieveMessages(ImmutableList.of(result.getMetadata()), MessageMapper.FetchType.Full, Limit.unlimited())
-            .thenApply(
-                Throwing.function(results -> results.findAny()
-                    .orElseThrow(() -> new IllegalArgumentException("Message not found in DAO V1" + result.getMetadata()))))
-            .thenApply(this::submitMigration);
-    }
-
-    private Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>> submitMigration(Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>> messageV1) {
-        if (cassandraConfiguration.isOnTheFlyV1ToV2Migration()) {
-            Pair<MessageWithoutAttachment, List<MessageAttachmentRepresentation>> messageV1WithAttachmentCopied =
-                Pair.of(messageV1.getLeft(), messageV1.getRight().collect(Guavate.toImmutableList()));
-            synchronized (messagesToBeMigrated) {
-
-                if (!messagesToBeMigrated.offer(messageV1WithAttachmentCopied)) {
-                    LOGGER.info("Migration queue is full message {} is ignored", messageV1.getLeft().getMessageId());
-                }
-            }
-            return Pair.of(messageV1.getLeft(), messageV1WithAttachmentCopied.getRight().stream());
-        }
-        return messageV1;
-    }
-
-    @Override
-    public MigrationResult run() {
-        boolean allResultFetched = false;
-        MigrationResult result = MigrationResult.COMPLETED;
-
-        while (!allResultFetched) {
-            List<CassandraMessageDAO.RawMessage> batch = messageDAOV1.readBatch();
-            allResultFetched = batch.isEmpty();
-            result = Migration.combine(result, migrateBatch(batch));
-        }
-        return result;
-    }
-
-    private MigrationResult migrateBatch(List<CassandraMessageDAO.RawMessage> batch) {
-        return batch
-            .stream()
-            .map(this::migrate)
-            .reduce(MigrationResult.COMPLETED, Migration::combine);
-    }
-
-    private MigrationResult migrate(CassandraMessageDAO.RawMessage rawMessage) {
-        try {
-            CassandraMessageId messageId = (CassandraMessageId) rawMessage.getMessageId();
-
-            messageDAOV2.save(rawMessage)
-                .thenCompose(any -> messageDAOV1.delete(messageId))
-                .join();
-
-            LOGGER.debug("{} migrated", rawMessage.getMessageId());
-
-            return MigrationResult.COMPLETED;
-        } catch (Exception e) {
-            LOGGER.warn("Error while migrating {}", rawMessage.getMessageId(), e);
-
-            return MigrationResult.PARTIAL;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2MigrationThread.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2MigrationThread.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2MigrationThread.java
deleted file mode 100644
index c65a521..0000000
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/V1ToV2MigrationThread.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailbox.cassandra.mail.migration;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.CompletableFuture;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.AttachmentLoader;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV2;
-import org.apache.james.mailbox.cassandra.mail.MessageAttachmentRepresentation;
-import org.apache.james.mailbox.cassandra.mail.MessageWithoutAttachment;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class V1ToV2MigrationThread implements Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(V1ToV2MigrationThread.class);
-
-    private final BlockingQueue<Pair<MessageWithoutAttachment, List<MessageAttachmentRepresentation>>> messagesToBeMigrated;
-    private final CassandraMessageDAO messageDAOV1;
-    private final CassandraMessageDAOV2 messageDAOV2;
-    private final AttachmentLoader attachmentLoader;
-
-    public V1ToV2MigrationThread(BlockingQueue<Pair<MessageWithoutAttachment, List<MessageAttachmentRepresentation>>> messagesToBeMigrated,
-                                 CassandraMessageDAO messageDAOV1, CassandraMessageDAOV2 messageDAOV2, AttachmentLoader attachmentLoader) {
-        this.messagesToBeMigrated = messagesToBeMigrated;
-        this.messageDAOV1 = messageDAOV1;
-        this.messageDAOV2 = messageDAOV2;
-        this.attachmentLoader = attachmentLoader;
-    }
-
-    @Override
-    public void run() {
-        while (true) {
-            try {
-                Pair<MessageWithoutAttachment, List<MessageAttachmentRepresentation>> message = messagesToBeMigrated.take();
-                performV1ToV2Migration(Pair.of(message.getLeft(), message.getRight().stream())).join();
-            } catch (Exception e) {
-                LOGGER.error("Error occured in migration thread", e);
-            }
-        }
-    }
-
-    private CompletableFuture<Void> performV1ToV2Migration(Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>> messageV1) {
-        return attachmentLoader.addAttachmentToMessages(Stream.of(messageV1), MessageMapper.FetchType.Full)
-            .thenApply(stream -> stream.findAny().get())
-            .thenCompose(this::performV1ToV2Migration);
-    }
-
-    private CompletableFuture<Void> performV1ToV2Migration(SimpleMailboxMessage message) {
-        return saveInV2FromV1(message)
-            .thenCompose(this::deleteInV1);
-    }
-
-    private CompletableFuture<Void> deleteInV1(Optional<SimpleMailboxMessage> optional) {
-        return optional.map(SimpleMailboxMessage::getMessageId)
-            .map(messageId -> (CassandraMessageId) messageId)
-            .map(messageDAOV1::delete)
-            .orElse(CompletableFuture.completedFuture(null));
-    }
-
-    private CompletableFuture<Optional<SimpleMailboxMessage>> saveInV2FromV1(SimpleMailboxMessage message) {
-        try {
-            return messageDAOV2.save(message).thenApply(any -> Optional.of(message));
-        } catch (MailboxException e) {
-            LOGGER.error("Exception while saving message during migration", e);
-            return CompletableFuture.completedFuture(Optional.<SimpleMailboxMessage>empty());
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
index 9284d9e..428a45a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
@@ -20,7 +20,6 @@
 package org.apache.james.mailbox.cassandra.modules;
 
 import static com.datastax.driver.core.DataType.bigint;
-import static com.datastax.driver.core.DataType.blob;
 import static com.datastax.driver.core.DataType.cboolean;
 import static com.datastax.driver.core.DataType.cint;
 import static com.datastax.driver.core.DataType.set;
@@ -35,7 +34,6 @@ import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageIdTable;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageIds;
-import org.apache.james.mailbox.cassandra.table.CassandraMessageV1Table;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table;
 import org.apache.james.mailbox.cassandra.table.Flag;
 import org.apache.james.mailbox.cassandra.table.MessageIdToImapUid;
@@ -92,21 +90,6 @@ public class CassandraMessageModule implements CassandraModule {
                     .compactionOptions(SchemaBuilder.leveledStrategy())
                     .caching(SchemaBuilder.KeyCaching.ALL,
                         SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS))),
-            new CassandraTable(CassandraMessageV1Table.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMessageV1Table.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
-                    .addColumn(CassandraMessageV1Table.INTERNAL_DATE, timestamp())
-                    .addColumn(CassandraMessageV1Table.BODY_START_OCTET, cint())
-                    .addColumn(CassandraMessageV1Table.BODY_OCTECTS, bigint())
-                    .addColumn(CassandraMessageV1Table.TEXTUAL_LINE_COUNT, bigint())
-                    .addColumn(CassandraMessageV1Table.FULL_CONTENT_OCTETS, bigint())
-                    .addColumn(CassandraMessageV1Table.BODY_CONTENT, blob())
-                    .addColumn(CassandraMessageV1Table.HEADER_CONTENT, blob())
-                    .addUDTListColumn(CassandraMessageV1Table.ATTACHMENTS, SchemaBuilder.frozen(CassandraMessageV1Table.ATTACHMENTS))
-                    .addUDTListColumn(CassandraMessageV1Table.PROPERTIES, SchemaBuilder.frozen(CassandraMessageV1Table.PROPERTIES))
-                    .withOptions()
-                    .comment("Deprecated table. Was used to store messages. See `messagev2` instead.")),
             new CassandraTable(CassandraMessageV2Table.TABLE_NAME,
                 SchemaBuilder.createTable(CassandraMessageV2Table.TABLE_NAME)
                     .ifNotExists()
@@ -124,19 +107,19 @@ public class CassandraMessageModule implements CassandraModule {
                     .comment("Holds message metadata, independently of any mailboxes. Content of messages is stored " +
                         "in `blobs` and `blobparts` tables.")));
         types = ImmutableList.of(
-            new CassandraType(CassandraMessageV1Table.PROPERTIES,
-                SchemaBuilder.createType(CassandraMessageV1Table.PROPERTIES)
+            new CassandraType(CassandraMessageV2Table.PROPERTIES,
+                SchemaBuilder.createType(CassandraMessageV2Table.PROPERTIES)
                     .ifNotExists()
-                    .addColumn(CassandraMessageV1Table.Properties.NAMESPACE, text())
-                    .addColumn(CassandraMessageV1Table.Properties.NAME, text())
-                    .addColumn(CassandraMessageV1Table.Properties.VALUE, text())),
-            new CassandraType(CassandraMessageV1Table.ATTACHMENTS,
-                SchemaBuilder.createType(CassandraMessageV1Table.ATTACHMENTS)
+                    .addColumn(CassandraMessageV2Table.Properties.NAMESPACE, text())
+                    .addColumn(CassandraMessageV2Table.Properties.NAME, text())
+                    .addColumn(CassandraMessageV2Table.Properties.VALUE, text())),
+            new CassandraType(CassandraMessageV2Table.ATTACHMENTS,
+                SchemaBuilder.createType(CassandraMessageV2Table.ATTACHMENTS)
                     .ifNotExists()
-                    .addColumn(CassandraMessageV1Table.Attachments.ID, text())
-                    .addColumn(CassandraMessageV1Table.Attachments.NAME, text())
-                    .addColumn(CassandraMessageV1Table.Attachments.CID, text())
-                    .addColumn(CassandraMessageV1Table.Attachments.IS_INLINE, cboolean())));
+                    .addColumn(CassandraMessageV2Table.Attachments.ID, text())
+                    .addColumn(CassandraMessageV2Table.Attachments.NAME, text())
+                    .addColumn(CassandraMessageV2Table.Attachments.CID, text())
+                    .addColumn(CassandraMessageV2Table.Attachments.IS_INLINE, cboolean())));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV1Table.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV1Table.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV1Table.java
deleted file mode 100644
index d932807..0000000
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMessageV1Table.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailbox.cassandra.table;
-
-import static org.apache.james.mailbox.cassandra.table.CassandraMessageIds.MESSAGE_ID;
-
-public interface CassandraMessageV1Table {
-
-    String TABLE_NAME = "message";
-    String INTERNAL_DATE = "internalDate";
-    String BODY_START_OCTET = "bodyStartOctet";
-    String FULL_CONTENT_OCTETS = "fullContentOctets";
-    String BODY_OCTECTS = "bodyOctets";
-    String TEXTUAL_LINE_COUNT = "textualLineCount";
-    String BODY_CONTENT = "bodyContent";
-    String HEADER_CONTENT = "headerContent";
-    String PROPERTIES = "properties";
-    String ATTACHMENTS = "attachments";
-
-    String[] FIELDS = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, FULL_CONTENT_OCTETS, BODY_OCTECTS, BODY_CONTENT, HEADER_CONTENT, TEXTUAL_LINE_COUNT, PROPERTIES, ATTACHMENTS };
-    String[] METADATA = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, FULL_CONTENT_OCTETS, BODY_OCTECTS, TEXTUAL_LINE_COUNT, PROPERTIES };
-    String[] HEADERS = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, FULL_CONTENT_OCTETS, BODY_OCTECTS, HEADER_CONTENT, TEXTUAL_LINE_COUNT, PROPERTIES };
-    String[] BODY = { MESSAGE_ID, INTERNAL_DATE, BODY_START_OCTET, FULL_CONTENT_OCTETS, BODY_OCTECTS, BODY_CONTENT, TEXTUAL_LINE_COUNT, PROPERTIES, ATTACHMENTS };
-
-    interface Properties {
-        String NAMESPACE = "namespace";
-        String NAME = "name";
-        String VALUE = "value";
-    }
-
-    interface Attachments {
-        String ID = "id";
-        String NAME = "name";
-        String CID = "cid";
-        String IS_INLINE = "isInline";
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
index 8640cf9..3fcbe7f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
@@ -33,7 +33,6 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV2;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
@@ -59,7 +58,6 @@ public class CassandraMailboxManagerProvider {
         CassandraMessageIdDAO messageIdDAO = new CassandraMessageIdDAO(session, messageIdFactory);
         CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(session, messageIdFactory);
         CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(session);
-        CassandraMessageDAO messageDAO = new CassandraMessageDAO(session, cassandraTypesProvider);
         CassandraMessageDAOV2 messageDAOV2 = new CassandraMessageDAOV2(session, cassandraTypesProvider, blobsDAO);
         CassandraMailboxCounterDAO mailboxCounterDAO = new CassandraMailboxCounterDAO(session);
         CassandraMailboxRecentsDAO mailboxRecentsDAO = new CassandraMailboxRecentsDAO(session);
@@ -72,7 +70,6 @@ public class CassandraMailboxManagerProvider {
         CassandraMailboxSessionMapperFactory mapperFactory = new CassandraMailboxSessionMapperFactory(uidProvider,
             modSeqProvider,
             session,
-            messageDAO,
             messageDAOV2,
             messageIdDAO,
             imapUidDAO,

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
----------------------------------------------------------------------
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 c2c89bf..c945204 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
@@ -23,14 +23,13 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.AbstractSubscriptionManagerTest;
 import org.apache.james.mailbox.SubscriptionManager;
+import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraDeletedMessageDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraFirstUnseenDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV2;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
@@ -68,7 +67,6 @@ public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManage
     @Override
     public SubscriptionManager createSubscriptionManager() {
         CassandraMessageIdToImapUidDAO imapUidDAO = null;
-        CassandraMessageDAO messageDAO = null;
         CassandraMessageDAOV2 messageDAOV2 = null;
         CassandraMessageIdDAO messageIdDAO = null;
         CassandraMailboxCounterDAO mailboxCounterDAO = null;
@@ -83,7 +81,6 @@ public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManage
                 new CassandraUidProvider(cassandra.getConf()),
                 new CassandraModSeqProvider(cassandra.getConf()),
                 cassandra.getConf(),
-                messageDAO,
                 messageDAOV2,
                 messageIdDAO,
                 imapUidDAO,

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index 8e1a5bd..24895ed 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -24,15 +24,14 @@ import static org.mockito.Mockito.mock;
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
+import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraBlobsDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraDeletedMessageDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraFirstUnseenDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAOV2;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
@@ -93,7 +92,6 @@ public class CassandraTestSystemFixture {
         CassandraMessageIdDAO messageIdDAO = new CassandraMessageIdDAO(cassandra.getConf(), messageIdFactory);
         CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), messageIdFactory);
         CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
-        CassandraMessageDAO messageDAO = new CassandraMessageDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMessageDAOV2 messageDAOV2 = new CassandraMessageDAOV2(cassandra.getConf(), cassandra.getTypesProvider(), blobsDAO);
         CassandraMailboxCounterDAO mailboxCounterDAO = new CassandraMailboxCounterDAO(cassandra.getConf());
         CassandraMailboxRecentsDAO mailboxRecentsDAO = new CassandraMailboxRecentsDAO(cassandra.getConf());
@@ -106,7 +104,6 @@ public class CassandraTestSystemFixture {
         return new CassandraMailboxSessionMapperFactory(uidProvider,
             modSeqProvider,
             cassandra.getConf(),
-            messageDAO,
             messageDAOV2,
             messageIdDAO,
             imapUidDAO,

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index a14ab52..9bfe467 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -89,14 +89,12 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
         CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(cassandra.getConf());
 
         CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
-        CassandraMessageDAO messageDAO = new CassandraMessageDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMessageDAOV2 messageDAOV2 = new CassandraMessageDAOV2(cassandra.getConf(), cassandra.getTypesProvider(), blobsDAO);
         mailboxSessionMapperFactory = new CassandraMailboxSessionMapperFactory(
                 new CassandraUidProvider(cassandra.getConf()),
                 new CassandraModSeqProvider(cassandra.getConf()),
                 cassandra.getConf(),
-                messageDAO,
-                messageDAOV2,
+            messageDAOV2,
                 new CassandraMessageIdDAO(cassandra.getConf(), messageIdFactory),
                 new CassandraMessageIdToImapUidDAO(cassandra.getConf(), messageIdFactory),
                 new CassandraMailboxCounterDAO(cassandra.getConf()),

http://git-wip-us.apache.org/repos/asf/james-project/blob/4e0f1310/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
index b600bab..1d1f9c9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
@@ -24,8 +24,8 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 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.CassandraMailboxSessionMapperFactory;
+import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId.Factory;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -112,13 +112,11 @@ public class CassandraMapperProvider implements MapperProvider {
         CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
         CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(cassandra.getConf());
         CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
-        CassandraMessageDAO messageDAO = new CassandraMessageDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMessageDAOV2 messageDAOV2 = new CassandraMessageDAOV2(cassandra.getConf(), cassandra.getTypesProvider(), blobsDAO);
         return new CassandraMailboxSessionMapperFactory(
             new CassandraUidProvider(cassandra.getConf()),
             cassandraModSeqProvider,
             cassandra.getConf(),
-            messageDAO,
             messageDAOV2,
             new CassandraMessageIdDAO(cassandra.getConf(), MESSAGE_ID_FACTORY),
             new CassandraMessageIdToImapUidDAO(cassandra.getConf(), MESSAGE_ID_FACTORY),


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