MAILBOX-342 Use CassandraModule.Builder in cassandra-backend
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/63b7ca83 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/63b7ca83 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/63b7ca83 Branch: refs/heads/master Commit: 63b7ca83de34fba19bc097cdf4e7a352dabf5175 Parents: dd7020d Author: benwa <[email protected]> Authored: Tue Jul 24 14:47:02 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jul 26 13:47:39 2018 +0700 ---------------------------------------------------------------------- .../init/CassandraZonedDateTimeModule.java | 46 +++++--------------- .../versions/CassandraSchemaVersionModule.java | 41 ++++------------- .../init/CassandraTypeProviderTest.java | 23 +++------- .../backends/cassandra/utils/PaggingTest.java | 27 +++--------- .../versions/CassandraSchemaVersionDAOTest.java | 2 +- .../modules/mailbox/CassandraSessionModule.java | 4 +- 6 files changed, 34 insertions(+), 109 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/63b7ca83/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java ---------------------------------------------------------------------- diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java index 0ef3461..fe81f81 100644 --- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java +++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java @@ -22,41 +22,17 @@ package org.apache.james.backends.cassandra.init; import static com.datastax.driver.core.DataType.text; import static com.datastax.driver.core.DataType.timestamp; -import java.util.Collections; -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 com.datastax.driver.core.schemabuilder.SchemaBuilder; - -public class CassandraZonedDateTimeModule implements CassandraModule { - - public static final String ZONED_DATE_TIME = "zonedDateTime"; - public static final String DATE = "date"; - public static final String TIME_ZONE = "timeZone"; - - private final List<CassandraTable> tables; - private final List<CassandraType> types; - - public CassandraZonedDateTimeModule() { - tables = Collections.emptyList(); - types = Collections.singletonList( - new CassandraType(ZONED_DATE_TIME, - SchemaBuilder.createType(ZONED_DATE_TIME) - .ifNotExists() - .addColumn(DATE, timestamp()) - .addColumn(TIME_ZONE, text()))); - } - - @Override - public List<CassandraTable> moduleTables() { - return tables; - } - @Override - public List<CassandraType> moduleTypes() { - return types; - } +public interface CassandraZonedDateTimeModule { + String ZONED_DATE_TIME = "zonedDateTime"; + String DATE = "date"; + String TIME_ZONE = "timeZone"; + + CassandraModule MODULE = CassandraModule.type(ZONED_DATE_TIME) + .statement(statement -> statement + .ifNotExists() + .addColumn(DATE, timestamp()) + .addColumn(TIME_ZONE, text())) + .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/63b7ca83/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionModule.java ---------------------------------------------------------------------- diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionModule.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionModule.java index 0b5d55d..74d043e 100644 --- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionModule.java +++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionModule.java @@ -22,39 +22,16 @@ package org.apache.james.backends.cassandra.versions; import static com.datastax.driver.core.DataType.cint; import static com.datastax.driver.core.DataType.timeuuid; -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.versions.table.CassandraSchemaVersionTable; -import com.datastax.driver.core.schemabuilder.SchemaBuilder; -import com.google.common.collect.ImmutableList; - -public class CassandraSchemaVersionModule implements CassandraModule { - - private final List<CassandraTable> tables; - - public CassandraSchemaVersionModule() { - this.tables = ImmutableList.of( - new CassandraTable(CassandraSchemaVersionTable.TABLE_NAME, - SchemaBuilder.createTable(CassandraSchemaVersionTable.TABLE_NAME) - .ifNotExists() - .addPartitionKey(CassandraSchemaVersionTable.KEY, timeuuid()) - .addClusteringColumn(CassandraSchemaVersionTable.VALUE, cint()) - .withOptions() - .comment("Holds the history of the versions of the schema used."))); - } - - - @Override - public List<CassandraTable> moduleTables() { - return tables; - } - - @Override - public List<CassandraType> moduleTypes() { - return ImmutableList.of(); - } +public interface CassandraSchemaVersionModule { + CassandraModule MODULE = CassandraModule.table(CassandraSchemaVersionTable.TABLE_NAME) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(CassandraSchemaVersionTable.KEY, timeuuid()) + .addClusteringColumn(CassandraSchemaVersionTable.VALUE, cint()) + .withOptions() + .comment("Holds the history of the versions of the schema used.")) + .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/63b7ca83/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java ---------------------------------------------------------------------- diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java index 1b48b22..7993251 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java @@ -22,21 +22,15 @@ package org.apache.james.backends.cassandra.init; import static com.datastax.driver.core.DataType.text; import static org.assertj.core.api.Assertions.assertThat; -import java.util.Arrays; -import java.util.List; - import org.apache.james.backends.cassandra.CassandraCluster; import org.apache.james.backends.cassandra.DockerCassandraRule; 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.junit.After; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; import com.datastax.driver.core.schemabuilder.SchemaBuilder; -import com.google.common.collect.ImmutableList; public class CassandraTypeProviderTest { @@ -50,18 +44,11 @@ public class CassandraTypeProviderTest { @Before public void setUp() { - module = new CassandraModule() { - @Override public List<CassandraTable> moduleTables() { - return ImmutableList.of(); - } - - @Override public List<CassandraType> moduleTypes() { - return ImmutableList.copyOf( - Arrays.asList(new CassandraType(TYPE_NAME, SchemaBuilder.createType(TYPE_NAME) - .ifNotExists() - .addColumn(PROPERTY, text())))); - } - }; + module = CassandraModule.type(TYPE_NAME) + .statement(statement -> statement + .ifNotExists() + .addColumn(PROPERTY, text())) + .build(); cassandra = CassandraCluster.create(module, cassandraServer.getHost()); cassandra.getTypesProvider(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/63b7ca83/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java ---------------------------------------------------------------------- diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java index 9fde48f..1946928 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java @@ -24,15 +24,12 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto; import static com.datastax.driver.core.querybuilder.QueryBuilder.select; import static org.assertj.core.api.Assertions.assertThat; -import java.util.List; import java.util.UUID; import java.util.stream.IntStream; import org.apache.james.backends.cassandra.CassandraCluster; import org.apache.james.backends.cassandra.DockerCassandraRule; 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.util.CompletableFutureUtil; import org.junit.After; import org.junit.AfterClass; @@ -42,9 +39,7 @@ import org.junit.ClassRule; import org.junit.Test; import com.datastax.driver.core.DataType; -import com.datastax.driver.core.schemabuilder.SchemaBuilder; import com.datastax.driver.core.utils.UUIDs; -import com.google.common.collect.ImmutableList; public class PaggingTest { @@ -58,24 +53,14 @@ public class PaggingTest { private static CassandraCluster cassandra; private CassandraAsyncExecutor executor; - @BeforeClass public static void setUpClass() { - CassandraModule modules = new CassandraModule() { - @Override - public List<CassandraTable> moduleTables() { - return ImmutableList.of(new CassandraTable(TABLE_NAME, - SchemaBuilder.createTable(TABLE_NAME) - .ifNotExists() - .addPartitionKey(ID, DataType.timeuuid()) - .addClusteringColumn(CLUSTERING, DataType.bigint()))); - } - - @Override - public List<CassandraType> moduleTypes() { - return ImmutableList.of(); - } - }; + CassandraModule modules = CassandraModule.table(TABLE_NAME) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(ID, DataType.timeuuid()) + .addClusteringColumn(CLUSTERING, DataType.bigint())) + .build(); cassandra = CassandraCluster.create(modules, cassandraServer.getHost()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/63b7ca83/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java ---------------------------------------------------------------------- diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java index 463fb63..7db01dd 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java @@ -43,7 +43,7 @@ public class CassandraSchemaVersionDAOTest { @BeforeClass public static void setUpClass() { - cassandra = CassandraCluster.create(new CassandraSchemaVersionModule(), cassandraServer.getHost()); + cassandra = CassandraCluster.create(CassandraSchemaVersionModule.MODULE, cassandraServer.getHost()); } @Before http://git-wip-us.apache.org/repos/asf/james-project/blob/63b7ca83/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java index 4214367..0f27457 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java @@ -73,8 +73,8 @@ public class CassandraSessionModule extends AbstractModule { bind(Cluster.class).toProvider(ResilientClusterProvider.class); Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class); - cassandraDataDefinitions.addBinding().to(CassandraZonedDateTimeModule.class); - cassandraDataDefinitions.addBinding().to(CassandraSchemaVersionModule.class); + cassandraDataDefinitions.addBinding().toInstance(CassandraZonedDateTimeModule.MODULE); + cassandraDataDefinitions.addBinding().toInstance(CassandraSchemaVersionModule.MODULE); bind(CassandraSchemaVersionManager.class).in(Scopes.SINGLETON); bind(CassandraSchemaVersionDAO.class).in(Scopes.SINGLETON); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
