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

[10/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder for data-cassandra

MAILBOX-342 Use CassandraModule.Builder for data-cassandra


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

Branch: refs/heads/master
Commit: 3a92defcfaef55f7c30c4ad27dc41e3ac6095f10
Parents: 3c50770
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 24 14:55:50 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 .../cassandra/host/CassandraHostSystem.java     |   8 +-
 .../modules/data/CassandraDomainListModule.java |   2 +-
 .../data/CassandraMailRepositoryModule.java     |   2 +-
 .../CassandraRecipientRewriteTableModule.java   |   2 +-
 .../data/CassandraSieveRepositoryModule.java    |   2 +-
 .../data/CassandraUsersRepositoryModule.java    |   2 +-
 .../cassandra/CassandraDomainListModule.java    |  41 ++------
 .../CassandraMailRepositoryUrlModule.java       |  42 ++------
 .../james/rrt/cassandra/CassandraRRTModule.java |  46 +++-----
 .../CassandraSieveRepositoryModule.java         | 105 ++++++++-----------
 .../CassandraUsersRepositoryModule.java         |  44 ++------
 .../cassandra/CassandraDomainListTest.java      |   2 +-
 ...assandraMailRepositoryUrlStoreExtension.java |   4 +-
 .../CassandraRecipientRewriteTableTest.java     |   2 +-
 .../james/rrt/cassandra/CassandraStepdefs.java  |   2 +-
 .../cassandra/CassandraActiveScriptDAOTest.java |   2 +-
 .../sieve/cassandra/CassandraSieveDAOTest.java  |   2 +-
 .../cassandra/CassandraSieveQuotaDAOTest.java   |   2 +-
 .../cassandra/CassandraSieveRepositoryTest.java |   2 +-
 .../cassandra/CassandraUsersRepositoryTest.java |   2 +-
 20 files changed, 103 insertions(+), 213 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
index 62c07ce..f424021 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
@@ -20,7 +20,7 @@
 package org.apache.james.mpt.managesieve.cassandra.host;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mpt.host.JamesManageSieveHostSystem;
 import org.apache.james.sieve.cassandra.CassandraActiveScriptDAO;
@@ -44,9 +44,9 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
 
     @Override
     public void beforeTest() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraSieveRepositoryModule(),
-                new CassandraUsersRepositoryModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraSieveRepositoryModule.MODULE,
+            CassandraUsersRepositoryModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraHost);
         super.beforeTest();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java
