MAILBOX-342 Use CassandraModule.builder() for Cassandra blob store
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/2fa0bbea Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/2fa0bbea Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/2fa0bbea Branch: refs/heads/master Commit: 2fa0bbeadcd8d45e7b116afd65a91335bb4711cd Parents: 63b7ca8 Author: benwa <[email protected]> Authored: Tue Jul 24 14:49:10 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jul 26 13:47:39 2018 +0700 ---------------------------------------------------------------------- .../blob/cassandra/CassandraBlobModule.java | 63 +++++++------------- .../blob/cassandra/CassandraBlobsDAOTest.java | 2 +- .../mailbox/CassandraObjectStoreModule.java | 3 +- 3 files changed, 24 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/2fa0bbea/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobModule.java ---------------------------------------------------------------------- diff --git a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobModule.java b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobModule.java index 234988a..9832f11 100644 --- a/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobModule.java +++ b/server/blob/blob-cassandra/src/main/java/org/apache/james/blob/cassandra/CassandraBlobModule.java @@ -19,50 +19,29 @@ package org.apache.james.blob.cassandra; -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.DataType; -import com.datastax.driver.core.schemabuilder.SchemaBuilder; -import com.google.common.collect.ImmutableList; - -public class CassandraBlobModule implements CassandraModule { - - private final List<CassandraTable> tables; - private final List<CassandraType> types; - - public CassandraBlobModule() { - tables = ImmutableList.of( - new CassandraTable(BlobTable.TABLE_NAME, - SchemaBuilder.createTable(BlobTable.TABLE_NAME) - .ifNotExists() - .addPartitionKey(BlobTable.ID, DataType.text()) - .addClusteringColumn(BlobTable.NUMBER_OF_CHUNK, DataType.cint()) - .withOptions() - .comment("Holds information for retrieving all blob parts composing this blob. " + - "Messages` headers and bodies are stored as blobparts.")), - new CassandraTable(BlobTable.BlobParts.TABLE_NAME, - SchemaBuilder.createTable(BlobTable.BlobParts.TABLE_NAME) - .ifNotExists() - .addPartitionKey(BlobTable.ID, DataType.text()) - .addClusteringColumn(BlobTable.BlobParts.CHUNK_NUMBER, DataType.cint()) - .addColumn(BlobTable.BlobParts.DATA, DataType.blob()) - .withOptions() - .comment("Holds blob parts composing blobs ." + - "Messages` headers and bodies are stored, chunked in blobparts."))); - types = ImmutableList.of(); - } - - @Override - public List<CassandraTable> moduleTables() { - return tables; - } - @Override - public List<CassandraType> moduleTypes() { - return types; - } +public interface CassandraBlobModule { + CassandraModule MODULE = CassandraModule + .builder() + .table(BlobTable.BlobParts.TABLE_NAME) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(BlobTable.ID, DataType.text()) + .addClusteringColumn(BlobTable.BlobParts.CHUNK_NUMBER, DataType.cint()) + .addColumn(BlobTable.BlobParts.DATA, DataType.blob()) + .withOptions() + .comment("Holds blob parts composing blobs ." + + "Messages` headers and bodies are stored, chunked in blobparts.")) + .table(BlobTable.TABLE_NAME) + .statement(statement -> statement + .ifNotExists() + .addPartitionKey(BlobTable.ID, DataType.text()) + .addClusteringColumn(BlobTable.NUMBER_OF_CHUNK, DataType.cint()) + .withOptions() + .comment("Holds information for retrieving all blob parts composing this blob. " + + "Messages` headers and bodies are stored as blobparts.")) + .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/2fa0bbea/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java ---------------------------------------------------------------------- diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java index 38202a3..07af72f 100644 --- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java +++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java @@ -51,7 +51,7 @@ public class CassandraBlobsDAOTest implements ObjectStoreContract { @BeforeAll static void setUpClass(DockerCassandra dockerCassandra) { - cassandra = CassandraCluster.create(new CassandraBlobModule(), dockerCassandra.getHost()); + cassandra = CassandraCluster.create(CassandraBlobModule.MODULE, dockerCassandra.getHost()); } @BeforeEach http://git-wip-us.apache.org/repos/asf/james-project/blob/2fa0bbea/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraObjectStoreModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraObjectStoreModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraObjectStoreModule.java index 0e6d6fd..b1f33cd 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraObjectStoreModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraObjectStoreModule.java @@ -23,6 +23,7 @@ import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.blob.api.BlobId; import org.apache.james.blob.api.ObjectStore; import org.apache.james.blob.cassandra.CassandraBlobId; +import org.apache.james.blob.cassandra.CassandraBlobModule; import org.apache.james.blob.cassandra.CassandraBlobsDAO; import com.google.inject.AbstractModule; @@ -39,6 +40,6 @@ public class CassandraObjectStoreModule extends AbstractModule { bind(BlobId.Factory.class).to(CassandraBlobId.Factory.class); Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class); - cassandraDataDefinitions.addBinding().to(org.apache.james.blob.cassandra.CassandraBlobModule.class); + cassandraDataDefinitions.addBinding().toInstance(CassandraBlobModule.MODULE); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
