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