This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit fa5cf9dab31fd5e576a0181059bf08d32da8d648 Author: Benoit Tellier <[email protected]> AuthorDate: Fri Apr 3 09:23:25 2020 +0700 [Refactoring] Rely of CassandraVersionManager instead of its DAO --- .../CassandraMailboxSessionMapperFactory.java | 11 ++++++----- .../cassandra/mail/CassandraMailboxMapper.java | 22 +++++++++++++--------- .../task/SolveMailboxInconsistenciesService.java | 16 +++++++--------- .../CassandraSubscriptionManagerTest.java | 5 +++-- .../cassandra/mail/CassandraMailboxMapperTest.java | 3 ++- .../mail/migration/MailboxPathV2MigrationTest.java | 3 ++- .../SolveMailboxInconsistenciesServiceTest.java | 3 ++- 7 files changed, 35 insertions(+), 28 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 6086ba4..301e28a 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 @@ -23,7 +23,7 @@ import javax.inject.Inject; import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration; import org.apache.james.backends.cassandra.utils.CassandraUtils; -import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; +import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.blob.api.BlobStore; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper; @@ -93,7 +93,7 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa private final CassandraAttachmentOwnerDAO ownerDAO; private final CassandraACLMapper aclMapper; private final CassandraUserMailboxRightsDAO userMailboxRightsDAO; - private final CassandraSchemaVersionDAO versionDAO; + private final CassandraSchemaVersionManager versionManager; private final CassandraUtils cassandraUtils; private final CassandraConfiguration cassandraConfiguration; @@ -107,7 +107,8 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa BlobStore blobStore, CassandraAttachmentMessageIdDAO attachmentMessageIdDAO, CassandraAttachmentOwnerDAO ownerDAO, CassandraACLMapper aclMapper, CassandraUserMailboxRightsDAO userMailboxRightsDAO, - CassandraSchemaVersionDAO versionDAO, CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) { + CassandraSchemaVersionManager versionManager, + CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) { this.uidProvider = uidProvider; this.modSeqProvider = modSeqProvider; this.session = session; @@ -128,7 +129,7 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa this.attachmentMessageIdDAO = attachmentMessageIdDAO; this.aclMapper = aclMapper; this.userMailboxRightsDAO = userMailboxRightsDAO; - this.versionDAO = versionDAO; + this.versionManager = versionManager; this.cassandraUtils = cassandraUtils; this.ownerDAO = ownerDAO; this.cassandraConfiguration = cassandraConfiguration; @@ -168,7 +169,7 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa @Override public MailboxMapper createMailboxMapper(MailboxSession mailboxSession) { - return new CassandraMailboxMapper(mailboxDAO, mailboxPathDAO, mailboxPathV2DAO, userMailboxRightsDAO, aclMapper, versionDAO); + return new CassandraMailboxMapper(mailboxDAO, mailboxPathDAO, mailboxPathV2DAO, userMailboxRightsDAO, aclMapper, versionManager); } @Override diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java index 8e2d0b5..75b068a 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java @@ -25,7 +25,6 @@ import java.util.List; import javax.inject.Inject; import org.apache.commons.lang3.tuple.Pair; -import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.backends.cassandra.versions.SchemaVersion; import org.apache.james.core.Username; @@ -64,20 +63,25 @@ public class CassandraMailboxMapper implements MailboxMapper { private final CassandraMailboxPathV2DAO mailboxPathV2DAO; private final CassandraACLMapper cassandraACLMapper; private final CassandraUserMailboxRightsDAO userMailboxRightsDAO; - private final boolean needMailboxPathV1Support; + private final CassandraSchemaVersionManager versionManager; @Inject - public CassandraMailboxMapper(CassandraMailboxDAO mailboxDAO, CassandraMailboxPathDAOImpl mailboxPathDAO, CassandraMailboxPathV2DAO mailboxPathV2DAO, CassandraUserMailboxRightsDAO userMailboxRightsDAO, CassandraACLMapper aclMapper, CassandraSchemaVersionDAO versionDAO) { + public CassandraMailboxMapper(CassandraMailboxDAO mailboxDAO, + CassandraMailboxPathDAOImpl mailboxPathDAO, + CassandraMailboxPathV2DAO mailboxPathV2DAO, + CassandraUserMailboxRightsDAO userMailboxRightsDAO, + CassandraACLMapper aclMapper, + CassandraSchemaVersionManager versionManager) { this.mailboxDAO = mailboxDAO; this.mailboxPathDAO = mailboxPathDAO; this.mailboxPathV2DAO = mailboxPathV2DAO; this.userMailboxRightsDAO = userMailboxRightsDAO; this.cassandraACLMapper = aclMapper; + this.versionManager = versionManager; + } - this.needMailboxPathV1Support = versionDAO.getCurrentSchemaVersion() - .block() - .orElse(CassandraSchemaVersionManager.MIN_VERSION) - .isBefore(MAILBOX_PATH_V_2_MIGRATION_PERFORMED_VERSION); + private boolean needMailboxPathV1Support() { + return versionManager.isBefore(MAILBOX_PATH_V_2_MIGRATION_PERFORMED_VERSION); } @Override @@ -90,7 +94,7 @@ public class CassandraMailboxMapper implements MailboxMapper { } private Flux<Void> deletePath(Mailbox mailbox) { - if (needMailboxPathV1Support) { + if (needMailboxPathV1Support()) { return Flux.merge( mailboxPathDAO.delete(mailbox.generateAssociatedPath()), mailboxPathV2DAO.delete(mailbox.generateAssociatedPath())); @@ -163,7 +167,7 @@ public class CassandraMailboxMapper implements MailboxMapper { } private Flux<CassandraIdAndPath> listPaths(String fixedNamespace, Username fixedUser) { - if (needMailboxPathV1Support) { + if (needMailboxPathV1Support()) { return Flux.concat(mailboxPathV2DAO.listUserMailboxes(fixedNamespace, fixedUser), mailboxPathDAO.listUserMailboxes(fixedNamespace, fixedUser)); } diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java index 29c1792..4777ed8 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesService.java @@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicLong; import javax.inject.Inject; -import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; +import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.backends.cassandra.versions.SchemaVersion; import org.apache.james.mailbox.cassandra.ids.CassandraId; import org.apache.james.mailbox.cassandra.mail.CassandraIdAndPath; @@ -357,13 +357,13 @@ public class SolveMailboxInconsistenciesService { private final CassandraMailboxDAO mailboxDAO; private final CassandraMailboxPathV2DAO mailboxPathV2DAO; - private final CassandraSchemaVersionDAO versionDAO; + private final CassandraSchemaVersionManager versionManager; @Inject - SolveMailboxInconsistenciesService(CassandraMailboxDAO mailboxDAO, CassandraMailboxPathV2DAO mailboxPathV2DAO, CassandraSchemaVersionDAO versionDAO) { + SolveMailboxInconsistenciesService(CassandraMailboxDAO mailboxDAO, CassandraMailboxPathV2DAO mailboxPathV2DAO, CassandraSchemaVersionManager versionManager) { this.mailboxDAO = mailboxDAO; this.mailboxPathV2DAO = mailboxPathV2DAO; - this.versionDAO = versionDAO; + this.versionManager = versionManager; } Mono<Result> fixMailboxInconsistencies(Context context) { @@ -375,16 +375,14 @@ public class SolveMailboxInconsistenciesService { } private void assertValidVersion() { - Optional<SchemaVersion> maybeVersion = versionDAO.getCurrentSchemaVersion().block(); + SchemaVersion version = versionManager.computeVersion(); - boolean isVersionValid = maybeVersion - .map(version -> version.isAfterOrEquals(MAILBOX_PATH_V_2_MIGRATION_PERFORMED_VERSION)) - .orElse(false); + boolean isVersionValid = version.isAfterOrEquals(MAILBOX_PATH_V_2_MIGRATION_PERFORMED_VERSION); Preconditions.checkState(isVersionValid, "Schema version %s is required in order to ensure mailboxPathV2DAO to be correctly populated, got %s", MAILBOX_PATH_V_2_MIGRATION_PERFORMED_VERSION.getValue(), - maybeVersion.map(SchemaVersion::getValue)); + version.getValue()); } private Flux<Result> processMailboxPathDaoInconsistencies(Context context) { 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 44e1063..a230e11 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,6 +23,7 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension; import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration; import org.apache.james.backends.cassandra.utils.CassandraUtils; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; +import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.blob.api.BlobStore; import org.apache.james.mailbox.SubscriptionManager; import org.apache.james.mailbox.SubscriptionManagerContract; @@ -87,7 +88,7 @@ class CassandraSubscriptionManagerTest implements SubscriptionManagerContract { BlobStore blobStore = null; CassandraUidProvider uidProvider = null; CassandraModSeqProvider modSeqProvider = null; - CassandraSchemaVersionDAO versionDAO = null; + CassandraSchemaVersionManager versionManager = null; subscriptionManager = new StoreSubscriptionManager( new CassandraMailboxSessionMapperFactory( @@ -112,7 +113,7 @@ class CassandraSubscriptionManagerTest implements SubscriptionManagerContract { ownerDAO, aclMapper, userMailboxRightsDAO, - versionDAO, + versionManager, CassandraUtils.WITH_DEFAULT_CONFIGURATION, CassandraConfiguration.DEFAULT_CONFIGURATION)); } diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java index 9a9fcf2..f6d1dc2 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java @@ -36,6 +36,7 @@ import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration; import org.apache.james.backends.cassandra.utils.CassandraUtils; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; +import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule; import org.apache.james.core.Username; import org.apache.james.mailbox.cassandra.ids.CassandraId; @@ -106,7 +107,7 @@ class CassandraMailboxMapperTest { mailboxPathV2DAO, userMailboxRightsDAO, aclMapper, - new CassandraSchemaVersionDAO(cassandra.getConf())); + new CassandraSchemaVersionManager(new CassandraSchemaVersionDAO(cassandra.getConf()))); } @Nested diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java index d65cb06..e018eb1 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java @@ -27,6 +27,7 @@ import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration; import org.apache.james.backends.cassandra.utils.CassandraUtils; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; +import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule; import org.apache.james.core.Username; import org.apache.james.mailbox.cassandra.ids.CassandraId; @@ -85,7 +86,7 @@ class MailboxPathV2MigrationTest { daoV2, userMailboxRightsDAO, new CassandraACLMapper(cassandra.getConf(), userMailboxRightsDAO, CassandraConfiguration.DEFAULT_CONFIGURATION), - new CassandraSchemaVersionDAO(cassandra.getConf())); + new CassandraSchemaVersionManager(new CassandraSchemaVersionDAO(cassandra.getConf()))); } @Test diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java index 97cc2f2..ca2c2b1 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java @@ -28,6 +28,7 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.utils.CassandraUtils; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; +import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule; import org.apache.james.backends.cassandra.versions.SchemaVersion; import org.apache.james.core.Username; @@ -75,7 +76,7 @@ class SolveMailboxInconsistenciesServiceTest { mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider()); mailboxPathV2DAO = new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION); versionDAO = new CassandraSchemaVersionDAO(cassandra.getConf()); - testee = new SolveMailboxInconsistenciesService(mailboxDAO, mailboxPathV2DAO, versionDAO); + testee = new SolveMailboxInconsistenciesService(mailboxDAO, mailboxPathV2DAO, new CassandraSchemaVersionManager(versionDAO)); versionDAO.updateVersion(new SchemaVersion(7)).block(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
