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 ma...@apache.org on 2015/10/29 15:17:52 UTC
svn commit: r1711274 - in /james/project/trunk: mailbox/ mailbox/cassandra/
mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/
mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/
mailbox/cassandra/src/main/java/org...
Author: matthieu
Date: Thu Oct 29 14:17:52 2015
New Revision: 1711274
URL: http://svn.apache.org/viewvc?rev=1711274&view=rev
Log:
JAMES-1588 Use cassandra backend
Added:
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxModule.java
Removed:
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraConstants.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraTableManager.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraTypesProvider.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ClusterFactory.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ClusterWithKeyspaceCreatedFactory.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/SessionFactory.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/utils/FunctionRunnerWithRetry.java
james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraClusterSingleton.java
james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTypeProviderTest.java
james/project/trunk/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/FunctionRunnerWithRetryTest.java
Modified:
james/project/trunk/mailbox/cassandra/pom.xml
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
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/mailbox/hbase/pom.xml
james/project/trunk/mailbox/pom.xml
james/project/trunk/mpt/impl/imap-mailbox/cassandra/pom.xml
james/project/trunk/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
james/project/trunk/mpt/pom.xml
james/project/trunk/server/app/pom.xml
james/project/trunk/server/pom.xml
Modified: james/project/trunk/mailbox/cassandra/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/pom.xml?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/pom.xml (original)
+++ james/project/trunk/mailbox/cassandra/pom.xml Thu Oct 29 14:17:52 2015
@@ -176,6 +176,10 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>apache-james-mailbox-api</artifactId>
</dependency>
<dependency>
@@ -195,6 +199,12 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <scope>test</scope>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>apache-james-mailbox-store</artifactId>
<scope>test</scope>
<type>test-jar</type>
Added: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxModule.java?rev=1711274&view=auto
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxModule.java (added)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxModule.java Thu Oct 29 14:17:52 2015
@@ -0,0 +1,191 @@
+/****************************************************************
+ * 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;
+
+import java.util.Arrays;
+import java.util.List;
+
+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 org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota;
+import org.apache.james.mailbox.cassandra.table.CassandraDefaultMaxQuota;
+import org.apache.james.mailbox.cassandra.table.CassandraMailboxCountersTable;
+import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
+import org.apache.james.mailbox.cassandra.table.CassandraMaxQuota;
+import org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable;
+import org.apache.james.mailbox.cassandra.table.CassandraMessageTable;
+import org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable;
+import org.apache.james.mailbox.cassandra.table.CassandraSubscriptionTable;
+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.counter;
+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 CassandraMailboxModule implements CassandraModule {
+
+ private final List<CassandraTable> tables;
+ private final List<CassandraIndex> index;
+ private final List<CassandraType> types;
+
+ public CassandraMailboxModule() {
+ tables = Arrays.asList(
+ 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())),
+ new CassandraTable(CassandraMailboxCountersTable.TABLE_NAME,
+ SchemaBuilder.createTable(CassandraMailboxCountersTable.TABLE_NAME)
+ .ifNotExists()
+ .addPartitionKey(CassandraMailboxCountersTable.MAILBOX_ID, timeuuid())
+ .addColumn(CassandraMailboxCountersTable.COUNT, counter())
+ .addColumn(CassandraMailboxCountersTable.UNSEEN, counter())),
+ new CassandraTable(CassandraMessageUidTable.TABLE_NAME,
+ SchemaBuilder.createTable(CassandraMessageUidTable.TABLE_NAME)
+ .ifNotExists()
+ .addPartitionKey(CassandraMessageUidTable.MAILBOX_ID, timeuuid())
+ .addColumn(CassandraMessageUidTable.NEXT_UID, bigint())),
+ 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))),
+ new CassandraTable(CassandraSubscriptionTable.TABLE_NAME,
+ SchemaBuilder.createTable(CassandraSubscriptionTable.TABLE_NAME)
+ .ifNotExists()
+ .addPartitionKey(CassandraSubscriptionTable.MAILBOX, text())
+ .addClusteringColumn(CassandraSubscriptionTable.USER, text())),
+ new CassandraTable(CassandraACLTable.TABLE_NAME,
+ SchemaBuilder.createTable(CassandraACLTable.TABLE_NAME)
+ .ifNotExists()
+ .addPartitionKey(CassandraACLTable.ID, timeuuid())
+ .addColumn(CassandraACLTable.ACL, text())
+ .addColumn(CassandraACLTable.VERSION, bigint())),
+ new CassandraTable(CassandraMessageModseqTable.TABLE_NAME,
+ SchemaBuilder.createTable(CassandraMessageModseqTable.TABLE_NAME)
+ .ifNotExists()
+ .addPartitionKey(CassandraMessageModseqTable.MAILBOX_ID, timeuuid())
+ .addColumn(CassandraMessageModseqTable.NEXT_MODSEQ, bigint())),
+ 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 = 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)),
+ new CassandraIndex(
+ SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraSubscriptionTable.USER)
+ .ifNotExists()
+ .onTable(CassandraSubscriptionTable.TABLE_NAME)
+ .andColumn(CassandraSubscriptionTable.USER)),
+ 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 = Arrays.asList(
+ new CassandraType(CassandraMailboxTable.MAILBOX_BASE,
+ SchemaBuilder.createType(CassandraMailboxTable.MAILBOX_BASE)
+ .ifNotExists()
+ .addColumn(CassandraMailboxTable.MailboxBase.NAMESPACE, text())
+ .addColumn(CassandraMailboxTable.MailboxBase.USER, text())),
+ 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;
+ }
+}
Modified: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java (original)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java Thu Oct 29 14:17:52 2015
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.cassandra;
+import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.mail.CassandraMailboxMapper;
import org.apache.james.mailbox.cassandra.mail.CassandraMessageMapper;
Modified: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java (original)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java Thu Oct 29 14:17:52 2015
@@ -28,9 +28,10 @@ import static com.datastax.driver.core.q
import java.io.IOException;
import java.util.Optional;
-import org.apache.james.mailbox.cassandra.CassandraConstants;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
+import org.apache.james.backends.cassandra.utils.LightweightTransactionException;
import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.mail.utils.FunctionRunnerWithRetry;
+import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
import org.apache.james.mailbox.cassandra.mail.utils.SimpleMailboxACLJsonConverter;
import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
@@ -86,16 +87,20 @@ public class CassandraACLMapper {
}
public void updateACL(final MailboxACL.MailboxACLCommand command) throws MailboxException {
- new FunctionRunnerWithRetry(maxRetry).execute(
- () -> {
- codeInjector.inject();
- ResultSet resultSet = getAclWithVersion()
+ try {
+ new FunctionRunnerWithRetry(maxRetry).execute(
+ () -> {
+ codeInjector.inject();
+ ResultSet resultSet = getAclWithVersion()
.map((x) -> x.apply(command))
.map(this::updateStoredACL)
.orElseGet(() -> insertACL(applyCommandOnEmptyACL(command)));
- return resultSet.one().getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED);
- }
- );
+ return resultSet.one().getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED);
+ }
+ );
+ } catch (LightweightTransactionException e) {
+ throw new MailboxException("Exception during lightweight transaction", e);
+ }
}
private MailboxACL applyCommandOnEmptyACL(MailboxACL.MailboxACLCommand command) {
Modified: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java (original)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java Thu Oct 29 14:17:52 2015
@@ -36,11 +36,11 @@ import java.util.StringTokenizer;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
+import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.CassandraTypesProvider;
-import org.apache.james.mailbox.cassandra.CassandraTypesProvider.TYPE;
+import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable.MailboxBase;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -118,9 +118,9 @@ public class CassandraMailboxMapper impl
@Override
public List<Mailbox<CassandraId>> list() throws MailboxException {
- return convertToStream(
- session.execute(select(FIELDS)
- .from(TABLE_NAME)))
+ return CassandraUtils.convertToStream(
+ session.execute(
+ select(FIELDS).from(TABLE_NAME)))
.map(this::mailbox)
.collect(Collectors.toList());
}
@@ -172,7 +172,7 @@ public class CassandraMailboxMapper impl
.value(ID, mailbox.getMailboxId().asUuid())
.value(NAME, mailbox.getName())
.value(UIDVALIDITY, mailbox.getUidValidity())
- .value(MAILBOX_BASE, typesProvider.getDefinedUserType(TYPE.MailboxBase)
+ .value(MAILBOX_BASE, typesProvider.getDefinedUserType(CassandraMailboxTable.MAILBOX_BASE)
.newValue()
.setString(MailboxBase.NAMESPACE, mailbox.getNamespace())
.setString(MailboxBase.USER, mailbox.getUser()))
@@ -184,18 +184,11 @@ public class CassandraMailboxMapper impl
return new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName());
}
- private Stream<Row> convertToStream(ResultSet resultSet) {
- return StreamSupport.stream(resultSet.spliterator(), true);
- }
-
private Stream<Row> getMailboxFilteredByNamespaceAndUserStream (String namespace, String user) {
- return convertToStream(session.execute(
+ return CassandraUtils.convertToStream(session.execute(
select(FIELDS)
.from(TABLE_NAME)
- .where(eq(MAILBOX_BASE, typesProvider.getDefinedUserType(TYPE.MailboxBase)
- .newValue()
- .setString(MailboxBase.NAMESPACE, namespace)
- .setString(MailboxBase.USER, user)))));
+ .where(eq(MAILBOX_BASE, typesProvider.getDefinedUserType(CassandraMailboxTable.MAILBOX_BASE).newValue().setString(MailboxBase.NAMESPACE, namespace).setString(MailboxBase.USER, user)))));
}
}
Modified: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java (original)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java Thu Oct 29 14:17:52 2015
@@ -62,21 +62,19 @@ import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
import javax.mail.Flags;
import javax.mail.Flags.Flag;
import javax.mail.util.SharedByteArrayInputStream;
import com.google.common.base.Throwables;
+import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.cassandra.CassandraConstants;
import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.CassandraTypesProvider;
-import org.apache.james.mailbox.cassandra.CassandraTypesProvider.TYPE;
-import org.apache.james.mailbox.cassandra.mail.utils.FunctionRunnerWithRetry;
+import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
import org.apache.james.mailbox.cassandra.mail.utils.MessageDeletedDuringFlagsUpdateException;
import org.apache.james.mailbox.cassandra.table.CassandraMailboxCountersTable;
import org.apache.james.mailbox.cassandra.table.CassandraMessageTable;
@@ -166,7 +164,7 @@ public class CassandraMessageMapper impl
@Override
public Iterator<Message<CassandraId>> findInMailbox(Mailbox<CassandraId> mailbox, MessageRange set, FetchType ftype, int max) throws MailboxException {
- return convertToStream(session.execute(buildQuery(mailbox, set)))
+ return CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set)))
.map(this::message)
.sorted(Comparator.comparingLong(Message::getUid))
.iterator();
@@ -174,7 +172,7 @@ public class CassandraMessageMapper impl
@Override
public List<Long> findRecentMessageUidsInMailbox(Mailbox<CassandraId> mailbox) throws MailboxException {
- return convertToStream(session.execute(selectAll(mailbox).and((eq(RECENT, true)))))
+ return CassandraUtils.convertToStream(session.execute(selectAll(mailbox).and((eq(RECENT, true)))))
.map((row) -> row.getLong(IMAP_UID))
.sorted()
.collect(Collectors.toList());
@@ -182,7 +180,7 @@ public class CassandraMessageMapper impl
@Override
public Long findFirstUnseenMessageUid(Mailbox<CassandraId> mailbox) throws MailboxException {
- return convertToStream(session.execute(selectAll(mailbox).and((eq(SEEN, false)))))
+ return CassandraUtils.convertToStream(session.execute(selectAll(mailbox).and((eq(SEEN, false)))))
.map((row) -> row.getLong(IMAP_UID))
.sorted()
.findFirst()
@@ -191,7 +189,7 @@ public class CassandraMessageMapper impl
@Override
public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(final Mailbox<CassandraId> mailbox, MessageRange set) throws MailboxException {
- return convertToStream(session.execute(buildQuery(mailbox, set).and(eq(DELETED, true))))
+ return CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set).and(eq(DELETED, true))))
.map(this::message)
.peek((message) -> delete(mailbox, message))
.collect(Collectors.toMap(Message::getUid, SimpleMessageMetaData::new));
@@ -226,7 +224,7 @@ public class CassandraMessageMapper impl
@Override
public Iterator<UpdatedFlags> updateFlags(Mailbox<CassandraId> mailbox, FlagsUpdateCalculator flagUpdateCalculator, MessageRange set) throws MailboxException {
- return convertToStream(session.execute(buildQuery(mailbox, set)))
+ return CassandraUtils.convertToStream(session.execute(buildQuery(mailbox, set)))
.map((row) -> updateFlagsOnMessage(mailbox, flagUpdateCalculator, row))
.filter(Optional::isPresent)
.map(Optional::get)
@@ -344,7 +342,7 @@ public class CassandraMessageMapper impl
.value(BODY_CONTENT, bindMarker())
.value(HEADER_CONTENT, bindMarker())
.value(PROPERTIES, message.getProperties().stream()
- .map(x -> typesProvider.getDefinedUserType(TYPE.Property)
+ .map(x -> typesProvider.getDefinedUserType(PROPERTIES)
.newValue()
.setString(Properties.NAMESPACE, x.getNamespace())
.setString(Properties.NAME, x.getLocalName())
@@ -406,16 +404,13 @@ public class CassandraMessageMapper impl
} catch (MessageDeletedDuringFlagsUpdateException e) {
mailboxSession.getLog().warn(e.getMessage());
return Optional.empty();
- } catch (MailboxException e) {
+ } catch (Exception e) {
throw Throwables.propagate(e);
}
}
private Optional<UpdatedFlags> retryMessageFlagsUpdate(Mailbox<CassandraId> mailbox, long uid, FlagsUpdateCalculator flagUpdateCalculator) {
- return tryMessageFlagsUpdate(flagUpdateCalculator,
- mailbox,
- message(Optional.ofNullable(session.execute(selectMessage(mailbox, uid)).one())
- .orElseThrow(() -> new MessageDeletedDuringFlagsUpdateException(mailbox.getMailboxId(), uid))));
+ return tryMessageFlagsUpdate(flagUpdateCalculator, mailbox, message(Optional.ofNullable(session.execute(selectMessage(mailbox, uid)).one()).orElseThrow(() -> new MessageDeletedDuringFlagsUpdateException(mailbox.getMailboxId(), uid))));
}
private boolean conditionalSave(Message<CassandraId> message, long oldModSeq) {
@@ -483,8 +478,4 @@ public class CassandraMessageMapper impl
.and(eq(IMAP_UID, uid));
}
- private Stream<Row> convertToStream(ResultSet resultSet) {
- return StreamSupport.stream(resultSet.spliterator(), true);
- }
-
}
Modified: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java (original)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java Thu Oct 29 14:17:52 2015
@@ -24,16 +24,17 @@ import static com.datastax.driver.core.q
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
import static com.datastax.driver.core.querybuilder.QueryBuilder.set;
import static com.datastax.driver.core.querybuilder.QueryBuilder.update;
-import static org.apache.james.mailbox.cassandra.CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED;
import static org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable.MAILBOX_ID;
import static org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable.NEXT_MODSEQ;
import static org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable.TABLE_NAME;
import java.util.Optional;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
+import org.apache.james.backends.cassandra.utils.LightweightTransactionException;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.mail.utils.FunctionRunnerWithRetry;
+import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.store.mail.ModSeqProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -71,17 +72,21 @@ public class CassandraModSeqProvider imp
return optional.get().getValue();
}
}
-
- return runner.executeAndRetrieveObject(
- () -> {
- try {
- return tryUpdateModSeq(mailbox, findHighestModSeq(mailboxSession, mailbox))
- .map(ModSeq::getValue);
- } catch (Exception exception) {
- LOG.error("Can not retrieve next ModSeq", exception);
- throw Throwables.propagate(exception);
- }
- });
+
+ try {
+ return runner.executeAndRetrieveObject(
+ () -> {
+ try {
+ return tryUpdateModSeq(mailbox, findHighestModSeq(mailboxSession, mailbox))
+ .map(ModSeq::getValue);
+ } catch (Exception exception) {
+ LOG.error("Can not retrieve next ModSeq", exception);
+ throw Throwables.propagate(exception);
+ }
+ });
+ } catch (LightweightTransactionException e) {
+ throw new MailboxException("Error during ModSeq update", e);
+ }
}
@Override
@@ -120,7 +125,7 @@ public class CassandraModSeqProvider imp
}
private Optional<ModSeq> transactionalStatementToOptionalModSeq(ModSeq modSeq, BuiltStatement statement) {
- if(session.execute(statement).one().getBool(LIGHTWEIGHT_TRANSACTION_APPLIED)) {
+ if(session.execute(statement).one().getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED)) {
return Optional.of(modSeq);
}
return Optional.empty();
Modified: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java (original)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java Thu Oct 29 14:17:52 2015
@@ -26,14 +26,15 @@ import static com.datastax.driver.core.q
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
import static com.datastax.driver.core.querybuilder.QueryBuilder.set;
import static com.datastax.driver.core.querybuilder.QueryBuilder.update;
-import static org.apache.james.mailbox.cassandra.CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED;
+import org.apache.james.backends.cassandra.utils.CassandraConstants;
import static org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable.NEXT_UID;
import com.datastax.driver.core.querybuilder.BuiltStatement;
import com.google.common.base.Throwables;
+import org.apache.james.backends.cassandra.utils.LightweightTransactionException;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.mail.utils.FunctionRunnerWithRetry;
+import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
import org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.store.mail.UidProvider;
@@ -70,16 +71,20 @@ public class CassandraUidProvider implem
}
}
- return runner.executeAndRetrieveObject(
- () -> {
- try {
- return tryUpdateUid(mailbox, findHighestUid(mailbox))
- .map(Uid::getValue);
- } catch (Exception exception) {
- LOG.error("Can not retrieve next Uid", exception);
- throw Throwables.propagate(exception);
- }
- });
+ try {
+ return runner.executeAndRetrieveObject(
+ () -> {
+ try {
+ return tryUpdateUid(mailbox, findHighestUid(mailbox))
+ .map(Uid::getValue);
+ } catch (Exception exception) {
+ LOG.error("Can not retrieve next Uid", exception);
+ throw Throwables.propagate(exception);
+ }
+ });
+ } catch (LightweightTransactionException e) {
+ throw new MailboxException("Error during Uid update", e);
+ }
}
@Override
@@ -118,7 +123,7 @@ public class CassandraUidProvider implem
}
private Optional<Uid> transactionalStatementToOptionalUid(Uid uid, BuiltStatement statement) {
- if(session.execute(statement).one().getBool(LIGHTWEIGHT_TRANSACTION_APPLIED)) {
+ if(session.execute(statement).one().getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED)) {
return Optional.of(uid);
}
return Optional.empty();
Modified: james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java (original)
+++ james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java Thu Oct 29 14:17:52 2015
@@ -29,16 +29,14 @@ import static org.apache.james.mailbox.c
import java.util.List;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.store.transaction.NonTransactionalMapper;
import org.apache.james.mailbox.store.user.SubscriptionMapper;
import org.apache.james.mailbox.store.user.model.Subscription;
import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.querybuilder.QueryBuilder;
@@ -68,7 +66,7 @@ public class CassandraSubscriptionMapper
@Override
public List<Subscription> findSubscriptionsForUser(String user) {
- return convertToStream(
+ return CassandraUtils.convertToStream(
session.execute(select(MAILBOX)
.from(TABLE_NAME)
.where(eq(USER, user))))
@@ -84,7 +82,7 @@ public class CassandraSubscriptionMapper
}
public List<SimpleSubscription> list() {
- return convertToStream(
+ return CassandraUtils.convertToStream(
session.execute(select(FIELDS)
.from(TABLE_NAME)))
.map((row) -> new SimpleSubscription(row.getString(USER), row.getString(MAILBOX)))
@@ -96,8 +94,4 @@ public class CassandraSubscriptionMapper
// nothing to do
}
- private Stream<Row> convertToStream(ResultSet resultSet) {
- return StreamSupport.stream(resultSet.spliterator(), true);
- }
-
}
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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.james.mailbox.cassandra;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
import org.apache.james.mailbox.AbstractMailboxManagerTest;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
@@ -35,7 +36,7 @@ import org.slf4j.LoggerFactory;
*/
public class CassandraMailboxManagerTest extends AbstractMailboxManagerTest {
- private static final CassandraClusterSingleton CASSANDRA = CassandraClusterSingleton.build();
+ private static final CassandraClusterSingleton CASSANDRA = CassandraClusterSingleton.create(new CassandraMailboxModule());
/**
* 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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
@@ -40,7 +41,7 @@ import org.slf4j.LoggerFactory;
*
*/
public class CassandraMailboxSessionMapperFactoryTest {
- private static final CassandraClusterSingleton CLUSTER = CassandraClusterSingleton.build();
+ private static final CassandraClusterSingleton CLUSTER = CassandraClusterSingleton.create(new CassandraMailboxModule());
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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.cassandra;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
import org.apache.james.mailbox.AbstractSubscriptionManagerTest;
import org.apache.james.mailbox.SubscriptionManager;
import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
@@ -29,7 +30,7 @@ import org.apache.james.mailbox.cassandr
*/
public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManagerTest {
- private static final CassandraClusterSingleton cassandra = CassandraClusterSingleton.build();
+ private static final CassandraClusterSingleton cassandra = CassandraClusterSingleton.create(new CassandraMailboxModule());
@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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -30,8 +30,9 @@ import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
import org.apache.james.mailbox.cassandra.CassandraId;
+import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxACL;
@@ -55,7 +56,7 @@ public class CassandraACLMapperTest {
@Before
public void setUp() {
- cassandra = CassandraClusterSingleton.build();
+ cassandra = CassandraClusterSingleton.create(new CassandraMailboxModule());
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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -1,7 +1,8 @@
package org.apache.james.mailbox.cassandra.mail;
-import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
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.exception.MailboxException;
import org.apache.james.mailbox.mock.MockMailboxSession;
@@ -11,7 +12,7 @@ import org.apache.james.mailbox.store.ma
public class CassandraMapperProvider implements MapperProvider<CassandraId> {
- private static final CassandraClusterSingleton cassandra = CassandraClusterSingleton.build();
+ private static final CassandraClusterSingleton cassandra = CassandraClusterSingleton.create(new CassandraMailboxModule());
@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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -27,8 +27,9 @@ import java.util.concurrent.atomic.Atomi
import java.util.function.LongConsumer;
import java.util.stream.LongStream;
-import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
import org.apache.james.mailbox.cassandra.CassandraId;
+import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
@@ -44,7 +45,7 @@ import com.google.common.base.Throwables
*/
public class CassandraUidAndModSeqProviderTest {
- private static final CassandraClusterSingleton CASSANDRA = CassandraClusterSingleton.build();
+ private static final CassandraClusterSingleton CASSANDRA = CassandraClusterSingleton.create(new CassandraMailboxModule());
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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -21,7 +21,8 @@ package org.apache.james.mailbox.cassand
import static org.assertj.core.api.Assertions.assertThat;
-import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
+import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.quota.QuotaRootImpl;
import org.junit.After;
@@ -37,7 +38,7 @@ public class CassandraCurrentQuotaManage
@Before
public void setUp() {
- cassandra = CassandraClusterSingleton.build();
+ cassandra = CassandraClusterSingleton.create(new CassandraMailboxModule());
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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -19,7 +19,8 @@
package org.apache.james.mailbox.cassandra.quota;
-import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
+import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.store.quota.GenericMaxQuotaManagerTest;
import org.junit.After;
@@ -30,7 +31,7 @@ public class CassandraPerUserMaxQuotaMan
@Override
protected MaxQuotaManager provideMaxQuotaManager() {
- cassandra = CassandraClusterSingleton.build();
+ cassandra = CassandraClusterSingleton.create(new CassandraMailboxModule());
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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -28,7 +28,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
+import org.apache.james.mailbox.cassandra.CassandraMailboxModule;
import org.apache.james.mailbox.store.user.model.Subscription;
import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
import org.junit.Before;
@@ -45,7 +46,7 @@ import com.datastax.driver.core.Session;
public class CassandraSubscriptionMapperTest {
private static final Logger LOG = LoggerFactory.getLogger(CassandraSubscriptionMapperTest.class);
- private static final CassandraClusterSingleton CLUSTER = CassandraClusterSingleton.build();
+ private static final CassandraClusterSingleton CLUSTER = CassandraClusterSingleton.create(new CassandraMailboxModule());
private static Session session;
private static CassandraSubscriptionMapper mapper;
private static Map<String, List<SimpleSubscription>> subscriptionList;
Modified: james/project/trunk/mailbox/hbase/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/hbase/pom.xml?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/hbase/pom.xml (original)
+++ james/project/trunk/mailbox/hbase/pom.xml Thu Oct 29 14:17:52 2015
@@ -92,6 +92,12 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <scope>test</scope>
+ <version>13.0</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<type>test-jar</type>
Modified: james/project/trunk/mailbox/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/pom.xml?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mailbox/pom.xml (original)
+++ james/project/trunk/mailbox/pom.xml Thu Oct 29 14:17:52 2015
@@ -125,6 +125,7 @@
<jackson-databinding.version>2.3.3</jackson-databinding.version>
<cassandra-driver-core.version>2.1.5</cassandra-driver-core.version>
<cassandra-unit.version>2.0.2.2</cassandra-unit.version>
+ <apache-backends-cassandra.version>1.8.3-SNAPSHOT</apache-backends-cassandra.version>
</properties>
<dependencyManagement>
@@ -283,6 +284,21 @@
</dependency>
<!--
+
+ -->
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <version>${apache-backends-cassandra.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <version>${apache-backends-cassandra.version}</version>
+ <type>test-jar</type>
+ </dependency>
+
+ <!--
START Logging
-->
<dependency>
Modified: james/project/trunk/mpt/impl/imap-mailbox/cassandra/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/imap-mailbox/cassandra/pom.xml?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mpt/impl/imap-mailbox/cassandra/pom.xml (original)
+++ james/project/trunk/mpt/impl/imap-mailbox/cassandra/pom.xml Thu Oct 29 14:17:52 2015
@@ -150,15 +150,20 @@
<dependencies>
<dependency>
<groupId>org.apache.james</groupId>
- <artifactId>apache-james-mailbox-cassandra</artifactId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
- <artifactId>apache-james-mailbox-cassandra</artifactId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>apache-james-mailbox-cassandra</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>apache-james-mpt-imapmailbox-core</artifactId>
</dependency>
<dependency>
@@ -215,5 +220,8 @@
</build>
</profile>
</profiles>
+ <build>
+
+ </build>
</project>
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=1711274&r1=1711273&r2=1711274&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 Thu Oct 29 14:17:52 2015
@@ -18,14 +18,16 @@
****************************************************************/
package org.apache.james.mpt.imapmailbox.cassandra.host;
+import org.apache.james.backends.cassandra.CassandraClusterSingleton;
+import org.apache.james.backends.cassandra.components.CassandraModule;
+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.CassandraClusterSingleton;
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.CassandraTypesProvider;
import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
@@ -49,17 +51,18 @@ public class CassandraHostSystem extends
private final CassandraMailboxManager mailboxManager;
private final MockAuthenticator userManager;
+ private final CassandraModule mailboxModule;
private CassandraClusterSingleton cassandraClusterSingleton;
public CassandraHostSystem() throws Exception {
- cassandraClusterSingleton = CassandraClusterSingleton.build();
+ mailboxModule = new CassandraMailboxModule();
+ cassandraClusterSingleton = CassandraClusterSingleton.create(mailboxModule);
userManager = new MockAuthenticator();
-
com.datastax.driver.core.Session session = cassandraClusterSingleton.getConf();
CassandraModSeqProvider modSeqProvider = new CassandraModSeqProvider(session);
CassandraUidProvider uidProvider = new CassandraUidProvider(session);
- CassandraMailboxSessionMapperFactory mapperFactory = new CassandraMailboxSessionMapperFactory(uidProvider, modSeqProvider, session, new CassandraTypesProvider(session));
+ CassandraMailboxSessionMapperFactory mapperFactory = new CassandraMailboxSessionMapperFactory(uidProvider, modSeqProvider, session, new CassandraTypesProvider(mailboxModule, session));
mailboxManager = new CassandraMailboxManager(mapperFactory, userManager, new JVMMailboxPathLocker());
QuotaRootResolver quotaRootResolver = new DefaultQuotaRootResolver(mapperFactory);
Modified: james/project/trunk/mpt/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/mpt/pom.xml?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/mpt/pom.xml (original)
+++ james/project/trunk/mpt/pom.xml Thu Oct 29 14:17:52 2015
@@ -113,6 +113,7 @@
<javax.mail.groupId>javax.mail</javax.mail.groupId>
<javax.mail.artifactId>mail</javax.mail.artifactId>
+ <backends.version>1.8.3-SNAPSHOT</backends.version>
</properties>
@@ -161,6 +162,17 @@
<!-- Other Apache James sub projects -->
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <version>${backends.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <type>test-jar</type>
+ <version>${backends.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>apache-james-mailbox-api</artifactId>
<version>${james-mailbox.version}</version>
</dependency>
Modified: james/project/trunk/server/app/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/app/pom.xml?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/server/app/pom.xml (original)
+++ james/project/trunk/server/app/pom.xml Thu Oct 29 14:17:52 2015
@@ -378,6 +378,10 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ </dependency>
<!-- Comment jackrabbit dependency to avoid lucene version clash with mailbox-lucene (JAMES-1297)
<dependency>
<groupId>org.apache.jackrabbit</groupId>
Modified: james/project/trunk/server/pom.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/pom.xml?rev=1711274&r1=1711273&r2=1711274&view=diff
==============================================================================
--- james/project/trunk/server/pom.xml (original)
+++ james/project/trunk/server/pom.xml Thu Oct 29 14:17:52 2015
@@ -176,6 +176,7 @@
<karaf.tooling.exam.container.version>2.3.0</karaf.tooling.exam.container.version>
<pax-logging-api.version>1.6.4</pax-logging-api.version>
<mockito-core.version>1.9.0</mockito-core.version>
+ <backends.version>1.8.3-SNAPSHOT</backends.version>
</properties>
<dependencyManagement>
@@ -286,6 +287,11 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <version>${backends.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>apache-mailet-api</artifactId>
<version>${mailet.version}</version>
<exclusions>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org