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

[01/27] james-project git commit: upgrade org.testcontainers:mariadb

Repository: james-project
Updated Branches:
  refs/heads/master 0271026d6 -> e86b5ae88


upgrade org.testcontainers:mariadb


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

Branch: refs/heads/master
Commit: 2395e41e3acdb4eb7754558a0e862aa99ed03b2e
Parents: 65a02c5
Author: duc <dt...@linagora.com>
Authored: Wed Jul 25 15:18:08 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:46:51 2018 +0700

----------------------------------------------------------------------
 server/container/guice/jpa-smtp-mariadb/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2395e41e/server/container/guice/jpa-smtp-mariadb/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-smtp-mariadb/pom.xml b/server/container/guice/jpa-smtp-mariadb/pom.xml
index 9135bf3..74ad54c 100644
--- a/server/container/guice/jpa-smtp-mariadb/pom.xml
+++ b/server/container/guice/jpa-smtp-mariadb/pom.xml
@@ -70,7 +70,7 @@
         <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>mariadb</artifactId>
-            <version>1.7.3</version>
+            <version>1.8.1</version>
             <scope>test</scope>
         </dependency>
     </dependencies>


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


[20/27] james-project git commit: MAILBOX-342 CassandraModule.Builder should enforce comments

Posted by bt...@apache.org.
MAILBOX-342 CassandraModule.Builder should enforce comments


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

Branch: refs/heads/master
Commit: f6fda76d8d6ac7ad4137a2e020cfe446562ee2c4
Parents: 7ad4f42
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 25 10:57:16 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:57 2018 +0700

----------------------------------------------------------------------
 .../cassandra/components/CassandraModule.java   | 33 ++++++++++++++---
 .../backends/cassandra/utils/PaggingTest.java   |  1 +
 .../cassandra/CassandraEventStoreModule.java    | 10 ++---
 .../cassandra/modules/CassandraAclModule.java   | 20 +++++-----
 .../modules/CassandraAnnotationModule.java      | 12 +++---
 .../modules/CassandraApplicableFlagsModule.java | 12 +++---
 .../modules/CassandraAttachmentModule.java      | 39 ++++++++++----------
 .../modules/CassandraDeletedMessageModule.java  | 10 ++---
 .../modules/CassandraFirstUnseenModule.java     | 10 ++---
 .../modules/CassandraMailboxCounterModule.java  | 12 +++---
 .../modules/CassandraMailboxModule.java         | 30 +++++++--------
 .../modules/CassandraMailboxRecentsModule.java  | 12 +++---
 .../modules/CassandraMessageModule.java         | 29 +++++++--------
 .../modules/CassandraModSeqModule.java          | 10 ++---
 .../cassandra/modules/CassandraQuotaModule.java | 34 ++++++++---------
 .../modules/CassandraRegistrationModule.java    |  7 ++--
 .../modules/CassandraSubscriptionModule.java    | 10 ++---
 .../cassandra/modules/CassandraUidModule.java   | 10 ++---
 .../blob/cassandra/CassandraBlobModule.java     | 14 +++----
 .../cassandra/CassandraDomainListModule.java    | 12 +++---
 .../CassandraMailRepositoryUrlModule.java       | 12 +++---
 .../james/rrt/cassandra/CassandraRRTModule.java | 14 +++----
 .../CassandraSieveRepositoryModule.java         | 30 +++++++--------
 .../CassandraUsersRepositoryModule.java         | 11 ++----
 .../cassandra/access/CassandraAccessModule.java | 14 +++----
 .../CassandraNotificationRegistryModule.java    | 14 +++----
 .../vacation/CassandraVacationModule.java       | 14 +++----
 .../CassandraMailRepositoryModule.java          |  9 +++--
 28 files changed, 232 insertions(+), 213 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
index 63e2f89..7afb82f 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
@@ -20,12 +20,14 @@
 package org.apache.james.backends.cassandra.components;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Function;
 
-import com.datastax.driver.core.Statement;
 import com.datastax.driver.core.schemabuilder.Create;
 import com.datastax.driver.core.schemabuilder.CreateType;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
 public interface CassandraModule {
@@ -87,17 +89,38 @@ public interface CassandraModule {
     class TableBuilder {
         private final Builder originalBuilderReference;
         private final String tableName;
+        private Optional<String> comment;
+        private Optional<Function<Create.Options, Create.Options>> options;
 
         private TableBuilder(Builder originalBuilderReference, String tableName) {
             this.originalBuilderReference = originalBuilderReference;
             this.tableName = tableName;
+            comment = Optional.empty();
         }
 
-        public Builder statement(Function<Create, Statement> createStatement) {
+        public TableBuilder comment(String comment) {
+            Preconditions.checkArgument(!Strings.isNullOrEmpty(comment), "`comment` can not be null or empty");
+
+            this.comment = Optional.of(comment);
+            return this;
+        }
+
+        public TableBuilder options(Function<Create.Options, Create.Options> options) {
+            this.options = Optional.of(options);
+            return this;
+        }
+
+        public Builder statement(Function<Create, Create> toCreateStatement) {
+            Preconditions.checkState(comment.isPresent(), "`comment` is compulsory");
+
+            Create createStatement = toCreateStatement.apply(
+                SchemaBuilder.createTable(tableName)
+                    .ifNotExists());
+
             return originalBuilderReference.addTable(
-                new CassandraTable(tableName, createStatement.apply(
-                        SchemaBuilder.createTable(tableName)
-                            .ifNotExists())));
+                new CassandraTable(tableName,
+                    options.orElse(Function.identity())
+                        .apply(createStatement.withOptions().comment(comment.get()))));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 946c338..f9049f9 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
@@ -56,6 +56,7 @@ public class PaggingTest {
     @BeforeClass
     public static void setUpClass() {
         CassandraModule modules = CassandraModule.table(TABLE_NAME)
+            .comment("Testing table")
             .statement(statement -> statement
                 .addPartitionKey(ID, DataType.timeuuid())
                 .addClusteringColumn(CLUSTERING, DataType.bigint()))

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
index 194a0d4..17c147a 100644
--- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
+++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
@@ -27,13 +27,13 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraEventStoreModule {
     CassandraModule MODULE = CassandraModule.table(CassandraEventStoreTable.EVENTS_TABLE)
+        .comment("Store events of a EventSourcing aggregate")
+        .options(options -> options
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraEventStoreTable.AGGREGATE_ID, DataType.varchar())
             .addClusteringColumn(CassandraEventStoreTable.EVENT_ID, DataType.cint())
-            .addColumn(CassandraEventStoreTable.EVENT, DataType.text())
-            .withOptions()
-            .comment("Store events of a EventSourcing aggregate")
-            .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+            .addColumn(CassandraEventStoreTable.EVENT, DataType.text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
index acb2205..abdecab 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
@@ -34,23 +34,23 @@ public interface CassandraAclModule {
     CassandraModule MODULE = CassandraModule
         .builder()
         .table(CassandraACLTable.TABLE_NAME)
+        .comment("Holds mailbox ACLs")
+        .options(options -> options
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraACLTable.ID, timeuuid())
             .addColumn(CassandraACLTable.ACL, text())
-            .addColumn(CassandraACLTable.VERSION, bigint())
-            .withOptions()
-            .comment("Holds mailbox ACLs")
+            .addColumn(CassandraACLTable.VERSION, bigint()))
+        .table(CassandraUserMailboxRightsTable.TABLE_NAME)
+        .comment("Denormalisation table. Allow to retrieve non personal mailboxIds a user has right on")
+        .options(options -> options
+            .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
-        .table(CassandraUserMailboxRightsTable.TABLE_NAME)
         .statement(statement -> statement
             .addPartitionKey(CassandraUserMailboxRightsTable.USER_NAME, text())
             .addClusteringColumn(CassandraUserMailboxRightsTable.MAILBOX_ID, timeuuid())
-            .addColumn(CassandraUserMailboxRightsTable.RIGHTS, text())
-            .withOptions()
-            .compactionOptions(SchemaBuilder.leveledStrategy())
-            .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-            .comment("Denormalisation table. Allow to retrieve non personal mailboxIds a user has right on"))
+            .addColumn(CassandraUserMailboxRightsTable.RIGHTS, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
index 88ccdab..fdd1a52 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
@@ -30,14 +30,14 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraAnnotationModule {
     CassandraModule MODULE = CassandraModule.table(CassandraAnnotationTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraAnnotationTable.MAILBOX_ID, timeuuid())
-            .addClusteringColumn(CassandraAnnotationTable.KEY, text())
-            .addColumn(CassandraAnnotationTable.VALUE, text())
-            .withOptions()
-            .comment("Holds Cassandra mailbox annotations")
+        .comment("Holds Cassandra mailbox annotations")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraAnnotationTable.MAILBOX_ID, timeuuid())
+            .addClusteringColumn(CassandraAnnotationTable.KEY, text())
+            .addColumn(CassandraAnnotationTable.VALUE, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
index 9dc2721..afc7470 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
@@ -32,14 +32,14 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraApplicableFlagsModule {
     CassandraModule MODULE = CassandraModule.table(CassandraApplicableFlagTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraApplicableFlagTable.MAILBOX_ID, timeuuid())
-            .addColumn(Flag.USER_FLAGS, set(text()))
-            .withOptions()
-            .comment("Holds flags being used on specific mailboxes. As system flags are implicit, this table " +
-                "stores user flags.")
+        .comment("Holds flags being used on specific mailboxes. As system flags are implicit, this table " +
+            "stores user flags.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraApplicableFlagTable.MAILBOX_ID, timeuuid())
+            .addColumn(Flag.USER_FLAGS, set(text())))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
index 8a94f1d..4699cae 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
@@ -36,44 +36,43 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraAttachmentModule {
 
     CassandraModule MODULE = CassandraModule.table(CassandraAttachmentTable.TABLE_NAME)
+        .comment("Holds attachment for fast attachment retrieval")
         .statement(statement -> statement
             .addPartitionKey(CassandraAttachmentTable.ID, text())
             .addColumn(CassandraAttachmentTable.PAYLOAD, blob())
             .addColumn(CassandraAttachmentTable.TYPE, text())
-            .addColumn(CassandraAttachmentTable.SIZE, bigint())
-            .withOptions()
-            .comment("Holds attachment for fast attachment retrieval"))
+            .addColumn(CassandraAttachmentTable.SIZE, bigint()))
         .table(CassandraAttachmentV2Table.TABLE_NAME)
+        .comment("Holds attachment for fast attachment retrieval. Content of messages is stored" +
+            "in `blobs` and `blobparts` tables.")
+        .options(options -> options
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraAttachmentV2Table.ID_AS_UUID, uuid())
             .addColumn(CassandraAttachmentV2Table.ID, text())
             .addColumn(CassandraAttachmentV2Table.BLOB_ID, text())
             .addColumn(CassandraAttachmentV2Table.TYPE, text())
-            .addColumn(CassandraAttachmentV2Table.SIZE, bigint())
-            .withOptions()
+            .addColumn(CassandraAttachmentV2Table.SIZE, bigint()))
+        .table(CassandraAttachmentMessageIdTable.TABLE_NAME)
+        .comment("Holds ids of messages owning the attachment")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-            .comment("Holds attachment for fast attachment retrieval. Content of messages is stored" +
-                "in `blobs` and `blobparts` tables."))
-        .table(CassandraAttachmentMessageIdTable.TABLE_NAME)
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraAttachmentMessageIdTable.ATTACHMENT_ID_AS_UUID, uuid())
             .addColumn(CassandraAttachmentMessageIdTable.ATTACHMENT_ID, text())
-            .addClusteringColumn(CassandraAttachmentMessageIdTable.MESSAGE_ID, text())
-            .withOptions()
+            .addClusteringColumn(CassandraAttachmentMessageIdTable.MESSAGE_ID, text()))
+        .table(CassandraAttachmentOwnerTable.TABLE_NAME)
+        .comment("Holds explicit owners of some attachments")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-            .comment("Holds ids of messages owning the attachment"))
-        .table(CassandraAttachmentOwnerTable.TABLE_NAME)
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraAttachmentOwnerTable.ID, uuid())
-            .addClusteringColumn(CassandraAttachmentOwnerTable.OWNER, text())
-            .withOptions()
-            .compactionOptions(SchemaBuilder.leveledStrategy())
-            .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-            .comment("Holds explicit owners of some attachments"))
+            .addClusteringColumn(CassandraAttachmentOwnerTable.OWNER, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
index 4997417..2bd334b 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
@@ -31,13 +31,13 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraDeletedMessageModule {
     CassandraModule MODULE = CassandraModule.table(TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(MAILBOX_ID, DataType.timeuuid())
-            .addClusteringColumn(UID, DataType.bigint())
-            .withOptions()
-            .comment("Denormalisation table. Allows to retrieve UID marked as DELETED in specific mailboxes.")
+        .comment("Denormalisation table. Allows to retrieve UID marked as DELETED in specific mailboxes.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(MAILBOX_ID, DataType.timeuuid())
+            .addClusteringColumn(UID, DataType.bigint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
index 75c1595..ec4a844 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
@@ -28,14 +28,14 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraFirstUnseenModule {
     CassandraModule MODULE = CassandraModule.table(CassandraFirstUnseenTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraFirstUnseenTable.MAILBOX_ID, DataType.timeuuid())
-            .addClusteringColumn(CassandraFirstUnseenTable.UID, DataType.bigint())
-            .withOptions()
-            .comment("Denormalisation table. Allow to quickly retrieve the first UNSEEN UID of a specific mailbox.")
+        .comment("Denormalisation table. Allow to quickly retrieve the first UNSEEN UID of a specific mailbox.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
             .clusteringOrder(CassandraFirstUnseenTable.UID, SchemaBuilder.Direction.ASC))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraFirstUnseenTable.MAILBOX_ID, DataType.timeuuid())
+            .addClusteringColumn(CassandraFirstUnseenTable.UID, DataType.bigint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
index 46d3798..74661c2 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
@@ -30,14 +30,14 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraMailboxCounterModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMailboxCountersTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid())
-            .addColumn(CassandraMailboxCountersTable.COUNT, counter())
-            .addColumn(CassandraMailboxCountersTable.UNSEEN, counter())
-            .withOptions()
-            .comment("Holds messages count and unseen message count for each mailbox.")
+        .comment("Holds messages count and unseen message count for each mailbox.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid())
+            .addColumn(CassandraMailboxCountersTable.COUNT, counter())
+            .addColumn(CassandraMailboxCountersTable.UNSEEN, counter()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
index 5e4e663..d4341aa 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
@@ -38,35 +38,35 @@ public interface CassandraMailboxModule {
             .addColumn(CassandraMailboxTable.MailboxBase.NAMESPACE, text())
             .addColumn(CassandraMailboxTable.MailboxBase.USER, text()))
         .table(CassandraMailboxTable.TABLE_NAME)
+        .comment("Holds the mailboxes information.")
+        .options(options -> options
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraMailboxTable.ID, timeuuid())
             .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
             .addColumn(CassandraMailboxTable.NAME, text())
-            .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())
-            .withOptions()
-            .comment("Holds the mailboxes information.")
+            .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint()))
+        .table(CassandraMailboxPathTable.TABLE_NAME)
+        .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
+            "LIST optimisation.")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
-        .table(CassandraMailboxPathTable.TABLE_NAME)
         .statement(statement -> statement
             .addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
             .addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text())
-            .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid())
-            .withOptions()
-            .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
-                "LIST optimisation.")
+            .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid()))
+        .table(CassandraMailboxPathV2Table.TABLE_NAME)
+        .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
+            "LIST optimisation.")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
-        .table(CassandraMailboxPathV2Table.TABLE_NAME)
         .statement(statement -> statement
             .addPartitionKey(CassandraMailboxPathV2Table.NAMESPACE, text())
             .addPartitionKey(CassandraMailboxPathV2Table.USER, text())
             .addClusteringColumn(CassandraMailboxPathV2Table.MAILBOX_NAME, text())
-            .addColumn(CassandraMailboxPathV2Table.MAILBOX_ID, timeuuid())
-            .withOptions()
-            .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
-                "LIST optimisation.")
-            .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+            .addColumn(CassandraMailboxPathV2Table.MAILBOX_ID, timeuuid()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
index b79082c..c81f4d0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
@@ -30,14 +30,14 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraMailboxRecentsModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMailboxRecentsTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraMailboxRecentsTable.MAILBOX_ID, timeuuid())
-            .addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint())
-            .withOptions()
-            .comment("Denormalisation table. This table holds for each mailbox the messages marked as RECENT. This" +
-                " is a SELECT optimisation.")
+        .comment("Denormalisation table. This table holds for each mailbox the messages marked as RECENT. This" +
+            " is a SELECT optimisation.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraMailboxRecentsTable.MAILBOX_ID, timeuuid())
+            .addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
index da6dfb0..f3193f5 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
@@ -43,6 +43,11 @@ public interface CassandraMessageModule {
 
     CassandraModule MODULE = CassandraModule.builder()
         .table(CassandraMessageIdTable.TABLE_NAME)
+        .comment("Holds mailbox and flags for each message, lookup by mailbox ID + UID")
+        .options(options -> options
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS)))
         .statement(statement -> statement
             .addPartitionKey(CassandraMessageIds.MAILBOX_ID, timeuuid())
             .addClusteringColumn(CassandraMessageIds.IMAP_UID, bigint())
@@ -55,13 +60,13 @@ public interface CassandraMessageModule {
             .addColumn(Flag.RECENT, cboolean())
             .addColumn(Flag.SEEN, cboolean())
             .addColumn(Flag.USER, cboolean())
-            .addColumn(Flag.USER_FLAGS, set(text()))
-            .withOptions()
-            .comment("Holds mailbox and flags for each message, lookup by mailbox ID + UID")
+            .addColumn(Flag.USER_FLAGS, set(text())))
+        .table(MessageIdToImapUid.TABLE_NAME)
+        .comment("Holds mailbox and flags for each message, lookup by message ID")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS)))
-        .table(MessageIdToImapUid.TABLE_NAME)
+                SchemaBuilder.rows(CACHED_IMAP_UID_ROWS)))
         .statement(statement -> statement
             .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
             .addClusteringColumn(CassandraMessageIds.MAILBOX_ID, timeuuid())
@@ -74,13 +79,10 @@ public interface CassandraMessageModule {
             .addColumn(Flag.RECENT, cboolean())
             .addColumn(Flag.SEEN, cboolean())
             .addColumn(Flag.USER, cboolean())
-            .addColumn(Flag.USER_FLAGS, set(text()))
-            .withOptions()
-            .comment("Holds mailbox and flags for each message, lookup by message ID")
-            .compactionOptions(SchemaBuilder.leveledStrategy())
-            .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CACHED_IMAP_UID_ROWS)))
+            .addColumn(Flag.USER_FLAGS, set(text())))
         .table(CassandraMessageV2Table.TABLE_NAME)
