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

[16/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder for Cassandra data-jmap

MAILBOX-342 Use CassandraModule.Builder for Cassandra data-jmap


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c6755229
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c6755229
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c6755229

Branch: refs/heads/master
Commit: c67552296f1b3eb430daef215e24b4db17f518df
Parents: b100add
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 24 14:59:35 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 .../james/modules/data/CassandraJmapModule.java |  7 ++-
 .../cassandra/access/CassandraAccessModule.java | 44 ++++------------
 .../CassandraNotificationRegistryModule.java    | 46 +++++------------
 .../vacation/CassandraVacationModule.java       | 54 ++++++--------------
 .../CassandraAccessTokenRepositoryTest.java     |  2 +-
 .../CassandraNotificationRegistryTest.java      |  3 +-
 .../CassandraVacationRepositoryTest.java        |  4 +-
 7 files changed, 46 insertions(+), 114 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java
index 998b4f0..3a88c08 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraJmapModule.java
@@ -32,7 +32,6 @@ import org.apache.james.jmap.cassandra.vacation.CassandraVacationRepository;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Scopes;
-
 import com.google.inject.multibindings.Multibinder;
 
 public class CassandraJmapModule extends AbstractModule {
@@ -49,8 +48,8 @@ public class CassandraJmapModule extends AbstractModule {
         bind(NotificationRegistry.class).to(CassandraNotificationRegistry.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraDataDefinitions.addBinding().to(CassandraAccessModule.class);
-        cassandraDataDefinitions.addBinding().to(CassandraVacationModule.class);
-        cassandraDataDefinitions.addBinding().to(CassandraNotificationRegistryModule.class);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraAccessModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraVacationModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraNotificationRegistryModule.MODULE);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
index b57f71e..6f706d5 100644
--- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
+++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessModule.java
@@ -22,43 +22,21 @@ package org.apache.james.jmap.cassandra.access;
 import static com.datastax.driver.core.DataType.text;
 import static com.datastax.driver.core.DataType.uuid;
 
-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.utils.CassandraConstants;
 import org.apache.james.jmap.cassandra.access.table.CassandraAccessTokenTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraAccessModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraAccessModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraAccessTokenTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraAccessTokenTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid())
-                    .addColumn(CassandraAccessTokenTable.USERNAME, text())
-                    .withOptions()
-                    .comment("Holds JMAP access token required to process to authentication.")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
-        types = ImmutableList.of();
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public class CassandraAccessModule {
+    public static final CassandraModule MODULE = CassandraModule.table(CassandraAccessTokenTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid())
+            .addColumn(CassandraAccessTokenTable.USERNAME, text())
+            .withOptions()
+            .comment("Holds JMAP access token required to process to authentication.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
index 734556a..270fa50 100644
--- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
+++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryModule.java
@@ -21,44 +21,22 @@ package org.apache.james.jmap.cassandra.vacation;
 
 import static com.datastax.driver.core.DataType.text;
 
-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.utils.CassandraConstants;
 import org.apache.james.jmap.cassandra.vacation.tables.CassandraNotificationTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraNotificationRegistryModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraNotificationRegistryModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraNotificationTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraNotificationTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, text())
-                    .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text())
-                    .withOptions()
-                    .comment("Stores registry of vacation notification being sent.")
-                    .compactionOptions(SchemaBuilder.dateTieredStrategy())
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
-        types = ImmutableList.of();
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public class CassandraNotificationRegistryModule {
+    public static final CassandraModule MODULE = CassandraModule.table(CassandraNotificationTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, text())
+            .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text())
+            .withOptions()
+            .comment("Stores registry of vacation notification being sent.")
+            .compactionOptions(SchemaBuilder.dateTieredStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
index 2a9ba0a..5fa8567 100644
--- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
+++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationModule.java
@@ -22,49 +22,27 @@ package org.apache.james.jmap.cassandra.vacation;
 import static com.datastax.driver.core.DataType.cboolean;
 import static com.datastax.driver.core.DataType.text;
 
-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.init.CassandraZonedDateTimeModule;
 import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.jmap.cassandra.vacation.tables.CassandraVacationTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraVacationModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraVacationModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraVacationTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraVacationTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraVacationTable.ACCOUNT_ID, text())
-                    .addColumn(CassandraVacationTable.IS_ENABLED, cboolean())
-                    .addUDTColumn(CassandraVacationTable.FROM_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME))
-                    .addUDTColumn(CassandraVacationTable.TO_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME))
-                    .addColumn(CassandraVacationTable.TEXT, text())
-                    .addColumn(CassandraVacationTable.SUBJECT, text())
-                    .addColumn(CassandraVacationTable.HTML, text())
-                    .withOptions()
-                    .comment("Holds vacation definition. Allow one to automatically respond to emails with a custom message.")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
-        types = ImmutableList.of();
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public class CassandraVacationModule {
+    public static final CassandraModule MODULE = CassandraModule.table(CassandraVacationTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraVacationTable.ACCOUNT_ID, text())
+            .addColumn(CassandraVacationTable.IS_ENABLED, cboolean())
+            .addUDTColumn(CassandraVacationTable.FROM_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME))
+            .addUDTColumn(CassandraVacationTable.TO_DATE, SchemaBuilder.frozen(CassandraZonedDateTimeModule.ZONED_DATE_TIME))
+            .addColumn(CassandraVacationTable.TEXT, text())
+            .addColumn(CassandraVacationTable.SUBJECT, text())
+            .addColumn(CassandraVacationTable.HTML, text())
+            .withOptions()
+            .comment("Holds vacation definition. Allow one to automatically respond to emails with a custom message.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
index c0164cb..7908c6c 100644
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
+++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
@@ -37,7 +37,7 @@ public class CassandraAccessTokenRepositoryTest extends AccessTokenRepositoryTes
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraAccessModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraAccessModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
index b1d8175..ec4e48e 100644
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
+++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
@@ -38,13 +38,12 @@ public class CassandraNotificationRegistryTest extends AbstractNotificationRegis
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraNotificationRegistryModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraNotificationRegistryModule.MODULE, cassandraServer.getHost());
     }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraNotificationRegistryModule(), cassandraServer.getHost());
         super.setUp();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/c6755229/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
index 6c18a27..7db419b 100644
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
+++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
@@ -21,7 +21,7 @@ package org.apache.james.jmap.cassandra.vacation;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
 import org.apache.james.jmap.api.vacation.AbstractVacationRepositoryTest;
 import org.apache.james.jmap.api.vacation.VacationRepository;
@@ -39,7 +39,7 @@ public class CassandraVacationRepositoryTest extends AbstractVacationRepositoryT
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite module = new CassandraModuleComposite(new CassandraVacationModule(), new CassandraZonedDateTimeModule());
+        CassandraModule module = CassandraModule.aggregateModules(CassandraVacationModule.MODULE, CassandraZonedDateTimeModule.MODULE);
         cassandra = CassandraCluster.create(module, cassandraServer.getHost());
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org