MAILBOX-342 Use CassandraModule.Builder for Cassandra data-jmap
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c6755229 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c6755229 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c6755229 Branch: refs/heads/master Commit: c67552296f1b3eb430daef215e24b4db17f518df Parents: b100add Author: benwa <[email protected]> Authored: Tue Jul 24 14:59:35 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jul 26 13:47:39 2018 +0700 ---------------------------------------------------------------------- .../james/modules/data/CassandraJmapModule.java | 7 ++- .../cassandra/access/CassandraAccessModule.java | 44 ++++------------ .../CassandraNotificationRegistryModule.java | 46 +++++------------ .../vacation/CassandraVacationModule.java | 54 ++++++-------------- .../CassandraAccessTokenRepositoryTest.java | 2 +- .../CassandraNotificationRegistryTest.java | 3 +- .../CassandraVacationRepositoryTest.java | 4 +- 7 files changed, 46 insertions(+), 114 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java index 998b4f0..3a88c08 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java @@ -32,7 +32,6 @@ import org.apache.james.jmap.cassandra.vacation.CassandraVacationRepository; import com.google.inject.AbstractModule; import com.google.inject.Scopes; - import com.google.inject.multibindings.Multibinder; public class CassandraJmapModule extends AbstractModule { @@ -49,8 +48,8 @@ public class CassandraJmapModule extends AbstractModule { bind(NotificationRegistry.class).to(CassandraNotificationRegistry.class); Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class); - cassandraDataDefinitions.addBinding().to(CassandraAccessModule.class); - cassandraDataDefinitions.addBinding().to(CassandraVacationModule.class); - cassandraDataDefinitions.addBinding().to(CassandraNotificationRegistryModule.class); + cassandraDataDefinitions.addBinding().toInstance(CassandraAccessModule.MODULE); + cassandraDataDefinitions.addBinding().toInstance(CassandraVacationModule.MODULE); + cassandraDataDefinitions.addBinding().toInstance(CassandraNotificationRegistryModule.MODULE); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java index b57f71e..6f706d5 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java @@ -22,43 +22,21 @@ package org.apache.james.jmap.cassandra.access; import static com.datastax.driver.core.DataType.text; import static com.datastax.driver.core.DataType.uuid; -import java.util.List; - import org.apache.james.backends.cassandra.components.CassandraModule; -import org.apache.james.backends.cassandra.components.CassandraTable; -import org.apache.james.backends.cassandra.components.CassandraType; import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.jmap.cassandra.access.table.CassandraAccessTokenTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; -import com.google.common.collect.ImmutableList; - -public class CassandraAccessModule implements CassandraModule { - - private final List<CassandraTable> tables; - private final List<CassandraType> types; - - public CassandraAccessModule() { - tables = ImmutableList.of( - new CassandraTable(CassandraAccessTokenTable.TABLE_NAME, - SchemaBuilder.createTable(CassandraAccessTokenTable.TABLE_NAME) - .ifNotExists() - .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid()) - .addColumn(CassandraAccessTokenTable.USERNAME, text()) - .withOptions() - .comment("Holds JMAP access token required to process to authentication.") - .caching(SchemaBuilder.KeyCaching.ALL, - SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); - types = ImmutableList.of(); - } - - @Override - public List<CassandraTable> moduleTables() { - return tables; - } - @Override - public List<CassandraType> moduleTypes() { - return types; - } +public class CassandraAccessModule { + public static final CassandraModule MODULE = CassandraModule.table(CassandraAccessTokenTable.TABLE_NAME) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid()) + .addColumn(CassandraAccessTokenTable.USERNAME, text()) + .withOptions() + .comment("Holds JMAP access token required to process to authentication.") + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))) + .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java index 734556a..270fa50 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java @@ -21,44 +21,22 @@ package org.apache.james.jmap.cassandra.vacation; import static com.datastax.driver.core.DataType.text; -import java.util.List; - import org.apache.james.backends.cassandra.components.CassandraModule; -import org.apache.james.backends.cassandra.components.CassandraTable; -import org.apache.james.backends.cassandra.components.CassandraType; import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.jmap.cassandra.vacation.tables.CassandraNotificationTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; -import com.google.common.collect.ImmutableList; - -public class CassandraNotificationRegistryModule implements CassandraModule { - - private final List<CassandraTable> tables; - private final List<CassandraType> types; - - public CassandraNotificationRegistryModule() { - tables = ImmutableList.of( - new CassandraTable(CassandraNotificationTable.TABLE_NAME, - SchemaBuilder.createTable(CassandraNotificationTable.TABLE_NAME) - .ifNotExists() - .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, text()) - .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text()) - .withOptions() - .comment("Stores registry of vacation notification being sent.") - .compactionOptions(SchemaBuilder.dateTieredStrategy()) - .caching(SchemaBuilder.KeyCaching.ALL, - SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); - types = ImmutableList.of(); - } - - @Override - public List<CassandraTable> moduleTables() { - return tables; - } - @Override - public List<CassandraType> moduleTypes() { - return types; - } +public class CassandraNotificationRegistryModule { + public static final CassandraModule MODULE = CassandraModule.table(CassandraNotificationTable.TABLE_NAME) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, text()) + .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text()) + .withOptions() + .comment("Stores registry of vacation notification being sent.") + .compactionOptions(SchemaBuilder.dateTieredStrategy()) + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))) + .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java index 2a9ba0a..5fa8567 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java @@ -22,49 +22,27 @@ package org.apache.james.jmap.cassandra.vacation; import static com.datastax.driver.core.DataType.cboolean; import static com.datastax.driver.core.DataType.text; -import java.util.List; - import org.apache.james.backends.cassandra.components.CassandraModule; -import org.apache.james.backends.cassandra.components.CassandraTable; -import org.apache.james.backends.cassandra.components.CassandraType; import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule; import org.apache.james.backends.cassandra.utils.CassandraConstants; import org.apache.james.jmap.cassandra.vacation.tables.CassandraVacationTable; import com.datastax.driver.core.schemabuilder.SchemaBuilder; -import com.google.common.collect.ImmutableList; - -public class CassandraVacationModule implements CassandraModule { - - private final List<CassandraTable> tables; - private final List<CassandraType> types; - - public CassandraVacationModule() { - tables = ImmutableList.of( - new CassandraTable(CassandraVacationTable.TABLE_NAME, - SchemaBuilder.createTable(CassandraVacationTable.TABLE_NAME) - .ifNotExists() - .addPartitionKey(CassandraVacationTable.ACCOUNT_ID, text()) - .addColumn(CassandraVacationTable.IS_ENABLED, cboolean()) - .addUDTColumn(CassandraVacationTable.FROM_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME)) - .addUDTColumn(CassandraVacationTable.TO_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME)) - .addColumn(CassandraVacationTable.TEXT, text()) - .addColumn(CassandraVacationTable.SUBJECT, text()) - .addColumn(CassandraVacationTable.HTML, text()) - .withOptions() - .comment("Holds vacation definition. Allow one to automatically respond to emails with a custom message.") - .caching(SchemaBuilder.KeyCaching.ALL, - SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))); - types = ImmutableList.of(); - } - - @Override - public List<CassandraTable> moduleTables() { - return tables; - } - @Override - public List<CassandraType> moduleTypes() { - return types; - } +public class CassandraVacationModule { + public static final CassandraModule MODULE = CassandraModule.table(CassandraVacationTable.TABLE_NAME) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(CassandraVacationTable.ACCOUNT_ID, text()) + .addColumn(CassandraVacationTable.IS_ENABLED, cboolean()) + .addUDTColumn(CassandraVacationTable.FROM_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME)) + .addUDTColumn(CassandraVacationTable.TO_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME)) + .addColumn(CassandraVacationTable.TEXT, text()) + .addColumn(CassandraVacationTable.SUBJECT, text()) + .addColumn(CassandraVacationTable.HTML, text()) + .withOptions() + .comment("Holds vacation definition. Allow one to automatically respond to emails with a custom message.") + .caching(SchemaBuilder.KeyCaching.ALL, + SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))) + .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java index c0164cb..7908c6c 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java @@ -37,7 +37,7 @@ public class CassandraAccessTokenRepositoryTest extends AccessTokenRepositoryTes @BeforeClass public static void setUpClass() { - cassandra = CassandraCluster.create(new CassandraAccessModule(), cassandraServer.getHost()); + cassandra = CassandraCluster.create(CassandraAccessModule.MODULE, cassandraServer.getHost()); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java index b1d8175..ec4e48e 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java @@ -38,13 +38,12 @@ public class CassandraNotificationRegistryTest extends AbstractNotificationRegis @BeforeClass public static void setUpClass() { - cassandra = CassandraCluster.create(new CassandraNotificationRegistryModule(), cassandraServer.getHost()); + cassandra = CassandraCluster.create(CassandraNotificationRegistryModule.MODULE, cassandraServer.getHost()); } @Override @Before public void setUp() throws Exception { - cassandra = CassandraCluster.create(new CassandraNotificationRegistryModule(), cassandraServer.getHost()); super.setUp(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java index 6c18a27..7db419b 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java @@ -21,7 +21,7 @@ package org.apache.james.jmap.cassandra.vacation; import org.apache.james.backends.cassandra.CassandraCluster; import org.apache.james.backends.cassandra.DockerCassandraRule; -import org.apache.james.backends.cassandra.init.CassandraModuleComposite; +import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule; import org.apache.james.jmap.api.vacation.AbstractVacationRepositoryTest; import org.apache.james.jmap.api.vacation.VacationRepository; @@ -39,7 +39,7 @@ public class CassandraVacationRepositoryTest extends AbstractVacationRepositoryT @BeforeClass public static void setUpClass() { - CassandraModuleComposite module = new CassandraModuleComposite(new CassandraVacationModule(), new CassandraZonedDateTimeModule()); + CassandraModule module = CassandraModule.aggregateModules(CassandraVacationModule.MODULE, CassandraZonedDateTimeModule.MODULE); cassandra = CassandraCluster.create(module, cassandraServer.getHost()); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
