You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/12/05 07:10:21 UTC
[james-project] 14/17: [REFACTORING] Extract a CassandraACLDAO
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 dcb8101479b13f3ffbf8182532de531eb48d0522
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 2 08:50:22 2020 +0700
[REFACTORING] Extract a CassandraACLDAO
This enables separation between the denormalization logic and
the controversial choices made in the implementation of this class (JSON, LWT)
---
...assandraACLMapper.java => CassandraACLDAO.java} | 26 +--
.../mailbox/cassandra/mail/CassandraACLMapper.java | 182 +--------------------
.../cassandra/CassandraMailboxManagerTest.java | 7 +-
.../cassandra/mail/CassandraACLMapperTest.java | 6 +-
.../cassandra/mail/CassandraMailboxMapperTest.java | 6 +-
.../mail/migration/MailboxPathV2MigrationTest.java | 8 +-
.../modules/mailbox/CassandraMailboxModule.java | 2 +
7 files changed, 34 insertions(+), 203 deletions(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAO.java
similarity index 87%
copy from mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
copy to mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAO.java
index cda7f9f..73e5c0f 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAO.java
@@ -39,7 +39,6 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.json.MailboxACLJsonConverter;
import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
-import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.UnsupportedRightException;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.util.FunctionalUtils;
@@ -55,14 +54,13 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import reactor.core.publisher.Mono;
-public class CassandraACLMapper {
+public class CassandraACLDAO {
public static final int INITIAL_VALUE = 0;
- private static final Logger LOG = LoggerFactory.getLogger(CassandraACLMapper.class);
+ private static final Logger LOG = LoggerFactory.getLogger(CassandraACLDAO.class);
private static final String OLD_VERSION = "oldVersion";
private final CassandraAsyncExecutor executor;
private final int maxAclRetry;
- private final CassandraUserMailboxRightsDAO userMailboxRightsDAO;
private final PreparedStatement conditionalInsertStatement;
private final PreparedStatement conditionalUpdateStatement;
private final PreparedStatement readStatement;
@@ -70,8 +68,9 @@ public class CassandraACLMapper {
private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraACLMapper(Session session, CassandraUserMailboxRightsDAO userMailboxRightsDAO,
- CassandraConfiguration cassandraConfiguration, CassandraConsistenciesConfiguration consistenciesConfiguration) {
+ public CassandraACLDAO(Session session,
+ CassandraConfiguration cassandraConfiguration,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
this.executor = new CassandraAsyncExecutor(session);
this.maxAclRetry = cassandraConfiguration.getAclMaxRetry();
this.consistencyLevel = consistenciesConfiguration.getLightweightTransaction();
@@ -79,7 +78,6 @@ public class CassandraACLMapper {
this.conditionalUpdateStatement = prepareConditionalUpdate(session);
this.readStatement = prepareReadStatement(session);
this.deleteStatement = prepareDelete(session);
- this.userMailboxRightsDAO = userMailboxRightsDAO;
}
private PreparedStatement prepareDelete(Session session) {
@@ -114,7 +112,7 @@ public class CassandraACLMapper {
.where(eq(CassandraMailboxTable.ID, bindMarker(CassandraACLTable.ID))));
}
- public Mono<MailboxACL> getACL(CassandraId cassandraId) {
+ Mono<MailboxACL> getACL(CassandraId cassandraId) {
return getStoredACLRow(cassandraId)
.map(row -> getAcl(cassandraId, row));
}
@@ -126,20 +124,14 @@ public class CassandraACLMapper {
public Mono<ACLDiff> updateACL(CassandraId cassandraId, MailboxACL.ACLCommand command) {
return Mono.fromCallable(() -> MailboxACL.EMPTY.apply(command))
- .flatMap(replacement -> updateAcl(cassandraId, aclWithVersion -> aclWithVersion.apply(command), replacement))
- .flatMap(aclDiff -> userMailboxRightsDAO.update(cassandraId, aclDiff)
- .thenReturn(aclDiff))
- .switchIfEmpty(Mono.error(new MailboxException("Unable to update ACL")));
+ .flatMap(replacement -> doUpdateAcl(cassandraId, aclWithVersion -> aclWithVersion.apply(command), replacement));
}
public Mono<ACLDiff> setACL(CassandraId cassandraId, MailboxACL mailboxACL) {
- return updateAcl(cassandraId, acl -> new ACLWithVersion(acl.version, mailboxACL), mailboxACL)
- .flatMap(aclDiff -> userMailboxRightsDAO.update(cassandraId, aclDiff)
- .thenReturn(aclDiff))
- .switchIfEmpty(Mono.defer(() -> Mono.error(new MailboxException("Unable to update ACL"))));
+ return doUpdateAcl(cassandraId, acl -> new ACLWithVersion(acl.version, mailboxACL), mailboxACL);
}
- private Mono<ACLDiff> updateAcl(CassandraId cassandraId, Function<ACLWithVersion, ACLWithVersion> aclTransformation, MailboxACL replacement) {
+ Mono<ACLDiff> doUpdateAcl(CassandraId cassandraId, Function<ACLWithVersion, ACLWithVersion> aclTransformation, MailboxACL replacement) {
return getAclWithVersion(cassandraId)
.flatMap(aclWithVersion ->
updateStoredACL(cassandraId, aclTransformation.apply(aclWithVersion))
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
index cda7f9f..7a6e1a8 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
@@ -19,211 +19,45 @@
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 com.datastax.driver.core.querybuilder.QueryBuilder.set;
-import static com.datastax.driver.core.querybuilder.QueryBuilder.update;
-
-import java.io.IOException;
-import java.util.function.Function;
-
import javax.inject.Inject;
-import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
-import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
-import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.acl.ACLDiff;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
-import org.apache.james.mailbox.cassandra.json.MailboxACLJsonConverter;
-import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
-import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.exception.UnsupportedRightException;
import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.util.FunctionalUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.datastax.driver.core.ConsistencyLevel;
-import com.datastax.driver.core.PreparedStatement;
-import com.datastax.driver.core.Row;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.querybuilder.QueryBuilder;
-import com.fasterxml.jackson.core.JsonProcessingException;
import reactor.core.publisher.Mono;
public class CassandraACLMapper {
- public static final int INITIAL_VALUE = 0;
- private static final Logger LOG = LoggerFactory.getLogger(CassandraACLMapper.class);
- private static final String OLD_VERSION = "oldVersion";
-
- private final CassandraAsyncExecutor executor;
- private final int maxAclRetry;
private final CassandraUserMailboxRightsDAO userMailboxRightsDAO;
- private final PreparedStatement conditionalInsertStatement;
- private final PreparedStatement conditionalUpdateStatement;
- private final PreparedStatement readStatement;
- private final PreparedStatement deleteStatement;
- private final ConsistencyLevel consistencyLevel;
+ private final CassandraACLDAO cassandraACLDAO;
@Inject
- public CassandraACLMapper(Session session, CassandraUserMailboxRightsDAO userMailboxRightsDAO,
- CassandraConfiguration cassandraConfiguration, CassandraConsistenciesConfiguration consistenciesConfiguration) {
- this.executor = new CassandraAsyncExecutor(session);
- this.maxAclRetry = cassandraConfiguration.getAclMaxRetry();
- this.consistencyLevel = consistenciesConfiguration.getLightweightTransaction();
- this.conditionalInsertStatement = prepareConditionalInsert(session);
- this.conditionalUpdateStatement = prepareConditionalUpdate(session);
- this.readStatement = prepareReadStatement(session);
- this.deleteStatement = prepareDelete(session);
+ public CassandraACLMapper(CassandraUserMailboxRightsDAO userMailboxRightsDAO,
+ CassandraACLDAO cassandraACLDAO) {
+ this.cassandraACLDAO = cassandraACLDAO;
this.userMailboxRightsDAO = userMailboxRightsDAO;
}
- private PreparedStatement prepareDelete(Session session) {
- return session.prepare(
- QueryBuilder.delete().from(CassandraACLTable.TABLE_NAME)
- .where(eq(CassandraACLTable.ID, bindMarker(CassandraACLTable.ID)))
- .ifExists());
- }
-
- private PreparedStatement prepareConditionalInsert(Session session) {
- return session.prepare(
- insertInto(CassandraACLTable.TABLE_NAME)
- .value(CassandraACLTable.ID, bindMarker(CassandraACLTable.ID))
- .value(CassandraACLTable.ACL, bindMarker(CassandraACLTable.ACL))
- .value(CassandraACLTable.VERSION, INITIAL_VALUE)
- .ifNotExists());
- }
-
- private PreparedStatement prepareConditionalUpdate(Session session) {
- return session.prepare(
- update(CassandraACLTable.TABLE_NAME)
- .where(eq(CassandraACLTable.ID, bindMarker(CassandraACLTable.ID)))
- .with(set(CassandraACLTable.ACL, bindMarker(CassandraACLTable.ACL)))
- .and(set(CassandraACLTable.VERSION, bindMarker(CassandraACLTable.VERSION)))
- .onlyIf(eq(CassandraACLTable.VERSION, bindMarker(OLD_VERSION))));
- }
-
- private PreparedStatement prepareReadStatement(Session session) {
- return session.prepare(
- select(CassandraACLTable.ACL, CassandraACLTable.VERSION)
- .from(CassandraACLTable.TABLE_NAME)
- .where(eq(CassandraMailboxTable.ID, bindMarker(CassandraACLTable.ID))));
- }
-
public Mono<MailboxACL> getACL(CassandraId cassandraId) {
- return getStoredACLRow(cassandraId)
- .map(row -> getAcl(cassandraId, row));
- }
-
- private MailboxACL getAcl(CassandraId cassandraId, Row row) {
- String serializedACL = row.getString(CassandraACLTable.ACL);
- return deserializeACL(cassandraId, serializedACL);
+ return cassandraACLDAO.getACL(cassandraId);
}
public Mono<ACLDiff> updateACL(CassandraId cassandraId, MailboxACL.ACLCommand command) {
- return Mono.fromCallable(() -> MailboxACL.EMPTY.apply(command))
- .flatMap(replacement -> updateAcl(cassandraId, aclWithVersion -> aclWithVersion.apply(command), replacement))
+ return cassandraACLDAO.updateACL(cassandraId, command)
.flatMap(aclDiff -> userMailboxRightsDAO.update(cassandraId, aclDiff)
.thenReturn(aclDiff))
.switchIfEmpty(Mono.error(new MailboxException("Unable to update ACL")));
}
public Mono<ACLDiff> setACL(CassandraId cassandraId, MailboxACL mailboxACL) {
- return updateAcl(cassandraId, acl -> new ACLWithVersion(acl.version, mailboxACL), mailboxACL)
+ return cassandraACLDAO.setACL(cassandraId, mailboxACL)
.flatMap(aclDiff -> userMailboxRightsDAO.update(cassandraId, aclDiff)
.thenReturn(aclDiff))
.switchIfEmpty(Mono.defer(() -> Mono.error(new MailboxException("Unable to update ACL"))));
}
- private Mono<ACLDiff> updateAcl(CassandraId cassandraId, Function<ACLWithVersion, ACLWithVersion> aclTransformation, MailboxACL replacement) {
- return getAclWithVersion(cassandraId)
- .flatMap(aclWithVersion ->
- updateStoredACL(cassandraId, aclTransformation.apply(aclWithVersion))
- .map(newACL -> ACLDiff.computeDiff(aclWithVersion.mailboxACL, newACL)))
- .switchIfEmpty(insertACL(cassandraId, replacement)
- .map(newACL -> ACLDiff.computeDiff(MailboxACL.EMPTY, newACL)))
- .single()
- .retry(maxAclRetry);
- }
-
- private Mono<Row> getStoredACLRow(CassandraId cassandraId) {
- return executor.executeSingleRow(
- readStatement.bind()
- .setUUID(CassandraACLTable.ID, cassandraId.asUuid())
- .setConsistencyLevel(consistencyLevel));
- }
-
- private Mono<MailboxACL> updateStoredACL(CassandraId cassandraId, ACLWithVersion aclWithVersion) {
- return executor.executeReturnApplied(
- conditionalUpdateStatement.bind()
- .setUUID(CassandraACLTable.ID, cassandraId.asUuid())
- .setString(CassandraACLTable.ACL, convertAclToJson(aclWithVersion.mailboxACL))
- .setLong(CassandraACLTable.VERSION, aclWithVersion.version + 1)
- .setLong(OLD_VERSION, aclWithVersion.version))
- .filter(FunctionalUtils.identityPredicate())
- .map(any -> aclWithVersion.mailboxACL);
- }
-
public Mono<Void> delete(CassandraId cassandraId) {
- return executor.executeVoid(
- deleteStatement.bind()
- .setUUID(CassandraACLTable.ID, cassandraId.asUuid()));
- }
-
- private Mono<MailboxACL> insertACL(CassandraId cassandraId, MailboxACL acl) {
- return executor.executeReturnApplied(
- conditionalInsertStatement.bind()
- .setUUID(CassandraACLTable.ID, cassandraId.asUuid())
- .setString(CassandraACLTable.ACL, convertAclToJson(acl)))
- .filter(FunctionalUtils.identityPredicate())
- .map(any -> acl);
- }
-
- private String convertAclToJson(MailboxACL acl) {
- try {
- return MailboxACLJsonConverter.toJson(acl);
- } catch (JsonProcessingException exception) {
- throw new RuntimeException(exception);
- }
- }
-
- private Mono<ACLWithVersion> getAclWithVersion(CassandraId cassandraId) {
- return getStoredACLRow(cassandraId)
- .map(acl -> new ACLWithVersion(acl.getLong(CassandraACLTable.VERSION),
- deserializeACL(cassandraId, acl.getString(CassandraACLTable.ACL))));
- }
-
- private MailboxACL deserializeACL(CassandraId cassandraId, String serializedACL) {
- try {
- return MailboxACLJsonConverter.toACL(serializedACL);
- } catch (IOException exception) {
- LOG.error("Unable to read stored ACL. " +
- "We will use empty ACL instead." +
- "Mailbox is {} ." +
- "ACL is {}", cassandraId, serializedACL, exception);
- return MailboxACL.EMPTY;
- }
- }
-
- private static class ACLWithVersion {
- private final long version;
- private final MailboxACL mailboxACL;
-
- public ACLWithVersion(long version, MailboxACL mailboxACL) {
- this.version = version;
- this.mailboxACL = mailboxACL;
- }
-
- public ACLWithVersion apply(MailboxACL.ACLCommand command) {
- try {
- return new ACLWithVersion(version, mailboxACL.apply(command));
- } catch (UnsupportedRightException exception) {
- throw new RuntimeException(exception);
- }
- }
+ return cassandraACLDAO.delete(cassandraId);
}
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index 5552bda..919f9a7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.MessageManager.AppendResult;
import org.apache.james.mailbox.SubscriptionManager;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
+import org.apache.james.mailbox.cassandra.mail.CassandraACLDAO;
import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAOV2;
@@ -788,10 +789,10 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMai
private CassandraACLMapper aclMapper(CassandraCluster cassandraCluster) {
return new CassandraACLMapper(
- cassandraCluster.getConf(),
rightsDAO(cassandraCluster),
- CassandraConfiguration.DEFAULT_CONFIGURATION,
- cassandra.getCassandraConsistenciesConfiguration());
+ new CassandraACLDAO(cassandraCluster.getConf(),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandra.getCassandraConsistenciesConfiguration()));
}
private CassandraUserMailboxRightsDAO rightsDAO(CassandraCluster cassandraCluster) {
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index 8f2486b..0dfd6bc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -240,10 +240,10 @@ class CassandraACLMapperTest {
private Future<Boolean> performACLUpdateInExecutor(CassandraCluster cassandra, ExecutorService executor, MailboxACL.EntryKey key, MailboxACL.Rfc4314Rights rights) {
return executor.submit(() -> {
CassandraACLMapper aclMapper = new CassandraACLMapper(
- cassandra.getConf(),
new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION),
- CassandraConfiguration.DEFAULT_CONFIGURATION,
- cassandraCluster.getCassandraConsistenciesConfiguration());
+ new CassandraACLDAO(cassandra.getConf(),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration()));
aclMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asAddition()).block();
return true;
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 a2a8f30..5df1a7b 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
@@ -102,10 +102,10 @@ class CassandraMailboxMapperTest {
mailboxPathV3DAO = new CassandraMailboxPathV3DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION, cassandraCluster.getCassandraConsistenciesConfiguration());
CassandraUserMailboxRightsDAO userMailboxRightsDAO = new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
CassandraACLMapper aclMapper = new CassandraACLMapper(
- cassandra.getConf(),
new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION),
- CassandraConfiguration.DEFAULT_CONFIGURATION,
- cassandraCluster.getCassandraConsistenciesConfiguration());
+ new CassandraACLDAO(cassandra.getConf(),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration()));
versionDAO = new CassandraSchemaVersionDAO(cassandra.getConf());
versionDAO.truncateVersion()
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 6a4ef9f..9979833 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
@@ -31,6 +31,7 @@ import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManage
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
import org.apache.james.core.Username;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
+import org.apache.james.mailbox.cassandra.mail.CassandraACLDAO;
import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
import org.apache.james.mailbox.cassandra.mail.CassandraIdAndPath;
import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
@@ -99,10 +100,11 @@ class MailboxPathV2MigrationTest {
daoV3,
userMailboxRightsDAO,
new CassandraACLMapper(
- cassandra.getConf(),
userMailboxRightsDAO,
- CassandraConfiguration.DEFAULT_CONFIGURATION,
- cassandraCluster.getCassandraConsistenciesConfiguration()),
+ new CassandraACLDAO(
+ cassandra.getConf(),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration())),
new CassandraSchemaVersionManager(new CassandraSchemaVersionDAO(cassandra.getConf())),
CassandraConfiguration.DEFAULT_CONFIGURATION);
}
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index 09bf632..9427145 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -41,6 +41,7 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
import org.apache.james.mailbox.cassandra.DeleteMessageListener;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
+import org.apache.james.mailbox.cassandra.mail.CassandraACLDAO;
import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAOV2;
@@ -121,6 +122,7 @@ public class CassandraMailboxModule extends AbstractModule {
bind(CassandraFirstUnseenDAO.class).in(Scopes.SINGLETON);
bind(CassandraMailboxCounterDAO.class).in(Scopes.SINGLETON);
bind(CassandraMailboxDAO.class).in(Scopes.SINGLETON);
+ bind(CassandraACLDAO.class).in(Scopes.SINGLETON);
bind(CassandraMailboxPathDAOImpl.class).in(Scopes.SINGLETON);
bind(CassandraMailboxPathV2DAO.class).in(Scopes.SINGLETON);
bind(CassandraMailboxPathV3DAO.class).in(Scopes.SINGLETON);
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org