You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/07/26 07:02:25 UTC
[07/27] james-project git commit: MAILBOX-342 Use
CassandraModule.builder() for Cassandra blob store
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 <bt...@linagora.com>
Authored: Tue Jul 24 14:49:10 2018 +0700
Committer: benwa <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org