+        .comment("Holds message metadata, independently of any mailboxes. Content of messages is stored " +
+            "in `blobs` and `blobparts` tables.")
         .statement(statement -> statement
             .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
             .addColumn(CassandraMessageV2Table.INTERNAL_DATE, timestamp())
@@ -91,10 +93,7 @@ public interface CassandraMessageModule {
             .addColumn(CassandraMessageV2Table.BODY_CONTENT, text())
             .addColumn(CassandraMessageV2Table.HEADER_CONTENT, text())
             .addUDTListColumn(CassandraMessageV2Table.ATTACHMENTS, SchemaBuilder.frozen(CassandraMessageV2Table.ATTACHMENTS))
-            .addUDTListColumn(CassandraMessageV2Table.PROPERTIES, SchemaBuilder.frozen(CassandraMessageV2Table.PROPERTIES))
-            .withOptions()
-            .comment("Holds message metadata, independently of any mailboxes. Content of messages is stored " +
-                "in `blobs` and `blobparts` tables."))
+            .addUDTListColumn(CassandraMessageV2Table.PROPERTIES, SchemaBuilder.frozen(CassandraMessageV2Table.PROPERTIES)))
         .type(CassandraMessageV2Table.PROPERTIES)
         .statement(statement -> statement
             .addColumn(CassandraMessageV2Table.Properties.NAMESPACE, text())

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
index b8cd359..459a03a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
@@ -30,13 +30,13 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraModSeqModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMessageModseqTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid())
-            .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint())
-            .withOptions()
-            .comment("Holds and is used to generate MODSEQ. A monotic counter is implemented on top of this table.")
+        .comment("Holds and is used to generate MODSEQ. A monotic counter is implemented on top of this table.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid())
+            .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
index 59b8bd0..c6c0893 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
@@ -35,39 +35,39 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraQuotaModule {
     CassandraModule MODULE = CassandraModule.builder()
         .table(CassandraCurrentQuota.TABLE_NAME)
+        .comment("Holds per quota-root current values. Quota-roots defines groups of mailboxes which shares quotas limitations.")
+        .options(options -> options
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraCurrentQuota.QUOTA_ROOT, text())
             .addColumn(CassandraCurrentQuota.MESSAGE_COUNT, counter())
-            .addColumn(CassandraCurrentQuota.STORAGE, counter())
-            .withOptions()
-            .comment("Holds per quota-root current values. Quota-roots defines groups of mailboxes which shares quotas limitations.")
+            .addColumn(CassandraCurrentQuota.STORAGE, counter()))
+        .table(CassandraMaxQuota.TABLE_NAME)
+        .comment("Holds per quota-root limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
-        .table(CassandraMaxQuota.TABLE_NAME)
         .statement(statement -> statement
             .addPartitionKey(CassandraMaxQuota.QUOTA_ROOT, text())
             .addColumn(CassandraMaxQuota.MESSAGE_COUNT, bigint())
-            .addColumn(CassandraMaxQuota.STORAGE, bigint())
-            .withOptions()
-            .comment("Holds per quota-root limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
+            .addColumn(CassandraMaxQuota.STORAGE, bigint()))
+        .table(CassandraDomainMaxQuota.TABLE_NAME)
+        .comment("Holds per domain limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
-        .table(CassandraDomainMaxQuota.TABLE_NAME)
         .statement(statement -> statement
             .addPartitionKey(CassandraDomainMaxQuota.DOMAIN, text())
             .addColumn(CassandraDomainMaxQuota.MESSAGE_COUNT, bigint())
-            .addColumn(CassandraDomainMaxQuota.STORAGE, bigint())
-            .withOptions()
-            .comment("Holds per domain limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
+            .addColumn(CassandraDomainMaxQuota.STORAGE, bigint()))
+        .table(CassandraGlobalMaxQuota.TABLE_NAME)
+        .comment("Holds defaults limitations definition.")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
-        .table(CassandraGlobalMaxQuota.TABLE_NAME)
         .statement(statement -> statement
             .addPartitionKey(CassandraGlobalMaxQuota.TYPE, text())
-            .addColumn(CassandraGlobalMaxQuota.VALUE, bigint())
-            .withOptions()
-            .comment("Holds defaults limitations definition.")
-            .caching(SchemaBuilder.KeyCaching.ALL,
-                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+            .addColumn(CassandraGlobalMaxQuota.VALUE, bigint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
index 94997c1..2f39dfb 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
@@ -34,10 +34,11 @@ public interface CassandraRegistrationModule {
             .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.NAME, text())
             .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.USER, text()))
         .table(CassandraMailboxPathRegisterTable.TABLE_NAME)
+        .comment("Holds node mailboxPath registration for distributed events")
+        .options(options -> options
+            .compactionOptions(SchemaBuilder.dateTieredStrategy()))
         .statement(statement -> statement
             .addUDTPartitionKey(CassandraMailboxPathRegisterTable.MAILBOX_PATH, SchemaBuilder.frozen(CassandraMailboxPathRegisterTable.MAILBOX_PATH))
-            .addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text())
-            .withOptions()
-            .compactionOptions(SchemaBuilder.dateTieredStrategy()))
+            .addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
index e35e373..eb3cb8b 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
@@ -31,12 +31,12 @@ public interface CassandraSubscriptionModule {
     int PER_USER_CACHED_SUBSCRIPTIONS = 100;
 
     CassandraModule MODULE = CassandraModule.table(CassandraSubscriptionTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraSubscriptionTable.USER, text())
-            .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, text())
-            .withOptions()
-            .comment("Holds per user list of IMAP subscriptions")
+        .comment("Holds per user list of IMAP subscriptions")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(PER_USER_CACHED_SUBSCRIPTIONS)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraSubscriptionTable.USER, text())
+            .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
index efa3bce..614f10d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
@@ -30,13 +30,13 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
 public interface CassandraUidModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMessageUidTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid())
-            .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())
-            .withOptions()
-            .comment("Holds and is used to generate UID. A monotic counter is implemented on top of this table.")
+        .comment("Holds and is used to generate UID. A monotic counter is implemented on top of this table.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.leveledStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid())
+            .addColumn(CassandraMessageUidTable.NEXT_UID, bigint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 fb3623a..df2424e 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
@@ -27,19 +27,17 @@ public interface CassandraBlobModule {
     CassandraModule MODULE = CassandraModule
         .builder()
         .table(BlobTable.BlobParts.TABLE_NAME)
+        .comment("Holds blob parts composing blobs ." +
+            "Messages` headers and bodies are stored, chunked in blobparts.")
         .statement(statement -> statement
             .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."))
+            .addColumn(BlobTable.BlobParts.DATA, DataType.blob()))
         .table(BlobTable.TABLE_NAME)
+        .comment("Holds information for retrieving all blob parts composing this blob. " +
+            "Messages` headers and bodies are stored as blobparts.")
         .statement(statement -> statement
             .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."))
+            .addClusteringColumn(BlobTable.NUMBER_OF_CHUNK, DataType.cint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 8d05add..e435a13 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
@@ -27,13 +27,13 @@ import org.apache.james.domainlist.cassandra.tables.CassandraDomainsTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
-public class CassandraDomainListModule {
-    public static final CassandraModule MODULE = CassandraModule.table(CassandraDomainsTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraDomainsTable.DOMAIN, text())
-            .withOptions()
-            .comment("Holds domains this James server is operating on.")
+public interface CassandraDomainListModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraDomainsTable.TABLE_NAME)
+        .comment("Holds domains this James server is operating on.")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraDomainsTable.DOMAIN, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 7523451..6d7b17b 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
@@ -26,13 +26,13 @@ import org.apache.james.backends.cassandra.utils.CassandraConstants;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
-public class CassandraMailRepositoryUrlModule {
-    public static final CassandraModule MODULE = CassandraModule.table(UrlsTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(UrlsTable.URL, text())
-            .withOptions()
-            .comment("Holds the list of available mail repository")
+public interface CassandraMailRepositoryUrlModule {
+    CassandraModule MODULE = CassandraModule.table(UrlsTable.TABLE_NAME)
+        .comment("Holds the list of available mail repository")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(UrlsTable.URL, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 0970ce1..87a469b 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
@@ -27,15 +27,15 @@ import org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
-public class CassandraRRTModule {
-    public static final CassandraModule MODULE = CassandraModule.table(CassandraRecipientRewriteTableTable.TABLE_NAME)
+public interface CassandraRRTModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraRecipientRewriteTableTable.TABLE_NAME)
+        .comment("Holds address re-writing rules.")
+        .options(options -> options
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .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)))
+            .addClusteringColumn(CassandraRecipientRewriteTableTable.MAPPING, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 799e972..0000dab 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
@@ -36,39 +36,39 @@ public interface CassandraSieveRepositoryModule {
 
     CassandraModule MODULE = CassandraModule.builder()
         .table(CassandraSieveTable.TABLE_NAME)
+        .comment("Holds SIEVE scripts.")
+        .options(options -> options)
         .statement(statement -> statement
             .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."))
+            .addColumn(CassandraSieveTable.SIZE, bigint()))
         .table(CassandraSieveSpaceTable.TABLE_NAME)
+        .comment("Holds per user current space occupied by SIEVE scripts.")
+        .options(options -> options)
         .statement(statement -> statement
             .addPartitionKey(CassandraSieveSpaceTable.USER_NAME, text())
-            .addColumn(CassandraSieveSpaceTable.SPACE_USED, counter())
-            .withOptions()
-            .comment("Holds per user current space occupied by SIEVE scripts."))
+            .addColumn(CassandraSieveSpaceTable.SPACE_USED, counter()))
         .table(CassandraSieveQuotaTable.TABLE_NAME)
+        .comment("Holds per user size limitations for SIEVE script storage.")
+        .options(options -> options)
         .statement(statement -> statement
             .addPartitionKey(CassandraSieveQuotaTable.USER_NAME, text())
-            .addColumn(CassandraSieveQuotaTable.QUOTA, bigint())
-            .withOptions()
-            .comment("Holds per user size limitations for SIEVE script storage."))
+            .addColumn(CassandraSieveQuotaTable.QUOTA, bigint()))
         .table(CassandraSieveClusterQuotaTable.TABLE_NAME)
+        .comment("Holds default size limitations for SIEVE script storage.")
+        .options(options -> options)
         .statement(statement -> statement
             .addPartitionKey(CassandraSieveClusterQuotaTable.NAME, text())
-            .addColumn(CassandraSieveClusterQuotaTable.VALUE, bigint())
-            .withOptions()
-            .comment("Holds default size limitations for SIEVE script storage."))
+            .addColumn(CassandraSieveClusterQuotaTable.VALUE, bigint()))
         .table(CassandraSieveActiveTable.TABLE_NAME)
+        .comment("Denormalisation table. Allows per user direct active SIEVE script retrieval.")
+        .options(options -> options)
         .statement(statement -> statement
             .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."))
+            .addColumn(CassandraSieveActiveTable.DATE, timestamp()))
         .build();
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 473cb02..0f04fb4 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
@@ -24,16 +24,13 @@ import static com.datastax.driver.core.DataType.text;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.user.cassandra.tables.CassandraUserTable;
 
-public class CassandraUsersRepositoryModule {
-
-    public static final CassandraModule MODULE = CassandraModule.table(CassandraUserTable.TABLE_NAME)
+public interface CassandraUsersRepositoryModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraUserTable.TABLE_NAME)
+        .comment("Holds users of this James server.")
         .statement(statement -> statement
             .addPartitionKey(CassandraUserTable.NAME, text())
             .addColumn(CassandraUserTable.REALNAME, text())
             .addColumn(CassandraUserTable.PASSWORD, text())
-            .addColumn(CassandraUserTable.ALGORITHM, text())
-            .withOptions()
-            .comment("Holds users of this James server."))
+            .addColumn(CassandraUserTable.ALGORITHM, text()))
         .build();
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 6fe4583..f7267fd 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
@@ -28,14 +28,14 @@ import org.apache.james.jmap.cassandra.access.table.CassandraAccessTokenTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
-public class CassandraAccessModule {
-    public static final CassandraModule MODULE = CassandraModule.table(CassandraAccessTokenTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid())
-            .addColumn(CassandraAccessTokenTable.USERNAME, text())
-            .withOptions()
-            .comment("Holds JMAP access token required to process to authentication.")
+public interface CassandraAccessModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraAccessTokenTable.TABLE_NAME)
+        .comment("Holds JMAP access token required to process to authentication.")
+        .options(options -> options
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraAccessTokenTable.TOKEN, uuid())
+            .addColumn(CassandraAccessTokenTable.USERNAME, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 0cb2abb..e73e0a1 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
@@ -27,15 +27,15 @@ import org.apache.james.jmap.cassandra.vacation.tables.CassandraNotificationTabl
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
-public class CassandraNotificationRegistryModule {
-    public static final CassandraModule MODULE = CassandraModule.table(CassandraNotificationTable.TABLE_NAME)
-        .statement(statement -> statement
-            .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, text())
-            .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text())
-            .withOptions()
-            .comment("Stores registry of vacation notification being sent.")
+public interface CassandraNotificationRegistryModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraNotificationTable.TABLE_NAME)
+        .comment("Stores registry of vacation notification being sent.")
+        .options(options -> options
             .compactionOptions(SchemaBuilder.dateTieredStrategy())
             .caching(SchemaBuilder.KeyCaching.ALL,
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .statement(statement -> statement
+            .addPartitionKey(CassandraNotificationTable.ACCOUNT_ID, text())
+            .addClusteringColumn(CassandraNotificationTable.RECIPIENT_ID, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/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 a55d71a..9fb922b 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
@@ -29,8 +29,12 @@ import org.apache.james.jmap.cassandra.vacation.tables.CassandraVacationTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 
-public class CassandraVacationModule {
-    public static final CassandraModule MODULE = CassandraModule.table(CassandraVacationTable.TABLE_NAME)
+public interface CassandraVacationModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraVacationTable.TABLE_NAME)
+        .comment("Holds vacation definition. Allow one to automatically respond to emails with a custom message.")
+        .options(options -> options
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .statement(statement -> statement
             .addPartitionKey(CassandraVacationTable.ACCOUNT_ID, text())
             .addColumn(CassandraVacationTable.IS_ENABLED, cboolean())
@@ -38,10 +42,6 @@ public class CassandraVacationModule {
             .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)))
+            .addColumn(CassandraVacationTable.HTML, text()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f6fda76d/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
index a2b7661..cfbcdf4 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
@@ -37,14 +37,18 @@ public interface CassandraMailRepositoryModule {
             .addColumn(MailRepositoryTable.HEADER_NAME, text())
             .addColumn(MailRepositoryTable.HEADER_VALUE, text()))
         .table(MailRepositoryTable.COUNT_TABLE)
+        .comment("Projection maintaining per mail repository mail counter")
         .statement(statement -> statement
             .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
             .addColumn(MailRepositoryTable.COUNT, counter()))
         .table(MailRepositoryTable.KEYS_TABLE_NAME)
+        .comment("Per-mailRepository mail key list")
         .statement(statement -> statement
             .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
             .addClusteringColumn(MailRepositoryTable.MAIL_KEY, text()))
         .table(MailRepositoryTable.CONTENT_TABLE_NAME)
+        .comment("Stores the mails for a given repository. " +
+            "Content is stored with other blobs")
         .statement(statement -> statement
             .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
             .addPartitionKey(MailRepositoryTable.MAIL_KEY, text())
@@ -59,9 +63,6 @@ public interface CassandraMailRepositoryModule {
             .addColumn(MailRepositoryTable.REMOTE_HOST, text())
             .addColumn(MailRepositoryTable.REMOTE_ADDR, text())
             .addColumn(MailRepositoryTable.LAST_UPDATED, timestamp())
-            .addUDTMapColumn(MailRepositoryTable.PER_RECIPIENT_SPECIFIC_HEADERS, text(), frozen(MailRepositoryTable.HEADER_TYPE))
-            .withOptions()
-            .comment("Stores the mails for a given repository. " +
-                "Content is stored with other blobs"))
+            .addUDTMapColumn(MailRepositoryTable.PER_RECIPIENT_SPECIFIC_HEADERS, text(), frozen(MailRepositoryTable.HEADER_TYPE)))
         .build();
 }


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


[14/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder for Cassandra mailbox

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
index 2103071..0c8d9f4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
@@ -21,22 +21,7 @@ package org.apache.james.mailbox.cassandra;
 
 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.blob.cassandra.CassandraBlobModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.mailbox.quota.QuotaManager;
@@ -57,23 +42,7 @@ public class CassandraMessageIdManagerQuotaTest extends AbstractMessageIdManager
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraBlobModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraUidModule(),
-            new CassandraModSeqModule(),
-            new CassandraSubscriptionModule(),
-            new CassandraAttachmentModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraAnnotationModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraQuotaModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE_WITH_QUOTA, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
index 952f1f7..8553355 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
@@ -21,20 +21,7 @@ package org.apache.james.mailbox.cassandra;
 
 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.blob.cassandra.CassandraBlobModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.AbstractMessageIdManagerSideEffectTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
@@ -53,21 +40,7 @@ public class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdMa
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraUidModule(),
-            new CassandraModSeqModule(),
-            new CassandraAttachmentModule(),
-            new CassandraAnnotationModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
index 95cb7c7..ae35def 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
@@ -23,21 +23,8 @@ import static org.mockito.Mockito.mock;
 
 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.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.store.AbstractMessageIdManagerStorageTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
@@ -56,21 +43,7 @@ public class CassandraMessageIdManagerStorageTest extends AbstractMessageIdManag
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraUidModule(),
-            new CassandraModSeqModule(),
-            new CassandraAttachmentModule(),
-            new CassandraAnnotationModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
index b0df27d..736dcdc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
@@ -21,7 +21,6 @@ package org.apache.james.mailbox.cassandra;
 
 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.init.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.blob.api.ObjectStore;
@@ -46,7 +45,6 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUserMailboxRightsDAO;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.exception.SubscriptionException;
 import org.junit.After;
@@ -66,10 +64,7 @@ public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManage
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraSubscriptionModule(),
-            new CassandraMailboxCounterModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraSubscriptionModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index ab2293f..ca6dc84 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -85,7 +85,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraRegistrationModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
index 1459edb..9a412ea 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
@@ -39,7 +39,7 @@ import org.junit.Test;
 public class CassandraMailboxPathRegistrerMapperTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
+
     private static CassandraCluster cassandra;
 
     private static final MailboxPath MAILBOX_PATH = new MailboxPath("namespace", "user", "name");
@@ -52,7 +52,7 @@ public class CassandraMailboxPathRegistrerMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraRegistrationModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index c8169a8..b38c212 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -59,7 +59,7 @@ public class CassandraACLMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraAclModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
index 7bde1a7..f0f5550 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
@@ -40,7 +40,7 @@ public class CassandraAnnotationMapperTest extends AnnotationMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraAnnotationModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraAnnotationModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
index 87b1701..911d0d0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
@@ -51,7 +51,7 @@ public class CassandraApplicableFlagDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraApplicableFlagsModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraApplicableFlagsModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
index eefdaff..f88406e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
@@ -53,7 +53,7 @@ public class CassandraAttachmentDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraAttachmentModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraAttachmentModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
index 38619d0..e7874d1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
@@ -52,7 +52,7 @@ public class CassandraAttachmentDAOV2Test {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraAttachmentModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraAttachmentModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
index fc1794a..5c15145 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
@@ -26,7 +26,7 @@ import java.nio.charset.StandardCharsets;
 
 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.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.blob.api.BlobId;
@@ -64,9 +64,9 @@ public class CassandraAttachmentFallbackTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAttachmentModule(),
-            new CassandraBlobModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraAttachmentModule.MODULE,
+            CassandraBlobModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
index 745edbc..e0d7be7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.cassandra.mail;
 
 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.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
@@ -44,9 +44,9 @@ public class CassandraAttachmentMapperTest extends AttachmentMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAttachmentModule(),
-            new CassandraBlobModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraAttachmentModule.MODULE,
+            CassandraBlobModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
index adf73b1..0164508 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
@@ -52,7 +52,7 @@ public class CassandraAttachmentOwnerDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraAttachmentModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraAttachmentModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
index 4d2ae8d..913aef7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
@@ -56,7 +56,7 @@ public class CassandraDeletedMessageDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraDeletedMessageModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraDeletedMessageModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
index e2bbeb0..6aef33f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
@@ -46,7 +46,7 @@ public class CassandraFirstUnseenDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraFirstUnseenModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraFirstUnseenModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
index 16e2620..0de81d2 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.cassandra.mail;
 
 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.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -45,11 +45,11 @@ public class CassandraGenericMailboxMapperTest extends MailboxMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraModSeqModule(),
-            new CassandraUidModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraAclModule.MODULE,
+            CassandraMailboxModule.MODULE,
+            CassandraModSeqModule.MODULE,
+            CassandraUidModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
index 8b6c3f2..ca9f314 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
@@ -29,7 +29,7 @@ import javax.mail.Flags;
 
 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.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -77,12 +77,12 @@ public class CassandraIndexTableHandlerTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraDeletedMessageModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraMailboxCounterModule.MODULE,
+            CassandraMailboxRecentsModule.MODULE,
+            CassandraFirstUnseenModule.MODULE,
+            CassandraApplicableFlagsModule.MODULE,
+            CassandraDeletedMessageModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
index 7f0ac27..fb14a1e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
@@ -46,7 +46,7 @@ public class CassandraMailboxCounterDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraMailboxCounterModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraMailboxCounterModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index 35565e3..6844f5e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -26,7 +26,7 @@ import java.util.Optional;
 
 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.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -58,7 +58,7 @@ public class CassandraMailboxDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
+        CassandraModule modules = CassandraModule.aggregateModules(CassandraMailboxModule.MODULE, CassandraAclModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index 210911d..13ca350 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -24,8 +24,6 @@ import static org.mockito.Mockito.when;
 
 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.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
@@ -33,17 +31,6 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.AbstractMailboxManagerAttachmentTest;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
@@ -72,21 +59,7 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules =
-            new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraBlobModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraModSeqModule(),
-                new CassandraUidModule(),
-                new CassandraAttachmentModule(),
-                new CassandraApplicableFlagsModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
index d111653..57b854f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.cassandra.mail;
 
 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.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -43,9 +43,9 @@ public class CassandraMailboxMapperAclTest extends MailboxMapperACLTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraAclModule.MODULE,
+            CassandraMailboxModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 020dd22..ef7b1b1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit;
 
 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.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -56,7 +56,7 @@ public class CassandraMailboxMapperConcurrencyTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
+        CassandraModule modules = CassandraModule.aggregateModules(CassandraMailboxModule.MODULE, CassandraAclModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index 7e3d439..4953a11 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 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.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -71,7 +71,7 @@ public class CassandraMailboxMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
+        CassandraModule modules = CassandraModule.aggregateModules(CassandraMailboxModule.MODULE, CassandraAclModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
index 8468aa9..1488a0b 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
@@ -60,7 +60,7 @@ public abstract class CassandraMailboxPathDAOTest {
     abstract CassandraMailboxPathDAO testee();
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraMailboxModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraMailboxModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
index fdae69a..1840821 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.cassandra.mail;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 
 public class CassandraMailboxPathV2DAOTest extends CassandraMailboxPathDAOTest {
-
     @Override
     CassandraMailboxPathDAO testee() {
         return new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
index a8935db..d5767eb 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
@@ -50,7 +50,7 @@ public class CassandraMailboxRecentDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraMailboxRecentsModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraMailboxRecentsModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
index 1230441..e49f317 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -36,7 +36,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.tuple.Pair;
 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.utils.CassandraUtils;
 import org.apache.james.blob.cassandra.CassandraBlobId;
 import org.apache.james.blob.cassandra.CassandraBlobModule;
@@ -87,7 +87,7 @@ public class CassandraMessageDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMessageModule(), new CassandraBlobModule());
+        CassandraModule modules = CassandraModule.aggregateModules(CassandraMessageModule.MODULE, CassandraBlobModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
index 13ec4b2..d4514ca 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
@@ -55,7 +55,7 @@ public class CassandraMessageIdDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraMessageModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
index ea978e1..52488f9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
@@ -25,24 +25,10 @@ import java.util.List;
 
 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.init.configuration.CassandraConfiguration;
-import org.apache.james.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -66,21 +52,7 @@ public class CassandraMessageIdMapperTest extends MessageIdMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraModSeqModule(),
-            new CassandraUidModule(),
-            new CassandraAttachmentModule(),
-            new CassandraAnnotationModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
index 0c57801..a273fb4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
@@ -57,7 +57,7 @@ public class CassandraMessageIdToImapUidDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraMessageModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index f49f6d5..25a850e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -21,20 +21,6 @@ package org.apache.james.mailbox.cassandra.mail;
 
 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.blob.cassandra.CassandraBlobModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageMapperTest;
 import org.junit.After;
@@ -51,21 +37,7 @@ public class CassandraMessageMapperTest extends MessageMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraModSeqModule(),
-            new CassandraUidModule(),
-            new CassandraAttachmentModule(),
-            new CassandraAnnotationModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
index 53a6b5f..0d5d264 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
@@ -21,20 +21,6 @@ package org.apache.james.mailbox.cassandra.mail;
 
 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.blob.cassandra.CassandraBlobModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageMoveTest;
 import org.junit.After;
@@ -51,21 +37,7 @@ public class CassandraMessageMoveTest extends MessageMoveTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraModSeqModule(),
-            new CassandraUidModule(),
-            new CassandraAttachmentModule(),
-            new CassandraAnnotationModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
index bdbb3db..25dfc0c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
@@ -21,20 +21,6 @@ package org.apache.james.mailbox.cassandra.mail;
 
 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.blob.cassandra.CassandraBlobModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageWithAttachmentMapperTest;
 import org.junit.After;
@@ -51,21 +37,7 @@ public class CassandraMessageWithAttachmentMapperTest extends MessageWithAttachm
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraModSeqModule(),
-            new CassandraUidModule(),
-            new CassandraAttachmentModule(),
-            new CassandraAnnotationModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index f044385..9ae65ad 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -50,7 +50,7 @@ public class CassandraModSeqProviderTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraModSeqModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraModSeqModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index 45b75b7..fe0d6a1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -51,7 +51,7 @@ public class CassandraUidProviderTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraUidModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraUidModule.MODULE, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
index 2d57219..d8a4c2d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
@@ -54,7 +54,7 @@ public class CassandraUserMailboxRightsDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraAclModule.MODULE, cassandraServer.getHost());
     }
 
     @Before
@@ -73,7 +73,7 @@ public class CassandraUserMailboxRightsDAOTest {
     }
 
     @Test
-    public void saveShouldInsertNewEntry() throws Exception {
+    public void saveShouldInsertNewEntry() {
         testee.update(MAILBOX_ID, ACLDiff.computeDiff(
             MailboxACL.EMPTY,
             new MailboxACL(new Entry(ENTRY_KEY, RIGHTS))))
@@ -84,7 +84,7 @@ public class CassandraUserMailboxRightsDAOTest {
     }
 
     @Test
-    public void saveOnSecondShouldOverwrite() throws Exception {
+    public void saveOnSecondShouldOverwrite() {
         testee.update(MAILBOX_ID, ACLDiff.computeDiff(
             MailboxACL.EMPTY,
             new MailboxACL(new Entry(ENTRY_KEY, RIGHTS))))
@@ -100,13 +100,13 @@ public class CassandraUserMailboxRightsDAOTest {
     }
 
     @Test
-    public void listRightsForUserShouldReturnEmptyWhenEmptyData() throws Exception {
+    public void listRightsForUserShouldReturnEmptyWhenEmptyData() {
         assertThat(testee.listRightsForUser(USER_NAME).join())
             .isEmpty();
     }
 
     @Test
-    public void deleteShouldDeleteWhenExisting() throws Exception {
+    public void deleteShouldDeleteWhenExisting() {
         testee.update(MAILBOX_ID, ACLDiff.computeDiff(
             MailboxACL.EMPTY,
             new MailboxACL(new Entry(ENTRY_KEY, RIGHTS))))

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java
new file mode 100644
index 0000000..d2514cb
--- /dev/null
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java
@@ -0,0 +1,55 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.cassandra.mail;
+
+import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.blob.cassandra.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+
+public class MailboxAggregateModule {
+    public static CassandraModule MODULE = new CassandraModuleComposite(
+        CassandraAclModule.MODULE,
+        CassandraMailboxModule.MODULE,
+        CassandraMessageModule.MODULE,
+        CassandraBlobModule.MODULE,
+        CassandraAttachmentModule.MODULE,
+        CassandraMailboxCounterModule.MODULE,
+        CassandraMailboxRecentsModule.MODULE,
+        CassandraFirstUnseenModule.MODULE,
+        CassandraUidModule.MODULE,
+        CassandraModSeqModule.MODULE,
+        CassandraSubscriptionModule.MODULE,
+        CassandraDeletedMessageModule.MODULE,
+        CassandraAnnotationModule.MODULE,
+        CassandraApplicableFlagsModule.MODULE);
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
index 1c9b135..7cd3f71 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
@@ -36,7 +36,7 @@ import javax.mail.util.SharedByteArrayInputStream;
 
 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.migration.Migration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.blob.cassandra.CassandraBlobId;
@@ -81,10 +81,10 @@ public class AttachmentMessageIdCreationTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraMessageModule(),
-            new CassandraAttachmentModule(),
-            new CassandraBlobModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraMessageModule.MODULE,
+            CassandraAttachmentModule.MODULE,
+            CassandraBlobModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
index a110fe8..76f2099 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
@@ -30,7 +30,7 @@ import java.util.stream.Stream;
 
 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.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.migration.Migration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
@@ -67,9 +67,9 @@ public class AttachmentV2MigrationTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAttachmentModule(),
-                new CassandraBlobModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraAttachmentModule.MODULE,
+            CassandraBlobModule.MODULE);
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
index f37259d..92cdb5e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
@@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 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.configuration.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -67,9 +67,9 @@ public class MailboxPathV2MigrationTest {
         MAILBOX_1.setMailboxId(MAILBOX_ID_1);
 
         cassandra = CassandraCluster.create(
-            new CassandraModuleComposite(
-                new CassandraMailboxModule(),
-                new CassandraAclModule()),
+            CassandraModule.aggregateModules(
+                CassandraMailboxModule.MODULE,
+                CassandraAclModule.MODULE),
             cassandraServer.getHost());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
index 004b76d..949b7e1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
@@ -37,7 +37,7 @@ public class CassandraCurrentQuotaManagerTest extends StoreCurrentQuotaManagerTe
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraQuotaModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
index e22e333..3c65881 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
@@ -38,7 +38,7 @@ public class CassandraPerUserMaxQuotaManagerTest extends GenericMaxQuotaManagerT
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraQuotaModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
index 84a5294..34fb043 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
@@ -37,7 +37,7 @@ public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraSubscriptionModule(), cassandraServer.getHost());
+        cassandra = CassandraCluster.create(CassandraSubscriptionModule.MODULE, cassandraServer.getHost());
     }
     @Override
     protected SubscriptionMapper createSubscriptionMapper() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index 478ea37..f914410 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -21,7 +21,6 @@ package org.apache.james.mpt.imapmailbox.cassandra.host;
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
-import org.apache.james.blob.cassandra.CassandraBlobModule;
 import org.apache.james.core.quota.QuotaCount;
 import org.apache.james.core.quota.QuotaSize;
 import org.apache.james.imap.encode.main.DefaultImapEncoderFactory;
@@ -35,20 +34,8 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
 import org.apache.james.mailbox.cassandra.quota.CassandraGlobalMaxQuotaDao;
 import org.apache.james.mailbox.cassandra.quota.CassandraPerDomainMaxQuotaDao;
@@ -82,21 +69,8 @@ public class CassandraHostSystem extends JamesImapHostSystem {
         Feature.MOD_SEQ_SEARCH);
 
     private final CassandraModule mailboxModule = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraBlobModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraUidModule(),
-            new CassandraModSeqModule(),
-            new CassandraSubscriptionModule(),
-            new CassandraQuotaModule(),
-            new CassandraAttachmentModule(),
-            new CassandraAnnotationModule(),
-            new CassandraApplicableFlagsModule());
+            CassandraQuotaModule.MODULE,
+            MailboxAggregateModule.MODULE);
 
     private final Host cassandraHost;
     private CassandraMailboxManager mailboxManager;


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


[21/27] james-project git commit: MAILBOX-342 CassandraModule.Builder should allow to compose modules

Posted by bt...@apache.org.
MAILBOX-342 CassandraModule.Builder should allow to compose modules


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

Branch: refs/heads/master
Commit: 2901528b2609a6833abddf0adf6e32fff0375e40
Parents: f6fda76
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 25 11:21:01 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:58 2018 +0700

----------------------------------------------------------------------
 .../cassandra/components/CassandraModule.java   | 34 +++++++++++-
 .../init/CassandraModuleComposite.java          | 55 --------------------
 .../versions/CassandraSchemaVersionModule.java  |  5 +-
 .../cassandra/mail/MailboxAggregateModule.java  | 36 +++++++------
 .../cassandra/host/CassandraHostSystem.java     |  9 +---
 .../modules/mailbox/CassandraSessionModule.java |  3 +-
 6 files changed, 56 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2901528b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
index 7afb82f..252b6f9 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.backends.cassandra.components;
 
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.Function;
@@ -26,6 +28,7 @@ import java.util.function.Function;
 import com.datastax.driver.core.schemabuilder.Create;
 import com.datastax.driver.core.schemabuilder.CreateType;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
@@ -69,6 +72,24 @@ public interface CassandraModule {
             return new TypeBuilder(this, typeName);
         }
 
+        public Builder module(CassandraModule module) {
+            return modules(ImmutableList.of(module));
+        }
+
+        public Builder modules(Collection<CassandraModule> modules) {
+            tables.addAll(modules.stream()
+                .flatMap(module -> module.moduleTables().stream())
+                .collect(Guavate.toImmutableList()));
+            types.addAll(modules.stream()
+                .flatMap(module -> module.moduleTypes().stream())
+                .collect(Guavate.toImmutableList()));
+            return this;
+        }
+
+        public Builder modules(CassandraModule... modules) {
+            return this.modules(Arrays.asList(modules));
+        }
+
         public Impl build() {
             return new Impl(
                 tables.build(),
@@ -95,7 +116,8 @@ public interface CassandraModule {
         private TableBuilder(Builder originalBuilderReference, String tableName) {
             this.originalBuilderReference = originalBuilderReference;
             this.tableName = tableName;
-            comment = Optional.empty();
+            this.comment = Optional.empty();
+            this.options = Optional.empty();
         }
 
         public TableBuilder comment(String comment) {
@@ -153,6 +175,16 @@ public interface CassandraModule {
         return builder().table(tableName);
     }
 
+    static CassandraModule aggregateModules(CassandraModule... modules) {
+        return aggregateModules(Arrays.asList(modules));
+    }
+
+    static CassandraModule aggregateModules(Collection<CassandraModule> modules) {
+        return builder()
+            .modules(modules)
+            .build();
+    }
+
     List<CassandraTable> moduleTables();
 
     List<CassandraType> moduleTypes();

http://git-wip-us.apache.org/repos/asf/james-project/blob/2901528b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java
deleted file mode 100644
index 38265b0..0000000
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.backends.cassandra.init;
-
-import java.util.Arrays;
-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.github.steveash.guavate.Guavate;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraModuleComposite implements CassandraModule {
-
-    private final ImmutableList<CassandraTable> tables;
-    private final ImmutableList<CassandraType> types;
-
-    public CassandraModuleComposite(CassandraModule... modules) {
-        tables = Arrays.stream(modules)
-            .flatMap(module -> module.moduleTables().stream())
-            .collect(Guavate.toImmutableList());
-        types = Arrays.stream(modules)
-            .flatMap(module -> module.moduleTypes().stream())
-            .collect(Guavate.toImmutableList());
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
-
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2901528b/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 acffb8a..18a9837 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
@@ -27,10 +27,9 @@ import org.apache.james.backends.cassandra.versions.table.CassandraSchemaVersion
 
 public interface CassandraSchemaVersionModule {
     CassandraModule MODULE = CassandraModule.table(CassandraSchemaVersionTable.TABLE_NAME)
+        .comment("Holds the history of the versions of the schema used.")
         .statement(statement -> statement
             .addPartitionKey(CassandraSchemaVersionTable.KEY, timeuuid())
-            .addClusteringColumn(CassandraSchemaVersionTable.VALUE, cint())
-            .withOptions()
-            .comment("Holds the history of the versions of the schema used."))
+            .addClusteringColumn(CassandraSchemaVersionTable.VALUE, cint()))
         .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2901528b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java
index d2514cb..841a785 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/MailboxAggregateModule.java
@@ -20,7 +20,6 @@
 package org.apache.james.mailbox.cassandra.mail;
 
 import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
@@ -33,23 +32,26 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 
-public class MailboxAggregateModule {
-    public static CassandraModule MODULE = new CassandraModuleComposite(
-        CassandraAclModule.MODULE,
-        CassandraMailboxModule.MODULE,
-        CassandraMessageModule.MODULE,
-        CassandraBlobModule.MODULE,
-        CassandraAttachmentModule.MODULE,
-        CassandraMailboxCounterModule.MODULE,
-        CassandraMailboxRecentsModule.MODULE,
-        CassandraFirstUnseenModule.MODULE,
-        CassandraUidModule.MODULE,
-        CassandraModSeqModule.MODULE,
-        CassandraSubscriptionModule.MODULE,
-        CassandraDeletedMessageModule.MODULE,
-        CassandraAnnotationModule.MODULE,
-        CassandraApplicableFlagsModule.MODULE);
+public interface MailboxAggregateModule {
+    CassandraModule MODULE = CassandraModule.aggregateModules(
+            CassandraAclModule.MODULE,
+            CassandraMailboxModule.MODULE,
+            CassandraMessageModule.MODULE,
+            CassandraBlobModule.MODULE,
+            CassandraAttachmentModule.MODULE,
+            CassandraMailboxCounterModule.MODULE,
+            CassandraMailboxRecentsModule.MODULE,
+            CassandraFirstUnseenModule.MODULE,
+            CassandraUidModule.MODULE,
+            CassandraModSeqModule.MODULE,
+            CassandraSubscriptionModule.MODULE,
+            CassandraDeletedMessageModule.MODULE,
+            CassandraAnnotationModule.MODULE,
+            CassandraApplicableFlagsModule.MODULE);
+
+    CassandraModule MODULE_WITH_QUOTA = CassandraModule.aggregateModules(CassandraQuotaModule.MODULE, MODULE);
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2901528b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index f914410..aaa1b62 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -19,8 +19,6 @@
 package org.apache.james.mpt.imapmailbox.cassandra.host;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.core.quota.QuotaCount;
 import org.apache.james.core.quota.QuotaSize;
 import org.apache.james.imap.encode.main.DefaultImapEncoderFactory;
@@ -35,7 +33,6 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
 import org.apache.james.mailbox.cassandra.quota.CassandraGlobalMaxQuotaDao;
 import org.apache.james.mailbox.cassandra.quota.CassandraPerDomainMaxQuotaDao;
@@ -68,10 +65,6 @@ public class CassandraHostSystem extends JamesImapHostSystem {
         Feature.ANNOTATION_SUPPORT,
         Feature.MOD_SEQ_SEARCH);
 
-    private final CassandraModule mailboxModule = new CassandraModuleComposite(
-            CassandraQuotaModule.MODULE,
-            MailboxAggregateModule.MODULE);
-
     private final Host cassandraHost;
     private CassandraMailboxManager mailboxManager;
     private CassandraCluster cassandra;
@@ -84,7 +77,7 @@ public class CassandraHostSystem extends JamesImapHostSystem {
     @Override
     public void beforeTest() throws Exception {
         super.beforeTest();
-        cassandra = CassandraCluster.create(mailboxModule, cassandraHost);
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE_WITH_QUOTA, cassandraHost);
         com.datastax.driver.core.Session session = cassandra.getConf();
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
         CassandraMailboxSessionMapperFactory mapperFactory = TestCassandraMailboxSessionMapperFactory.forTests(

http://git-wip-us.apache.org/repos/asf/james-project/blob/2901528b/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 0f27457..b018bdb 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
@@ -26,7 +26,6 @@ import java.util.concurrent.ScheduledExecutorService;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
 import org.apache.james.backends.cassandra.init.SessionWithInitializedTablesFactory;
 import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
@@ -87,7 +86,7 @@ public class CassandraSessionModule extends AbstractModule {
     @Provides
     @Singleton
     CassandraModule composeDataDefinitions(Set<CassandraModule> modules) {
-        return new CassandraModuleComposite(modules.toArray(new CassandraModule[0]));
+        return CassandraModule.aggregateModules(modules);
     }
 
     @Provides


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


[27/27] james-project git commit: JAMES-2481 Upgrade Javax HTTP related APIs

Posted by bt...@apache.org.
JAMES-2481 Upgrade Javax HTTP related APIs


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

Branch: refs/heads/master
Commit: 622c540e5a32d1d7978f8fe41d05d5242347084e
Parents: 1cce562
Author: benwa <bt...@linagora.com>
Authored: Mon Jul 23 13:29:12 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:51:07 2018 +0700

----------------------------------------------------------------------
 pom.xml                                         | 12 +-----------
 server/protocols/webadmin/webadmin-core/pom.xml |  7 ++++++-
 2 files changed, 7 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/622c540e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 76219a9..daea437 100644
--- a/pom.xml
+++ b/pom.xml
@@ -604,7 +604,6 @@
         <geronimo-activation-spec.version>1.1</geronimo-activation-spec.version>
         <geronimo-javamail.version>1.8.3</geronimo-javamail.version>
         <slf4j.version>1.7.25</slf4j.version>
-        <servlet-api.version>2.4</servlet-api.version>
         <commons-logging.version>1.1.1</commons-logging.version>
 
         <dnsjava.version>2.1.1</dnsjava.version>
@@ -1785,10 +1784,6 @@
                         <groupId>log4j</groupId>
                         <artifactId>log4j</artifactId>
                     </exclusion>
-                    <exclusion>
-                        <groupId>javax.servlet</groupId>
-                        <artifactId>servlet-api</artifactId>
-                    </exclusion>
                 </exclusions>
             </dependency>
             <dependency>
@@ -1864,12 +1859,7 @@
             <dependency>
                 <groupId>javax.servlet</groupId>
                 <artifactId>javax.servlet-api</artifactId>
-                <version>3.1.0</version>
-            </dependency>
-            <dependency>
-                <groupId>javax.servlet</groupId>
-                <artifactId>servlet-api</artifactId>
-                <version>${servlet-api.version}</version>
+                <version>4.0.1</version>
             </dependency>
             <dependency>
                 <groupId>jmock</groupId>

http://git-wip-us.apache.org/repos/asf/james-project/blob/622c540e/server/protocols/webadmin/webadmin-core/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-core/pom.xml b/server/protocols/webadmin/webadmin-core/pom.xml
index b94ba11..45edf66 100644
--- a/server/protocols/webadmin/webadmin-core/pom.xml
+++ b/server/protocols/webadmin/webadmin-core/pom.xml
@@ -101,9 +101,14 @@
             <artifactId>javax.inject</artifactId>
         </dependency>
         <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>javax.ws.rs-api</artifactId>
-            <version>2.0.1</version>
+            <version>2.1</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>


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


[24/27] james-project git commit: JAMES-2481 update openjpa version in startup.sh

Posted by bt...@apache.org.
JAMES-2481 update openjpa version in startup.sh


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

Branch: refs/heads/master
Commit: e86b5ae884de64b76229842373130e9a0a336dcf
Parents: 2f3aaae
Author: duc <dt...@linagora.com>
Authored: Thu Jul 26 10:17:37 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:51:07 2018 +0700

----------------------------------------------------------------------
 dockerfiles/run/guice/provisioned/startup.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e86b5ae8/dockerfiles/run/guice/provisioned/startup.sh
----------------------------------------------------------------------
diff --git a/dockerfiles/run/guice/provisioned/startup.sh b/dockerfiles/run/guice/provisioned/startup.sh
index 83daaec..4ad5d37 100644
--- a/dockerfiles/run/guice/provisioned/startup.sh
+++ b/dockerfiles/run/guice/provisioned/startup.sh
@@ -2,4 +2,4 @@
 
 wait-for-it.sh --host=localhost --port=9999 --strict --timeout=0 -- ./initialdata.sh &
 
-java -classpath '/root/james-server.jar:/root/james-server-jpa-guice.lib/*' -javaagent:/root/james-server-cli.lib/openjpa-2.4.2.jar -Dlogback.configurationFile=/root/conf/logback.xml -Dworking.directory=/root/ org.apache.james.JPAJamesServerMain
\ No newline at end of file
+java -classpath '/root/james-server.jar:/root/james-server-jpa-guice.lib/*' -javaagent:/root/james-server-cli.lib/openjpa-3.0.0.jar -Dlogback.configurationFile=/root/conf/logback.xml -Dworking.directory=/root/ org.apache.james.JPAJamesServerMain
\ No newline at end of file


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


[11/27] james-project git commit: upgrade com.spotify:docker-client

Posted by bt...@apache.org.
upgrade com.spotify:docker-client


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

Branch: refs/heads/master
Commit: 61ea0e6a7e3a2923501bb5a94bc4d0e11dbfdd16
Parents: 03f3486
Author: duc <dt...@linagora.com>
Authored: Wed Jul 25 16:18:13 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 mpt/impl/imap-mailbox/cyrus/pom.xml                           | 6 ++++++
 .../org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java   | 7 ++++---
 pom.xml                                                       | 5 -----
 3 files changed, 10 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/61ea0e6a/mpt/impl/imap-mailbox/cyrus/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cyrus/pom.xml b/mpt/impl/imap-mailbox/cyrus/pom.xml
index f189fb4..0db3799 100644
--- a/mpt/impl/imap-mailbox/cyrus/pom.xml
+++ b/mpt/impl/imap-mailbox/cyrus/pom.xml
@@ -42,6 +42,12 @@
         <dependency>
             <groupId>com.spotify</groupId>
             <artifactId>docker-client</artifactId>
+            <version>8.11.7</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>20.0</version>
         </dependency>
     </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/61ea0e6a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
index 31767bb..0eeb63a 100644
--- a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
+++ b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
@@ -27,9 +27,10 @@ import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.jayway.awaitility.Awaitility;
 import com.spotify.docker.client.DefaultDockerClient;
-import com.spotify.docker.client.DockerException;
+import com.spotify.docker.client.exceptions.DockerException;
 import com.spotify.docker.client.messages.ContainerConfig;
 import com.spotify.docker.client.messages.ContainerCreation;
+import com.spotify.docker.client.messages.ExecCreation;
 import com.spotify.docker.client.messages.HostConfig;
 
 public class Docker {
@@ -114,7 +115,7 @@ public class Docker {
     
     public void createUser(ContainerCreation container, String user, String password) throws DockerException, InterruptedException {
         String createUserCommand = String.format("echo %s | saslpasswd2 -u test -c %s -p", password, user);
-        String execId = dockerClient.execCreate(container.id(), new String[] {"/bin/bash", "-c", createUserCommand});
-        dockerClient.execStart(execId);
+        ExecCreation execCreation = dockerClient.execCreate(container.id(), new String[]{"/bin/bash", "-c", createUserCommand});
+        dockerClient.execStart(execCreation.id());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61ea0e6a/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c540102..4f14c27 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1695,11 +1695,6 @@
                 <version>2.6.0</version>
             </dependency>
             <dependency>
-                <groupId>com.spotify</groupId>
-                <artifactId>docker-client</artifactId>
-                <version>3.5.10</version>
-            </dependency>
-            <dependency>
                 <groupId>com.sun.mail</groupId>
                 <artifactId>javax.mail</artifactId>
                 <version>1.6.1</version>


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


[26/27] james-project git commit: JAMES-2481 Upgrade Spark Java to 2.7.2

Posted by bt...@apache.org.
JAMES-2481 Upgrade Spark Java to 2.7.2


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

Branch: refs/heads/master
Commit: aaa2d08a7698fddafcbe308ee7f2da225fd43f21
Parents: 622c540
Author: benwa <bt...@linagora.com>
Authored: Mon Jul 23 13:29:59 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:51:07 2018 +0700

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/aaa2d08a/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index daea437..0a5d000 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1692,7 +1692,7 @@
             <dependency>
                 <groupId>com.sparkjava</groupId>
                 <artifactId>spark-core</artifactId>
-                <version>2.6.0</version>
+                <version>2.7.2</version>
             </dependency>
             <dependency>
                 <groupId>com.sun.mail</groupId>


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


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

Posted by bt...@apache.org.
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


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

Posted by bt...@apache.org.
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


[05/27] james-project git commit: upgrade com.datastax.cassandra:cassandra-driver-core

Posted by bt...@apache.org.
upgrade com.datastax.cassandra:cassandra-driver-core


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

Branch: refs/heads/master
Commit: 2dc249e83cb51f0b30099c134c9ac79ce30cab7d
Parents: 9d9b042
Author: duc <dt...@linagora.com>
Authored: Wed Jul 25 15:13:17 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:46:51 2018 +0700

----------------------------------------------------------------------
 backends-common/cassandra/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2dc249e8/backends-common/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/pom.xml b/backends-common/cassandra/pom.xml
index ca97a34..e779451 100644
--- a/backends-common/cassandra/pom.xml
+++ b/backends-common/cassandra/pom.xml
@@ -31,7 +31,7 @@
     <name>Apache James Cassandra backend</name>
 
     <properties>
-        <cassandra.driver.version>3.5.0</cassandra.driver.version>
+        <cassandra.driver.version>3.5.1</cassandra.driver.version>
     </properties>
 
     <dependencies>


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


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

Posted by bt...@apache.org.
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


[03/27] james-project git commit: JAMES-2497 Remove h2

Posted by bt...@apache.org.
JAMES-2497 Remove h2


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

Branch: refs/heads/master
Commit: e6381b41f527674e5d0a5bd4335c4ad7907a5fa9
Parents: 0271026
Author: Gautier DI FOLCO <gd...@linagora.com>
Authored: Tue Jul 24 14:38:53 2018 +0200
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:46:51 2018 +0700

----------------------------------------------------------------------
 backends-common/jpa/pom.xml                               |  4 ++--
 .../org/apache/james/backends/jpa/JpaTestCluster.java     |  4 ++--
 mailbox/jpa/pom.xml                                       | 10 +++++-----
 mpt/impl/imap-mailbox/jpa/pom.xml                         |  4 ++--
 mpt/impl/imap-mailbox/lucenesearch/pom.xml                | 10 +++++-----
 mpt/pom.xml                                               |  1 -
 pom.xml                                                   |  6 ------
 server/container/guice/jpa-smtp-mariadb/pom.xml           |  4 ++--
 server/container/guice/jpa-smtp/pom.xml                   |  4 ++--
 server/data/data-jpa/pom.xml                              |  4 ++--
 10 files changed, 22 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/backends-common/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/backends-common/jpa/pom.xml b/backends-common/jpa/pom.xml
index 3fad710..2db2a06 100644
--- a/backends-common/jpa/pom.xml
+++ b/backends-common/jpa/pom.xml
@@ -15,8 +15,8 @@
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
----------------------------------------------------------------------
diff --git a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
index fc96085..135b931 100644
--- a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
+++ b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
@@ -38,8 +38,8 @@ public class JpaTestCluster {
 
     public static JpaTestCluster create(List<Class<?>> clazz) {
         HashMap<String, String> properties = new HashMap<>();
-        properties.put("openjpa.ConnectionDriverName", org.h2.Driver.class.getName());
-        properties.put("openjpa.ConnectionURL", "jdbc:h2:mem:mailboxintegrationtesting;DB_CLOSE_DELAY=-1"); // Memory H2 database
+        properties.put("openjpa.ConnectionDriverName", org.apache.derby.jdbc.EmbeddedDriver.class.getName());
+        properties.put("openjpa.ConnectionURL", "jdbc:derby:memory:mailboxintegrationtesting;create=true"); // Memory Derby database
         properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)"); // Create Foreign Keys
         properties.put("openjpa.jdbc.MappingDefaults", "ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict");
         properties.put("openjpa.jdbc.SchemaFactory", "native(ForeignKeys=true)");

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/mailbox/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/jpa/pom.xml b/mailbox/jpa/pom.xml
index e613323..2af1c9e 100644
--- a/mailbox/jpa/pom.xml
+++ b/mailbox/jpa/pom.xml
@@ -68,11 +68,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>com.sun.mail</groupId>
             <artifactId>javax.mail</artifactId>
         </dependency>
@@ -82,6 +77,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.assertj</groupId>
             <artifactId>assertj-core</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/mpt/impl/imap-mailbox/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/pom.xml b/mpt/impl/imap-mailbox/jpa/pom.xml
index e7b90b1..2cb089c 100644
--- a/mpt/impl/imap-mailbox/jpa/pom.xml
+++ b/mpt/impl/imap-mailbox/jpa/pom.xml
@@ -58,8 +58,8 @@
             <artifactId>apache-james-mpt-imapmailbox-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/mpt/impl/imap-mailbox/lucenesearch/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/lucenesearch/pom.xml b/mpt/impl/imap-mailbox/lucenesearch/pom.xml
index 0897a95..f8f8117 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/pom.xml
+++ b/mpt/impl/imap-mailbox/lucenesearch/pom.xml
@@ -68,14 +68,14 @@
             <artifactId>apache-james-mpt-imapmailbox-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/mpt/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/pom.xml b/mpt/pom.xml
index 738b653..d6092ee 100644
--- a/mpt/pom.xml
+++ b/mpt/pom.xml
@@ -55,7 +55,6 @@
         <commons-lang.version>2.6</commons-lang.version>
         <derby.version>10.9.1.0</derby.version>
         <guice.version>4.0</guice.version>
-        <h2.version>1.3.170</h2.version>
         <hadoop.version>1.0.1</hadoop.version>
         <hbase.version>0.94.27</hbase.version>
         <jmock.version>2.6.0</jmock.version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9cc73f9..75a5853 100644
--- a/pom.xml
+++ b/pom.xml
@@ -598,7 +598,6 @@
         <spring.version>3.2.18.RELEASE</spring.version>
         <geronimo-jms-spec.version>1.1.1</geronimo-jms-spec.version>
         <activmq-artemis.version>2.6.2</activmq-artemis.version>
-        <h2.version>1.3.170</h2.version>
         <apache-jspf-resolver.version>1.0.1</apache-jspf-resolver.version>
         <javamail.version>1.5.4</javamail.version>
         <javax-activation.version>1.1.1</javax-activation.version>
@@ -1662,11 +1661,6 @@
                 <version>4.0</version>
             </dependency>
             <dependency>
-                <groupId>com.h2database</groupId>
-                <artifactId>h2</artifactId>
-                <version>${h2.version}</version>
-            </dependency>
-            <dependency>
                 <groupId>com.jason-goodwin</groupId>
                 <artifactId>better-monads</artifactId>
                 <version>0.4.0</version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/server/container/guice/jpa-smtp-mariadb/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-smtp-mariadb/pom.xml b/server/container/guice/jpa-smtp-mariadb/pom.xml
index 97624e4..9135bf3 100644
--- a/server/container/guice/jpa-smtp-mariadb/pom.xml
+++ b/server/container/guice/jpa-smtp-mariadb/pom.xml
@@ -53,8 +53,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/server/container/guice/jpa-smtp/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-smtp/pom.xml b/server/container/guice/jpa-smtp/pom.xml
index 42f7ca5..4144d06 100644
--- a/server/container/guice/jpa-smtp/pom.xml
+++ b/server/container/guice/jpa-smtp/pom.xml
@@ -63,8 +63,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e6381b41/server/data/data-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/pom.xml b/server/data/data-jpa/pom.xml
index 23a7742..5cd2b64 100644
--- a/server/data/data-jpa/pom.xml
+++ b/server/data/data-jpa/pom.xml
@@ -82,8 +82,8 @@
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>


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


[09/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder for Cassandra mail repositories

Posted by bt...@apache.org.
MAILBOX-342 Use CassandraModule.Builder for Cassandra mail repositories


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

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

----------------------------------------------------------------------
 .../data/CassandraMailRepositoryModule.java     |  2 +-
 .../CassandraMailRepositoryModule.java          | 99 ++++++++------------
 .../CassandraMailRepositoryCountDAOTest.java    |  3 +-
 .../CassandraMailRepositoryKeysDAOTest.java     |  2 +-
 .../CassandraMailRepositoryMailDAOTest.java     |  2 +-
 .../cassandra/CassandraMailRepositoryTest.java  |  8 +-
 6 files changed, 46 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b100add1/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 695d0e8..2f3769b 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
@@ -51,7 +51,7 @@ public class CassandraMailRepositoryModule extends AbstractModule {
         multibinder.addBinding().to(CassandraMailRepositoryProvider.class);
 
         Multibinder<CassandraModule> cassandraModuleBinder = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraModuleBinder.addBinding().to(org.apache.james.mailrepository.cassandra.CassandraMailRepositoryModule.class);
+        cassandraModuleBinder.addBinding().toInstance(org.apache.james.mailrepository.cassandra.CassandraMailRepositoryModule.MODULE);
         cassandraModuleBinder.addBinding().toInstance(CassandraMailRepositoryUrlModule.MODULE);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b100add1/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
index 4369db0..4d4ed3d 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
@@ -28,67 +28,44 @@ import static com.datastax.driver.core.DataType.text;
 import static com.datastax.driver.core.DataType.timestamp;
 import static com.datastax.driver.core.schemabuilder.SchemaBuilder.frozen;
 
-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;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraMailRepositoryModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraMailRepositoryModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(MailRepositoryTable.COUNT_TABLE,
-                SchemaBuilder.createTable(MailRepositoryTable.COUNT_TABLE)
-                    .ifNotExists()
-                    .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
-                    .addColumn(MailRepositoryTable.COUNT, counter())),
-            new CassandraTable(MailRepositoryTable.KEYS_TABLE_NAME,
-                SchemaBuilder.createTable(MailRepositoryTable.KEYS_TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
-                    .addClusteringColumn(MailRepositoryTable.MAIL_KEY, text())),
-            new CassandraTable(MailRepositoryTable.CONTENT_TABLE_NAME,
-                SchemaBuilder.createTable(MailRepositoryTable.CONTENT_TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
-                    .addPartitionKey(MailRepositoryTable.MAIL_KEY, text())
-                    .addColumn(MailRepositoryTable.MESSAGE_SIZE, bigint())
-                    .addColumn(MailRepositoryTable.STATE, text())
-                    .addColumn(MailRepositoryTable.HEADER_BLOB_ID, text())
-                    .addColumn(MailRepositoryTable.BODY_BLOB_ID, text())
-                    .addColumn(MailRepositoryTable.ATTRIBUTES, map(text(), blob()))
-                    .addColumn(MailRepositoryTable.ERROR_MESSAGE, text())
-                    .addColumn(MailRepositoryTable.SENDER, text())
-                    .addColumn(MailRepositoryTable.RECIPIENTS, list(text()))
-                    .addColumn(MailRepositoryTable.REMOTE_HOST, text())
-                    .addColumn(MailRepositoryTable.REMOTE_ADDR, text())
-                    .addColumn(MailRepositoryTable.LAST_UPDATED, timestamp())
-                    .addUDTMapColumn(MailRepositoryTable.PER_RECIPIENT_SPECIFIC_HEADERS, text(), frozen(MailRepositoryTable.HEADER_TYPE))
-                    .withOptions()
-                    .comment("Stores the mails for a given repository. " +
-                        "Content is stored with other blobs")));
-        types = ImmutableList.of(
-            new CassandraType(MailRepositoryTable.HEADER_TYPE,
-                SchemaBuilder.createType(MailRepositoryTable.HEADER_TYPE)
-                    .ifNotExists()
-                    .addColumn(MailRepositoryTable.HEADER_NAME, text())
-                    .addColumn(MailRepositoryTable.HEADER_VALUE, text())));
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public interface CassandraMailRepositoryModule {
+    CassandraModule MODULE = CassandraModule.builder()
+        .type(MailRepositoryTable.HEADER_TYPE)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addColumn(MailRepositoryTable.HEADER_NAME, text())
+            .addColumn(MailRepositoryTable.HEADER_VALUE, text()))
+        .table(MailRepositoryTable.COUNT_TABLE)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
+            .addColumn(MailRepositoryTable.COUNT, counter()))
+        .table(MailRepositoryTable.KEYS_TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
+            .addClusteringColumn(MailRepositoryTable.MAIL_KEY, text()))
+        .table(MailRepositoryTable.CONTENT_TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
+            .addPartitionKey(MailRepositoryTable.MAIL_KEY, text())
+            .addColumn(MailRepositoryTable.MESSAGE_SIZE, bigint())
+            .addColumn(MailRepositoryTable.STATE, text())
+            .addColumn(MailRepositoryTable.HEADER_BLOB_ID, text())
+            .addColumn(MailRepositoryTable.BODY_BLOB_ID, text())
+            .addColumn(MailRepositoryTable.ATTRIBUTES, map(text(), blob()))
+            .addColumn(MailRepositoryTable.ERROR_MESSAGE, text())
+            .addColumn(MailRepositoryTable.SENDER, text())
+            .addColumn(MailRepositoryTable.RECIPIENTS, list(text()))
+            .addColumn(MailRepositoryTable.REMOTE_HOST, text())
+            .addColumn(MailRepositoryTable.REMOTE_ADDR, text())
+            .addColumn(MailRepositoryTable.LAST_UPDATED, timestamp())
+            .addUDTMapColumn(MailRepositoryTable.PER_RECIPIENT_SPECIFIC_HEADERS, text(), frozen(MailRepositoryTable.HEADER_TYPE))
+            .withOptions()
+            .comment("Stores the mails for a given repository. " +
+                "Content is stored with other blobs"))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b100add1/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
index b68b602..f5255d0 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
@@ -41,12 +41,11 @@ public class CassandraMailRepositoryCountDAOTest {
 
     @BeforeAll
     static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getHost());
+        cassandra = CassandraCluster.create(CassandraMailRepositoryModule.MODULE, dockerCassandra.getHost());
     }
 
     @BeforeEach
     public void setUp() {
-
         testee = new CassandraMailRepositoryCountDAO(cassandra.getConf());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b100add1/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
index 03a905c..feebf98 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
@@ -47,7 +47,7 @@ public class CassandraMailRepositoryKeysDAOTest {
 
     @BeforeAll
     static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getHost());
+        cassandra = CassandraCluster.create(CassandraMailRepositoryModule.MODULE, dockerCassandra.getHost());
     }
 
     @BeforeEach

http://git-wip-us.apache.org/repos/asf/james-project/blob/b100add1/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
index 8bc858e..48b4aee 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
@@ -52,7 +52,7 @@ public class CassandraMailRepositoryMailDAOTest {
 
     @BeforeAll
     static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getHost());
+        cassandra = CassandraCluster.create(CassandraMailRepositoryModule.MODULE, dockerCassandra.getHost());
     }
 
     @BeforeEach

http://git-wip-us.apache.org/repos/asf/james-project/blob/b100add1/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
index 2b21c0d..84cf4c0 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
@@ -21,7 +21,7 @@ package org.apache.james.mailrepository.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.DockerCassandraExtension;
-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.blob.cassandra.CassandraBlobId;
 import org.apache.james.blob.cassandra.CassandraBlobModule;
@@ -47,9 +47,9 @@ class CassandraMailRepositoryTest implements MailRepositoryContract {
 
     @BeforeAll
     static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraMailRepositoryModule(),
-            new CassandraBlobModule());
+        CassandraModule modules = CassandraModule.aggregateModules(
+            CassandraMailRepositoryModule.MODULE,
+            CassandraBlobModule.MODULE);
         cassandra = CassandraCluster.create(modules, dockerCassandra.getHost());
     }
 


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


[13/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder for Cassandra mailbox

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index c742c38..161647f 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -55,6 +55,18 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUserMailboxRightsDAO;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
@@ -152,19 +164,19 @@ public class CassandraMailboxModule extends AbstractModule {
         bind(RightManager.class).to(StoreRightManager.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraAclModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraMessageModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraUidModule.class);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraAclModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraAttachmentModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraMessageModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraMailboxCounterModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraAnnotationModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraApplicableFlagsModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraDeletedMessageModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraFirstUnseenModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraMailboxRecentsModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraModSeqModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraSubscriptionModule.MODULE);
+        cassandraDataDefinitions.addBinding().toInstance(CassandraUidModule.MODULE);
 
         Multibinder.newSetBinder(binder(), MailboxManagerDefinition.class).addBinding().to(CassandraMailboxManagerDefinition.class);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
index 5b70b54..dcbdcb9 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java
@@ -58,6 +58,6 @@ public class CassandraQuotaModule extends AbstractModule {
         bind(UserQuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule.class);
+        cassandraDataDefinitions.addBinding().toInstance(org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule.MODULE);
     }
 }


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


[04/27] james-project git commit: upgrade org.cassandraunit:cassandra-unit

Posted by bt...@apache.org.
upgrade org.cassandraunit:cassandra-unit


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

Branch: refs/heads/master
Commit: 65a02c50db69961101466e74963220041b442cbf
Parents: 2dc249e
Author: duc <dt...@linagora.com>
Authored: Wed Jul 25 15:15:22 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:46:51 2018 +0700

----------------------------------------------------------------------
 mailbox/cassandra/pom.xml | 1 +
 pom.xml                   | 6 ------
 2 files changed, 1 insertion(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/65a02c50/mailbox/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index 81f179f..7281d41 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -156,6 +156,7 @@
         <dependency>
             <groupId>org.cassandraunit</groupId>
             <artifactId>cassandra-unit</artifactId>
+            <version>2.1.9.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/65a02c50/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ee3fe35..a9a6f41 100644
--- a/pom.xml
+++ b/pom.xml
@@ -632,7 +632,6 @@
         <pax-logging-api.version>1.6.4</pax-logging-api.version>
         <jackson-data.version>2.6.3</jackson-data.version>
         <jetty.version>9.4.7.v20170914</jetty.version>
-        <cassandra-unit.version>2.1.9.2</cassandra-unit.version>
         <assertj-guava.version>3.1.0</assertj-guava.version>
         <testcontainers-version>1.7.3</testcontainers-version>
         <metrics.version>3.2.6</metrics.version>
@@ -2242,11 +2241,6 @@
                 <version>1.60</version>
             </dependency>
             <dependency>
-                <groupId>org.cassandraunit</groupId>
-                <artifactId>cassandra-unit</artifactId>
-                <version>2.1.9.2</version>
-            </dependency>
-            <dependency>
                 <groupId>org.eclipse.jetty</groupId>
                 <artifactId>jetty-http</artifactId>
                 <version>${jetty.version}</version>


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


[19/27] james-project git commit: MAILBOX-342 Introduce a builder for CassandraModule

Posted by bt...@apache.org.
MAILBOX-342 Introduce a builder for CassandraModule


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

Branch: refs/heads/master
Commit: dd7020d974f98c6bb576d40021919f391455a2a7
Parents: 1b27146
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 24 14:31:03 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 .../cassandra/components/CassandraModule.java   | 104 +++++++++++++++++++
 1 file changed, 104 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/dd7020d9/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
index 3655b5a..a082fc1 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
@@ -20,9 +20,113 @@
 package org.apache.james.backends.cassandra.components;
 
 import java.util.List;
+import java.util.function.Function;
+
+import com.datastax.driver.core.Statement;
+import com.datastax.driver.core.schemabuilder.Create;
+import com.datastax.driver.core.schemabuilder.CreateType;
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import com.google.common.collect.ImmutableList;
 
 public interface CassandraModule {
 
+    class Impl implements CassandraModule {
+        private final List<CassandraTable> tables;
+        private final List<CassandraType> types;
+
+        private Impl(List<CassandraTable> tables, List<CassandraType> types) {
+            this.tables = tables;
+            this.types = types;
+        }
+
+        @Override
+        public List<CassandraTable> moduleTables() {
+            return tables;
+        }
+
+        @Override
+        public List<CassandraType> moduleTypes() {
+            return types;
+        }
+    }
+
+    class Builder {
+        private ImmutableList.Builder<CassandraTable> tables;
+        private ImmutableList.Builder<CassandraType> types;
+
+        private Builder() {
+            tables = ImmutableList.builder();
+            types = ImmutableList.builder();
+        }
+
+        public TableBuilder table(String tableName) {
+            return new TableBuilder(this, tableName);
+        }
+
+        public TypeBuilder type(String typeName) {
+            return new TypeBuilder(this, typeName);
+        }
+
+        public Impl build() {
+            return new Impl(
+                tables.build(),
+                types.build());
+        }
+
+        private Builder addTable(CassandraTable table) {
+            tables.add(table);
+            return this;
+        }
+
+        private Builder addType(CassandraType type) {
+            types.add(type);
+            return this;
+        }
+    }
+
+    class TableBuilder {
+        private final Builder originalBuilderReference;
+        private final String tableName;
+
+        private TableBuilder(Builder originalBuilderReference, String tableName) {
+            this.originalBuilderReference = originalBuilderReference;
+            this.tableName = tableName;
+        }
+
+        public Builder statement(Function<Create, Statement> createStatement) {
+            return originalBuilderReference.addTable(
+                new CassandraTable(tableName, createStatement.apply(SchemaBuilder.createTable(tableName))));
+        }
+    }
+
+    class TypeBuilder {
+        private final Builder originalBuilderReference;
+        private final String typeName;
+
+        private TypeBuilder(Builder originalBuilderReference, String typeName) {
+            this.originalBuilderReference = originalBuilderReference;
+            this.typeName = typeName;
+        }
+
+        public Builder statement(Function<CreateType, CreateType> createStatement) {
+            return originalBuilderReference.addType(
+                new CassandraType(typeName, createStatement.apply(
+                    SchemaBuilder.createType(typeName))));
+        }
+    }
+
+    static Builder builder() {
+        return new Builder();
+    }
+
+    static TypeBuilder type(String typeName) {
+        return builder().type(typeName);
+    }
+
+    static TableBuilder table(String tableName) {
+        return builder().table(tableName);
+    }
+
     List<CassandraTable> moduleTables();
 
     List<CassandraType> moduleTypes();


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


[25/27] james-project git commit: JAMES-2481 Replace Spark by Jetty in tests

Posted by bt...@apache.org.
JAMES-2481 Replace Spark by Jetty in tests


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

Branch: refs/heads/master
Commit: 2f3aaaeb83046c68058ff37fb5c380863c461da6
Parents: aaa2d08
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Jul 25 13:21:13 2018 +0200
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:51:07 2018 +0700

----------------------------------------------------------------------
 server/container/core/pom.xml                   | 20 +++++--
 server/container/filesystem-api/pom.xml         | 19 +++++-
 .../filesystem/api/AbstractFileSystemTest.java  | 63 ++++++++++++++------
 server/container/spring/pom.xml                 |  5 --
 4 files changed, 77 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2f3aaaeb/server/container/core/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/core/pom.xml b/server/container/core/pom.xml
index 6f64917..4771b55 100644
--- a/server/container/core/pom.xml
+++ b/server/container/core/pom.xml
@@ -82,11 +82,6 @@
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.sparkjava</groupId>
-            <artifactId>spark-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>com.sun.mail</groupId>
             <artifactId>javax.mail</artifactId>
         </dependency>
@@ -109,6 +104,21 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-http</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-servlet</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>pl.pragmatists</groupId>
             <artifactId>JUnitParams</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f3aaaeb/server/container/filesystem-api/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/filesystem-api/pom.xml b/server/container/filesystem-api/pom.xml
index 225ff0d..e92f358 100644
--- a/server/container/filesystem-api/pom.xml
+++ b/server/container/filesystem-api/pom.xml
@@ -34,8 +34,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>com.sparkjava</groupId>
-            <artifactId>spark-core</artifactId>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -57,6 +57,21 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-http</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-servlet</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>pl.pragmatists</groupId>
             <artifactId>JUnitParams</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f3aaaeb/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
----------------------------------------------------------------------
diff --git a/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java b/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
index cc9f420..e8d2c54 100644
--- a/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
+++ b/server/container/filesystem-api/src/test/java/org/apache/james/filesystem/api/AbstractFileSystemTest.java
@@ -27,8 +27,17 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -36,11 +45,10 @@ import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 
+import com.google.common.base.Strings;
+
 import junitparams.JUnitParamsRunner;
 import junitparams.Parameters;
-import spark.Request;
-import spark.Response;
-import spark.Service;
 
 @RunWith(JUnitParamsRunner.class)
 public abstract class AbstractFileSystemTest {
@@ -54,24 +62,47 @@ public abstract class AbstractFileSystemTest {
 
     protected FileSystem fileSystem;
     
-    private Service httpServer;
+    private Server httpServer;
     private File rootDirectory;
     
     protected abstract FileSystem buildFileSystem(String configurationRootDirectory);
 
     @Before
     public void setUp() throws Exception {
-        httpServer = Service.ignite().port(RANDOM_PORT);
-        httpServer.get("/", (Request request, Response response) -> "content");
-        httpServer.awaitInitialization();
-        
+        httpServer = new Server(RANDOM_PORT);
+
+        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
+        context.setContextPath("/");
+        httpServer.setHandler(context);
+        context.addServlet(new ServletHolder(new ContentServlet()), "/*");
+
+        httpServer.start();
+
         rootDirectory = tmpFolder.getRoot();
         createSubFolderWithAFileIn("conf", "conf.txt", "confcontent");
         createSubFolderWithAFileIn("var", "var.txt", "varcontent");
-        
+
         fileSystem = buildFileSystem(rootDirectory.getAbsolutePath());
     }
 
+    private static class ContentServlet extends HttpServlet {
+
+        @Override
+        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+            if (isRootPath(request.getPathInfo())) {
+                response.setStatus(HttpServletResponse.SC_OK);
+                response.getWriter().println("content");
+            } else {
+                response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+            }
+        }
+
+        private boolean isRootPath(String pathInfo) {
+            return Strings.isNullOrEmpty(pathInfo)
+                || pathInfo == "/";
+        }
+    }
+
     private void createSubFolderWithAFileIn(String folderName, String fileName, String fileContent) throws IOException {
         File folder = tmpFolder.newFolder(folderName);
         File file = new File(folder.getAbsolutePath() + "/" + fileName);
@@ -127,9 +158,7 @@ public abstract class AbstractFileSystemTest {
     @Test(expected = FileNotFoundException.class)
     @Parameters(source = UrlsAsFileThrowingFileNotFoundExceptionProvider.class)
     public final void urlAsFileThrowingFileNotFoundException(String url) throws Exception {
-        url = replacePort(url);
-        
-        fileSystem.getFile(url);
+        fileSystem.getFile(replacePort(url));
     }
 
     public static class NonExistingFilesProvider {
@@ -163,9 +192,7 @@ public abstract class AbstractFileSystemTest {
     @Test(expected = FileNotFoundException.class)
     @Parameters(source = NonAvailableStreamsProvider.class)
     public final void getFakeHttpResourceAsInputStreamShouldThrow(String url) throws Exception {
-        url = replacePort(url);
-        
-        fileSystem.getResource(url);
+        fileSystem.getResource(replacePort(url));
     }
 
     public static class AvailableStreamsProvider {
@@ -184,14 +211,14 @@ public abstract class AbstractFileSystemTest {
     @Test
     @Parameters(source = AvailableStreamsProvider.class)
     public final void availableInputStreamShouldReturnANonEmptyStream(String url) throws Exception {
-        url = replacePort(url);
-        try (InputStream inputStream = fileSystem.getResource(url)) {
+        try (InputStream inputStream = fileSystem.getResource(replacePort(url))) {
             assertThat(IOUtils.toByteArray(inputStream).length).isGreaterThan(0);
         }
     }
 
     private String replacePort(String url) {
-        return url.replace("$PORT$", String.valueOf(httpServer.port()));
+        int port = ((ServerConnector) httpServer.getConnectors()[0]).getLocalPort();
+        return url.replace("$PORT$", String.valueOf(port));
     }
 
     public static class FileToCreateProvider {

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f3aaaeb/server/container/spring/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/spring/pom.xml b/server/container/spring/pom.xml
index 61c2213..3fbf7e6 100644
--- a/server/container/spring/pom.xml
+++ b/server/container/spring/pom.xml
@@ -80,11 +80,6 @@
             <artifactId>james-server-protocols-library</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.sparkjava</groupId>
-            <artifactId>spark-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>com.sun.mail</groupId>
             <artifactId>javax.mail</artifactId>
         </dependency>


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


[22/27] james-project git commit: JAMES-2481 Upgrade apache.httpcomponents

Posted by bt...@apache.org.
JAMES-2481 Upgrade apache.httpcomponents


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

Branch: refs/heads/master
Commit: ca565628dd7f223c4bcce15d226a3c5fecb44cef
Parents: 2901528
Author: duc <dt...@linagora.com>
Authored: Thu Jul 19 11:07:09 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:49:57 2018 +0700

----------------------------------------------------------------------
 mailbox/tika/pom.xml | 2 +-
 pom.xml              | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ca565628/mailbox/tika/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/tika/pom.xml b/mailbox/tika/pom.xml
index 3d22cd7..c7f6425 100644
--- a/mailbox/tika/pom.xml
+++ b/mailbox/tika/pom.xml
@@ -83,7 +83,7 @@
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>fluent-hc</artifactId>
-            <version>4.5.3</version>
+            <version>${apache.httpcomponents.version}</version>
         </dependency>
         <dependency>
             <groupId>org.assertj</groupId>

http://git-wip-us.apache.org/repos/asf/james-project/blob/ca565628/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 4f14c27..7004d93 100644
--- a/pom.xml
+++ b/pom.xml
@@ -644,6 +644,7 @@
         <jutf7.version>1.0.0</jutf7.version>
         <plugin.mailetdocs.version>0.1</plugin.mailetdocs.version>
         <httpclient-osgi.version>4.5.1</httpclient-osgi.version>
+        <apache.httpcomponents.version>4.5.6</apache.httpcomponents.version>
         <!-- maven-mailetdocs-plugin artifacts -->
         <maven-artifact.version>3.0-alpha-1</maven-artifact.version>
         <maven-plugin-annotations.version>3.4</maven-plugin-annotations.version>
@@ -2026,7 +2027,7 @@
             <dependency>
                 <groupId>org.apache.httpcomponents</groupId>
                 <artifactId>httpclient-osgi</artifactId>
-                <version>${httpclient-osgi.version}</version>
+                <version>${apache.httpcomponents.version}</version>
                 <exclusions>
                     <exclusion>
                         <groupId>commons-logging</groupId>


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


[06/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder for Cassandra event sourcing implementation

Posted by bt...@apache.org.
MAILBOX-342 Use CassandraModule.Builder for Cassandra event sourcing implementation


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

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

----------------------------------------------------------------------
 .../cassandra/CassandraEventStoreModule.java    | 46 +++++---------------
 .../CassandraGenericEventStoreExtension.java    |  2 +-
 .../eventstore/CassandraEventStoreModule.java   |  2 +-
 ...tSourcingDLPConfigurationStoreExtension.java |  2 +-
 4 files changed, 15 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
index 85dab3c..6613654 100644
--- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
+++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
@@ -19,44 +19,22 @@
 
 package org.apache.james.eventsourcing.eventstore.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 org.apache.james.backends.cassandra.utils.CassandraConstants;
 
 import com.datastax.driver.core.DataType;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraEventStoreModule implements CassandraModule {
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraEventStoreModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraEventStoreTable.EVENTS_TABLE,
-                SchemaBuilder.createTable(CassandraEventStoreTable.EVENTS_TABLE)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraEventStoreTable.AGGREGATE_ID, DataType.varchar())
-                    .addClusteringColumn(CassandraEventStoreTable.EVENT_ID, DataType.cint())
-                    .addColumn(CassandraEventStoreTable.EVENT, DataType.text())
-                    .withOptions()
-                    .comment("Store events of a EventSourcing aggregate")
-                    .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 interface CassandraEventStoreModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraEventStoreTable.EVENTS_TABLE)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraEventStoreTable.AGGREGATE_ID, DataType.varchar())
+            .addClusteringColumn(CassandraEventStoreTable.EVENT_ID, DataType.cint())
+            .addColumn(CassandraEventStoreTable.EVENT, DataType.text())
+            .withOptions()
+            .comment("Store events of a EventSourcing aggregate")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
index 1db5f09..94d4e10 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
@@ -53,7 +53,7 @@ public class CassandraGenericEventStoreExtension implements BeforeAllCallback, A
         dockerCassandraExtension.beforeAll(context);
         dockerCassandra = dockerCassandraExtension.getDockerCassandra();
         cassandra = CassandraCluster.create(
-            new CassandraEventStoreModule(), dockerCassandra.getHost());
+            CassandraEventStoreModule.MODULE, dockerCassandra.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java
index 6707c12..39ccced 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/eventstore/CassandraEventStoreModule.java
@@ -37,7 +37,7 @@ public class CassandraEventStoreModule extends AbstractModule {
 
         Multibinder.newSetBinder(binder(), CassandraModule.class)
             .addBinding()
-            .to(org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule.class);
+            .toInstance(org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule.MODULE);
 
         Multibinder.newSetBinder(binder(), EventDTOModule.class);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c507709/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
index b10ff03..e5d04fb 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
@@ -50,7 +50,7 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef
     public void beforeAll(ExtensionContext context) throws Exception {
         dockerCassandraExtension.beforeAll(context);
         cassandra = CassandraCluster.create(
-            new CassandraEventStoreModule(),
+            CassandraEventStoreModule.MODULE,
             dockerCassandraExtension.getDockerCassandra().getHost());
     }
 


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


[23/27] james-project git commit: JAMES-2481 Upgrade Jetty to 9.4.11.v20180605

Posted by bt...@apache.org.
JAMES-2481 Upgrade Jetty to 9.4.11.v20180605


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

Branch: refs/heads/master
Commit: 1cce5626d9b990836521d6c739717b7fd3980cd7
Parents: ca56562
Author: benwa <bt...@linagora.com>
Authored: Mon Jul 23 13:25:32 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:50:32 2018 +0700

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1cce5626/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7004d93..76219a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -631,7 +631,7 @@
         <karaf.tooling.exam.container.version>2.3.0</karaf.tooling.exam.container.version>
         <pax-logging-api.version>1.6.4</pax-logging-api.version>
         <jackson-data.version>2.6.3</jackson-data.version>
-        <jetty.version>9.4.7.v20170914</jetty.version>
+        <jetty.version>9.4.11.v20180605</jetty.version>
         <assertj-guava.version>3.1.0</assertj-guava.version>
         <testcontainers.version>1.8.1</testcontainers.version>
         <metrics.version>3.2.6</metrics.version>


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


[15/27] james-project git commit: MAILBOX-342 Use CassandraModule.Builder for Cassandra mailbox

Posted by bt...@apache.org.
MAILBOX-342 Use CassandraModule.Builder for Cassandra mailbox


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

Branch: refs/heads/master
Commit: 45318db56b2f726eebbb6c3cf34c152811667741
Parents: c675522
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 24 15:10:14 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 .../cassandra/modules/CassandraAclModule.java   |  70 +++-----
 .../modules/CassandraAnnotationModule.java      |  48 ++----
 .../modules/CassandraApplicableFlagsModule.java |  48 ++----
 .../modules/CassandraAttachmentModule.java      | 113 +++++--------
 .../modules/CassandraDeletedMessageModule.java  |  46 ++---
 .../modules/CassandraFirstUnseenModule.java     |  47 ++----
 .../modules/CassandraMailboxCounterModule.java  |  48 ++----
 .../modules/CassandraMailboxModule.java         | 105 +++++-------
 .../modules/CassandraMailboxRecentsModule.java  |  48 ++----
 .../modules/CassandraMessageModule.java         | 167 ++++++++-----------
 .../modules/CassandraModSeqModule.java          |  46 ++---
 .../cassandra/modules/CassandraQuotaModule.java | 105 +++++-------
 .../modules/CassandraRegistrationModule.java    |  53 ++----
 .../modules/CassandraSubscriptionModule.java    |  44 ++---
 .../cassandra/modules/CassandraUidModule.java   |  46 ++---
 .../CassandraCombinationManagerTest.java        |  33 +---
 .../CassandraMailboxManagerStressTest.java      |  35 +---
 .../cassandra/CassandraMailboxManagerTest.java  |  35 +---
 .../CassandraMessageIdManagerQuotaTest.java     |  35 +---
 ...CassandraMessageIdManagerSideEffectTest.java |  31 +---
 .../CassandraMessageIdManagerStorageTest.java   |  31 +---
 .../CassandraSubscriptionManagerTest.java       |   7 +-
 ...istributedMailboxDelegatingListenerTest.java |   2 +-
 ...CassandraMailboxPathRegistrerMapperTest.java |   4 +-
 .../cassandra/mail/CassandraACLMapperTest.java  |   2 +-
 .../mail/CassandraAnnotationMapperTest.java     |   2 +-
 .../mail/CassandraApplicableFlagDAOTest.java    |   2 +-
 .../mail/CassandraAttachmentDAOTest.java        |   2 +-
 .../mail/CassandraAttachmentDAOV2Test.java      |   2 +-
 .../mail/CassandraAttachmentFallbackTest.java   |   8 +-
 .../mail/CassandraAttachmentMapperTest.java     |   8 +-
 .../mail/CassandraAttachmentOwnerDAOTest.java   |   2 +-
 .../mail/CassandraDeletedMessageDAOTest.java    |   2 +-
 .../mail/CassandraFirstUnseenDAOTest.java       |   2 +-
 .../mail/CassandraGenericMailboxMapperTest.java |  12 +-
 .../mail/CassandraIndexTableHandlerTest.java    |  14 +-
 .../mail/CassandraMailboxCounterDAOTest.java    |   2 +-
 .../cassandra/mail/CassandraMailboxDAOTest.java |   4 +-
 .../CassandraMailboxManagerAttachmentTest.java  |  29 +---
 .../mail/CassandraMailboxMapperAclTest.java     |   8 +-
 .../CassandraMailboxMapperConcurrencyTest.java  |   4 +-
 .../mail/CassandraMailboxMapperTest.java        |   4 +-
 .../mail/CassandraMailboxPathDAOTest.java       |   2 +-
 .../mail/CassandraMailboxPathV2DAOTest.java     |   1 -
 .../mail/CassandraMailboxRecentDAOTest.java     |   2 +-
 .../cassandra/mail/CassandraMessageDAOTest.java |   4 +-
 .../mail/CassandraMessageIdDAOTest.java         |   2 +-
 .../mail/CassandraMessageIdMapperTest.java      |  30 +---
 .../CassandraMessageIdToImapUidDAOTest.java     |   2 +-
 .../mail/CassandraMessageMapperTest.java        |  30 +---
 .../mail/CassandraMessageMoveTest.java          |  30 +---
 ...assandraMessageWithAttachmentMapperTest.java |  30 +---
 .../mail/CassandraModSeqProviderTest.java       |   2 +-
 .../mail/CassandraUidProviderTest.java          |   2 +-
 .../mail/CassandraUserMailboxRightsDAOTest.java |  10 +-
 .../cassandra/mail/MailboxAggregateModule.java  |  55 ++++++
 .../AttachmentMessageIdCreationTest.java        |  10 +-
 .../migration/AttachmentV2MigrationTest.java    |   8 +-
 .../migration/MailboxPathV2MigrationTest.java   |   8 +-
 .../quota/CassandraCurrentQuotaManagerTest.java |   2 +-
 .../CassandraPerUserMaxQuotaManagerTest.java    |   2 +-
 .../user/CassandraSubscriptionMapperTest.java   |   2 +-
 .../cassandra/host/CassandraHostSystem.java     |  32 +---
 .../modules/mailbox/CassandraMailboxModule.java |  38 +++--
 .../modules/mailbox/CassandraQuotaModule.java   |   2 +-
 65 files changed, 532 insertions(+), 1130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
index a26fb18..c6da2a5 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
@@ -23,56 +23,36 @@ import static com.datastax.driver.core.DataType.bigint;
 import static com.datastax.driver.core.DataType.text;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
 import org.apache.james.mailbox.cassandra.table.CassandraUserMailboxRightsTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraAclModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraAclModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraACLTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraACLTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraACLTable.ID, timeuuid())
-                    .addColumn(CassandraACLTable.ACL, text())
-                    .addColumn(CassandraACLTable.VERSION, bigint())
-                    .withOptions()
-                    .comment("Holds mailbox ACLs")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
-            new CassandraTable(CassandraUserMailboxRightsTable.TABLE_NAME,
-                    SchemaBuilder.createTable(CassandraUserMailboxRightsTable.TABLE_NAME)
-                        .ifNotExists()
-                        .addPartitionKey(CassandraUserMailboxRightsTable.USER_NAME, text())
-                        .addClusteringColumn(CassandraUserMailboxRightsTable.MAILBOX_ID, timeuuid())
-                        .addColumn(CassandraUserMailboxRightsTable.RIGHTS, text())
-                        .withOptions()
-                        .compactionOptions(SchemaBuilder.leveledStrategy())
-                        .caching(SchemaBuilder.KeyCaching.ALL,
-                            SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-                        .comment("Denormalisation table. Allow to retrieve non personal mailboxIds a user has right on")));
-        types = ImmutableList.of();
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public interface CassandraAclModule {
+    CassandraModule MODULE = CassandraModule
+        .builder()
+        .table(CassandraACLTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraACLTable.ID, timeuuid())
+            .addColumn(CassandraACLTable.ACL, text())
+            .addColumn(CassandraACLTable.VERSION, bigint())
+            .withOptions()
+            .comment("Holds mailbox ACLs")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .table(CassandraUserMailboxRightsTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraUserMailboxRightsTable.USER_NAME, text())
+            .addClusteringColumn(CassandraUserMailboxRightsTable.MAILBOX_ID, timeuuid())
+            .addColumn(CassandraUserMailboxRightsTable.RIGHTS, text())
+            .withOptions()
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
+            .comment("Denormalisation table. Allow to retrieve non personal mailboxIds a user has right on"))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
index 98af388..032ac3a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
@@ -22,45 +22,23 @@ package org.apache.james.mailbox.cassandra.modules;
 import static com.datastax.driver.core.DataType.text;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraAnnotationTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraAnnotationModule implements CassandraModule {
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraAnnotationModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraAnnotationTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraAnnotationTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraAnnotationTable.MAILBOX_ID, timeuuid())
-                    .addClusteringColumn(CassandraAnnotationTable.KEY, text())
-                    .addColumn(CassandraAnnotationTable.VALUE, text())
-                    .withOptions()
-                    .comment("Holds Cassandra mailbox annotations")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .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 interface CassandraAnnotationModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraAnnotationTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraAnnotationTable.MAILBOX_ID, timeuuid())
+            .addClusteringColumn(CassandraAnnotationTable.KEY, text())
+            .addColumn(CassandraAnnotationTable.VALUE, text())
+            .withOptions()
+            .comment("Holds Cassandra mailbox annotations")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
index 46dea02..11e5538 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
@@ -23,46 +23,24 @@ import static com.datastax.driver.core.DataType.set;
 import static com.datastax.driver.core.DataType.text;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraApplicableFlagTable;
 import org.apache.james.mailbox.cassandra.table.Flag;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraApplicableFlagsModule implements CassandraModule {
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraApplicableFlagsModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraApplicableFlagTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraApplicableFlagTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraApplicableFlagTable.MAILBOX_ID, timeuuid())
-                    .addColumn(Flag.USER_FLAGS, set(text()))
-                    .withOptions()
-                    .comment("Holds flags being used on specific mailboxes. As system flags are implicit, this table " +
-                        "stores user flags.")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .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 interface CassandraApplicableFlagsModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraApplicableFlagTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraApplicableFlagTable.MAILBOX_ID, timeuuid())
+            .addColumn(Flag.USER_FLAGS, set(text()))
+            .withOptions()
+            .comment("Holds flags being used on specific mailboxes. As system flags are implicit, this table " +
+                "stores user flags.")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
index ffaa49a..acee1f1 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
@@ -24,11 +24,7 @@ import static com.datastax.driver.core.DataType.blob;
 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.mailbox.cassandra.table.CassandraAttachmentMessageIdTable;
 import org.apache.james.mailbox.cassandra.table.CassandraAttachmentOwnerTable;
@@ -36,69 +32,52 @@ import org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable;
 import org.apache.james.mailbox.cassandra.table.CassandraAttachmentV2Table;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraAttachmentModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraAttachmentModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraAttachmentTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraAttachmentTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraAttachmentTable.ID, text())
-                    .addColumn(CassandraAttachmentTable.PAYLOAD, blob())
-                    .addColumn(CassandraAttachmentTable.TYPE, text())
-                    .addColumn(CassandraAttachmentTable.SIZE, bigint())
-                    .withOptions()
-                    .comment("Holds attachment for fast attachment retrieval")),
-            new CassandraTable(CassandraAttachmentV2Table.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraAttachmentV2Table.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraAttachmentV2Table.ID_AS_UUID, uuid())
-                    .addColumn(CassandraAttachmentV2Table.ID, text())
-                    .addColumn(CassandraAttachmentV2Table.BLOB_ID, text())
-                    .addColumn(CassandraAttachmentV2Table.TYPE, text())
-                    .addColumn(CassandraAttachmentV2Table.SIZE, bigint())
-                    .withOptions()
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-                    .comment("Holds attachment for fast attachment retrieval. Content of messages is stored" +
-                        "in `blobs` and `blobparts` tables.")),
-            new CassandraTable(CassandraAttachmentMessageIdTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraAttachmentMessageIdTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraAttachmentMessageIdTable.ATTACHMENT_ID_AS_UUID, uuid())
-                    .addColumn(CassandraAttachmentMessageIdTable.ATTACHMENT_ID, text())
-                    .addClusteringColumn(CassandraAttachmentMessageIdTable.MESSAGE_ID, text())
-                    .withOptions()
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-                    .comment("Holds ids of messages owning the attachment")),
-            new CassandraTable(CassandraAttachmentOwnerTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraAttachmentOwnerTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraAttachmentOwnerTable.ID, uuid())
-                    .addClusteringColumn(CassandraAttachmentOwnerTable.OWNER, text())
-                    .withOptions()
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-                    .comment("Holds explicit owners of some attachments")));
-        types = ImmutableList.of();
-    }
 
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
+public interface CassandraAttachmentModule {
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+    CassandraModule MODULE = CassandraModule.table(CassandraAttachmentTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraAttachmentTable.ID, text())
+            .addColumn(CassandraAttachmentTable.PAYLOAD, blob())
+            .addColumn(CassandraAttachmentTable.TYPE, text())
+            .addColumn(CassandraAttachmentTable.SIZE, bigint())
+            .withOptions()
+            .comment("Holds attachment for fast attachment retrieval"))
+        .table(CassandraAttachmentV2Table.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraAttachmentV2Table.ID_AS_UUID, uuid())
+            .addColumn(CassandraAttachmentV2Table.ID, text())
+            .addColumn(CassandraAttachmentV2Table.BLOB_ID, text())
+            .addColumn(CassandraAttachmentV2Table.TYPE, text())
+            .addColumn(CassandraAttachmentV2Table.SIZE, bigint())
+            .withOptions()
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
+            .comment("Holds attachment for fast attachment retrieval. Content of messages is stored" +
+                "in `blobs` and `blobparts` tables."))
+        .table(CassandraAttachmentMessageIdTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraAttachmentMessageIdTable.ATTACHMENT_ID_AS_UUID, uuid())
+            .addColumn(CassandraAttachmentMessageIdTable.ATTACHMENT_ID, text())
+            .addClusteringColumn(CassandraAttachmentMessageIdTable.MESSAGE_ID, text())
+            .withOptions()
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
+            .comment("Holds ids of messages owning the attachment"))
+        .table(CassandraAttachmentOwnerTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraAttachmentOwnerTable.ID, uuid())
+            .addClusteringColumn(CassandraAttachmentOwnerTable.OWNER, text())
+            .withOptions()
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
+            .comment("Holds explicit owners of some attachments"))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
index 46e99fb..b2689d9 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
@@ -23,44 +23,22 @@ import static org.apache.james.mailbox.cassandra.table.CassandraDeletedMessageTa
 import static org.apache.james.mailbox.cassandra.table.CassandraDeletedMessageTable.TABLE_NAME;
 import static org.apache.james.mailbox.cassandra.table.CassandraDeletedMessageTable.UID;
 
-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.DataType;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraDeletedMessageModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraDeletedMessageModule() {
-        tables = ImmutableList.of(new CassandraTable(TABLE_NAME,
-            SchemaBuilder.createTable(TABLE_NAME)
-                .ifNotExists()
-                .addPartitionKey(MAILBOX_ID, DataType.timeuuid())
-                .addClusteringColumn(UID, DataType.bigint())
-                .withOptions()
-                .comment("Denormalisation table. Allows to retrieve UID marked as DELETED in specific mailboxes.")
-                .compactionOptions(SchemaBuilder.leveledStrategy())
-                .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 interface CassandraDeletedMessageModule {
+    CassandraModule MODULE = CassandraModule.table(TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(MAILBOX_ID, DataType.timeuuid())
+            .addClusteringColumn(UID, DataType.bigint())
+            .withOptions()
+            .comment("Denormalisation table. Allows to retrieve UID marked as DELETED in specific mailboxes.")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
index 1af9c0f..aec22b2 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
@@ -19,45 +19,24 @@
 
 package org.apache.james.mailbox.cassandra.modules;
 
-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.mailbox.cassandra.table.CassandraFirstUnseenTable;
 
 import com.datastax.driver.core.DataType;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraFirstUnseenModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraFirstUnseenModule() {
-        tables = ImmutableList.of(new CassandraTable(CassandraFirstUnseenTable.TABLE_NAME,
-            SchemaBuilder.createTable(CassandraFirstUnseenTable.TABLE_NAME)
-                .ifNotExists()
-                .addPartitionKey(CassandraFirstUnseenTable.MAILBOX_ID, DataType.timeuuid())
-                .addClusteringColumn(CassandraFirstUnseenTable.UID, DataType.bigint())
-                .withOptions()
-                .comment("Denormalisation table. Allow to quickly retrieve the first UNSEEN UID of a specific mailbox.")
-                .compactionOptions(SchemaBuilder.leveledStrategy())
-                .caching(SchemaBuilder.KeyCaching.ALL,
-                    SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
-                .clusteringOrder(CassandraFirstUnseenTable.UID, SchemaBuilder.Direction.ASC)));
-        types = ImmutableList.of();
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public interface CassandraFirstUnseenModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraFirstUnseenTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraFirstUnseenTable.MAILBOX_ID, DataType.timeuuid())
+            .addClusteringColumn(CassandraFirstUnseenTable.UID, DataType.bigint())
+            .withOptions()
+            .comment("Denormalisation table. Allow to quickly retrieve the first UNSEEN UID of a specific mailbox.")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))
+            .clusteringOrder(CassandraFirstUnseenTable.UID, SchemaBuilder.Direction.ASC))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
index 5a402f3..fdeb187 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
@@ -22,45 +22,23 @@ package org.apache.james.mailbox.cassandra.modules;
 import static com.datastax.driver.core.DataType.counter;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxCountersTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraMailboxCounterModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraMailboxCounterModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraMailboxCountersTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMailboxCountersTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid())
-                    .addColumn(CassandraMailboxCountersTable.COUNT, counter())
-                    .addColumn(CassandraMailboxCountersTable.UNSEEN, counter())
-                    .withOptions()
-                    .comment("Holds messages count and unseen message count for each mailbox.")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .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 interface CassandraMailboxCounterModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraMailboxCountersTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid())
+            .addColumn(CassandraMailboxCountersTable.COUNT, counter())
+            .addColumn(CassandraMailboxCountersTable.UNSEEN, counter())
+            .withOptions()
+            .comment("Holds messages count and unseen message count for each mailbox.")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
index 85fd62d..c9e79dd 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
@@ -23,75 +23,54 @@ import static com.datastax.driver.core.DataType.bigint;
 import static com.datastax.driver.core.DataType.text;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathTable;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathV2Table;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraMailboxModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraMailboxModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraMailboxTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMailboxTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMailboxTable.ID, timeuuid())
-                    .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
-                    .addColumn(CassandraMailboxTable.NAME, text())
-                    .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())
-                    .withOptions()
-                    .comment("Holds the mailboxes information.")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
-            new CassandraTable(CassandraMailboxPathTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMailboxPathTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
-                    .addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text())
-                    .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid())
-                    .withOptions()
-                    .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
-                        "LIST optimisation.")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
-            new CassandraTable(CassandraMailboxPathV2Table.TABLE_NAME,
-                    SchemaBuilder.createTable(CassandraMailboxPathV2Table.TABLE_NAME)
-                        .ifNotExists()
-                        .addPartitionKey(CassandraMailboxPathV2Table.NAMESPACE, text())
-                        .addPartitionKey(CassandraMailboxPathV2Table.USER, text())
-                        .addClusteringColumn(CassandraMailboxPathV2Table.MAILBOX_NAME, text())
-                        .addColumn(CassandraMailboxPathV2Table.MAILBOX_ID, timeuuid())
-                        .withOptions()
-                        .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
-                            "LIST optimisation.")
-                        .caching(SchemaBuilder.KeyCaching.ALL,
-                            SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))));
-        types = ImmutableList.of(
-            new CassandraType(CassandraMailboxTable.MAILBOX_BASE,
-                SchemaBuilder.createType(CassandraMailboxTable.MAILBOX_BASE)
-                    .ifNotExists()
-                    .addColumn(CassandraMailboxTable.MailboxBase.NAMESPACE, text())
-                    .addColumn(CassandraMailboxTable.MailboxBase.USER, text())));
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public interface CassandraMailboxModule {
+    CassandraModule MODULE = CassandraModule.builder()
+        .type(CassandraMailboxTable.MAILBOX_BASE)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addColumn(CassandraMailboxTable.MailboxBase.NAMESPACE, text())
+            .addColumn(CassandraMailboxTable.MailboxBase.USER, text()))
+        .table(CassandraMailboxTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMailboxTable.ID, timeuuid())
+            .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
+            .addColumn(CassandraMailboxTable.NAME, text())
+            .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())
+            .withOptions()
+            .comment("Holds the mailboxes information.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .table(CassandraMailboxPathTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
+            .addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text())
+            .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid())
+            .withOptions()
+            .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
+                "LIST optimisation.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .table(CassandraMailboxPathV2Table.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMailboxPathV2Table.NAMESPACE, text())
+            .addPartitionKey(CassandraMailboxPathV2Table.USER, text())
+            .addClusteringColumn(CassandraMailboxPathV2Table.MAILBOX_NAME, text())
+            .addColumn(CassandraMailboxPathV2Table.MAILBOX_ID, timeuuid())
+            .withOptions()
+            .comment("Denormalisation table. Allow to retrieve mailboxes belonging to a certain user. This is a " +
+                "LIST optimisation.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
index da37060..9193470 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
@@ -22,45 +22,23 @@ package org.apache.james.mailbox.cassandra.modules;
 import static com.datastax.driver.core.DataType.bigint;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxRecentsTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraMailboxRecentsModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraMailboxRecentsModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraMailboxRecentsTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMailboxRecentsTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMailboxRecentsTable.MAILBOX_ID, timeuuid())
-                    .addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint())
-                    .withOptions()
-                    .comment("Denormalisation table. This table holds for each mailbox the messages marked as RECENT. This" +
-                        " is a SELECT optimisation.")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .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 interface CassandraMailboxRecentsModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraMailboxRecentsTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMailboxRecentsTable.MAILBOX_ID, timeuuid())
+            .addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint())
+            .withOptions()
+            .comment("Denormalisation table. This table holds for each mailbox the messages marked as RECENT. This" +
+                " is a SELECT optimisation.")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
index 428a45a..856736a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
@@ -27,11 +27,7 @@ import static com.datastax.driver.core.DataType.text;
 import static com.datastax.driver.core.DataType.timestamp;
 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.mailbox.cassandra.table.CassandraMessageIdTable;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageIds;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table;
@@ -39,96 +35,81 @@ import org.apache.james.mailbox.cassandra.table.Flag;
 import org.apache.james.mailbox.cassandra.table.MessageIdToImapUid;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraMessageModule implements CassandraModule {
-
-    public static final int CACHED_MESSAGE_ID_ROWS = 1000;
-    public static final int CACHED_IMAP_UID_ROWS = 100;
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
 
-    public CassandraMessageModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(MessageIdToImapUid.TABLE_NAME,
-                SchemaBuilder.createTable(MessageIdToImapUid.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
-                    .addClusteringColumn(CassandraMessageIds.MAILBOX_ID, timeuuid())
-                    .addClusteringColumn(CassandraMessageIds.IMAP_UID, bigint())
-                    .addColumn(MessageIdToImapUid.MOD_SEQ, bigint())
-                    .addColumn(Flag.ANSWERED, cboolean())
-                    .addColumn(Flag.DELETED, cboolean())
-                    .addColumn(Flag.DRAFT, cboolean())
-                    .addColumn(Flag.FLAGGED, cboolean())
-                    .addColumn(Flag.RECENT, cboolean())
-                    .addColumn(Flag.SEEN, cboolean())
-                    .addColumn(Flag.USER, cboolean())
-                    .addColumn(Flag.USER_FLAGS, set(text()))
-                    .withOptions()
-                    .comment("Holds mailbox and flags for each message, lookup by message ID")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CACHED_IMAP_UID_ROWS))),
-            new CassandraTable(CassandraMessageIdTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMessageIdTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMessageIds.MAILBOX_ID, timeuuid())
-                    .addClusteringColumn(CassandraMessageIds.IMAP_UID, bigint())
-                    .addColumn(CassandraMessageIds.MESSAGE_ID, timeuuid())
-                    .addColumn(CassandraMessageIdTable.MOD_SEQ, bigint())
-                    .addColumn(Flag.ANSWERED, cboolean())
-                    .addColumn(Flag.DELETED, cboolean())
-                    .addColumn(Flag.DRAFT, cboolean())
-                    .addColumn(Flag.FLAGGED, cboolean())
-                    .addColumn(Flag.RECENT, cboolean())
-                    .addColumn(Flag.SEEN, cboolean())
-                    .addColumn(Flag.USER, cboolean())
-                    .addColumn(Flag.USER_FLAGS, set(text()))
-                    .withOptions()
-                    .comment("Holds mailbox and flags for each message, lookup by mailbox ID + UID")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS))),
-            new CassandraTable(CassandraMessageV2Table.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMessageV2Table.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
-                    .addColumn(CassandraMessageV2Table.INTERNAL_DATE, timestamp())
-                    .addColumn(CassandraMessageV2Table.BODY_START_OCTET, cint())
-                    .addColumn(CassandraMessageV2Table.BODY_OCTECTS, bigint())
-                    .addColumn(CassandraMessageV2Table.TEXTUAL_LINE_COUNT, bigint())
-                    .addColumn(CassandraMessageV2Table.FULL_CONTENT_OCTETS, bigint())
-                    .addColumn(CassandraMessageV2Table.BODY_CONTENT, text())
-                    .addColumn(CassandraMessageV2Table.HEADER_CONTENT, text())
-                    .addUDTListColumn(CassandraMessageV2Table.ATTACHMENTS, SchemaBuilder.frozen(CassandraMessageV2Table.ATTACHMENTS))
-                    .addUDTListColumn(CassandraMessageV2Table.PROPERTIES, SchemaBuilder.frozen(CassandraMessageV2Table.PROPERTIES))
-                    .withOptions()
-                    .comment("Holds message metadata, independently of any mailboxes. Content of messages is stored " +
-                        "in `blobs` and `blobparts` tables.")));
-        types = ImmutableList.of(
-            new CassandraType(CassandraMessageV2Table.PROPERTIES,
-                SchemaBuilder.createType(CassandraMessageV2Table.PROPERTIES)
-                    .ifNotExists()
-                    .addColumn(CassandraMessageV2Table.Properties.NAMESPACE, text())
-                    .addColumn(CassandraMessageV2Table.Properties.NAME, text())
-                    .addColumn(CassandraMessageV2Table.Properties.VALUE, text())),
-            new CassandraType(CassandraMessageV2Table.ATTACHMENTS,
-                SchemaBuilder.createType(CassandraMessageV2Table.ATTACHMENTS)
-                    .ifNotExists()
-                    .addColumn(CassandraMessageV2Table.Attachments.ID, text())
-                    .addColumn(CassandraMessageV2Table.Attachments.NAME, text())
-                    .addColumn(CassandraMessageV2Table.Attachments.CID, text())
-                    .addColumn(CassandraMessageV2Table.Attachments.IS_INLINE, cboolean())));
-    }
+public interface CassandraMessageModule {
 
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
+    int CACHED_MESSAGE_ID_ROWS = 1000;
+    int CACHED_IMAP_UID_ROWS = 100;
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+    CassandraModule MODULE = CassandraModule.builder()
+        .table(CassandraMessageIdTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMessageIds.MAILBOX_ID, timeuuid())
+            .addClusteringColumn(CassandraMessageIds.IMAP_UID, bigint())
+            .addColumn(CassandraMessageIds.MESSAGE_ID, timeuuid())
+            .addColumn(CassandraMessageIdTable.MOD_SEQ, bigint())
+            .addColumn(Flag.ANSWERED, cboolean())
+            .addColumn(Flag.DELETED, cboolean())
+            .addColumn(Flag.DRAFT, cboolean())
+            .addColumn(Flag.FLAGGED, cboolean())
+            .addColumn(Flag.RECENT, cboolean())
+            .addColumn(Flag.SEEN, cboolean())
+            .addColumn(Flag.USER, cboolean())
+            .addColumn(Flag.USER_FLAGS, set(text()))
+            .withOptions()
+            .comment("Holds mailbox and flags for each message, lookup by mailbox ID + UID")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS)))
+        .table(MessageIdToImapUid.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
+            .addClusteringColumn(CassandraMessageIds.MAILBOX_ID, timeuuid())
+            .addClusteringColumn(CassandraMessageIds.IMAP_UID, bigint())
+            .addColumn(MessageIdToImapUid.MOD_SEQ, bigint())
+            .addColumn(Flag.ANSWERED, cboolean())
+            .addColumn(Flag.DELETED, cboolean())
+            .addColumn(Flag.DRAFT, cboolean())
+            .addColumn(Flag.FLAGGED, cboolean())
+            .addColumn(Flag.RECENT, cboolean())
+            .addColumn(Flag.SEEN, cboolean())
+            .addColumn(Flag.USER, cboolean())
+            .addColumn(Flag.USER_FLAGS, set(text()))
+            .withOptions()
+            .comment("Holds mailbox and flags for each message, lookup by message ID")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CACHED_IMAP_UID_ROWS)))
+        .table(CassandraMessageV2Table.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
+            .addColumn(CassandraMessageV2Table.INTERNAL_DATE, timestamp())
+            .addColumn(CassandraMessageV2Table.BODY_START_OCTET, cint())
+            .addColumn(CassandraMessageV2Table.BODY_OCTECTS, bigint())
+            .addColumn(CassandraMessageV2Table.TEXTUAL_LINE_COUNT, bigint())
+            .addColumn(CassandraMessageV2Table.FULL_CONTENT_OCTETS, bigint())
+            .addColumn(CassandraMessageV2Table.BODY_CONTENT, text())
+            .addColumn(CassandraMessageV2Table.HEADER_CONTENT, text())
+            .addUDTListColumn(CassandraMessageV2Table.ATTACHMENTS, SchemaBuilder.frozen(CassandraMessageV2Table.ATTACHMENTS))
+            .addUDTListColumn(CassandraMessageV2Table.PROPERTIES, SchemaBuilder.frozen(CassandraMessageV2Table.PROPERTIES))
+            .withOptions()
+            .comment("Holds message metadata, independently of any mailboxes. Content of messages is stored " +
+                "in `blobs` and `blobparts` tables."))
+        .type(CassandraMessageV2Table.PROPERTIES)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addColumn(CassandraMessageV2Table.Properties.NAMESPACE, text())
+            .addColumn(CassandraMessageV2Table.Properties.NAME, text())
+            .addColumn(CassandraMessageV2Table.Properties.VALUE, text()))
+        .type(CassandraMessageV2Table.ATTACHMENTS)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addColumn(CassandraMessageV2Table.Attachments.ID, text())
+            .addColumn(CassandraMessageV2Table.Attachments.NAME, text())
+            .addColumn(CassandraMessageV2Table.Attachments.CID, text())
+            .addColumn(CassandraMessageV2Table.Attachments.IS_INLINE, cboolean()))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
index 49013ab..2e0169e 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
@@ -22,44 +22,22 @@ package org.apache.james.mailbox.cassandra.modules;
 import static com.datastax.driver.core.DataType.bigint;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraModSeqModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraModSeqModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraMessageModseqTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMessageModseqTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid())
-                    .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint())
-                    .withOptions()
-                    .comment("Holds and is used to generate MODSEQ. A monotic counter is implemented on top of this table.")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .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 interface CassandraModSeqModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraMessageModseqTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid())
+            .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint())
+            .withOptions()
+            .comment("Holds and is used to generate MODSEQ. A monotic counter is implemented on top of this table.")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
index 73c7353..3f50395 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
@@ -23,11 +23,7 @@ import static com.datastax.driver.core.DataType.bigint;
 import static com.datastax.driver.core.DataType.counter;
 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.mailbox.cassandra.table.CassandraCurrentQuota;
 import org.apache.james.mailbox.cassandra.table.CassandraDomainMaxQuota;
@@ -35,64 +31,47 @@ import org.apache.james.mailbox.cassandra.table.CassandraGlobalMaxQuota;
 import org.apache.james.mailbox.cassandra.table.CassandraMaxQuota;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraQuotaModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraQuotaModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraCurrentQuota.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraCurrentQuota.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraCurrentQuota.QUOTA_ROOT, text())
-                    .addColumn(CassandraCurrentQuota.MESSAGE_COUNT, counter())
-                    .addColumn(CassandraCurrentQuota.STORAGE, counter())
-                    .withOptions()
-                    .comment("Holds per quota-root current values. Quota-roots defines groups of mailboxes which shares quotas limitations.")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
-            new CassandraTable(CassandraMaxQuota.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMaxQuota.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMaxQuota.QUOTA_ROOT, text())
-                    .addColumn(CassandraMaxQuota.MESSAGE_COUNT, bigint())
-                    .addColumn(CassandraMaxQuota.STORAGE, bigint())
-                    .withOptions()
-                    .comment("Holds per quota-root limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
-            new CassandraTable(CassandraDomainMaxQuota.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraDomainMaxQuota.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraDomainMaxQuota.DOMAIN, text())
-                    .addColumn(CassandraDomainMaxQuota.MESSAGE_COUNT, bigint())
-                    .addColumn(CassandraDomainMaxQuota.STORAGE, bigint())
-                    .withOptions()
-                    .comment("Holds per domain limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION))),
-            new CassandraTable(CassandraGlobalMaxQuota.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraGlobalMaxQuota.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraGlobalMaxQuota.TYPE, text())
-                    .addColumn(CassandraGlobalMaxQuota.VALUE, bigint())
-                    .withOptions()
-                    .comment("Holds defaults limitations definition.")
-                    .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 interface CassandraQuotaModule {
+    CassandraModule MODULE = CassandraModule.builder()
+        .table(CassandraCurrentQuota.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraCurrentQuota.QUOTA_ROOT, text())
+            .addColumn(CassandraCurrentQuota.MESSAGE_COUNT, counter())
+            .addColumn(CassandraCurrentQuota.STORAGE, counter())
+            .withOptions()
+            .comment("Holds per quota-root current values. Quota-roots defines groups of mailboxes which shares quotas limitations.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .table(CassandraMaxQuota.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMaxQuota.QUOTA_ROOT, text())
+            .addColumn(CassandraMaxQuota.MESSAGE_COUNT, bigint())
+            .addColumn(CassandraMaxQuota.STORAGE, bigint())
+            .withOptions()
+            .comment("Holds per quota-root limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .table(CassandraDomainMaxQuota.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraDomainMaxQuota.DOMAIN, text())
+            .addColumn(CassandraDomainMaxQuota.MESSAGE_COUNT, bigint())
+            .addColumn(CassandraDomainMaxQuota.STORAGE, bigint())
+            .withOptions()
+            .comment("Holds per domain limitations. Limitations can concern the number of messages in a quota-root or the total size of a quota-root.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .table(CassandraGlobalMaxQuota.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraGlobalMaxQuota.TYPE, text())
+            .addColumn(CassandraGlobalMaxQuota.VALUE, bigint())
+            .withOptions()
+            .comment("Holds defaults limitations definition.")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
index bb91fd4..97e6714 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
@@ -21,46 +21,25 @@ package org.apache.james.mailbox.cassandra.modules;
 
 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.mailbox.cassandra.table.CassandraMailboxPathRegisterTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraRegistrationModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraRegistrationModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraMailboxPathRegisterTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMailboxPathRegisterTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addUDTPartitionKey(CassandraMailboxPathRegisterTable.MAILBOX_PATH, SchemaBuilder.frozen(CassandraMailboxPathRegisterTable.MAILBOX_PATH))
-                    .addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text())
-                    .withOptions()
-                    .compactionOptions(SchemaBuilder.dateTieredStrategy())));
-        types = ImmutableList.of(
-            new CassandraType(CassandraMailboxPathRegisterTable.MAILBOX_PATH,
-                SchemaBuilder.createType(CassandraMailboxPathRegisterTable.MAILBOX_PATH)
-                    .ifNotExists()
-                    .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.NAMESPACE, text())
-                    .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.NAME, text())
-                    .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.USER, text())));
-    }
-
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+public interface CassandraRegistrationModule {
+    CassandraModule MODULE = CassandraModule.builder()
+        .type(CassandraMailboxPathRegisterTable.MAILBOX_PATH)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.NAMESPACE, text())
+            .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.NAME, text())
+            .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.USER, text()))
+        .table(CassandraMailboxPathRegisterTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addUDTPartitionKey(CassandraMailboxPathRegisterTable.MAILBOX_PATH, SchemaBuilder.frozen(CassandraMailboxPathRegisterTable.MAILBOX_PATH))
+            .addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text())
+            .withOptions()
+            .compactionOptions(SchemaBuilder.dateTieredStrategy()))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
index f85fe53..068da26 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
@@ -21,43 +21,23 @@ package org.apache.james.mailbox.cassandra.modules;
 
 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.mailbox.cassandra.table.CassandraSubscriptionTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraSubscriptionModule implements CassandraModule {
-
-    public static final int PER_USER_CACHED_SUBSCRIPTIONS = 100;
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
 
-    public CassandraSubscriptionModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraSubscriptionTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraSubscriptionTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraSubscriptionTable.USER, text())
-                    .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, text())
-                    .withOptions()
-                    .comment("Holds per user list of IMAP subscriptions")
-                    .caching(SchemaBuilder.KeyCaching.ALL,
-                        SchemaBuilder.rows(PER_USER_CACHED_SUBSCRIPTIONS))));
-        types = ImmutableList.of();
-    }
+public interface CassandraSubscriptionModule {
 
-    @Override
-    public List<CassandraTable> moduleTables() {
-        return tables;
-    }
+    int PER_USER_CACHED_SUBSCRIPTIONS = 100;
 
-    @Override
-    public List<CassandraType> moduleTypes() {
-        return types;
-    }
+    CassandraModule MODULE = CassandraModule.table(CassandraSubscriptionTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraSubscriptionTable.USER, text())
+            .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, text())
+            .withOptions()
+            .comment("Holds per user list of IMAP subscriptions")
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(PER_USER_CACHED_SUBSCRIPTIONS)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
index 49dc902..e32d8f0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
@@ -22,44 +22,22 @@ package org.apache.james.mailbox.cassandra.modules;
 import static com.datastax.driver.core.DataType.bigint;
 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.utils.CassandraConstants;
 import org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