index 1ef8a9c..4d253af 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java
@@ -41,7 +41,7 @@ public class CassandraDomainListModule extends AbstractModule {
     public void configure() {
         bind(CassandraDomainList.class).in(Scopes.SINGLETON);
         bind(DomainList.class).to(CassandraDomainList.class);
-        Multibinder.newSetBinder(binder(), CassandraModule.class).addBinding().to(org.apache.james.domainlist.cassandra.CassandraDomainListModule.class);
+        Multibinder.newSetBinder(binder(), CassandraModule.class).addBinding().toInstance(org.apache.james.domainlist.cassandra.CassandraDomainListModule.MODULE);
         Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(CassandraDomainListConfigurationPerformer.class);
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraMailRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraMailRepositoryModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraMailRepositoryModule.java
index 7f2cf90..695d0e8 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraMailRepositoryModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraMailRepositoryModule.java
@@ -52,7 +52,7 @@ public class CassandraMailRepositoryModule extends AbstractModule {
 
         Multibinder<CassandraModule> cassandraModuleBinder = Multibinder.newSetBinder(binder(), CassandraModule.class);
         cassandraModuleBinder.addBinding().to(org.apache.james.mailrepository.cassandra.CassandraMailRepositoryModule.class);
-        cassandraModuleBinder.addBinding().to(CassandraMailRepositoryUrlModule.class);
+        cassandraModuleBinder.addBinding().toInstance(CassandraMailRepositoryUrlModule.MODULE);
     }
 
     public static class CassandraMailRepositoryProvider implements MailRepositoryProvider {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java
index 0d0e4bf..22b48e8 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java
@@ -43,7 +43,7 @@ public class CassandraRecipientRewriteTableModule extends AbstractModule {
         bind(CassandraRecipientRewriteTable.class).in(Scopes.SINGLETON);
         bind(RecipientRewriteTable.class).to(CassandraRecipientRewriteTable.class);
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraDataDefinitions.addBinding().to(CassandraRRTModule.class);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraRRTModule.MODULE);
         Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(CassandraRecipientRewriteTablePerformer.class);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraSieveRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraSieveRepositoryModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraSieveRepositoryModule.java
index f4947b8..d83bb36 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraSieveRepositoryModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraSieveRepositoryModule.java
@@ -37,6 +37,6 @@ public class CassandraSieveRepositoryModule extends AbstractModule {
         bind(SieveQuotaRepository.class).to(CassandraSieveRepository.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.sieve.cassandra.CassandraSieveRepositoryModule.class);
+        cassandraDataDefinitions.addBinding().toInstance(org.apache.james.sieve.cassandra.CassandraSieveRepositoryModule.MODULE);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java
index a495699..9b465d0 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java
@@ -41,7 +41,7 @@ public class CassandraUsersRepositoryModule extends AbstractModule {
         bind(CassandraUsersRepository.class).in(Scopes.SINGLETON);
         bind(UsersRepository.class).to(CassandraUsersRepository.class);
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.user.cassandra.CassandraUsersRepositoryModule.class);
+        cassandraDataDefinitions.addBinding().toInstance(org.apache.james.user.cassandra.CassandraUsersRepositoryModule.MODULE);
 
         Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(CassandraUsersRepositoryConfigurationPerformer.class);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
index 2b797c9..cd38715 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainListModule.java
@@ -21,41 +21,20 @@ package org.apache.james.domainlist.cassandra;
 
 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.domainlist.cassandra.tables.CassandraDomainsTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraDomainListModule implements CassandraModule {
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraDomainListModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraDomainsTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraDomainsTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraDomainsTable.DOMAIN, text())
-                    .withOptions()
-                    .comment("Holds domains this James server is operating on.")
-                    .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 CassandraDomainListModule {
+    public static final CassandraModule MODULE = CassandraModule.table(CassandraDomainsTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraDomainsTable.DOMAIN, text())
+            .withOptions()
+            .comment("Holds domains this James server is operating on.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java
index 6caf5e1..5f269fd 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java
@@ -21,41 +21,19 @@ package org.apache.james.mailrepository.cassandra;
 
 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 com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraMailRepositoryUrlModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraMailRepositoryUrlModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(UrlsTable.TABLE_NAME,
-                SchemaBuilder.createTable(UrlsTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(UrlsTable.URL, text())
-                    .withOptions()
-                    .comment("Holds the list of available mail repository")
-                    .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 CassandraMailRepositoryUrlModule {
+    public static final CassandraModule MODULE = CassandraModule.table(UrlsTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(UrlsTable.URL, text())
+            .withOptions()
+            .comment("Holds the list of available mail repository")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
index 401babd..da8cd62 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRRTModule.java
@@ -21,44 +21,22 @@ package org.apache.james.rrt.cassandra;
 
 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.rrt.cassandra.tables.CassandraRecipientRewriteTableTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraRRTModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraRRTModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraRecipientRewriteTableTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraRecipientRewriteTableTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraRecipientRewriteTableTable.USER, text())
-                    .addClusteringColumn(CassandraRecipientRewriteTableTable.DOMAIN, text())
-                    .addClusteringColumn(CassandraRecipientRewriteTableTable.MAPPING, text())
-                    .withOptions()
-                    .comment("Holds address re-writing rules.")
-                    .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 CassandraRRTModule {
+    public static final CassandraModule MODULE = CassandraModule.table(CassandraRecipientRewriteTableTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraRecipientRewriteTableTable.USER, text())
+            .addClusteringColumn(CassandraRecipientRewriteTableTable.DOMAIN, text())
+            .addClusteringColumn(CassandraRecipientRewriteTableTable.MAPPING, text())
+            .withOptions()
+            .comment("Holds address re-writing rules.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryModule.java
index a599eb4..ddaccb5 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryModule.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryModule.java
@@ -25,76 +25,55 @@ import static com.datastax.driver.core.DataType.counter;
 import static com.datastax.driver.core.DataType.text;
 import static com.datastax.driver.core.DataType.timestamp;
 
-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.sieve.cassandra.tables.CassandraSieveActiveTable;
 import org.apache.james.sieve.cassandra.tables.CassandraSieveClusterQuotaTable;
 import org.apache.james.sieve.cassandra.tables.CassandraSieveQuotaTable;
 import org.apache.james.sieve.cassandra.tables.CassandraSieveSpaceTable;
 import org.apache.james.sieve.cassandra.tables.CassandraSieveTable;
 
-import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraSieveRepositoryModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraSieveRepositoryModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraSieveTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraSieveTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraSieveTable.USER_NAME, text())
-                    .addClusteringColumn(CassandraSieveTable.SCRIPT_NAME, text())
-                    .addColumn(CassandraSieveTable.SCRIPT_CONTENT, text())
-                    .addColumn(CassandraSieveTable.IS_ACTIVE, cboolean())
-                    .addColumn(CassandraSieveTable.SIZE, bigint())
-                    .withOptions()
-                    .comment("Holds SIEVE scripts.")),
-            new CassandraTable(CassandraSieveSpaceTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraSieveSpaceTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraSieveSpaceTable.USER_NAME, text())
-                    .addColumn(CassandraSieveSpaceTable.SPACE_USED, counter())
-                    .withOptions()
-                    .comment("Holds per user current space occupied by SIEVE scripts.")),
-            new CassandraTable(CassandraSieveQuotaTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraSieveQuotaTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraSieveQuotaTable.USER_NAME, text())
-                    .addColumn(CassandraSieveQuotaTable.QUOTA, bigint())
-                    .withOptions()
-                    .comment("Holds per user size limitations for SIEVE script storage.")),
-            new CassandraTable(CassandraSieveClusterQuotaTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraSieveClusterQuotaTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraSieveClusterQuotaTable.NAME, text())
-                    .addColumn(CassandraSieveClusterQuotaTable.VALUE, bigint())
-                        .withOptions()
-                        .comment("Holds default size limitations for SIEVE script storage.")),
-            new CassandraTable(CassandraSieveActiveTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraSieveActiveTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraSieveActiveTable.USER_NAME, text())
-                    .addColumn(CassandraSieveActiveTable.SCRIPT_NAME, text())
-                    .addColumn(CassandraSieveActiveTable.DATE, timestamp())
-                    .withOptions()
-                    .comment("Denormalisation table. Allows per user direct active SIEVE script retrieval.")));
-        types = ImmutableList.of();
-    }
+public interface CassandraSieveRepositoryModule {
 
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
+    CassandraModule MODULE = CassandraModule.builder()
+        .table(CassandraSieveTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraSieveTable.USER_NAME, text())
+            .addClusteringColumn(CassandraSieveTable.SCRIPT_NAME, text())
+            .addColumn(CassandraSieveTable.SCRIPT_CONTENT, text())
+            .addColumn(CassandraSieveTable.IS_ACTIVE, cboolean())
+            .addColumn(CassandraSieveTable.SIZE, bigint())
+            .withOptions()
+            .comment("Holds SIEVE scripts."))
+        .table(CassandraSieveSpaceTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraSieveSpaceTable.USER_NAME, text())
+            .addColumn(CassandraSieveSpaceTable.SPACE_USED, counter())
+            .withOptions()
+            .comment("Holds per user current space occupied by SIEVE scripts."))
+        .table(CassandraSieveQuotaTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraSieveQuotaTable.USER_NAME, text())
+            .addColumn(CassandraSieveQuotaTable.QUOTA, bigint())
+            .withOptions()
+            .comment("Holds per user size limitations for SIEVE script storage."))
+        .table(CassandraSieveClusterQuotaTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraSieveClusterQuotaTable.NAME, text())
+            .addColumn(CassandraSieveClusterQuotaTable.VALUE, bigint())
+            .withOptions()
+            .comment("Holds default size limitations for SIEVE script storage."))
+        .table(CassandraSieveActiveTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraSieveActiveTable.USER_NAME, text())
+            .addColumn(CassandraSieveActiveTable.SCRIPT_NAME, text())
+            .addColumn(CassandraSieveActiveTable.DATE, timestamp())
+            .withOptions()
+            .comment("Denormalisation table. Allows per user direct active SIEVE script retrieval."))
+        .build();
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
index 67d2775..1bb176d 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
@@ -21,42 +21,20 @@ package org.apache.james.user.cassandra;
 
 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.user.cassandra.tables.CassandraUserTable;
 
