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 2015/11/25 11:53:43 UTC

svn commit: r1716351 - in /james/project/trunk: backends-common/cassandra/src/main/resources/META-INF/ mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/ mailb...

Author: btellier
Date: Wed Nov 25 10:53:42 2015
New Revision: 1716351

URL: http://svn.apache.org/viewvc?rev=1716351&view=rev
Log:
JAMES-1635 Modularise mailbox table creation

Added:
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidAndModSeqModule.java
Removed:
    james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxModule.java
Modified:
    james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidAndModSeqProviderTest.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
    james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
    james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java

Modified: james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml (original)
+++ james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml Wed Nov 25 10:53:42 2015
@@ -39,8 +39,32 @@
         <property name ="location" value="classpath:cassandra.properties"/>
     </bean>
 
+    <bean id="cassandra-mailbox-uid-modseq-module"
+          class="org.apache.james.mailbox.cassandra.modules.CassandraUidAndModSeqModule"
+          lazy-init="true"/>
+
+    <bean id="cassandra-subscription-module"
+          class="org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule"
+          lazy-init="true"/>
+
     <bean id="cassandra-mailbox-module"
-          class="org.apache.james.mailbox.cassandra.CassandraMailboxModule"
+          class="org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule"
+          lazy-init="true"/>
+
+    <bean id="cassandra-mailbox-counters-module"
+          class="org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule"
+          lazy-init="true"/>
+
+    <bean id="cassandra-message-module"
+          class="org.apache.james.mailbox.cassandra.modules.CassandraMessageModule"
+          lazy-init="true"/>
+
+    <bean id="cassandra-mailbox-acl-module"
+          class="org.apache.james.mailbox.cassandra.modules.CassandraAclModule"
+          lazy-init="true"/>
+
+    <bean id="cassandra-mailbox-quota-module"
+          class="org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule"
           lazy-init="true"/>
 
     <bean id="cassandra-rrt-module"
@@ -60,7 +84,13 @@
           lazy-init="true">
         <constructor-arg index="0">
             <list>
+                <ref bean="cassandra-mailbox-uid-modseq-module"/>
+                <ref bean="cassandra-subscription-module"/>
                 <ref bean="cassandra-mailbox-module"/>