-
-public class CassandraUidModule implements CassandraModule {
-
-    private final List<CassandraTable> tables;
-    private final List<CassandraType> types;
-
-    public CassandraUidModule() {
-        tables = ImmutableList.of(
-            new CassandraTable(CassandraMessageUidTable.TABLE_NAME,
-                SchemaBuilder.createTable(CassandraMessageUidTable.TABLE_NAME)
-                    .ifNotExists()
-                    .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid())
-                    .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())
-                    .withOptions()
-                    .comment("Holds and is used to generate UID. A monotic counter is implemented on top of this table.")
-                    .compactionOptions(SchemaBuilder.leveledStrategy())
-                    .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 interface CassandraUidModule {
+    CassandraModule MODULE = CassandraModule.table(CassandraMessageUidTable.TABLE_NAME)
+        .statement(statement -> statement
+            .ifNotExists()
+            .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid())
+            .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())
+            .withOptions()
+            .comment("Holds and is used to generate UID. A monotic counter is implemented on top of this table.")
+            .compactionOptions(SchemaBuilder.leveledStrategy())
+            .caching(SchemaBuilder.KeyCaching.ALL,
+                SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
+        .build();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
index 2ad6deb..f20e7fc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
@@ -23,22 +23,8 @@ import static org.mockito.Mockito.mock;
 
 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.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.store.AbstractCombinationManagerTest;
 import org.apache.james.mailbox.store.CombinationManagerTestSystem;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
@@ -57,22 +43,7 @@ public class CassandraCombinationManagerTest extends AbstractCombinationManagerT
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraBlobModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraUidModule(),
-            new CassandraModSeqModule(),
-            new CassandraSubscriptionModule(),
-            new CassandraAttachmentModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraAnnotationModule(),
-            new CassandraApplicableFlagsModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
index 33c263c..75b7b3c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
@@ -21,24 +21,9 @@ package org.apache.james.mailbox.cassandra;
 
 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.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -53,23 +38,7 @@ public class CassandraMailboxManagerStressTest extends MailboxManagerStressTest
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraBlobModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraUidModule(),
-            new CassandraModSeqModule(),
-            new CassandraSubscriptionModule(),
-            new CassandraAttachmentModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraAnnotationModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraQuotaModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE_WITH_QUOTA, cassandraServer.getHost());
     }
     
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/45318db5/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index 9e7e2e0..8193bca 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -20,24 +20,9 @@ package org.apache.james.mailbox.cassandra;
 
 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.blob.cassandra.CassandraBlobModule;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerTest;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -52,23 +37,7 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest {
 
     @BeforeClass
     public static void setUpClass() {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraMessageModule(),
-            new CassandraBlobModule(),
-            new CassandraMailboxCounterModule(),
-            new CassandraMailboxRecentsModule(),
-            new CassandraFirstUnseenModule(),
-            new CassandraUidModule(),
-            new CassandraModSeqModule(),
-            new CassandraSubscriptionModule(),
-            new CassandraAttachmentModule(),
-            new CassandraDeletedMessageModule(),
-            new CassandraAnnotationModule(),
-            new CassandraApplicableFlagsModule(),
-            new CassandraQuotaModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+        cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE_WITH_QUOTA, cassandraServer.getHost());
     }
 
     @Before


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


[18/27] james-project git commit: JAMES-2500 Remove cassandra-unit dependency

Posted by bt...@apache.org.
JAMES-2500 Remove cassandra-unit dependency


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

Branch: refs/heads/master
Commit: 1b27146cf9d1699d847a36eec6a10ed46d528968
Parents: 61ea0e6
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Jul 25 14:55:59 2018 +0200
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 mailbox/cassandra/pom.xml | 6 ------
 1 file changed, 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1b27146c/mailbox/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index 7281d41..daf0933 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -154,12 +154,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <version>2.1.9.2</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-engine</artifactId>
             <scope>test</scope>


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


[08/27] james-project git commit: upgrade org.testcontainers:testcontainers

Posted by bt...@apache.org.
upgrade org.testcontainers:testcontainers


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

Branch: refs/heads/master
Commit: 03f3486dca5c9c40b12a29b66bab5c7c549a39fd
Parents: 2395e41
Author: duc <dt...@linagora.com>
Authored: Wed Jul 25 15:27:47 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 pom.xml                                                        | 4 ++--
 .../org/apache/james/queue/rabbitmq/RabbitMQClusterTest.java   | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/03f3486d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a9a6f41..c540102 100644
--- a/pom.xml
+++ b/pom.xml
@@ -633,7 +633,7 @@
         <jackson-data.version>2.6.3</jackson-data.version>
         <jetty.version>9.4.7.v20170914</jetty.version>
         <assertj-guava.version>3.1.0</assertj-guava.version>
-        <testcontainers-version>1.7.3</testcontainers-version>
+        <testcontainers.version>1.8.1</testcontainers.version>
         <metrics.version>3.2.6</metrics.version>
         <joda.version>2.9.4</joda.version>
         <assertj.version>3.3.0</assertj.version>
@@ -2453,7 +2453,7 @@
             <dependency>
                 <groupId>org.testcontainers</groupId>
                 <artifactId>testcontainers</artifactId>
-                <version>${testcontainers-version}</version>
+                <version>${testcontainers.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.threeten</groupId>

http://git-wip-us.apache.org/repos/asf/james-project/blob/03f3486d/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQClusterTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQClusterTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQClusterTest.java
index 26cf6e1..66bc342 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQClusterTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQClusterTest.java
@@ -217,10 +217,10 @@ class RabbitMQClusterTest {
         @Test
         void connectingToAClusterWithAFailedRabbit(DockerRabbitMQCluster cluster) throws Exception {
             ConnectionFactory node3ConnectionFactory = cluster.getRabbitMQ3().connectionFactory();
-            cluster.getRabbitMQ3().stop();
-
             try (Connection connection = node3ConnectionFactory.newConnection(cluster.getAddresses());
-                 Channel channel = connection.createChannel()) {
+                    Channel channel = connection.createChannel()) {
+
+                cluster.getRabbitMQ3().stop();
 
                 channel.exchangeDeclare(EXCHANGE_NAME, DIRECT, DURABLE);
                 channel.queueDeclare(QUEUE, DURABLE, !EXCLUSIVE, !AUTO_DELETE, ImmutableMap.of()).getQueue();


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


[07/27] james-project git commit: MAILBOX-342 Use CassandraModule.builder() for Cassandra blob store

Posted by bt...@apache.org.
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


[12/27] james-project git commit: MAILBOX-342 CassandraModule.Builder should handle IF NOT EXISTS policy

Posted by bt...@apache.org.
MAILBOX-342 CassandraModule.Builder should handle IF NOT EXISTS policy


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

Branch: refs/heads/master
Commit: 7ad4f422e044568c20d6aa1fe94ada4c701d68d2
Parents: 45318db
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 25 10:29:38 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:47:39 2018 +0700

----------------------------------------------------------------------
 .../james/backends/cassandra/components/CassandraModule.java  | 7 +++++--
 .../backends/cassandra/init/CassandraZonedDateTimeModule.java | 1 -
 .../cassandra/versions/CassandraSchemaVersionModule.java      | 1 -
 .../backends/cassandra/init/CassandraTypeProviderTest.java    | 4 +---
 .../apache/james/backends/cassandra/utils/PaggingTest.java    | 1 -
 .../eventstore/cassandra/CassandraEventStoreModule.java       | 1 -
 .../james/mailbox/cassandra/modules/CassandraAclModule.java   | 2 --
 .../mailbox/cassandra/modules/CassandraAnnotationModule.java  | 1 -
 .../cassandra/modules/CassandraApplicableFlagsModule.java     | 1 -
 .../mailbox/cassandra/modules/CassandraAttachmentModule.java  | 4 ----
 .../cassandra/modules/CassandraDeletedMessageModule.java      | 1 -
 .../mailbox/cassandra/modules/CassandraFirstUnseenModule.java | 1 -
 .../cassandra/modules/CassandraMailboxCounterModule.java      | 1 -
 .../mailbox/cassandra/modules/CassandraMailboxModule.java     | 4 ----
 .../cassandra/modules/CassandraMailboxRecentsModule.java      | 1 -
 .../mailbox/cassandra/modules/CassandraMessageModule.java     | 5 -----
 .../mailbox/cassandra/modules/CassandraModSeqModule.java      | 1 -
 .../james/mailbox/cassandra/modules/CassandraQuotaModule.java | 4 ----
 .../cassandra/modules/CassandraRegistrationModule.java        | 2 --
 .../cassandra/modules/CassandraSubscriptionModule.java        | 1 -
 .../james/mailbox/cassandra/modules/CassandraUidModule.java   | 1 -
 .../org/apache/james/blob/cassandra/CassandraBlobModule.java  | 2 --
 .../james/domainlist/cassandra/CassandraDomainListModule.java | 1 -
 .../cassandra/CassandraMailRepositoryUrlModule.java           | 1 -
 .../org/apache/james/rrt/cassandra/CassandraRRTModule.java    | 1 -
 .../james/sieve/cassandra/CassandraSieveRepositoryModule.java | 5 -----
 .../james/user/cassandra/CassandraUsersRepositoryModule.java  | 1 -
 .../james/jmap/cassandra/access/CassandraAccessModule.java    | 1 -
 .../vacation/CassandraNotificationRegistryModule.java         | 1 -
 .../jmap/cassandra/vacation/CassandraVacationModule.java      | 1 -
 .../cassandra/CassandraMailRepositoryModule.java              | 4 ----
 31 files changed, 6 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
index a082fc1..63e2f89 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/components/CassandraModule.java
@@ -95,7 +95,9 @@ public interface CassandraModule {
 
         public Builder statement(Function<Create, Statement> createStatement) {
             return originalBuilderReference.addTable(
-                new CassandraTable(tableName, createStatement.apply(SchemaBuilder.createTable(tableName))));
+                new CassandraTable(tableName, createStatement.apply(
+                        SchemaBuilder.createTable(tableName)
+                            .ifNotExists())));
         }
     }
 
@@ -111,7 +113,8 @@ public interface CassandraModule {
         public Builder statement(Function<CreateType, CreateType> createStatement) {
             return originalBuilderReference.addType(
                 new CassandraType(typeName, createStatement.apply(
-                    SchemaBuilder.createType(typeName))));
+                    SchemaBuilder.createType(typeName)
+                        .ifNotExists())));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 fe81f81..63c43c7 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
@@ -31,7 +31,6 @@ public interface CassandraZonedDateTimeModule {
 
     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/7ad4f422/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 74d043e..acffb8a 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
@@ -28,7 +28,6 @@ import org.apache.james.backends.cassandra.versions.table.CassandraSchemaVersion
 public interface CassandraSchemaVersionModule {
     CassandraModule MODULE = CassandraModule.table(CassandraSchemaVersionTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraSchemaVersionTable.KEY, timeuuid())
             .addClusteringColumn(CassandraSchemaVersionTable.VALUE, cint())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 7993251..8de8baa 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
@@ -45,9 +45,7 @@ public class CassandraTypeProviderTest {
     @Before
     public void setUp() {
         module = CassandraModule.type(TYPE_NAME)
-            .statement(statement -> statement
-                .ifNotExists()
-                .addColumn(PROPERTY, text()))
+            .statement(statement -> statement.addColumn(PROPERTY, text()))
             .build();
         cassandra = CassandraCluster.create(module, cassandraServer.getHost());
         cassandra.getTypesProvider();

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 1946928..946c338 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
@@ -57,7 +57,6 @@ public class PaggingTest {
     public static void setUpClass() {
         CassandraModule modules = CassandraModule.table(TABLE_NAME)
             .statement(statement -> statement
-                .ifNotExists()
                 .addPartitionKey(ID, DataType.timeuuid())
                 .addClusteringColumn(CLUSTERING, DataType.bigint()))
             .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
index 6613654..194a0d4 100644
--- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
+++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreModule.java
@@ -28,7 +28,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraEventStoreModule {
     CassandraModule MODULE = CassandraModule.table(CassandraEventStoreTable.EVENTS_TABLE)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraEventStoreTable.AGGREGATE_ID, DataType.varchar())
             .addClusteringColumn(CassandraEventStoreTable.EVENT_ID, DataType.cint())
             .addColumn(CassandraEventStoreTable.EVENT, DataType.text())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
index c6da2a5..acb2205 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
@@ -35,7 +35,6 @@ public interface CassandraAclModule {
         .builder()
         .table(CassandraACLTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraACLTable.ID, timeuuid())
             .addColumn(CassandraACLTable.ACL, text())
             .addColumn(CassandraACLTable.VERSION, bigint())
@@ -45,7 +44,6 @@ public interface CassandraAclModule {
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .table(CassandraUserMailboxRightsTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraUserMailboxRightsTable.USER_NAME, text())
             .addClusteringColumn(CassandraUserMailboxRightsTable.MAILBOX_ID, timeuuid())
             .addColumn(CassandraUserMailboxRightsTable.RIGHTS, text())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
index 032ac3a..88ccdab 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAnnotationModule.java
@@ -31,7 +31,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraAnnotationModule {
     CassandraModule MODULE = CassandraModule.table(CassandraAnnotationTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraAnnotationTable.MAILBOX_ID, timeuuid())
             .addClusteringColumn(CassandraAnnotationTable.KEY, text())
             .addColumn(CassandraAnnotationTable.VALUE, text())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
index 11e5538..9dc2721 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraApplicableFlagsModule.java
@@ -33,7 +33,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraApplicableFlagsModule {
     CassandraModule MODULE = CassandraModule.table(CassandraApplicableFlagTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraApplicableFlagTable.MAILBOX_ID, timeuuid())
             .addColumn(Flag.USER_FLAGS, set(text()))
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
index acee1f1..8a94f1d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAttachmentModule.java
@@ -37,7 +37,6 @@ public interface CassandraAttachmentModule {
 
     CassandraModule MODULE = CassandraModule.table(CassandraAttachmentTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraAttachmentTable.ID, text())
             .addColumn(CassandraAttachmentTable.PAYLOAD, blob())
             .addColumn(CassandraAttachmentTable.TYPE, text())
@@ -46,7 +45,6 @@ public interface CassandraAttachmentModule {
             .comment("Holds attachment for fast attachment retrieval"))
         .table(CassandraAttachmentV2Table.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraAttachmentV2Table.ID_AS_UUID, uuid())
             .addColumn(CassandraAttachmentV2Table.ID, text())
             .addColumn(CassandraAttachmentV2Table.BLOB_ID, text())
@@ -60,7 +58,6 @@ public interface CassandraAttachmentModule {
                 "in `blobs` and `blobparts` tables."))
         .table(CassandraAttachmentMessageIdTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraAttachmentMessageIdTable.ATTACHMENT_ID_AS_UUID, uuid())
             .addColumn(CassandraAttachmentMessageIdTable.ATTACHMENT_ID, text())
             .addClusteringColumn(CassandraAttachmentMessageIdTable.MESSAGE_ID, text())
@@ -71,7 +68,6 @@ public interface CassandraAttachmentModule {
             .comment("Holds ids of messages owning the attachment"))
         .table(CassandraAttachmentOwnerTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraAttachmentOwnerTable.ID, uuid())
             .addClusteringColumn(CassandraAttachmentOwnerTable.OWNER, text())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
index b2689d9..4997417 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraDeletedMessageModule.java
@@ -32,7 +32,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraDeletedMessageModule {
     CassandraModule MODULE = CassandraModule.table(TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(MAILBOX_ID, DataType.timeuuid())
             .addClusteringColumn(UID, DataType.bigint())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
index aec22b2..75c1595 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraFirstUnseenModule.java
@@ -29,7 +29,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraFirstUnseenModule {
     CassandraModule MODULE = CassandraModule.table(CassandraFirstUnseenTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraFirstUnseenTable.MAILBOX_ID, DataType.timeuuid())
             .addClusteringColumn(CassandraFirstUnseenTable.UID, DataType.bigint())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
index fdeb187..46d3798 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
@@ -31,7 +31,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraMailboxCounterModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMailboxCountersTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid())
             .addColumn(CassandraMailboxCountersTable.COUNT, counter())
             .addColumn(CassandraMailboxCountersTable.UNSEEN, counter())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
index c9e79dd..5e4e663 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
@@ -35,12 +35,10 @@ public interface CassandraMailboxModule {
     CassandraModule MODULE = CassandraModule.builder()
         .type(CassandraMailboxTable.MAILBOX_BASE)
         .statement(statement -> statement
-            .ifNotExists()
             .addColumn(CassandraMailboxTable.MailboxBase.NAMESPACE, text())
             .addColumn(CassandraMailboxTable.MailboxBase.USER, text()))
         .table(CassandraMailboxTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMailboxTable.ID, timeuuid())
             .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
             .addColumn(CassandraMailboxTable.NAME, text())
@@ -51,7 +49,6 @@ public interface CassandraMailboxModule {
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .table(CassandraMailboxPathTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
             .addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text())
             .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid())
@@ -62,7 +59,6 @@ public interface CassandraMailboxModule {
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .table(CassandraMailboxPathV2Table.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMailboxPathV2Table.NAMESPACE, text())
             .addPartitionKey(CassandraMailboxPathV2Table.USER, text())
             .addClusteringColumn(CassandraMailboxPathV2Table.MAILBOX_NAME, text())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
index 9193470..b79082c 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxRecentsModule.java
@@ -31,7 +31,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraMailboxRecentsModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMailboxRecentsTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMailboxRecentsTable.MAILBOX_ID, timeuuid())
             .addClusteringColumn(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID, bigint())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
index 856736a..da6dfb0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
@@ -44,7 +44,6 @@ public interface CassandraMessageModule {
     CassandraModule MODULE = CassandraModule.builder()
         .table(CassandraMessageIdTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMessageIds.MAILBOX_ID, timeuuid())
             .addClusteringColumn(CassandraMessageIds.IMAP_UID, bigint())
             .addColumn(CassandraMessageIds.MESSAGE_ID, timeuuid())
@@ -64,7 +63,6 @@ public interface CassandraMessageModule {
                 SchemaBuilder.rows(CACHED_MESSAGE_ID_ROWS)))
         .table(MessageIdToImapUid.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
             .addClusteringColumn(CassandraMessageIds.MAILBOX_ID, timeuuid())
             .addClusteringColumn(CassandraMessageIds.IMAP_UID, bigint())
@@ -84,7 +82,6 @@ public interface CassandraMessageModule {
                 SchemaBuilder.rows(CACHED_IMAP_UID_ROWS)))
         .table(CassandraMessageV2Table.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMessageIds.MESSAGE_ID, timeuuid())
             .addColumn(CassandraMessageV2Table.INTERNAL_DATE, timestamp())
             .addColumn(CassandraMessageV2Table.BODY_START_OCTET, cint())
@@ -100,13 +97,11 @@ public interface CassandraMessageModule {
                 "in `blobs` and `blobparts` tables."))
         .type(CassandraMessageV2Table.PROPERTIES)
         .statement(statement -> statement
-            .ifNotExists()
             .addColumn(CassandraMessageV2Table.Properties.NAMESPACE, text())
             .addColumn(CassandraMessageV2Table.Properties.NAME, text())
             .addColumn(CassandraMessageV2Table.Properties.VALUE, text()))
         .type(CassandraMessageV2Table.ATTACHMENTS)
         .statement(statement -> statement
-            .ifNotExists()
             .addColumn(CassandraMessageV2Table.Attachments.ID, text())
             .addColumn(CassandraMessageV2Table.Attachments.NAME, text())
             .addColumn(CassandraMessageV2Table.Attachments.CID, text())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
index 2e0169e..b8cd359 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraModSeqModule.java
@@ -31,7 +31,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraModSeqModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMessageModseqTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid())
             .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
index 3f50395..59b8bd0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
@@ -36,7 +36,6 @@ public interface CassandraQuotaModule {
     CassandraModule MODULE = CassandraModule.builder()
         .table(CassandraCurrentQuota.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraCurrentQuota.QUOTA_ROOT, text())
             .addColumn(CassandraCurrentQuota.MESSAGE_COUNT, counter())
             .addColumn(CassandraCurrentQuota.STORAGE, counter())
@@ -46,7 +45,6 @@ public interface CassandraQuotaModule {
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .table(CassandraMaxQuota.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMaxQuota.QUOTA_ROOT, text())
             .addColumn(CassandraMaxQuota.MESSAGE_COUNT, bigint())
             .addColumn(CassandraMaxQuota.STORAGE, bigint())
@@ -56,7 +54,6 @@ public interface CassandraQuotaModule {
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .table(CassandraDomainMaxQuota.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraDomainMaxQuota.DOMAIN, text())
             .addColumn(CassandraDomainMaxQuota.MESSAGE_COUNT, bigint())
             .addColumn(CassandraDomainMaxQuota.STORAGE, bigint())
@@ -66,7 +63,6 @@ public interface CassandraQuotaModule {
                 SchemaBuilder.rows(CassandraConstants.DEFAULT_CACHED_ROW_PER_PARTITION)))
         .table(CassandraGlobalMaxQuota.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraGlobalMaxQuota.TYPE, text())
             .addColumn(CassandraGlobalMaxQuota.VALUE, bigint())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
index 97e6714..94997c1 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraRegistrationModule.java
@@ -30,13 +30,11 @@ public interface CassandraRegistrationModule {
     CassandraModule MODULE = CassandraModule.builder()
         .type(CassandraMailboxPathRegisterTable.MAILBOX_PATH)
         .statement(statement -> statement
-            .ifNotExists()
             .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.NAMESPACE, text())
             .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.NAME, text())
             .addColumn(CassandraMailboxPathRegisterTable.MailboxPath.USER, text()))
         .table(CassandraMailboxPathRegisterTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addUDTPartitionKey(CassandraMailboxPathRegisterTable.MAILBOX_PATH, SchemaBuilder.frozen(CassandraMailboxPathRegisterTable.MAILBOX_PATH))
             .addClusteringColumn(CassandraMailboxPathRegisterTable.TOPIC, text())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
index 068da26..e35e373 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
@@ -32,7 +32,6 @@ public interface CassandraSubscriptionModule {
 
     CassandraModule MODULE = CassandraModule.table(CassandraSubscriptionTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraSubscriptionTable.USER, text())
             .addClusteringColumn(CassandraSubscriptionTable.MAILBOX, text())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
index e32d8f0..efa3bce 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidModule.java
@@ -31,7 +31,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 public interface CassandraUidModule {
     CassandraModule MODULE = CassandraModule.table(CassandraMessageUidTable.TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid())
             .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())
             .withOptions()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 9832f11..fb3623a 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
@@ -28,7 +28,6 @@ public interface CassandraBlobModule {
         .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())
@@ -37,7 +36,6 @@ public interface CassandraBlobModule {
                 "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()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 cd38715..8d05add 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
@@ -30,7 +30,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 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.")

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 5f269fd..7523451 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
@@ -29,7 +29,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 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")

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 da8cd62..0970ce1 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
@@ -30,7 +30,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 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())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 ddaccb5..799e972 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
@@ -37,7 +37,6 @@ public interface CassandraSieveRepositoryModule {
     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())
@@ -47,28 +46,24 @@ public interface CassandraSieveRepositoryModule {
             .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())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 1bb176d..473cb02 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
@@ -28,7 +28,6 @@ public class CassandraUsersRepositoryModule {
 
     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())

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 6f706d5..6fe4583 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
@@ -31,7 +31,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 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()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 270fa50..0cb2abb 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
@@ -30,7 +30,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 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()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/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 5fa8567..a55d71a 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
@@ -32,7 +32,6 @@ import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 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))

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ad4f422/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
index 4d4ed3d..a2b7661 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryModule.java
@@ -34,22 +34,18 @@ public interface CassandraMailRepositoryModule {
     CassandraModule MODULE = CassandraModule.builder()
         .type(MailRepositoryTable.HEADER_TYPE)
         .statement(statement -> statement
-            .ifNotExists()
             .addColumn(MailRepositoryTable.HEADER_NAME, text())
             .addColumn(MailRepositoryTable.HEADER_VALUE, text()))
         .table(MailRepositoryTable.COUNT_TABLE)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
             .addColumn(MailRepositoryTable.COUNT, counter()))
         .table(MailRepositoryTable.KEYS_TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
             .addClusteringColumn(MailRepositoryTable.MAIL_KEY, text()))
         .table(MailRepositoryTable.CONTENT_TABLE_NAME)
         .statement(statement -> statement
-            .ifNotExists()
             .addPartitionKey(MailRepositoryTable.REPOSITORY_NAME, text())
             .addPartitionKey(MailRepositoryTable.MAIL_KEY, text())
             .addColumn(MailRepositoryTable.MESSAGE_SIZE, bigint())


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


[02/27] james-project git commit: JAMES-2497 Update org.apache.derby to 10.14.2.0

Posted by bt...@apache.org.
JAMES-2497 Update org.apache.derby to 10.14.2.0


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

Branch: refs/heads/master
Commit: 9d9b0424e17233358d044752492bedb7007ebdef
Parents: e6381b4
Author: Gautier DI FOLCO <gd...@linagora.com>
Authored: Tue Jul 24 15:02:26 2018 +0200
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 26 13:46:51 2018 +0700

----------------------------------------------------------------------
 mpt/pom.xml                                     | 2 +-
 pom.xml                                         | 2 +-
 server/app/src/main/licensing/app/licensing.xml | 2 +-
 server/app/src/main/licensing/war/licensing.xml | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9d9b0424/mpt/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/pom.xml b/mpt/pom.xml
index d6092ee..4adef84 100644
--- a/mpt/pom.xml
+++ b/mpt/pom.xml
@@ -53,7 +53,7 @@
 
     <properties>
         <commons-lang.version>2.6</commons-lang.version>
-        <derby.version>10.9.1.0</derby.version>
+        <derby.version>10.14.2.0</derby.version>
         <guice.version>4.0</guice.version>
         <hadoop.version>1.0.1</hadoop.version>
         <hbase.version>0.94.27</hbase.version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d9b0424/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 75a5853..ee3fe35 100644
--- a/pom.xml
+++ b/pom.xml
@@ -587,7 +587,7 @@
         <apache-mime4j.version>0.8.2</apache-mime4j.version>
         <apache.openjpa.version>3.0.0</apache.openjpa.version>
         <camel.version>2.22.0</camel.version>
-        <derby.version>10.9.1.0</derby.version>
+        <derby.version>10.14.2.0</derby.version>
         <hadoop.version>1.1.1</hadoop.version>
         <hbase.version>0.94.27</hbase.version>
         <javax.inject.version>1</javax.inject.version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d9b0424/server/app/src/main/licensing/app/licensing.xml
----------------------------------------------------------------------
diff --git a/server/app/src/main/licensing/app/licensing.xml b/server/app/src/main/licensing/app/licensing.xml
index 46162b3..c21773d 100644
--- a/server/app/src/main/licensing/app/licensing.xml
+++ b/server/app/src/main/licensing/app/licensing.xml
@@ -1324,7 +1324,7 @@ All rights reserved.
                 <resource name='commons-logging-1.0.3.jar'/>
                 <resource name='commons-logging-api-1.1.jar'/>
                 <resource name='commons-pool-1.5.5.jar'/>
-                <resource name='derby-10.7.1.1.jar'/>
+                <resource name='derby-10.14.2.0.jar'/>
                 <resource name='geronimo-annotation_1.0_spec-1.1.1.jar'/>
                 <resource name='geronimo-annotation_1.1_spec-1.0.1.jar'/>
                 <resource name='geronimo-j2ee-management_1.1_spec-1.0.1.jar'/>

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d9b0424/server/app/src/main/licensing/war/licensing.xml
----------------------------------------------------------------------
diff --git a/server/app/src/main/licensing/war/licensing.xml b/server/app/src/main/licensing/war/licensing.xml
index d26ec63..44d7dbc 100644
--- a/server/app/src/main/licensing/war/licensing.xml
+++ b/server/app/src/main/licensing/war/licensing.xml
@@ -1269,7 +1269,7 @@ All rights reserved.
                 <resource name='commons-logging-1.0.3.jar'/>
                 <resource name='commons-logging-api-1.1.jar'/>
                 <resource name='commons-pool-1.5.5.jar'/>
-                <resource name='derby-10.7.1.1.jar'/>
+                <resource name='derby-10.14.2.0.jar'/>
                 <resource name='geronimo-annotation_1.0_spec-1.1.1.jar'/>
                 <resource name='geronimo-annotation_1.1_spec-1.0.1.jar'/>
                 <resource name='geronimo-j2ee-management_1.1_spec-1.0.1.jar'/>


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