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:35 UTC

[17/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder in cassandra-backend

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 <bt...@linagora.com>
Authored: Tue Jul 24 14:47:02 2018 +0700
Committer: benwa <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org