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", "be...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org