-import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraUsersRepositoryModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraUsersRepositoryModule() {
-        tables = ImmutableList.of(
-                new CassandraTable(CassandraUserTable.TABLE_NAME,
-                    SchemaBuilder.createTable(CassandraUserTable.TABLE_NAME)
-                        .ifNotExists()
-                        .addPartitionKey(CassandraUserTable.NAME, text())
-                        .addColumn(CassandraUserTable.REALNAME, text())
-                        .addColumn(CassandraUserTable.PASSWORD, text())
-                        .addColumn(CassandraUserTable.ALGORITHM, text())
-                        .withOptions()
-                        .comment("Holds users of this James server.")));
-        types = ImmutableList.of();
-    }
+public class CassandraUsersRepositoryModule {
 
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
+    public static final CassandraModule MODULE = CassandraModule.table(CassandraUserTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraUserTable.NAME, text())
+            .addColumn(CassandraUserTable.REALNAME, text())
+            .addColumn(CassandraUserTable.PASSWORD, text())
+            .addColumn(CassandraUserTable.ALGORITHM, text())
+            .withOptions()
+            .comment("Holds users of this James server."))
+        .build();
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
index af722d1..efe7e82 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
@@ -37,7 +37,7 @@ public class CassandraDomainListTest extends AbstractDomainListTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraDomainListModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraDomainListModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
index 282a525..fa9818a 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
@@ -43,7 +43,7 @@ public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolv
     public void beforeAll(ExtensionContext context) {
         cassandra.start();
         cassandraCluster = CassandraCluster.create(
-            new CassandraMailRepositoryUrlModule(),
+            CassandraMailRepositoryUrlModule.MODULE,
             cassandra.getHost());
     }
 
