MAILBOX-307 Make CassandraAclMapper generic: MailboxId should not be a field
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/edf8a9a7 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/edf8a9a7 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/edf8a9a7 Branch: refs/heads/master Commit: edf8a9a734cb98e4700d5b94829630a3f603a9ce Parents: 5accac0 Author: benwa <btell...@linagora.com> Authored: Mon Sep 25 16:47:03 2017 +0700 Committer: Matthieu Baechler <matth...@apache.org> Committed: Fri Sep 29 09:20:40 2017 +0200 ---------------------------------------------------------------------- .../cassandra/mail/CassandraACLMapper.java | 44 +++++------ .../cassandra/mail/CassandraMailboxDAO.java | 12 +-- .../cassandra/mail/CassandraMailboxMapper.java | 15 +--- .../cassandra/mail/CassandraACLMapperTest.java | 83 ++++++++++++-------- 4 files changed, 77 insertions(+), 77 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/edf8a9a7/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java ---------------------------------------------------------------------- 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 f7df7d5..5695ffc 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 @@ -49,7 +49,6 @@ import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; import com.fasterxml.jackson.core.JsonProcessingException; -import com.google.common.base.Preconditions; import com.google.common.base.Throwables; public class CassandraACLMapper { @@ -61,44 +60,41 @@ public class CassandraACLMapper { void inject(); } - private final CassandraId cassandraId; private final CassandraAsyncExecutor executor; private final Session session; private final int maxRetry; private final CodeInjector codeInjector; - public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, CassandraConfiguration cassandraConfiguration) { - this(cassandraId, session, cassandraAsyncExecutor, cassandraConfiguration, () -> {}); + public CassandraACLMapper(Session session, CassandraConfiguration cassandraConfiguration) { + this(session, cassandraConfiguration, () -> {}); } - public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, CassandraConfiguration cassandraConfiguration, CodeInjector codeInjector) { - Preconditions.checkArgument(cassandraId != null); - this.cassandraId = cassandraId; + public CassandraACLMapper(Session session, CassandraConfiguration cassandraConfiguration, CodeInjector codeInjector) { this.session = session; - this.executor = cassandraAsyncExecutor; + this.executor = new CassandraAsyncExecutor(session); this.maxRetry = cassandraConfiguration.getAclMaxRetry(); this.codeInjector = codeInjector; } - public CompletableFuture<MailboxACL> getACL() { - return getStoredACLRow().thenApply(resultSet -> { + public CompletableFuture<MailboxACL> getACL(CassandraId cassandraId) { + return getStoredACLRow(cassandraId).thenApply(resultSet -> { if (resultSet.isExhausted()) { return SimpleMailboxACL.EMPTY; } String serializedACL = resultSet.one().getString(CassandraACLTable.ACL); - return deserializeACL(serializedACL); + return deserializeACL(cassandraId, serializedACL); }); } - public void updateACL(MailboxACL.MailboxACLCommand command) throws MailboxException { + public void updateACL(CassandraId cassandraId, MailboxACL.MailboxACLCommand command) throws MailboxException { try { new FunctionRunnerWithRetry(maxRetry).execute( () -> { codeInjector.inject(); - ResultSet resultSet = getAclWithVersion() - .map((x) -> x.apply(command)) - .map(this::updateStoredACL) - .orElseGet(() -> insertACL(applyCommandOnEmptyACL(command))); + ResultSet resultSet = getAclWithVersion(cassandraId) + .map(aclWithVersion -> aclWithVersion.apply(command)) + .map(aclWithVersion -> updateStoredACL(cassandraId, aclWithVersion)) + .orElseGet(() -> insertACL(cassandraId, applyCommandOnEmptyACL(command))); return resultSet.one().getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED); } ); @@ -107,7 +103,7 @@ public class CassandraACLMapper { } } - public void resetACL(MailboxACL mailboxACL) { + public void resetACL(CassandraId cassandraId, MailboxACL mailboxACL) { try { session.execute( insertInto(CassandraACLTable.TABLE_NAME) @@ -127,13 +123,13 @@ public class CassandraACLMapper { } } - private CompletableFuture<ResultSet> getStoredACLRow() { + private CompletableFuture<ResultSet> getStoredACLRow(CassandraId cassandraId) { return executor.execute(select(CassandraACLTable.ACL, CassandraACLTable.VERSION) .from(CassandraACLTable.TABLE_NAME) .where(eq(CassandraMailboxTable.ID, cassandraId.asUuid()))); } - private ResultSet updateStoredACL(ACLWithVersion aclWithVersion) { + private ResultSet updateStoredACL(CassandraId cassandraId, ACLWithVersion aclWithVersion) { try { return session.execute( update(CassandraACLTable.TABLE_NAME) @@ -147,7 +143,7 @@ public class CassandraACLMapper { } } - private ResultSet insertACL(MailboxACL acl) { + private ResultSet insertACL(CassandraId cassandraId, MailboxACL acl) { try { return session.execute( insertInto(CassandraACLTable.TABLE_NAME) @@ -161,16 +157,16 @@ public class CassandraACLMapper { } } - private Optional<ACLWithVersion> getAclWithVersion() { - ResultSet resultSet = getStoredACLRow().join(); + private Optional<ACLWithVersion> getAclWithVersion(CassandraId cassandraId) { + ResultSet resultSet = getStoredACLRow(cassandraId).join(); if (resultSet.isExhausted()) { return Optional.empty(); } Row row = resultSet.one(); - return Optional.of(new ACLWithVersion(row.getLong(CassandraACLTable.VERSION), deserializeACL(row.getString(CassandraACLTable.ACL)))); + return Optional.of(new ACLWithVersion(row.getLong(CassandraACLTable.VERSION), deserializeACL(cassandraId, row.getString(CassandraACLTable.ACL)))); } - private MailboxACL deserializeACL(String serializedACL) { + private MailboxACL deserializeACL(CassandraId cassandraId, String serializedACL) { try { return SimpleMailboxACLJsonConverter.toACL(serializedACL); } catch(IOException exception) { http://git-wip-us.apache.org/repos/asf/james-project/blob/edf8a9a7/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java index 6d06e5e..7d0dead 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java @@ -62,27 +62,25 @@ public class CassandraMailboxDAO { private final CassandraAsyncExecutor executor; private final MailboxBaseTupleUtil mailboxBaseTupleUtil; - private final Session session; private final CassandraUtils cassandraUtils; - private CassandraConfiguration cassandraConfiguration; private final PreparedStatement readStatement; private final PreparedStatement listStatement; private final PreparedStatement deleteStatement; private final PreparedStatement insertStatement; private final PreparedStatement updateStatement; + private CassandraACLMapper cassandraACLMapper; @Inject public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider, CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) { this.executor = new CassandraAsyncExecutor(session); this.mailboxBaseTupleUtil = new MailboxBaseTupleUtil(typesProvider); - this.session = session; this.insertStatement = prepareInsert(session); this.updateStatement = prepareUpdate(session); this.deleteStatement = prepareDelete(session); this.listStatement = prepareList(session); this.readStatement = prepareRead(session); this.cassandraUtils = cassandraUtils; - this.cassandraConfiguration = cassandraConfiguration; + this.cassandraACLMapper = new CassandraACLMapper(session, cassandraConfiguration); } @VisibleForTesting @@ -142,9 +140,7 @@ public class CassandraMailboxDAO { } public CompletableFuture<Optional<SimpleMailbox>> retrieveMailbox(CassandraId mailboxId) { - CompletableFuture<MailboxACL> aclCompletableFuture = - new CassandraACLMapper(mailboxId, session, executor, cassandraConfiguration) - .getACL(); + CompletableFuture<MailboxACL> aclCompletableFuture = cassandraACLMapper.getACL(mailboxId); CompletableFuture<Optional<SimpleMailbox>> simpleMailboxFuture = executor.executeSingleRow(readStatement.bind() .setUUID(ID, mailboxId.asUuid())) @@ -192,7 +188,7 @@ public class CassandraMailboxDAO { private CompletableFuture<SimpleMailbox> toMailboxWithAclFuture(SimpleMailbox mailbox) { CassandraId cassandraId = (CassandraId) mailbox.getMailboxId(); - return new CassandraACLMapper(cassandraId, session, executor, cassandraConfiguration).getACL() + return cassandraACLMapper.getACL(cassandraId) .thenApply(acl -> { mailbox.setACL(acl); return mailbox; http://git-wip-us.apache.org/repos/asf/james-project/blob/edf8a9a7/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java ---------------------------------------------------------------------- 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 81b43e7..a997152 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 @@ -32,7 +32,6 @@ import javax.inject.Inject; import org.apache.commons.lang3.StringUtils; import org.apache.james.backends.cassandra.init.CassandraConfiguration; -import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor; import org.apache.james.mailbox.cassandra.ids.CassandraId; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxExistsException; @@ -62,19 +61,15 @@ public class CassandraMailboxMapper implements MailboxMapper { public static final String CLUSTERING_COLUMNS_IS_TOO_LONG = "The sum of all clustering columns is too long"; public static final Logger LOGGER = LoggerFactory.getLogger(CassandraMailboxMapper.class); - private final CassandraAsyncExecutor cassandraAsyncExecutor; private final CassandraMailboxPathDAO mailboxPathDAO; private final CassandraMailboxDAO mailboxDAO; - private final Session session; - private final CassandraConfiguration cassandraConfiguration; + private final CassandraACLMapper cassandraACLMapper; @Inject public CassandraMailboxMapper(Session session, CassandraMailboxDAO mailboxDAO, CassandraMailboxPathDAO mailboxPathDAO, CassandraConfiguration cassandraConfiguration) { - this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session); this.mailboxDAO = mailboxDAO; this.mailboxPathDAO = mailboxPathDAO; - this.session = session; - this.cassandraConfiguration = cassandraConfiguration; + this.cassandraACLMapper = new CassandraACLMapper(session, cassandraConfiguration); } @Override @@ -206,15 +201,13 @@ public class CassandraMailboxMapper implements MailboxMapper { @Override public void updateACL(Mailbox mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException { CassandraId cassandraId = (CassandraId) mailbox.getMailboxId(); - new CassandraACLMapper(cassandraId, session, cassandraAsyncExecutor, cassandraConfiguration) - .updateACL(mailboxACLCommand); + cassandraACLMapper.updateACL(cassandraId, mailboxACLCommand); } @Override public void resetACL(Mailbox mailbox, MailboxACL mailboxACL) throws MailboxException { CassandraId cassandraId = (CassandraId) mailbox.getMailboxId(); - new CassandraACLMapper(cassandraId, session, cassandraAsyncExecutor, cassandraConfiguration) - .resetACL(mailboxACL); + cassandraACLMapper.resetACL(cassandraId, mailboxACL); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/edf8a9a7/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java ---------------------------------------------------------------------- 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 6976f76..9c4ef70 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 @@ -33,7 +33,6 @@ import java.util.concurrent.TimeoutException; import org.apache.james.backends.cassandra.CassandraCluster; import org.apache.james.backends.cassandra.DockerCassandraRule; import org.apache.james.backends.cassandra.init.CassandraConfiguration; -import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor; import org.apache.james.mailbox.cassandra.ids.CassandraId; import org.apache.james.mailbox.cassandra.modules.CassandraAclModule; import org.apache.james.mailbox.cassandra.table.CassandraACLTable; @@ -52,7 +51,6 @@ public class CassandraACLMapperTest { public static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("464765a0-e4e7-11e4-aba4-710c1de3782b")); private CassandraACLMapper cassandraACLMapper; private CassandraCluster cassandra; - private CassandraAsyncExecutor cassandraAsyncExecutor; private ExecutorService executor; @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule(); @@ -60,8 +58,7 @@ public class CassandraACLMapperTest { @Before public void setUp() { cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getIp(), cassandraServer.getBindingPort()); - cassandraAsyncExecutor = new CassandraAsyncExecutor(cassandra.getConf()); - cassandraACLMapper = new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, CassandraConfiguration.DEFAULT_CONFIGURATION); + cassandraACLMapper = new CassandraACLMapper(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION); executor = Executors.newFixedThreadPool(2); } @@ -77,9 +74,9 @@ public class CassandraACLMapperTest { insertInto(CassandraACLTable.TABLE_NAME) .value(CassandraACLTable.ID, MAILBOX_ID.asUuid()) .value(CassandraACLTable.ACL, "{\"entries\":{\"bob\":64}}") - .value(CassandraACLTable.VERSION, 1) - ); - assertThat(cassandraACLMapper.getACL().join()) + .value(CassandraACLTable.VERSION, 1)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()) .isEqualTo( SimpleMailboxACL.EMPTY.union( new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false), @@ -93,58 +90,71 @@ public class CassandraACLMapperTest { insertInto(CassandraACLTable.TABLE_NAME) .value(CassandraACLTable.ID, MAILBOX_ID.asUuid()) .value(CassandraACLTable.ACL, "{\"entries\":{\"bob\":invalid}}") - .value(CassandraACLTable.VERSION, 1) - ); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(SimpleMailboxACL.EMPTY); + .value(CassandraACLTable.VERSION, 1)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(SimpleMailboxACL.EMPTY); } @Test public void retrieveACLWhenNoACLStoredShouldReturnEmptyACL() { - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(SimpleMailboxACL.EMPTY); + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(SimpleMailboxACL.EMPTY); } @Test public void addACLWhenNoneStoredShouldReturnUpdatedACL() throws Exception { SimpleMailboxACL.SimpleMailboxACLEntryKey key = new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false); SimpleMailboxACL.Rfc4314Rights rights = new SimpleMailboxACL.Rfc4314Rights(SimpleMailboxACL.Right.Read); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(new SimpleMailboxACL().union(key, rights)); + + cassandraACLMapper.updateACL(MAILBOX_ID, + new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()) + .isEqualTo(new SimpleMailboxACL().union(key, rights)); } @Test public void modifyACLWhenStoredShouldReturnUpdatedACL() throws MailboxException { SimpleMailboxACL.SimpleMailboxACLEntryKey keyBob = new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false); SimpleMailboxACL.Rfc4314Rights rights = new SimpleMailboxACL.Rfc4314Rights(SimpleMailboxACL.Right.Read); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(keyBob, MailboxACL.EditMode.ADD, rights)); + + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(keyBob, MailboxACL.EditMode.ADD, rights)); SimpleMailboxACL.SimpleMailboxACLEntryKey keyAlice = new SimpleMailboxACL.SimpleMailboxACLEntryKey("alice", MailboxACL.NameType.user, false); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(keyAlice, MailboxACL.EditMode.ADD, rights)); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(new SimpleMailboxACL().union(keyBob, rights).union(keyAlice, rights)); + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(keyAlice, MailboxACL.EditMode.ADD, rights)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()) + .isEqualTo(new SimpleMailboxACL().union(keyBob, rights).union(keyAlice, rights)); } @Test public void removeWhenStoredShouldReturnUpdatedACL() throws MailboxException { SimpleMailboxACL.SimpleMailboxACLEntryKey key = new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false); SimpleMailboxACL.Rfc4314Rights rights = new SimpleMailboxACL.Rfc4314Rights(SimpleMailboxACL.Right.Read); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.REMOVE, rights)); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(SimpleMailboxACL.EMPTY); + + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.REMOVE, rights)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(SimpleMailboxACL.EMPTY); } @Test public void replaceForSingleKeyWithNullRightsWhenSingleKeyStoredShouldReturnEmptyACL() throws MailboxException { SimpleMailboxACL.SimpleMailboxACLEntryKey key = new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false); SimpleMailboxACL.Rfc4314Rights rights = new SimpleMailboxACL.Rfc4314Rights(SimpleMailboxACL.Right.Read); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.REPLACE, null)); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(SimpleMailboxACL.EMPTY); + + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.REPLACE, null)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(SimpleMailboxACL.EMPTY); } @Test public void replaceWhenNotStoredShouldUpdateACLEntry() throws MailboxException { SimpleMailboxACL.SimpleMailboxACLEntryKey key = new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false); SimpleMailboxACL.Rfc4314Rights rights = new SimpleMailboxACL.Rfc4314Rights(SimpleMailboxACL.Right.Read); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.REPLACE, rights)); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(new SimpleMailboxACL().union(key, rights)); + + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.REPLACE, rights)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(new SimpleMailboxACL().union(key, rights)); } @Test @@ -153,12 +163,13 @@ public class CassandraACLMapperTest { insertInto(CassandraACLTable.TABLE_NAME) .value(CassandraACLTable.ID, MAILBOX_ID.asUuid()) .value(CassandraACLTable.ACL, "{\"entries\":{\"bob\":invalid}}") - .value(CassandraACLTable.VERSION, 1) - ); + .value(CassandraACLTable.VERSION, 1)); SimpleMailboxACL.SimpleMailboxACLEntryKey key = new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false); SimpleMailboxACL.Rfc4314Rights rights = new SimpleMailboxACL.Rfc4314Rights(SimpleMailboxACL.Right.Read); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(new SimpleMailboxACL().union(key, rights)); + + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(new SimpleMailboxACL().union(key, rights)); } @Test @@ -170,7 +181,9 @@ public class CassandraACLMapperTest { Future<Boolean> future1 = performACLUpdateInExecutor(executor, keyBob, rights, countDownLatch::countDown); Future<Boolean> future2 = performACLUpdateInExecutor(executor, keyAlice, rights, countDownLatch::countDown); awaitAll(future1, future2); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(new SimpleMailboxACL().union(keyBob, rights).union(keyAlice, rights)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()) + .isEqualTo(new SimpleMailboxACL().union(keyBob, rights).union(keyAlice, rights)); } @Test @@ -178,13 +191,16 @@ public class CassandraACLMapperTest { CountDownLatch countDownLatch = new CountDownLatch(2); SimpleMailboxACL.SimpleMailboxACLEntryKey keyBenwa = new SimpleMailboxACL.SimpleMailboxACLEntryKey("benwa", MailboxACL.NameType.user, false); SimpleMailboxACL.Rfc4314Rights rights = new SimpleMailboxACL.Rfc4314Rights(SimpleMailboxACL.Right.Read); - cassandraACLMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(keyBenwa, MailboxACL.EditMode.ADD, rights)); + cassandraACLMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(keyBenwa, MailboxACL.EditMode.ADD, rights)); + SimpleMailboxACL.SimpleMailboxACLEntryKey keyBob = new SimpleMailboxACL.SimpleMailboxACLEntryKey("bob", MailboxACL.NameType.user, false); SimpleMailboxACL.SimpleMailboxACLEntryKey keyAlice = new SimpleMailboxACL.SimpleMailboxACLEntryKey("alice", MailboxACL.NameType.user, false); Future<Boolean> future1 = performACLUpdateInExecutor(executor, keyBob, rights, countDownLatch::countDown); Future<Boolean> future2 = performACLUpdateInExecutor(executor, keyAlice, rights, countDownLatch::countDown); awaitAll(future1, future2); - assertThat(cassandraACLMapper.getACL().join()).isEqualTo(new SimpleMailboxACL().union(keyBob, rights).union(keyAlice, rights).union(keyBenwa, rights)); + + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()) + .isEqualTo(new SimpleMailboxACL().union(keyBob, rights).union(keyAlice, rights).union(keyBenwa, rights)); } private void awaitAll(Future<?>... futures) @@ -196,13 +212,12 @@ public class CassandraACLMapperTest { private Future<Boolean> performACLUpdateInExecutor(ExecutorService executor, SimpleMailboxACL.SimpleMailboxACLEntryKey key, SimpleMailboxACL.Rfc4314Rights rights, CassandraACLMapper.CodeInjector runnable) { return executor.submit(() -> { - CassandraACLMapper aclMapper = new CassandraACLMapper(MAILBOX_ID, + CassandraACLMapper aclMapper = new CassandraACLMapper( cassandra.getConf(), - new CassandraAsyncExecutor(cassandra.getConf()), CassandraConfiguration.DEFAULT_CONFIGURATION, runnable); try { - aclMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); + aclMapper.updateACL(MAILBOX_ID, new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights)); } catch (MailboxException exception) { throw Throwables.propagate(exception); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org