+                <ref bean="cassandra-message-module"/>
+                <ref bean="cassandra-mailbox-counters-module"/>
+                <ref bean="cassandra-mailbox-acl-module"/>
+                <ref bean="cassandra-mailbox-quota-module"/>
                 <ref bean="cassandra-rrt-module"/>
                 <ref bean="cassandra-usersrepository-module"/>
                 <ref bean="cassandra-domainlist-module"/>

Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java?rev=1716351&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraAclModule.java Wed Nov 25 10:53:42 2015
@@ -0,0 +1,68 @@
+/****************************************************************
+ * 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.modules;
+
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import org.apache.james.backends.cassandra.components.CassandraIndex;
+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.CassandraACLTable;
+
+import java.util.Collections;
+import java.util.List;
+
+import static com.datastax.driver.core.DataType.bigint;
+import static com.datastax.driver.core.DataType.text;
+import static com.datastax.driver.core.DataType.timeuuid;
+
+public class CassandraAclModule implements CassandraModule {
+
+    private final List<CassandraTable> tables;
+    private final List<CassandraIndex> index;
+    private final List<CassandraType> types;
+
+    public CassandraAclModule() {
+        tables = Collections.singletonList(
+            new CassandraTable(CassandraACLTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraACLTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraACLTable.ID, timeuuid())
+                    .addColumn(CassandraACLTable.ACL, text())
+                    .addColumn(CassandraACLTable.VERSION, bigint())));
+        index = Collections.emptyList();
+        types = Collections.emptyList();
+    }
+
+    @Override
+    public List<CassandraTable> moduleTables() {
+        return tables;
+    }
+
+    @Override
+    public List<CassandraIndex> moduleIndex() {
+        return index;
+    }
+
+    @Override
+    public List<CassandraType> moduleTypes() {
+        return types;
+    }
+}

Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java?rev=1716351&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxCounterModule.java Wed Nov 25 10:53:42 2015
@@ -0,0 +1,67 @@
+/****************************************************************
+ * 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.modules;
+
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import org.apache.james.backends.cassandra.components.CassandraIndex;
+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.CassandraMailboxCountersTable;
+
+import java.util.Collections;
+import java.util.List;
+
+import static com.datastax.driver.core.DataType.counter;
+import static com.datastax.driver.core.DataType.timeuuid;
+
+public class CassandraMailboxCounterModule implements CassandraModule {
+
+    private final List<CassandraTable> tables;
+    private final List<CassandraIndex> index;
+    private final List<CassandraType> types;
+
+    public CassandraMailboxCounterModule() {
+        tables = Collections.singletonList(
+            new CassandraTable(CassandraMailboxCountersTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraMailboxCountersTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid())
+                    .addColumn(CassandraMailboxCountersTable.COUNT, counter())
+                    .addColumn(CassandraMailboxCountersTable.UNSEEN, counter())));
+        index = Collections.emptyList();
+        types = Collections.emptyList();
+    }
+
+    @Override
+    public List<CassandraTable> moduleTables() {
+        return tables;
+    }
+
+    @Override
+    public List<CassandraIndex> moduleIndex() {
+        return index;
+    }
+
+    @Override
+    public List<CassandraType> moduleTypes() {
+        return types;
+    }
+}

Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java?rev=1716351&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java Wed Nov 25 10:53:42 2015
@@ -0,0 +1,86 @@
+/****************************************************************
+ * 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.modules;
+
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import org.apache.james.backends.cassandra.components.CassandraIndex;
+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.CassandraMailboxTable;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static com.datastax.driver.core.DataType.bigint;
+import static com.datastax.driver.core.DataType.text;
+import static com.datastax.driver.core.DataType.timeuuid;
+
+public class CassandraMailboxModule implements CassandraModule {
+
+    private final List<CassandraTable> tables;
+    private final List<CassandraIndex> index;
+    private final List<CassandraType> types;
+
+    public CassandraMailboxModule() {
+        tables = Collections.singletonList(
+            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.PATH, text())
+                    .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())));
+        index = Arrays.asList(
+            new CassandraIndex(
+                SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraMailboxTable.TABLE_NAME)
+                    .ifNotExists()
+                    .onTable(CassandraMailboxTable.TABLE_NAME)
+                    .andColumn(CassandraMailboxTable.PATH)),
+            new CassandraIndex(
+                SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraMailboxTable.MAILBOX_BASE)
+                    .ifNotExists()
+                    .onTable(CassandraMailboxTable.TABLE_NAME)
+                    .andColumn(CassandraMailboxTable.MAILBOX_BASE)));
+        types = Collections.singletonList(
+            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<CassandraIndex> moduleIndex() {
+        return index;
+    }
+
+    @Override
+    public List<CassandraType> moduleTypes() {
+        return types;
+    }
+}

Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java?rev=1716351&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMessageModule.java Wed Nov 25 10:53:42 2015
@@ -0,0 +1,111 @@
+/****************************************************************
+ * 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.modules;
+
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import org.apache.james.backends.cassandra.components.CassandraIndex;
+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.CassandraMessageTable;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static com.datastax.driver.core.DataType.bigint;
+import static com.datastax.driver.core.DataType.blob;
+import static com.datastax.driver.core.DataType.cboolean;
+import static com.datastax.driver.core.DataType.cint;
+import static com.datastax.driver.core.DataType.set;
+import static com.datastax.driver.core.DataType.text;
+import static com.datastax.driver.core.DataType.timestamp;
+import static com.datastax.driver.core.DataType.timeuuid;
+
+public class CassandraMessageModule implements CassandraModule {
+
+    private final List<CassandraTable> tables;
+    private final List<CassandraIndex> index;
+    private final List<CassandraType> types;
+
+    public CassandraMessageModule() {
+        tables = Collections.singletonList(
+            new CassandraTable(CassandraMessageTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraMessageTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraMessageTable.MAILBOX_ID, timeuuid())
+                    .addClusteringColumn(CassandraMessageTable.IMAP_UID, bigint())
+                    .addColumn(CassandraMessageTable.INTERNAL_DATE, timestamp())
+                    .addColumn(CassandraMessageTable.BODY_START_OCTET, cint())
+                    .addColumn(CassandraMessageTable.BODY_OCTECTS, cint())
+                    .addColumn(CassandraMessageTable.TEXTUAL_LINE_COUNT, bigint())
+                    .addColumn(CassandraMessageTable.MOD_SEQ, bigint())
+                    .addColumn(CassandraMessageTable.FULL_CONTENT_OCTETS, cint())
+                    .addColumn(CassandraMessageTable.BODY_CONTENT, blob())
+                    .addColumn(CassandraMessageTable.HEADER_CONTENT, blob())
+                    .addColumn(CassandraMessageTable.Flag.ANSWERED, cboolean())
+                    .addColumn(CassandraMessageTable.Flag.DELETED, cboolean())
+                    .addColumn(CassandraMessageTable.Flag.DRAFT, cboolean())
+                    .addColumn(CassandraMessageTable.Flag.FLAGGED, cboolean())
+                    .addColumn(CassandraMessageTable.Flag.RECENT, cboolean())
+                    .addColumn(CassandraMessageTable.Flag.SEEN, cboolean())
+                    .addColumn(CassandraMessageTable.Flag.USER, cboolean())
+                    .addColumn(CassandraMessageTable.Flag.USER_FLAGS, set(text()))
+                    .addUDTListColumn(CassandraMessageTable.PROPERTIES, SchemaBuilder.frozen(CassandraMessageTable.PROPERTIES))));
+        index = Arrays.asList(
+            new CassandraIndex(
+                SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraMessageTable.Flag.RECENT)
+                    .ifNotExists()
+                    .onTable(CassandraMessageTable.TABLE_NAME)
+                    .andColumn(CassandraMessageTable.Flag.RECENT)),
+            new CassandraIndex(
+                SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraMessageTable.Flag.SEEN)
+                    .ifNotExists()
+                    .onTable(CassandraMessageTable.TABLE_NAME)
+                    .andColumn(CassandraMessageTable.Flag.SEEN)),
+            new CassandraIndex(
+                SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraMessageTable.Flag.DELETED)
+                    .ifNotExists()
+                    .onTable(CassandraMessageTable.TABLE_NAME)
+                    .andColumn(CassandraMessageTable.Flag.DELETED)));
+        types = Collections.singletonList(
+            new CassandraType(CassandraMessageTable.PROPERTIES,
+                SchemaBuilder.createType(CassandraMessageTable.PROPERTIES)
+                    .ifNotExists()
+                    .addColumn(CassandraMessageTable.Properties.NAMESPACE, text())
+                    .addColumn(CassandraMessageTable.Properties.NAME, text())
+                    .addColumn(CassandraMessageTable.Properties.VALUE, text())));
+    }
+
+    @Override
+    public List<CassandraTable> moduleTables() {
+        return tables;
+    }
+
+    @Override
+    public List<CassandraIndex> moduleIndex() {
+        return index;
+    }
+
+    @Override
+    public List<CassandraType> moduleTypes() {
+        return types;
+    }
+}

Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java?rev=1716351&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraQuotaModule.java Wed Nov 25 10:53:42 2015
@@ -0,0 +1,82 @@
+/****************************************************************
+ * 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.modules;
+
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import org.apache.james.backends.cassandra.components.CassandraIndex;
+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.CassandraCurrentQuota;
+import org.apache.james.mailbox.cassandra.table.CassandraDefaultMaxQuota;
+import org.apache.james.mailbox.cassandra.table.CassandraMaxQuota;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static com.datastax.driver.core.DataType.bigint;
+import static com.datastax.driver.core.DataType.counter;
+import static com.datastax.driver.core.DataType.text;
+
+public class CassandraQuotaModule implements CassandraModule {
+
+    private final List<CassandraTable> tables;
+    private final List<CassandraIndex> index;
+    private final List<CassandraType> types;
+
+    public CassandraQuotaModule() {
+        tables = Arrays.asList(
+            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())),
+            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())),
+            new CassandraTable(CassandraDefaultMaxQuota.TABLE_NAME,
+                    SchemaBuilder.createTable(CassandraDefaultMaxQuota.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraDefaultMaxQuota.TYPE, text())
+                    .addColumn(CassandraDefaultMaxQuota.VALUE, bigint())));
+        index = Collections.emptyList();
+        types = Collections.emptyList();
+    }
+
+    @Override
+    public List<CassandraTable> moduleTables() {
+        return tables;
+    }
+
+    @Override
+    public List<CassandraIndex> moduleIndex() {
+        return index;
+    }
+
+    @Override
+    public List<CassandraType> moduleTypes() {
+        return types;
+    }
+}

Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java?rev=1716351&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraSubscriptionModule.java Wed Nov 25 10:53:42 2015
@@ -0,0 +1,70 @@
+/****************************************************************
+ * 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.modules;
+
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import org.apache.james.backends.cassandra.components.CassandraIndex;
+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 java.util.Collections;
+import java.util.List;
+
+import static com.datastax.driver.core.DataType.text;
+
+public class CassandraSubscriptionModule implements CassandraModule {
+
+    private final List<CassandraTable> tables;
+    private final List<CassandraIndex> index;
+    private final List<CassandraType> types;
+
+    public CassandraSubscriptionModule() {
+        tables = Collections.singletonList(
+            new CassandraTable(CassandraSubscriptionTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraSubscriptionTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraSubscriptionTable.MAILBOX, text())
+                    .addClusteringColumn(CassandraSubscriptionTable.USER, text())));
+        index = Collections.singletonList(
+            new CassandraIndex(
+                SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraSubscriptionTable.USER)
+                    .ifNotExists()
+                    .onTable(CassandraSubscriptionTable.TABLE_NAME)
+                    .andColumn(CassandraSubscriptionTable.USER)));
+        types = Collections.emptyList();
+    }
+
+    @Override
+    public List<CassandraTable> moduleTables() {
+        return tables;
+    }
+
+    @Override
+    public List<CassandraIndex> moduleIndex() {
+        return index;
+    }
+
+    @Override
+    public List<CassandraType> moduleTypes() {
+        return types;
+    }
+}

Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidAndModSeqModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidAndModSeqModule.java?rev=1716351&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidAndModSeqModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraUidAndModSeqModule.java Wed Nov 25 10:53:42 2015
@@ -0,0 +1,73 @@
+/****************************************************************
+ * 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.modules;
+
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import org.apache.james.backends.cassandra.components.CassandraIndex;
+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.CassandraMessageModseqTable;
+import org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static com.datastax.driver.core.DataType.bigint;
+import static com.datastax.driver.core.DataType.timeuuid;
+
+public class CassandraUidAndModSeqModule implements CassandraModule {
+
+    private final List<CassandraTable> tables;
+    private final List<CassandraIndex> index;
+    private final List<CassandraType> types;
+
+    public CassandraUidAndModSeqModule() {
+        tables = Arrays.asList(
+            new CassandraTable(CassandraMessageUidTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraMessageUidTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid())
+                    .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())),
+            new CassandraTable(CassandraMessageModseqTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraMessageModseqTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid())
+                    .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint())));
+        index = Collections.emptyList();
+        types = Collections.emptyList();
+    }
+
+    @Override
+    public List<CassandraTable> moduleTables() {
+        return tables;
+    }
+
+    @Override
+    public List<CassandraIndex> moduleIndex() {
+        return index;
+    }
+
+    @Override
+    public List<CassandraType> moduleTypes() {
+        return types;
+    }
+}

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java Wed Nov 25 10:53:42 2015
@@ -19,10 +19,17 @@
 package org.apache.james.mailbox.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.AbstractMailboxManagerTest;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidAndModSeqModule;
 import org.apache.james.mailbox.exception.BadCredentialsException;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
@@ -36,7 +43,13 @@ import org.slf4j.LoggerFactory;
  */
 public class CassandraMailboxManagerTest extends AbstractMailboxManagerTest {
 
-    private static final CassandraCluster CASSANDRA = CassandraCluster.create(new CassandraMailboxModule());
+    private static final CassandraCluster CASSANDRA = CassandraCluster.create(new CassandraModuleComposite(
+        new CassandraAclModule(),
+        new CassandraMailboxModule(),
+        new CassandraMessageModule(),
+        new CassandraMailboxCounterModule(),
+        new CassandraUidAndModSeqModule(),
+        new CassandraSubscriptionModule()));
 
     /**
      * Setup the mailboxManager.

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java Wed Nov 25 10:53:42 2015
@@ -26,6 +26,7 @@ import org.apache.james.backends.cassand
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidAndModSeqModule;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
@@ -41,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * 
  */
 public class CassandraMailboxSessionMapperFactoryTest {
-    private static final CassandraCluster CLUSTER = CassandraCluster.create(new CassandraMailboxModule());
+    private static final CassandraCluster CLUSTER = CassandraCluster.create(new CassandraUidAndModSeqModule());
     private final static Logger LOG = LoggerFactory.getLogger(CassandraMailboxSessionMapperFactoryTest.class);
 
     @Before

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java Wed Nov 25 10:53:42 2015
@@ -24,13 +24,14 @@ import org.apache.james.mailbox.Abstract
 import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 
 /**
  * Test Cassandra subscription against some general purpose written code.
  */
 public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManagerTest {
 
-    private static final CassandraCluster cassandra = CassandraCluster.create(new CassandraMailboxModule());
+    private static final CassandraCluster cassandra = CassandraCluster.create(new CassandraSubscriptionModule());
     
     @Override
     public SubscriptionManager createSubscriptionManager() {

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java Wed Nov 25 10:53:42 2015
@@ -32,7 +32,7 @@ import java.util.concurrent.TimeoutExcep
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxACL;
@@ -56,7 +56,7 @@ public class CassandraACLMapperTest {
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMailboxModule());
+        cassandra = CassandraCluster.create(new CassandraAclModule());
         cassandra.ensureAllTables();
         uidValidity = 10;
         mailbox = new SimpleMailbox<>(new MailboxPath("#private", "benwa@linagora.com", "INBOX"), uidValidity);

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java Wed Nov 25 10:53:42 2015
@@ -1,9 +1,14 @@
 package org.apache.james.mailbox.cassandra.mail;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidAndModSeqModule;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
@@ -12,7 +17,12 @@ import org.apache.james.mailbox.store.ma
 
 public class CassandraMapperProvider implements MapperProvider<CassandraId> {
 
-    private static final CassandraCluster cassandra = CassandraCluster.create(new CassandraMailboxModule());
+    private static final CassandraCluster cassandra = CassandraCluster.create(new CassandraModuleComposite(
+        new CassandraAclModule(),
+        new CassandraMailboxModule(),
+        new CassandraMessageModule(),
+        new CassandraMailboxCounterModule(),
+        new CassandraUidAndModSeqModule()));
 
     @Override
     public MailboxMapper<CassandraId> createMailboxMapper() throws MailboxException {

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidAndModSeqProviderTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidAndModSeqProviderTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidAndModSeqProviderTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidAndModSeqProviderTest.java Wed Nov 25 10:53:42 2015
@@ -28,8 +28,11 @@ import java.util.function.LongConsumer;
 import java.util.stream.LongStream;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidAndModSeqModule;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
@@ -45,7 +48,10 @@ import com.google.common.base.Throwables
  */
 public class CassandraUidAndModSeqProviderTest {
 
-    private static final CassandraCluster CASSANDRA = CassandraCluster.create(new CassandraMailboxModule());
+    private static final CassandraCluster CASSANDRA = CassandraCluster.create(new CassandraModuleComposite(
+        new CassandraAclModule(),
+        new CassandraMailboxModule(),
+        new CassandraUidAndModSeqModule()));
     private static final int NAMESPACES = 5;
     private static final int USERS = 5;
     private static final int MAILBOX_NO = 5;

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java Wed Nov 25 10:53:42 2015
@@ -22,7 +22,7 @@ package org.apache.james.mailbox.cassand
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.store.quota.QuotaRootImpl;
 import org.junit.After;
@@ -38,7 +38,7 @@ public class CassandraCurrentQuotaManage
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMailboxModule());
+        cassandra = CassandraCluster.create(new CassandraQuotaModule());
         cassandra.ensureAllTables();
         currentQuotaManager = new CassandraCurrentQuotaManager(cassandra.getConf());
     }

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java Wed Nov 25 10:53:42 2015
@@ -20,7 +20,7 @@
 package org.apache.james.mailbox.cassandra.quota;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.mailbox.store.quota.GenericMaxQuotaManagerTest;
 import org.junit.After;
@@ -31,7 +31,7 @@ public class CassandraPerUserMaxQuotaMan
 
     @Override
     protected MaxQuotaManager provideMaxQuotaManager() {
-        cassandra = CassandraCluster.create(new CassandraMailboxModule());
+        cassandra = CassandraCluster.create(new CassandraQuotaModule());
         cassandra.ensureAllTables();
         return new CassandraPerUserMaxQuotaManager(cassandra.getConf());
     }

Modified: james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java (original)
+++ james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java Wed Nov 25 10:53:42 2015
@@ -29,7 +29,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.store.user.model.Subscription;
 import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
 import org.junit.Before;
@@ -46,7 +46,7 @@ import com.datastax.driver.core.Session;
 public class CassandraSubscriptionMapperTest {
 
     private static final Logger LOG = LoggerFactory.getLogger(CassandraSubscriptionMapperTest.class);
-    private static final CassandraCluster CLUSTER = CassandraCluster.create(new CassandraMailboxModule());
+    private static final CassandraCluster CLUSTER = CassandraCluster.create(new CassandraSubscriptionModule());
     private static Session session;
     private static CassandraSubscriptionMapper mapper;
     private static Map<String, List<SimpleSubscription>> subscriptionList;

Modified: james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java (original)
+++ james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java Wed Nov 25 10:53:42 2015
@@ -20,16 +20,23 @@ package org.apache.james.mpt.imapmailbox
 
 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.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.imap.encode.main.DefaultImapEncoderFactory;
 import org.apache.james.imap.main.DefaultImapDecoderFactory;
 import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
-import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidAndModSeqModule;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
 import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -51,11 +58,17 @@ public class CassandraHostSystem extends
     
     private final CassandraMailboxManager mailboxManager;
     private final MockAuthenticator userManager;
-    private final CassandraModule mailboxModule;
     private CassandraCluster cassandraClusterSingleton;
 
     public CassandraHostSystem() throws Exception {
-        mailboxModule = new CassandraMailboxModule();
+        CassandraModule mailboxModule = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraUidAndModSeqModule(),
+            new CassandraSubscriptionModule(),
+            new CassandraQuotaModule());
         cassandraClusterSingleton = CassandraCluster.create(mailboxModule);
         userManager = new MockAuthenticator();
         com.datastax.driver.core.Session session = cassandraClusterSingleton.getConf();

Modified: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java?rev=1716351&r1=1716350&r2=1716351&view=diff
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java (original)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java Wed Nov 25 10:53:42 2015
@@ -65,7 +65,12 @@ public class CassandraMailboxModule exte
         bind(new TypeLiteral<ModSeqProvider<CassandraId>>(){}).to(new TypeLiteral<CassandraModSeqProvider>(){});
         bind(new TypeLiteral<UidProvider<CassandraId>>(){}).to(new TypeLiteral<CassandraUidProvider>(){});
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
-        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.CassandraMailboxModule.class);
+        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraAclModule.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.CassandraMessageModule.class);
+        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule.class);
+        cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraUidAndModSeqModule.class);
     }
     
     @Provides @Named(MAILBOXMANAGER_NAME) @Singleton



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