@@ -65,8 +65,6 @@ public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolv
 
     @Override
     public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
-
-
         return new CassandraMailRepositoryUrlStore(
             new UrlsDao(
                 cassandraCluster.getConf(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
index 4b6ae00..c7d6d6f 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
@@ -38,7 +38,7 @@ public class CassandraRecipientRewriteTableTest extends AbstractRecipientRewrite
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraRRTModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraRRTModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
index 4681a4b..3c2916c 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
@@ -39,7 +39,7 @@ public class CassandraStepdefs {
 
     @Before
     public void setup() throws Throwable {
-        cassandra = CassandraCluster.create(new CassandraRRTModule(), RewriteTablesTest.cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraRRTModule.MODULE, RewriteTablesTest.cassandraServer.getHost());
         mainStepdefs.rewriteTable = getRecipientRewriteTable();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
index d0ff1db..4b973b9 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
@@ -48,7 +48,7 @@ public class CassandraActiveScriptDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraSieveRepositoryModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
index 2601263..4ddb6ba 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
@@ -68,7 +68,7 @@ public class CassandraSieveDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraSieveRepositoryModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
index 95880eb..56692d2 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
@@ -44,7 +44,7 @@ public class CassandraSieveQuotaDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraSieveRepositoryModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
index 6696d96..13d8666 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
@@ -37,7 +37,7 @@ public class CassandraSieveRepositoryTest extends AbstractSieveRepositoryTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraSieveRepositoryModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3a92defc/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
index 818bf8b..2951016 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
@@ -38,7 +38,7 @@ public class CassandraUsersRepositoryTest extends AbstractUsersRepositoryTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraUsersRepositoryModule.MODULE, cassandraServer.getHost());
     }
 
     @Override


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