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]

Reply via email to