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 ad...@apache.org on 2017/07/06 12:13:07 UTC
[01/15] james-project git commit: JAMES-2090 Delete unused class
Repository: james-project
Updated Branches:
refs/heads/master 1128983f4 -> 1dafd8849
JAMES-2090 Delete unused class
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/96facc5b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/96facc5b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/96facc5b
Branch: refs/heads/master
Commit: 96facc5b0a850660e4bab8c413fb3a651ba21af6
Parents: 02d86a4
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 4 17:01:07 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 5 11:36:16 2017 +0700
----------------------------------------------------------------------
...essageDeletedDuringFlagsUpdateException.java | 30 --------------------
1 file changed, 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/96facc5b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/utils/MessageDeletedDuringFlagsUpdateException.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/utils/MessageDeletedDuringFlagsUpdateException.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/utils/MessageDeletedDuringFlagsUpdateException.java
deleted file mode 100644
index 7573830..0000000
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/utils/MessageDeletedDuringFlagsUpdateException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailbox.cassandra.mail.utils;
-
-import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.cassandra.CassandraMessageId;
-
-public class MessageDeletedDuringFlagsUpdateException extends RuntimeException {
-
- public MessageDeletedDuringFlagsUpdateException(CassandraId id, CassandraMessageId messageId) {
- super("Can not perform flag update as message was deleted for mailbox " + id.serialize() + " and message " + messageId.serialize());
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[08/15] james-project git commit: JAMES-2090 Document the new
properties on the website
Posted by ad...@apache.org.
JAMES-2090 Document the new properties on the website
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0b7b2087
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0b7b2087
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0b7b2087
Branch: refs/heads/master
Commit: 0b7b20870b74b8f857d63b2381fb9fb044ad8455
Parents: 5914a83
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 5 11:25:39 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:48:54 2017 +0700
----------------------------------------------------------------------
src/site/xdoc/server/config-cassandra.xml | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/0b7b2087/src/site/xdoc/server/config-cassandra.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/server/config-cassandra.xml b/src/site/xdoc/server/config-cassandra.xml
index d0b8e35..bf9fb90 100644
--- a/src/site/xdoc/server/config-cassandra.xml
+++ b/src/site/xdoc/server/config-cassandra.xml
@@ -93,6 +93,24 @@
<dd>Optional.
If specified defines the Cassandra <a href="http://docs.datastax.com/en/developer/java-driver/2.1/manual/pooling/">Specify heartbeat timeout</a></dd>
+ <dt><strong>mailbox.max.retry.acl</strong></dt>
+ <dd>Optional. Defaults to 1000.<br/> Controls the number of retries upon Cassandra ACL updates.</dd>
+ <dt><strong>mailbox.max.retry.modseq</strong></dt>
+ <dd>Optional. Defaults to 100000.<br/> Controls the number of retries upon Cassandra ModSeq generation.</dd>
+ <dt><strong>mailbox.max.retry.uid</strong></dt>
+ <dd>Optional. Defaults to 100000.<br/> Controls the number of retries upon Cassandra Uid generation.</dd>
+ <dt><strong>mailbox.max.retry.message.flags.update</strong></dt>
+ <dd>Optional. Defaults to 1000.<br/> Controls the number of retries upon Cassandra flags update, in MessageMapper.</dd>
+ <dt><strong>mailbox.max.retry.message.id.flags.update</strong></dt>
+ <dd>Optional. Defaults to 1000.<br/> Controls the number of retries upon Cassandra flags update, in MessageIdMapper.</dd>
+ <dt><strong>fetch.advance.row.count</strong></dt>
+ <dd>Optional. Defaults to 1000.<br/> Controls the number of remaining rows we should wait before prefetch when paging.</dd>
+ <dt><strong>chunk.size.flags.update</strong></dt>
+ <dd>Optional. Defaults to 20.<br/> Controls the number of messages flags updates to be performed concurently by MessageMapper.</dd>
+ <dt><strong>chunk.size.message.read</strong></dt>
+ <dd>Optional. Defaults to 100.<br/> Controls the number of messages to be retrieved in parallel.</dd>
+ <dt><strong>chunk.size.expunge</strong></dt>
+ <dd>Optional. Defaults to 100.<br/> Controls the number of messages to be expunged in parallel.</dd>
</dl>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[06/15] james-project git commit: JAMES-2090 Because default
configuration should be provided CassandraSessionConfiguration can not throw
FileNotFound
Posted by ad...@apache.org.
JAMES-2090 Because default configuration should be provided CassandraSessionConfiguration can not throw FileNotFound
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/35ab6bd0
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/35ab6bd0
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/35ab6bd0
Branch: refs/heads/master
Commit: 35ab6bd0743dba618c63a963959aca756d237676
Parents: 0daadc6
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 5 10:53:26 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:28:30 2017 +0700
----------------------------------------------------------------------
.../james/modules/mailbox/CassandraSessionConfiguration.java | 4 +---
.../org/apache/james/modules/mailbox/CassandraSessionModule.java | 2 +-
2 files changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/35ab6bd0/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java
index 29c3ea3..33c755c 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java
@@ -19,13 +19,11 @@
package org.apache.james.modules.mailbox;
-import java.io.FileNotFoundException;
-
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
public interface CassandraSessionConfiguration {
- PropertiesConfiguration getConfiguration() throws FileNotFoundException, ConfigurationException;
+ PropertiesConfiguration getConfiguration() throws ConfigurationException;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/35ab6bd0/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index 9d5ca75..f20aa98 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -130,7 +130,7 @@ public class CassandraSessionModule extends AbstractModule {
@Provides
@Singleton
- Cluster provideCluster(CassandraSessionConfiguration cassandraSessionConfiguration, AsyncRetryExecutor executor) throws FileNotFoundException, ConfigurationException, ExecutionException, InterruptedException {
+ Cluster provideCluster(CassandraSessionConfiguration cassandraSessionConfiguration, AsyncRetryExecutor executor) throws ConfigurationException, ExecutionException, InterruptedException {
PropertiesConfiguration configuration = cassandraSessionConfiguration.getConfiguration();
List<Host> servers = listCassandraServers(configuration);
QueryLoggerConfiguration queryLoggerConfiguration = getCassandraQueryLoggerConf(configuration);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[09/15] james-project git commit: JAMES-2090 All classes in
data-cassandra should match our coding standard
Posted by ad...@apache.org.
JAMES-2090 All classes in data-cassandra should match our coding standard
Async, CassandraUtils (for prefetch), preparedStatements
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/366023f4
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/366023f4
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/366023f4
Branch: refs/heads/master
Commit: 366023f4247216c2db15be5863d9b32dccf38cee
Parents: 0b7b208
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 5 13:41:39 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:48:54 2017 +0700
----------------------------------------------------------------------
.../cassandra/CassandraDomainList.java | 81 +++++++++----
.../CassandraRecipientRewriteTable.java | 105 ++++++++++++-----
.../cassandra/CassandraUsersRepository.java | 116 +++++++++++++------
.../CassandraUsersRepositoryModule.java | 3 +-
.../CassandraRecipientRewriteTableTest.java | 4 +-
.../james/rrt/cassandra/CassandraStepdefs.java | 4 +-
6 files changed, 214 insertions(+), 99 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/366023f4/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
index fbee908..c49956c 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
@@ -19,6 +19,10 @@
package org.apache.james.domainlist.cassandra;
+import static org.apache.james.domainlist.cassandra.tables.CassandraDomainsTable.TABLE_NAME;
+import static org.apache.james.domainlist.cassandra.tables.CassandraDomainsTable.DOMAIN;
+
+import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker;
import static com.datastax.driver.core.querybuilder.QueryBuilder.delete;
import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
@@ -26,29 +30,59 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
import java.util.List;
import java.util.Locale;
-import java.util.stream.Collectors;
import javax.inject.Inject;
-import org.apache.james.backends.cassandra.utils.CassandraConstants;
+import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.domainlist.api.DomainListException;
import org.apache.james.domainlist.lib.AbstractDomainList;
-import org.apache.james.domainlist.cassandra.tables.CassandraDomainsTable;
-import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
+import com.github.steveash.guavate.Guavate;
import com.google.common.annotations.VisibleForTesting;
public class CassandraDomainList extends AbstractDomainList {
-
- private final Session session;
+ private final CassandraAsyncExecutor executor;
private final CassandraUtils cassandraUtils;
+ private final PreparedStatement readAllStatement;
+ private final PreparedStatement readStatement;
+ private final PreparedStatement insertStatement;
+ private final PreparedStatement removeStatement;
@Inject
public CassandraDomainList(Session session, CassandraUtils cassandraUtils) {
- this.session = session;
+ this.executor = new CassandraAsyncExecutor(session);
this.cassandraUtils = cassandraUtils;
+ this.readAllStatement = prepareReadAllStatement(session);
+ this.readStatement = prepareReadStatement(session);
+ this.insertStatement = prepareInsertStatement(session);
+ this.removeStatement = prepareRemoveStatement(session);
+ }
+
+ private PreparedStatement prepareRemoveStatement(Session session) {
+ return session.prepare(delete()
+ .from(TABLE_NAME)
+ .ifExists()
+ .where(eq(DOMAIN, bindMarker(DOMAIN))));
+ }
+
+ private PreparedStatement prepareInsertStatement(Session session) {
+ return session.prepare(insertInto(TABLE_NAME)
+ .ifNotExists()
+ .value(DOMAIN, bindMarker(DOMAIN)));
+ }
+
+ private PreparedStatement prepareReadStatement(Session session) {
+ return session.prepare(select(DOMAIN)
+ .from(TABLE_NAME)
+ .where(eq(DOMAIN, bindMarker(DOMAIN))));
+ }
+
+ private PreparedStatement prepareReadAllStatement(Session session) {
+ return session.prepare(select(DOMAIN)
+ .from(TABLE_NAME));
}
@VisibleForTesting
@@ -58,26 +92,26 @@ public class CassandraDomainList extends AbstractDomainList {
@Override
protected List<String> getDomainListInternal() throws DomainListException {
- return cassandraUtils.convertToStream(session.execute(select(CassandraDomainsTable.DOMAIN).from(CassandraDomainsTable.TABLE_NAME)))
- .map(row -> row.getString(CassandraDomainsTable.DOMAIN))
- .collect(Collectors.toList());
+ return executor.execute(readAllStatement.bind())
+ .thenApply(resultSet -> cassandraUtils.convertToStream(resultSet)
+ .map(row -> row.getString(DOMAIN))
+ .collect(Guavate.toImmutableList()))
+ .join();
}
@Override
public boolean containsDomain(String domain) throws DomainListException {
- return session.execute(select(CassandraDomainsTable.DOMAIN)
- .from(CassandraDomainsTable.TABLE_NAME)
- .where(eq(CassandraDomainsTable.DOMAIN, domain.toLowerCase(Locale.US))))
- .one() != null;
+ return executor.executeSingleRow(readStatement.bind()
+ .setString(DOMAIN, domain.toLowerCase(Locale.US)))
+ .join()
+ .isPresent();
}
@Override
public void addDomain(String domain) throws DomainListException {
- boolean executed = session.execute(insertInto(CassandraDomainsTable.TABLE_NAME)
- .ifNotExists()
- .value(CassandraDomainsTable.DOMAIN, domain.toLowerCase(Locale.US)))
- .one()
- .getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED);
+ boolean executed = executor.executeReturnApplied(insertStatement.bind()
+ .setString(DOMAIN, domain.toLowerCase(Locale.US)))
+ .join();
if (!executed) {
throw new DomainListException(domain.toLowerCase(Locale.US) + " already exists.");
}
@@ -85,11 +119,10 @@ public class CassandraDomainList extends AbstractDomainList {
@Override
public void removeDomain(String domain) throws DomainListException {
- ResultSet resultSet = session.execute(delete()
- .from(CassandraDomainsTable.TABLE_NAME)
- .ifExists()
- .where(eq(CassandraDomainsTable.DOMAIN, domain.toLowerCase(Locale.US))));
- if (!resultSet.one().getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED)) {
+ boolean executed = executor.executeReturnApplied(removeStatement.bind()
+ .setString(DOMAIN, domain.toLowerCase(Locale.US)))
+ .join();
+ if (!executed) {
throw new DomainListException(domain + " was not found");
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/366023f4/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
index ad9ba4b..86e2b4d 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.james.rrt.cassandra;
+import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker;
import static com.datastax.driver.core.querybuilder.QueryBuilder.delete;
import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
@@ -29,44 +30,83 @@ import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTab
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
-import javax.annotation.Resource;
import javax.inject.Inject;
+import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.rrt.api.RecipientRewriteTableException;
import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
import org.apache.james.rrt.lib.Mappings;
import org.apache.james.rrt.lib.MappingsImpl;
+import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
+import com.github.steveash.guavate.Guavate;
import com.google.common.base.Optional;
public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTable {
- private Session session;
+ private final CassandraAsyncExecutor executor;
+ private final CassandraUtils cassandraUtils;
+ private final PreparedStatement insertStatement;
+ private final PreparedStatement deleteStatement;
+ private final PreparedStatement retrieveMappingStatement;
+ private final PreparedStatement retrieveAllMappingsStatement;
@Inject
- @Resource
- public void setSession(Session session) {
- this.session = session;
+ public CassandraRecipientRewriteTable(Session session, CassandraUtils cassandraUtils) {
+ this.executor = new CassandraAsyncExecutor(session);
+ this.cassandraUtils = cassandraUtils;
+ this.insertStatement = prepareInsertStatement(session);
+ this.deleteStatement = prepareDelete(session);
+ this.retrieveMappingStatement = prepareRetrieveMappingStatement(session);
+ this.retrieveAllMappingsStatement = prepareRetrieveAllMappingStatement(session);
+ }
+
+ private PreparedStatement prepareRetrieveAllMappingStatement(Session session) {
+ return session.prepare(select(USER, DOMAIN, MAPPING)
+ .from(TABLE_NAME));
+ }
+
+ private PreparedStatement prepareRetrieveMappingStatement(Session session) {
+ return session.prepare(select(MAPPING)
+ .from(TABLE_NAME)
+ .where(eq(USER, bindMarker(USER)))
+ .and(eq(DOMAIN, bindMarker(DOMAIN))));
+ }
+
+ private PreparedStatement prepareDelete(Session session) {
+ return session.prepare(delete()
+ .from(TABLE_NAME)
+ .where(eq(USER, bindMarker(USER)))
+ .and(eq(DOMAIN, bindMarker(DOMAIN)))
+ .and(eq(MAPPING, bindMarker(MAPPING))));
+ }
+
+ private PreparedStatement prepareInsertStatement(Session session) {
+ return session.prepare(insertInto(TABLE_NAME)
+ .value(USER, bindMarker(USER))
+ .value(DOMAIN, bindMarker(DOMAIN))
+ .value(MAPPING, bindMarker(MAPPING)));
}
@Override
protected void addMappingInternal(String user, String domain, String mapping) throws RecipientRewriteTableException {
- session.execute(insertInto(TABLE_NAME)
- .value(USER, getFixedUser(user))
- .value(DOMAIN, getFixedDomain(domain))
- .value(MAPPING, mapping));
+ executor.executeVoid(insertStatement.bind()
+ .setString(USER, getFixedUser(user))
+ .setString(DOMAIN, getFixedDomain(domain))
+ .setString(MAPPING, mapping))
+ .join();
}
@Override
protected void removeMappingInternal(String user, String domain, String mapping) throws RecipientRewriteTableException {
- session.execute(delete()
- .from(TABLE_NAME)
- .where(eq(USER, getFixedUser(user)))
- .and(eq(DOMAIN, getFixedDomain(domain)))
- .and(eq(MAPPING, mapping)));
+ executor.executeVoid(deleteStatement.bind()
+ .setString(USER, getFixedUser(user))
+ .setString(DOMAIN, getFixedDomain(domain))
+ .setString(MAPPING, mapping))
+ .join();
}
@Override
@@ -76,28 +116,27 @@ public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTabl
}
private Optional<Mappings> retrieveMappings(String user, String domain) {
- List<String> mappings = session.execute(select(MAPPING)
- .from(TABLE_NAME)
- .where(eq(USER, getFixedUser(user)))
- .and(eq(DOMAIN, getFixedDomain(domain))))
- .all()
- .stream()
- .map(row -> row.getString(MAPPING))
- .collect(Collectors.toList());
+ List<String> mappings = executor.execute(retrieveMappingStatement.bind()
+ .setString(USER, getFixedUser(user))
+ .setString(DOMAIN, getFixedDomain(domain)))
+ .thenApply(resultSet -> cassandraUtils.convertToStream(resultSet)
+ .map(row -> row.getString(MAPPING))
+ .collect(Guavate.toImmutableList()))
+ .join();
return MappingsImpl.fromCollection(mappings).toOptional();
}
@Override
protected Map<String, Mappings> getAllMappingsInternal() throws RecipientRewriteTableException {
- Map<String, Mappings> map = session.execute(select(USER, DOMAIN, MAPPING)
- .from(TABLE_NAME))
- .all()
- .stream()
- .map(row -> new UserMapping(row.getString(USER), row.getString(DOMAIN), row.getString(MAPPING)))
- .collect(Collectors.toMap(UserMapping::asKey,
- userMapping -> MappingsImpl.fromRawString(userMapping.getMapping()),
- (first, second) -> first.union(second)));
+ Map<String, Mappings> map = executor.execute(retrieveAllMappingsStatement.bind())
+ .thenApply(resultSet -> cassandraUtils.convertToStream(resultSet)
+ .map(row -> new UserMapping(row.getString(USER), row.getString(DOMAIN), row.getString(MAPPING)))
+ .collect(Guavate.toImmutableMap(
+ UserMapping::asKey,
+ UserMapping::toMapping,
+ Mappings::union)))
+ .join();
return map.isEmpty() ? null : map;
}
@@ -125,6 +164,10 @@ public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTabl
return mapping;
}
+ public Mappings toMapping() {
+ return MappingsImpl.fromRawString(getMapping());
+ }
+
public String asKey() {
return getUser() + "@" + getDomain();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/366023f4/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
index f7b9251..028accb 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
@@ -19,6 +19,7 @@
package org.apache.james.user.cassandra;
+import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker;
import static com.datastax.driver.core.querybuilder.QueryBuilder.delete;
import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
@@ -35,10 +36,9 @@ import java.util.Iterator;
import java.util.Locale;
import java.util.Optional;
-import javax.annotation.Resource;
import javax.inject.Inject;
-import org.apache.james.backends.cassandra.utils.CassandraConstants;
+import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.user.api.AlreadyExistInUsersRepositoryException;
import org.apache.james.user.api.UsersRepositoryException;
@@ -46,6 +46,7 @@ import org.apache.james.user.api.model.User;
import org.apache.james.user.lib.AbstractUsersRepository;
import org.apache.james.user.lib.model.DefaultUser;
+import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
import com.google.common.base.Preconditions;
@@ -55,21 +56,68 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
private static final String DEFAULT_ALGO_VALUE = "SHA1";
- private final Session session;
+ private final CassandraAsyncExecutor executor;
private final CassandraUtils cassandraUtils;
+ private final PreparedStatement getUserStatement;
+ private final PreparedStatement updateUserStatement;
+ private final PreparedStatement removeUserStatement;
+ private final PreparedStatement countUserStatement;
+ private final PreparedStatement listStatement;
+ private final PreparedStatement insertStatement;
@Inject
public CassandraUsersRepository(Session session, CassandraUtils cassandraUtils) {
- this.session = session;
+ this.executor = new CassandraAsyncExecutor(session);
this.cassandraUtils = cassandraUtils;
+ this.getUserStatement = prepareGetUserStatement(session);
+ this.updateUserStatement = prepareUpdateUserStatement(session);
+ this.removeUserStatement = prepareRemoveUserStatement(session);
+ this.countUserStatement = prepareCountStatement(session);
+ this.listStatement = prepareListStatement(session);
+ this.insertStatement = session.prepare(insertInto(TABLE_NAME)
+ .value(NAME, bindMarker(NAME))
+ .value(REALNAME, bindMarker(REALNAME))
+ .value(PASSWORD, bindMarker(PASSWORD))
+ .value(ALGORITHM, bindMarker(ALGORITHM))
+ .ifNotExists());
}
-
+
+ private PreparedStatement prepareListStatement(Session session) {
+ return session.prepare(select(REALNAME)
+ .from(TABLE_NAME));
+ }
+
+ private PreparedStatement prepareCountStatement(Session session) {
+ return session.prepare(select().countAll().from(TABLE_NAME));
+ }
+
+ private PreparedStatement prepareRemoveUserStatement(Session session) {
+ return session.prepare( delete()
+ .from(TABLE_NAME)
+ .where(eq(NAME, bindMarker(NAME)))
+ .ifExists());
+ }
+
+ private PreparedStatement prepareUpdateUserStatement(Session session) {
+ return session.prepare(update(TABLE_NAME)
+ .with(set(REALNAME, bindMarker(REALNAME)))
+ .and(set(PASSWORD, bindMarker(PASSWORD)))
+ .and(set(ALGORITHM, bindMarker(ALGORITHM)))
+ .where(eq(NAME, bindMarker(NAME)))
+ .ifExists());
+ }
+
+ private PreparedStatement prepareGetUserStatement(Session session) {
+ return session.prepare(select(REALNAME, PASSWORD, ALGORITHM)
+ .from(TABLE_NAME)
+ .where(eq(NAME, bindMarker(NAME))));
+ }
+
@Override
public User getUserByName(String name){
- ResultSet result = session.execute(
- select(REALNAME, PASSWORD, ALGORITHM)
- .from(TABLE_NAME)
- .where(eq(NAME, name.toLowerCase(Locale.US))));
+ ResultSet result = executor.execute(getUserStatement.bind()
+ .setString(NAME, name.toLowerCase(Locale.US)))
+ .join();
return Optional.ofNullable(result.one())
.map(row -> new DefaultUser(row.getString(REALNAME), row.getString(PASSWORD), row.getString(ALGORITHM)))
.filter(user -> user.getUserName().equals(name))
@@ -80,15 +128,13 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
public void updateUser(User user) throws UsersRepositoryException {
Preconditions.checkArgument(user instanceof DefaultUser);
DefaultUser defaultUser = (DefaultUser) user;
- boolean executed = session.execute(
- update(TABLE_NAME)
- .with(set(REALNAME, defaultUser.getUserName()))
- .and(set(PASSWORD, defaultUser.getHashedPassword()))
- .and(set(ALGORITHM, defaultUser.getHashAlgorithm()))
- .where(eq(NAME, defaultUser.getUserName().toLowerCase(Locale.US)))
- .ifExists())
- .one()
- .getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED);
+ boolean executed = executor.executeReturnApplied(
+ updateUserStatement.bind()
+ .setString(REALNAME, defaultUser.getUserName())
+ .setString(PASSWORD, defaultUser.getHashedPassword())
+ .setString(ALGORITHM, defaultUser.getHashAlgorithm())
+ .setString(NAME, defaultUser.getUserName().toLowerCase(Locale.US)))
+ .join();
if (!executed) {
throw new UsersRepositoryException("Unable to update user");
@@ -97,13 +143,10 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
@Override
public void removeUser(String name) throws UsersRepositoryException {
- boolean executed = session.execute(
- delete()
- .from(TABLE_NAME)
- .where(eq(NAME, name))
- .ifExists())
- .one()
- .getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED);
+ boolean executed = executor.executeReturnApplied(
+ removeUserStatement.bind()
+ .setString(NAME, name))
+ .join();
if (!executed) {
throw new UsersRepositoryException("unable to remove unknown user " + name);
@@ -124,15 +167,14 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
@Override
public int countUsers() throws UsersRepositoryException {
- ResultSet result = session.execute(select().countAll().from(TABLE_NAME));
+ ResultSet result = executor.execute(countUserStatement.bind()).join();
return Ints.checkedCast(result.one().getLong(0));
}
@Override
public Iterator<String> list() throws UsersRepositoryException {
- ResultSet result = session.execute(
- select(REALNAME)
- .from(TABLE_NAME));
+ ResultSet result = executor.execute(listStatement.bind())
+ .join();
return cassandraUtils.convertToStream(result)
.map(row -> row.getString(REALNAME))
.iterator();
@@ -148,15 +190,13 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
protected void doAddUser(String username, String password) throws UsersRepositoryException {
DefaultUser user = new DefaultUser(username, DEFAULT_ALGO_VALUE);
user.setPassword(password);
- boolean executed = session.execute(
- insertInto(TABLE_NAME)
- .value(NAME, user.getUserName().toLowerCase(Locale.US))
- .value(REALNAME, user.getUserName())
- .value(PASSWORD, user.getHashedPassword())
- .value(ALGORITHM, user.getHashAlgorithm())
- .ifNotExists())
- .one()
- .getBool(CassandraConstants.LIGHTWEIGHT_TRANSACTION_APPLIED);
+ boolean executed = executor.executeReturnApplied(
+ insertStatement.bind()
+ .setString(NAME, user.getUserName().toLowerCase(Locale.US))
+ .setString(REALNAME, user.getUserName())
+ .setString(PASSWORD, user.getHashedPassword())
+ .setString(ALGORITHM, user.getHashAlgorithm()))
+ .join();
if (!executed) {
throw new AlreadyExistInUsersRepositoryException("User with username " + username + " already exist!");
http://git-wip-us.apache.org/repos/asf/james-project/blob/366023f4/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
index 74a3469..db7a337 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepositoryModule.java
@@ -44,8 +44,7 @@ public class CassandraUsersRepositoryModule implements CassandraModule {
.addPartitionKey(CassandraUserTable.NAME, text())
.addColumn(CassandraUserTable.REALNAME, text())
.addColumn(CassandraUserTable.PASSWORD, text())
- .addColumn(CassandraUserTable.ALGORITHM, text()))
- );
+ .addColumn(CassandraUserTable.ALGORITHM, text())));
types = ImmutableList.of();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/366023f4/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
index 60068e5..525eb2a 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
@@ -20,6 +20,7 @@ package org.apache.james.rrt.cassandra;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.rrt.api.RecipientRewriteTableException;
import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
@@ -50,8 +51,7 @@ public class CassandraRecipientRewriteTableTest extends AbstractRecipientRewrite
@Override
protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
- CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable();
- rrt.setSession(cassandra.getConf());
+ CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
rrt.setLog(LoggerFactory.getLogger("MockLog"));
rrt.configure(new DefaultConfigurationBuilder());
return rrt;
http://git-wip-us.apache.org/repos/asf/james-project/blob/366023f4/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
index 6f25a92..61dc4a8 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
@@ -20,6 +20,7 @@ package org.apache.james.rrt.cassandra;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
import org.apache.james.rrt.lib.RewriteTablesStepdefs;
import org.slf4j.LoggerFactory;
@@ -51,8 +52,7 @@ public class CassandraStepdefs {
}
private AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
- CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable();
- rrt.setSession(cassandra.getConf());
+ CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
rrt.setLog(LoggerFactory.getLogger("MockLog"));
rrt.configure(new DefaultConfigurationBuilder());
return rrt;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[05/15] james-project git commit: JAMES-2090 Cassandra guice should
Inject CassandraConfiguration
Posted by ad...@apache.org.
JAMES-2090 Cassandra guice should Inject CassandraConfiguration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0daadc62
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0daadc62
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0daadc62
Branch: refs/heads/master
Commit: 0daadc62d2ac1b1371b5a9061f9e1b4b3f67cf15
Parents: 29fb5d3
Author: benwa <bt...@linagora.com>
Authored: Thu Jul 6 08:27:18 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:28:26 2017 +0700
----------------------------------------------------------------------
backends-common/cassandra/pom.xml | 6 +
.../cassandra/CassandraConfiguration.java | 223 ++++++++++++++++++
.../cassandra/utils/CassandraUtils.java | 21 +-
.../cassandra/CassandraConfigurationTest.java | 225 +++++++++++++++++++
.../CassandraMailboxSessionMapperFactory.java | 28 +--
.../CassandraMailboxPathRegisterMapper.java | 6 +-
.../cassandra/mail/CassandraACLMapper.java | 10 +-
.../mail/CassandraAnnotationMapper.java | 26 ++-
.../mail/CassandraDeletedMessageDAO.java | 17 +-
.../cassandra/mail/CassandraMailboxDAO.java | 22 +-
.../cassandra/mail/CassandraMailboxMapper.java | 9 +-
.../cassandra/mail/CassandraMailboxPathDAO.java | 12 +-
.../mail/CassandraMailboxRecentsDAO.java | 12 +-
.../cassandra/mail/CassandraMessageDAO.java | 14 +-
.../cassandra/mail/CassandraMessageIdDAO.java | 12 +-
.../mail/CassandraMessageIdMapper.java | 9 +-
.../mail/CassandraMessageIdToImapUidDAO.java | 12 +-
.../cassandra/mail/CassandraMessageMapper.java | 17 +-
.../cassandra/mail/CassandraModSeqProvider.java | 18 +-
.../cassandra/mail/CassandraUidProvider.java | 18 +-
.../user/CassandraSubscriptionMapper.java | 8 +-
.../CassandraMailboxManagerProvider.java | 3 +-
.../cassandra/CassandraTestSystemFixture.java | 3 +-
...istributedMailboxDelegatingListenerTest.java | 4 +
...CassandraMailboxPathRegistrerMapperTest.java | 11 +-
.../cassandra/mail/CassandraACLMapperTest.java | 18 +-
.../cassandra/mail/CassandraMailboxDAOTest.java | 3 +-
.../CassandraMailboxManagerAttachmentTest.java | 4 +-
.../CassandraMailboxMapperConcurrencyTest.java | 6 +-
.../mail/CassandraMailboxMapperTest.java | 8 +-
.../cassandra/mail/CassandraMapperProvider.java | 2 +-
.../mail/CassandraModSeqProviderTest.java | 7 +-
.../mail/CassandraUidProviderTest.java | 7 +-
.../user/CassandraSubscriptionMapperTest.java | 3 +-
.../cassandra/host/CassandraHostSystem.java | 3 +-
.../cassandra/host/CassandraHostSystem.java | 4 +-
.../modules/mailbox/CassandraMailboxModule.java | 4 -
.../modules/mailbox/CassandraSessionModule.java | 5 +
.../cassandra/CassandraDomainList.java | 16 +-
.../cassandra/CassandraUsersRepository.java | 9 +-
.../cassandra/CassandraDomainListTest.java | 3 +-
.../cassandra/CassandraUsersRepositoryTest.java | 5 +-
42 files changed, 695 insertions(+), 158 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/backends-common/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/pom.xml b/backends-common/cassandra/pom.xml
index 4eaec71..6810208 100644
--- a/backends-common/cassandra/pom.xml
+++ b/backends-common/cassandra/pom.xml
@@ -168,6 +168,12 @@
<version>${assertj-3.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>nl.jqno.equalsverifier</groupId>
+ <artifactId>equalsverifier</artifactId>
+ <version>1.7.6</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.cassandraunit</groupId>
<artifactId>cassandra-unit</artifactId>
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
new file mode 100644
index 0000000..3d985d4
--- /dev/null
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
@@ -0,0 +1,223 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.backends.cassandra;
+
+import java.util.Objects;
+import java.util.Optional;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Preconditions;
+
+public class CassandraConfiguration {
+ public static final CassandraConfiguration DEFAULT_CONFIGURATION = builder().build();
+
+ public static final int DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ = 100;
+ public static final int DEFAULT_EXPUNGE_BATCH_SIZE = 100;
+ public static final int DEFAULT_UPDATE_FLAGS_BATCH_SIZE = 20;
+ public static final int DEFAULT_FLAGS_UPDATE_MESSAGE_MAX_RETRY = 1000;
+ public static final int DEFAULT_FLAGS_UPDATE_MESSAGE_ID_MAX_RETRY = 1000;
+ public static final int DEFAULT_MODSEQ_MAX_RETRY = 100000;
+ public static final int DEFAULT_UID_MAX_RETRY = 100000;
+ public static final int DEFAULT_ACL_MAX_RETRY = 1000;
+ public static final int DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW = 100;
+
+ public static class Builder {
+ private Optional<Integer> messageReadChunkSize = Optional.empty();
+ private Optional<Integer> expungeChunkSize = Optional.empty();
+ private Optional<Integer> flagsUpdateChunkSize = Optional.empty();
+ private Optional<Integer> flagsUpdateMessageIdMaxRetry = Optional.empty();
+ private Optional<Integer> flagsUpdateMessageMaxRetry = Optional.empty();
+ private Optional<Integer> modSeqMaxRetry = Optional.empty();
+ private Optional<Integer> uidMaxRetry = Optional.empty();
+ private Optional<Integer> aclMaxRetry = Optional.empty();
+ private Optional<Integer> fetchNextPageInAdvanceRow = Optional.empty();
+
+ public Builder messageReadChunkSize(int value) {
+ Preconditions.checkArgument(value > 0, "messageReadChunkSize needs to be strictly positive");
+ this.messageReadChunkSize = Optional.of(value);
+ return this;
+ }
+
+ public Builder expungeChunkSize(int value) {
+ Preconditions.checkArgument(value > 0, "expungeChunkSize needs to be strictly positive");
+ this.expungeChunkSize = Optional.of(value);
+ return this;
+ }
+
+ public Builder flagsUpdateChunkSize(int value) {
+ Preconditions.checkArgument(value > 0, "flagsUpdateChunkSize needs to be strictly positive");
+ this.flagsUpdateChunkSize = Optional.of(value);
+ return this;
+ }
+
+ public Builder flagsUpdateMessageIdMaxRetry(int value) {
+ Preconditions.checkArgument(value > 0, "flagsUpdateMessageIdMaxRetry needs to be strictly positive");
+ this.flagsUpdateMessageIdMaxRetry = Optional.of(value);
+ return this;
+ }
+
+ public Builder flagsUpdateMessageMaxRetry(int value) {
+ Preconditions.checkArgument(value > 0, "flagsUpdateMessageMaxRetry needs to be strictly positive");
+ this.flagsUpdateMessageMaxRetry = Optional.of(value);
+ return this;
+ }
+
+ public Builder modSeqMaxRetry(int value) {
+ Preconditions.checkArgument(value > 0, "modSeqMaxRetry needs to be strictly positive");
+ this.modSeqMaxRetry = Optional.of(value);
+ return this;
+ }
+
+ public Builder uidMaxRetry(int value) {
+ Preconditions.checkArgument(value > 0, "uidMaxRetry needs to be strictly positive");
+ this.uidMaxRetry = Optional.of(value);
+ return this;
+ }
+
+ public Builder aclMaxRetry(int value) {
+ Preconditions.checkArgument(value > 0, "aclMaxRetry needs to be strictly positive");
+ this.aclMaxRetry = Optional.of(value);
+ return this;
+ }
+
+ public Builder fetchNextPageInAdvanceRow(int value) {
+ Preconditions.checkArgument(value > 0, "fetchNextPageInAdvanceRow needs to be strictly positive");
+ this.fetchNextPageInAdvanceRow = Optional.of(value);
+ return this;
+ }
+
+ public CassandraConfiguration build() {
+ return new CassandraConfiguration(aclMaxRetry.orElse(DEFAULT_ACL_MAX_RETRY),
+ messageReadChunkSize.orElse(DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ),
+ expungeChunkSize.orElse(DEFAULT_EXPUNGE_BATCH_SIZE),
+ flagsUpdateChunkSize.orElse(DEFAULT_UPDATE_FLAGS_BATCH_SIZE),
+ flagsUpdateMessageIdMaxRetry.orElse(DEFAULT_FLAGS_UPDATE_MESSAGE_ID_MAX_RETRY),
+ flagsUpdateMessageMaxRetry.orElse(DEFAULT_FLAGS_UPDATE_MESSAGE_MAX_RETRY),
+ modSeqMaxRetry.orElse(DEFAULT_MODSEQ_MAX_RETRY),
+ uidMaxRetry.orElse(DEFAULT_UID_MAX_RETRY),
+ fetchNextPageInAdvanceRow.orElse(DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW));
+ }
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ private final int messageReadChunkSize;
+ private final int expungeChunkSize;
+ private final int flagsUpdateChunkSize;
+ private final int flagsUpdateMessageIdMaxRetry;
+ private final int flagsUpdateMessageMaxRetry;
+ private final int modSeqMaxRetry;
+ private final int uidMaxRetry;
+ private final int aclMaxRetry;
+ private final int fetchNextPageInAdvanceRow;
+
+ @VisibleForTesting
+ CassandraConfiguration(int aclMaxRetry, int messageReadChunkSize, int expungeChunkSize, int flagsUpdateChunkSize,
+ int flagsUpdateMessageIdMaxRetry, int flagsUpdateMessageMaxRetry, int modSeqMaxRetry,
+ int uidMaxRetry, int fetchNextPageInAdvanceRow) {
+ this.aclMaxRetry = aclMaxRetry;
+ this.messageReadChunkSize = messageReadChunkSize;
+ this.expungeChunkSize = expungeChunkSize;
+ this.flagsUpdateMessageIdMaxRetry = flagsUpdateMessageIdMaxRetry;
+ this.flagsUpdateMessageMaxRetry = flagsUpdateMessageMaxRetry;
+ this.modSeqMaxRetry = modSeqMaxRetry;
+ this.uidMaxRetry = uidMaxRetry;
+ this.fetchNextPageInAdvanceRow = fetchNextPageInAdvanceRow;
+ this.flagsUpdateChunkSize = flagsUpdateChunkSize;
+ }
+
+ public int getFlagsUpdateChunkSize() {
+ return flagsUpdateChunkSize;
+ }
+
+ public int getAclMaxRetry() {
+ return aclMaxRetry;
+ }
+
+ public int getMessageReadChunkSize() {
+ return messageReadChunkSize;
+ }
+
+ public int getExpungeChunkSize() {
+ return expungeChunkSize;
+ }
+
+ public int getFlagsUpdateMessageIdMaxRetry() {
+ return flagsUpdateMessageIdMaxRetry;
+ }
+
+ public int getFlagsUpdateMessageMaxRetry() {
+ return flagsUpdateMessageMaxRetry;
+ }
+
+ public int getModSeqMaxRetry() {
+ return modSeqMaxRetry;
+ }
+
+ public int getUidMaxRetry() {
+ return uidMaxRetry;
+ }
+
+ public int getFetchNextPageInAdvanceRow() {
+ return fetchNextPageInAdvanceRow;
+ }
+
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof CassandraConfiguration) {
+ CassandraConfiguration that = (CassandraConfiguration) o;
+
+ return Objects.equals(this.aclMaxRetry, that.aclMaxRetry)
+ && Objects.equals(this.messageReadChunkSize, that.messageReadChunkSize)
+ && Objects.equals(this.expungeChunkSize, that.expungeChunkSize)
+ && Objects.equals(this.flagsUpdateMessageIdMaxRetry, that.flagsUpdateMessageIdMaxRetry)
+ && Objects.equals(this.flagsUpdateMessageMaxRetry, that.flagsUpdateMessageMaxRetry)
+ && Objects.equals(this.modSeqMaxRetry, that.modSeqMaxRetry)
+ && Objects.equals(this.uidMaxRetry, that.uidMaxRetry)
+ && Objects.equals(this.flagsUpdateChunkSize, that.flagsUpdateChunkSize)
+ && Objects.equals(this.fetchNextPageInAdvanceRow, that.fetchNextPageInAdvanceRow);
+ }
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(aclMaxRetry, messageReadChunkSize, expungeChunkSize, flagsUpdateMessageIdMaxRetry,
+ flagsUpdateMessageMaxRetry, modSeqMaxRetry, uidMaxRetry, fetchNextPageInAdvanceRow, flagsUpdateChunkSize);
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("aclMaxRetry", aclMaxRetry)
+ .add("messageReadChunkSize", messageReadChunkSize)
+ .add("expungeChunkSize", expungeChunkSize)
+ .add("flagsUpdateMessageIdMaxRetry", flagsUpdateMessageIdMaxRetry)
+ .add("flagsUpdateMessageMaxRetry", flagsUpdateMessageMaxRetry)
+ .add("modSeqMaxRetry", modSeqMaxRetry)
+ .add("fetchNextPageInAdvanceRow", fetchNextPageInAdvanceRow)
+ .add("flagsUpdateChunkSize", flagsUpdateChunkSize)
+ .add("uidMaxRetry", uidMaxRetry)
+ .toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
index 1732dd2..adef1c0 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
@@ -22,22 +22,35 @@ package org.apache.james.backends.cassandra.utils;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
+
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
public class CassandraUtils {
- private static final int FETCH_NEXT_PAGE_ADVANCE_IN_ROW = 100;
+ public static final CassandraUtils DEFAULT_CASSANDRA_UTILS = new CassandraUtils(CassandraConfiguration.DEFAULT_CONFIGURATION);
+
+ private final CassandraConfiguration cassandraConfiguration;
+
+ public CassandraUtils(CassandraConfiguration cassandraConfiguration) {
+ this.cassandraConfiguration = cassandraConfiguration;
+ }
- public static Stream<Row> convertToStream(ResultSet resultSet) {
+ public Stream<Row> convertToStream(ResultSet resultSet) {
return StreamSupport.stream(resultSet.spliterator(), true)
.peek(row -> ensureFetchedNextPage(resultSet));
}
- private static void ensureFetchedNextPage(ResultSet resultSet) {
- if (resultSet.getAvailableWithoutFetching() == FETCH_NEXT_PAGE_ADVANCE_IN_ROW && !resultSet.isFullyFetched()) {
+ private void ensureFetchedNextPage(ResultSet resultSet) {
+ if (fetchNeeded(resultSet)) {
resultSet.fetchMoreResults();
}
}
+ private boolean fetchNeeded(ResultSet resultSet) {
+ return resultSet.getAvailableWithoutFetching() == cassandraConfiguration.getFetchNextPageInAdvanceRow()
+ && !resultSet.isFullyFetched();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
new file mode 100644
index 0000000..dec62ea
--- /dev/null
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
@@ -0,0 +1,225 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.backends.cassandra;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+
+public class CassandraConfigurationTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void cassandraConfigurationShouldRespectBeanContract() {
+ EqualsVerifier.forClass(CassandraConfiguration.class).verify();
+ }
+
+ @Test
+ public void defaultBuilderShouldConstructDefaultConfiguration() {
+ assertThat(CassandraConfiguration.builder().build())
+ .isEqualTo(CassandraConfiguration.DEFAULT_CONFIGURATION);
+ }
+
+ @Test
+ public void aclMaxRetryShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .aclMaxRetry(-1);
+ }
+
+ @Test
+ public void aclMaxRetryShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .aclMaxRetry(0);
+ }
+
+ @Test
+ public void expungeChunkSizeShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .expungeChunkSize(-1);
+ }
+
+ @Test
+ public void expungeChunkSizeShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .expungeChunkSize(0);
+ }
+
+ @Test
+ public void messageReadChunkSizeShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .messageReadChunkSize(-1);
+ }
+
+ @Test
+ public void messageReadChunkSizeShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .messageReadChunkSize(0);
+ }
+
+ @Test
+ public void flagsUpdateChunkSizeShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .flagsUpdateChunkSize(-1);
+ }
+
+ @Test
+ public void flagsUpdateChunkSizeShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .flagsUpdateChunkSize(0);
+ }
+
+ @Test
+ public void flagsUpdateMessageIdMaxRetryShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .flagsUpdateMessageIdMaxRetry(-1);
+ }
+
+ @Test
+ public void flagsUpdateMessageIdMaxRetryShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .flagsUpdateMessageIdMaxRetry(0);
+ }
+
+ @Test
+ public void flagsUpdateMessageMaxRetryShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .flagsUpdateMessageMaxRetry(-1);
+ }
+
+ @Test
+ public void flagsUpdateMessageMaxRetryShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .flagsUpdateMessageMaxRetry(0);
+ }
+
+ @Test
+ public void fetchNextPageInAdvanceRowShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .fetchNextPageInAdvanceRow(-1);
+ }
+
+ @Test
+ public void fetchNextPageInAdvanceRowShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .fetchNextPageInAdvanceRow(0);
+ }
+
+ @Test
+ public void modSeqMaxRetryShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .modSeqMaxRetry(-1);
+ }
+
+ @Test
+ public void modSeqMaxRetryShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .modSeqMaxRetry(0);
+ }
+
+ @Test
+ public void uidMaxRetryShouldThrowOnNegativeValue() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .uidMaxRetry(-1);
+ }
+
+ @Test
+ public void uidMaxRetryShouldThrowOnZero() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ CassandraConfiguration.builder()
+ .uidMaxRetry(0);
+ }
+
+ @Test
+ public void builderShouldCreateTheRightObject() {
+ int aclMaxRetry = 1;
+ int modSeqMaxRetry = 2;
+ int uidMaxRetry = 3;
+ int fetchNextPageInAdvanceRow = 4;
+ int flagsUpdateMessageMaxRetry = 5;
+ int flagsUpdateMessageIdMaxRetry = 6;
+ int flagsUpdateChunkSize = 7;
+ int messageReadChunkSize = 8;
+ int expungeChunkSize = 9;
+
+ CassandraConfiguration configuration = CassandraConfiguration.builder()
+ .aclMaxRetry(aclMaxRetry)
+ .modSeqMaxRetry(modSeqMaxRetry)
+ .uidMaxRetry(uidMaxRetry)
+ .fetchNextPageInAdvanceRow(fetchNextPageInAdvanceRow)
+ .flagsUpdateMessageMaxRetry(flagsUpdateMessageMaxRetry)
+ .flagsUpdateMessageIdMaxRetry(flagsUpdateMessageIdMaxRetry)
+ .flagsUpdateChunkSize(flagsUpdateChunkSize)
+ .messageReadChunkSize(messageReadChunkSize)
+ .expungeChunkSize(expungeChunkSize)
+ .build();
+
+ assertThat(configuration.getAclMaxRetry()).isEqualTo(aclMaxRetry);
+ assertThat(configuration.getModSeqMaxRetry()).isEqualTo(modSeqMaxRetry);
+ assertThat(configuration.getUidMaxRetry()).isEqualTo(uidMaxRetry);
+ assertThat(configuration.getFetchNextPageInAdvanceRow()).isEqualTo(fetchNextPageInAdvanceRow);
+ assertThat(configuration.getFlagsUpdateMessageMaxRetry()).isEqualTo(flagsUpdateMessageMaxRetry);
+ assertThat(configuration.getFlagsUpdateMessageIdMaxRetry()).isEqualTo(flagsUpdateMessageIdMaxRetry);
+ assertThat(configuration.getFlagsUpdateChunkSize()).isEqualTo(flagsUpdateChunkSize);
+ assertThat(configuration.getMessageReadChunkSize()).isEqualTo(messageReadChunkSize);
+ assertThat(configuration.getExpungeChunkSize()).isEqualTo(expungeChunkSize);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
index 36f536a..dc0d622 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
@@ -20,8 +20,9 @@
package org.apache.james.mailbox.cassandra;
import javax.inject.Inject;
-import javax.inject.Named;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.mail.CassandraAnnotationMapper;
import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
@@ -59,8 +60,6 @@ import com.datastax.driver.core.Session;
*
*/
public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFactory {
- public static final Integer DEFAULT_MAX_RETRY = 1000;
-
private final Session session;
private final CassandraUidProvider uidProvider;
private final CassandraModSeqProvider modSeqProvider;
@@ -74,15 +73,16 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
private final CassandraMailboxPathDAO mailboxPathDAO;
private final CassandraFirstUnseenDAO firstUnseenDAO;
private final CassandraApplicableFlagDAO applicableFlagDAO;
+ private CassandraUtils cassandraUtils;
+ private CassandraConfiguration cassandraConfiguration;
private final CassandraDeletedMessageDAO deletedMessageDAO;
- private int maxRetry;
@Inject
public CassandraMailboxSessionMapperFactory(CassandraUidProvider uidProvider, CassandraModSeqProvider modSeqProvider, Session session,
CassandraMessageDAO messageDAO, CassandraMessageIdDAO messageIdDAO, CassandraMessageIdToImapUidDAO imapUidDAO,
CassandraMailboxCounterDAO mailboxCounterDAO, CassandraMailboxRecentsDAO mailboxRecentsDAO, CassandraMailboxDAO mailboxDAO,
CassandraMailboxPathDAO mailboxPathDAO, CassandraFirstUnseenDAO firstUnseenDAO, CassandraApplicableFlagDAO applicableFlagDAO,
- CassandraDeletedMessageDAO deletedMessageDAO, @Named(CassandraMailboxDAO.MAX_ACL_RETRY) Integer maxRetry) {
+ CassandraDeletedMessageDAO deletedMessageDAO, CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) {
this.uidProvider = uidProvider;
this.modSeqProvider = modSeqProvider;
this.session = session;
@@ -96,13 +96,14 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
this.firstUnseenDAO = firstUnseenDAO;
this.deletedMessageDAO = deletedMessageDAO;
this.applicableFlagDAO = applicableFlagDAO;
+ this.cassandraUtils = cassandraUtils;
+ this.cassandraConfiguration = cassandraConfiguration;
this.indexTableHandler = new CassandraIndexTableHandler(
mailboxRecentsDAO,
mailboxCounterDAO,
firstUnseenDAO,
applicableFlagDAO,
deletedMessageDAO);
- this.maxRetry = maxRetry;
}
public CassandraMailboxSessionMapperFactory(
@@ -121,7 +122,8 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
CassandraDeletedMessageDAO deletedMesageDAO) {
this(uidProvider, modSeqProvider, session, messageDAO, messageIdDAO, imapUidDAO, mailboxCounterDAO,
- mailboxRecentsDAO, mailboxDAO, mailboxPathDAO, firstUnseenDAO, applicableFlagDAO, deletedMesageDAO, DEFAULT_MAX_RETRY);
+ mailboxRecentsDAO, mailboxDAO, mailboxPathDAO, firstUnseenDAO, applicableFlagDAO, deletedMesageDAO,
+ CassandraUtils.DEFAULT_CASSANDRA_UTILS, CassandraConfiguration.DEFAULT_CONFIGURATION);
}
@Override
@@ -130,7 +132,6 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
uidProvider,
modSeqProvider,
null,
- maxRetry,
(CassandraAttachmentMapper) createAttachmentMapper(mailboxSession),
messageDAO,
messageIdDAO,
@@ -140,19 +141,20 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
applicableFlagDAO,
indexTableHandler,
firstUnseenDAO,
- deletedMessageDAO);
+ deletedMessageDAO,
+ cassandraConfiguration);
}
@Override
public MessageIdMapper createMessageIdMapper(MailboxSession mailboxSession) throws MailboxException {
return new CassandraMessageIdMapper(getMailboxMapper(mailboxSession), mailboxDAO,
(CassandraAttachmentMapper) getAttachmentMapper(mailboxSession),
- imapUidDAO, messageIdDAO, messageDAO, indexTableHandler, modSeqProvider, mailboxSession);
+ imapUidDAO, messageIdDAO, messageDAO, indexTableHandler, modSeqProvider, mailboxSession, cassandraConfiguration);
}
@Override
public MailboxMapper createMailboxMapper(MailboxSession mailboxSession) {
- return new CassandraMailboxMapper(session, mailboxDAO, mailboxPathDAO, maxRetry);
+ return new CassandraMailboxMapper(session, mailboxDAO, mailboxPathDAO, cassandraConfiguration);
}
@Override
@@ -162,7 +164,7 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
@Override
public SubscriptionMapper createSubscriptionMapper(MailboxSession mailboxSession) {
- return new CassandraSubscriptionMapper(session);
+ return new CassandraSubscriptionMapper(session, cassandraUtils);
}
public ModSeqProvider getModSeqProvider() {
@@ -180,6 +182,6 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
@Override
public AnnotationMapper createAnnotationMapper(MailboxSession mailboxSession)
throws MailboxException {
- return new CassandraAnnotationMapper(session);
+ return new CassandraAnnotationMapper(session, cassandraUtils);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegisterMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegisterMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegisterMapper.java
index fd648f5..d1b83ef 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegisterMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegisterMapper.java
@@ -44,11 +44,12 @@ public class CassandraMailboxPathRegisterMapper implements DistantMailboxPathReg
private final Session session;
private final CassandraTypesProvider typesProvider;
private final int cassandraTimeOutInS;
+ private final CassandraUtils cassandraUtils;
private final PreparedStatement insertStatement;
private final PreparedStatement deleteStatement;
private final PreparedStatement selectStatement;
- public CassandraMailboxPathRegisterMapper(Session session, CassandraTypesProvider typesProvider, int cassandraTimeOutInS) {
+ public CassandraMailboxPathRegisterMapper(Session session, CassandraTypesProvider typesProvider, CassandraUtils cassandraUtils, int cassandraTimeOutInS) {
this.session = session;
this.typesProvider = typesProvider;
this.cassandraTimeOutInS = cassandraTimeOutInS;
@@ -61,11 +62,12 @@ public class CassandraMailboxPathRegisterMapper implements DistantMailboxPathReg
.and(eq(CassandraMailboxPathRegisterTable.TOPIC, bindMarker())));
this.selectStatement = session.prepare(select().from(CassandraMailboxPathRegisterTable.TABLE_NAME)
.where(eq(CassandraMailboxPathRegisterTable.MAILBOX_PATH, bindMarker())));
+ this.cassandraUtils = cassandraUtils;
}
@Override
public Set<Topic> getTopics(MailboxPath mailboxPath) {
- return CassandraUtils.convertToStream(session.execute(selectStatement.bind(buildUDTFromMailboxPath(mailboxPath))))
+ return cassandraUtils.convertToStream(session.execute(selectStatement.bind(buildUDTFromMailboxPath(mailboxPath))))
.map(row -> new Topic(row.getString(CassandraMailboxPathRegisterTable.TOPIC)))
.collect(Collectors.toSet());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
index 68698ca..7e1626d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
@@ -29,6 +29,7 @@ import java.io.IOException;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraConstants;
import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
@@ -66,17 +67,16 @@ public class CassandraACLMapper {
private static final Logger LOG = LoggerFactory.getLogger(CassandraACLMapper.class);
- public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, int maxRetry) {
- this(cassandraId, session, cassandraAsyncExecutor, maxRetry, () -> {});
+ public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, CassandraConfiguration cassandraConfiguration) {
+ this(cassandraId, session, cassandraAsyncExecutor, cassandraConfiguration, () -> {});
}
- public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, int maxRetry, CodeInjector codeInjector) {
- Preconditions.checkArgument(maxRetry > 0);
+ public CassandraACLMapper(CassandraId cassandraId, Session session, CassandraAsyncExecutor cassandraAsyncExecutor, CassandraConfiguration cassandraConfiguration, CodeInjector codeInjector) {
Preconditions.checkArgument(cassandraId != null);
this.cassandraId = cassandraId;
this.session = session;
this.executor = cassandraAsyncExecutor;
- this.maxRetry = maxRetry;
+ this.maxRetry = cassandraConfiguration.getAclMaxRetry();
this.codeInjector = codeInjector;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
index bf8da4f..073227b 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
@@ -28,13 +28,12 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.lte;
import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Ascii;
-import com.google.common.base.Optional;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.CassandraId;
import org.apache.james.mailbox.cassandra.table.CassandraAnnotationTable;
@@ -47,26 +46,30 @@ import org.apache.james.mailbox.store.transaction.NonTransactionalMapper;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.querybuilder.Select;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Ascii;
import com.google.common.base.Preconditions;
public class CassandraAnnotationMapper extends NonTransactionalMapper implements AnnotationMapper {
private final Session session;
+ private final CassandraUtils cassandraUtils;
- public CassandraAnnotationMapper(Session session) {
+ public CassandraAnnotationMapper(Session session, CassandraUtils cassandraUtils) {
this.session = session;
+ this.cassandraUtils = cassandraUtils;
}
public List<MailboxAnnotation> getAllAnnotations(MailboxId mailboxId) {
CassandraId cassandraId = (CassandraId)mailboxId;
- return CassandraUtils.convertToStream(session.execute(getStoredAnnotationsQuery(cassandraId)))
+ return cassandraUtils.convertToStream(session.execute(getStoredAnnotationsQuery(cassandraId)))
.map(this::toAnnotation)
.collect(Collectors.toList());
}
public List<MailboxAnnotation> getAnnotationsByKeys(MailboxId mailboxId, Set<MailboxAnnotationKey> keys) {
CassandraId cassandraId = (CassandraId)mailboxId;
- return CassandraUtils.convertToStream(session.execute(getStoredAnnotationsQueryForKeys(cassandraId, keys)))
+ return cassandraUtils.convertToStream(session.execute(getStoredAnnotationsQueryForKeys(cassandraId, keys)))
.map(this::toAnnotation)
.collect(Collectors.toList());
}
@@ -102,8 +105,11 @@ public class CassandraAnnotationMapper extends NonTransactionalMapper implements
@Override
public boolean exist(MailboxId mailboxId, MailboxAnnotation mailboxAnnotation) {
CassandraId cassandraId = (CassandraId)mailboxId;
- Optional<Row> row = Optional.fromNullable(session.execute(getStoredAnnotationsQueryByKey(cassandraId, mailboxAnnotation.getKey().asString()))
- .one());
+ Optional<Row> row = Optional.ofNullable(
+ session.execute(
+ getStoredAnnotationsQueryByKey(cassandraId,
+ mailboxAnnotation.getKey().asString()))
+ .one());
return row.isPresent();
}
@@ -146,13 +152,13 @@ public class CassandraAnnotationMapper extends NonTransactionalMapper implements
}
private Stream<MailboxAnnotation> getAnnotationsByKeyWithAllDepth(CassandraId mailboxId, MailboxAnnotationKey key) {
- return CassandraUtils.convertToStream(session.execute(getStoredAnnotationsQueryLikeKey(mailboxId, key.asString())))
+ return cassandraUtils.convertToStream(session.execute(getStoredAnnotationsQueryLikeKey(mailboxId, key.asString())))
.map(this::toAnnotation)
.filter(annotation -> key.isAncestorOrIsEqual(annotation.getKey()));
}
private Stream<MailboxAnnotation> getAnnotationsByKeyWithOneDepth(CassandraId mailboxId, MailboxAnnotationKey key) {
- return CassandraUtils.convertToStream(session.execute(getStoredAnnotationsQueryLikeKey(mailboxId, key.asString())))
+ return cassandraUtils.convertToStream(session.execute(getStoredAnnotationsQueryLikeKey(mailboxId, key.asString())))
.map(this::toAnnotation)
.filter(annotation -> key.isParentOrIsEqual(annotation.getKey()));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
index 10dabc6..c86d1e0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
@@ -43,6 +43,8 @@ import org.apache.james.mailbox.cassandra.CassandraId;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
+import com.google.common.annotations.VisibleForTesting;
+
import org.apache.james.mailbox.model.MessageRange;
public class CassandraDeletedMessageDAO {
@@ -57,9 +59,10 @@ public class CassandraDeletedMessageDAO {
private final PreparedStatement selectOneUidStatement;
private final PreparedStatement selectBetweenUidStatement;
private final PreparedStatement selectFromUidStatement;
+ private final CassandraUtils cassandraUtils;
@Inject
- public CassandraDeletedMessageDAO(Session session) {
+ public CassandraDeletedMessageDAO(Session session, CassandraUtils cassandraUtils) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.addStatement = prepareAddStatement(session);
this.deleteStatement = prepareDeleteStatement(session);
@@ -67,6 +70,12 @@ public class CassandraDeletedMessageDAO {
this.selectOneUidStatement = prepareOneUidStatement(session);
this.selectBetweenUidStatement = prepareBetweenUidStatement(session);
this.selectFromUidStatement = prepareFromUidStatement(session);
+ this.cassandraUtils = cassandraUtils;
+ }
+
+ @VisibleForTesting
+ public CassandraDeletedMessageDAO(Session session) {
+ this(session, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
}
private PreparedStatement prepareAllUidStatement(Session session) {
@@ -125,7 +134,7 @@ public class CassandraDeletedMessageDAO {
public CompletableFuture<Stream<MessageUid>> retrieveDeletedMessage(CassandraId cassandraId, MessageRange range) {
return retrieveResultSetOfDeletedMessage(cassandraId, range)
- .thenApply(CassandraDeletedMessageDAO::resultSetToStream);
+ .thenApply(this::resultSetToStream);
}
private CompletableFuture<ResultSet> retrieveResultSetOfDeletedMessage(CassandraId cassandraId, MessageRange range) {
@@ -143,8 +152,8 @@ public class CassandraDeletedMessageDAO {
throw new UnsupportedOperationException();
}
- private static Stream<MessageUid> resultSetToStream(ResultSet resultSet) {
- return CassandraUtils.convertToStream(resultSet)
+ private Stream<MessageUid> resultSetToStream(ResultSet resultSet) {
+ return cassandraUtils.convertToStream(resultSet)
.map(row ->
MessageUid.of(row.getLong(UID)));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
index 3f6f86c..ca6cfd7 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
@@ -39,6 +39,7 @@ import java.util.stream.Stream;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
@@ -55,14 +56,15 @@ import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.querybuilder.QueryBuilder;
+import com.google.common.annotations.VisibleForTesting;
public class CassandraMailboxDAO {
- public static final String MAX_ACL_RETRY = "maxAclRetry";
private final CassandraAsyncExecutor executor;
private final MailboxBaseTupleUtil mailboxBaseTupleUtil;
private final Session session;
- private final int maxAclRetry;
+ private final CassandraUtils cassandraUtils;
+ private CassandraConfiguration cassandraConfiguration;
private final PreparedStatement readStatement;
private final PreparedStatement listStatement;
private final PreparedStatement deleteStatement;
@@ -70,7 +72,7 @@ public class CassandraMailboxDAO {
private final PreparedStatement updateStatement;
@Inject
- public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider, @Named(MAX_ACL_RETRY) Integer maxAclRetry) {
+ public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider, CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) {
this.executor = new CassandraAsyncExecutor(session);
this.mailboxBaseTupleUtil = new MailboxBaseTupleUtil(typesProvider);
this.session = session;
@@ -79,7 +81,13 @@ public class CassandraMailboxDAO {
this.deleteStatement = prepareDelete(session);
this.listStatement = prepareList(session);
this.readStatement = prepareRead(session);
- this.maxAclRetry = maxAclRetry;
+ this.cassandraUtils = cassandraUtils;
+ this.cassandraConfiguration = cassandraConfiguration;
+ }
+
+ @VisibleForTesting
+ public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider) {
+ this(session, typesProvider, CassandraUtils.DEFAULT_CASSANDRA_UTILS, CassandraConfiguration.DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareInsert(Session session) {
@@ -140,7 +148,7 @@ public class CassandraMailboxDAO {
}
private CompletableFuture<Optional<SimpleMailbox>> mailbox(CassandraId cassandraId, CompletableFuture<Optional<Row>> rowFuture) {
- CompletableFuture<MailboxACL> aclCompletableFuture = new CassandraACLMapper(cassandraId, session, executor, maxAclRetry).getACL();
+ CompletableFuture<MailboxACL> aclCompletableFuture = new CassandraACLMapper(cassandraId, session, executor, cassandraConfiguration).getACL();
return rowFuture.thenApply(rowOptional -> rowOptional.map(this::mailboxFromRow))
.thenApply(mailboxOptional -> {
mailboxOptional.ifPresent(mailbox -> mailbox.setMailboxId(cassandraId));
@@ -163,7 +171,7 @@ public class CassandraMailboxDAO {
public CompletableFuture<Stream<SimpleMailbox>> retrieveAllMailboxes() {
return executor.execute(listStatement.bind())
- .thenApply(CassandraUtils::convertToStream)
+ .thenApply(cassandraUtils::convertToStream)
.thenApply(stream -> stream.map(this::toMailboxWithId))
.thenCompose(stream -> CompletableFutureUtil.allOf(stream.map(this::toMailboxWithAclFuture)));
}
@@ -176,7 +184,7 @@ public class CassandraMailboxDAO {
private CompletableFuture<SimpleMailbox> toMailboxWithAclFuture(SimpleMailbox mailbox) {
CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
- return new CassandraACLMapper(cassandraId, session, executor, maxAclRetry).getACL()
+ return new CassandraACLMapper(cassandraId, session, executor, cassandraConfiguration).getACL()
.thenApply(acl -> {
mailbox.setACL(acl);
return mailbox;
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index 6c0d484..ef0362a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -29,6 +29,7 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.cassandra.CassandraId;
import org.apache.james.mailbox.exception.MailboxException;
@@ -55,18 +56,18 @@ public class CassandraMailboxMapper implements MailboxMapper {
public static final String VALUES_MAY_NOT_BE_LARGER_THAN_64_K = "Index expression values may not be larger than 64K";
public static final String CLUSTERING_COLUMNS_IS_TOO_LONG = "The sum of all clustering columns is too long";
- private final int maxRetry;
private final CassandraAsyncExecutor cassandraAsyncExecutor;
private final CassandraMailboxPathDAO mailboxPathDAO;
private final CassandraMailboxDAO mailboxDAO;
private final Session session;
+ private final CassandraConfiguration cassandraConfiguration;
- public CassandraMailboxMapper(Session session, CassandraMailboxDAO mailboxDAO, CassandraMailboxPathDAO mailboxPathDAO, int maxRetry) {
- this.maxRetry = maxRetry;
+ public CassandraMailboxMapper(Session session, CassandraMailboxDAO mailboxDAO, CassandraMailboxPathDAO mailboxPathDAO, CassandraConfiguration cassandraConfiguration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.mailboxDAO = mailboxDAO;
this.mailboxPathDAO = mailboxPathDAO;
this.session = session;
+ this.cassandraConfiguration = cassandraConfiguration;
}
@Override
@@ -193,7 +194,7 @@ public class CassandraMailboxMapper implements MailboxMapper {
@Override
public void updateACL(Mailbox mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
- new CassandraACLMapper(cassandraId, session, cassandraAsyncExecutor, maxRetry).updateACL(mailboxACLCommand);
+ new CassandraACLMapper(cassandraId, session, cassandraAsyncExecutor, cassandraConfiguration).updateACL(mailboxACLCommand);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
index 552e010..15d4a94 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
@@ -47,6 +47,7 @@ import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.querybuilder.QueryBuilder;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Objects;
public class CassandraMailboxPathDAO {
@@ -87,21 +88,28 @@ public class CassandraMailboxPathDAO {
private final CassandraAsyncExecutor cassandraAsyncExecutor;
private final MailboxBaseTupleUtil mailboxBaseTupleUtil;
+ private final CassandraUtils cassandraUtils;
private final PreparedStatement delete;
private final PreparedStatement insert;
private final PreparedStatement select;
private final PreparedStatement selectAll;
@Inject
- public CassandraMailboxPathDAO(Session session, CassandraTypesProvider typesProvider) {
+ public CassandraMailboxPathDAO(Session session, CassandraTypesProvider typesProvider, CassandraUtils cassandraUtils) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.mailboxBaseTupleUtil = new MailboxBaseTupleUtil(typesProvider);
+ this.cassandraUtils = cassandraUtils;
this.insert = prepareInsert(session);
this.delete = prepareDelete(session);
this.select = prepareSelect(session);
this.selectAll = prepareSelectAll(session);
}
+ @VisibleForTesting
+ public CassandraMailboxPathDAO(Session session, CassandraTypesProvider typesProvider) {
+ this(session, typesProvider, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ }
+
private PreparedStatement prepareDelete(Session session) {
return session.prepare(QueryBuilder.delete()
.from(TABLE_NAME)
@@ -145,7 +153,7 @@ public class CassandraMailboxPathDAO {
return cassandraAsyncExecutor.execute(
selectAll.bind()
.setUDTValue(NAMESPACE_AND_USER, mailboxBaseTupleUtil.createMailboxBaseUDT(namespace, user)))
- .thenApply(resultSet -> CassandraUtils.convertToStream(resultSet).map(this::fromRowToCassandraIdAndPath));
+ .thenApply(resultSet -> cassandraUtils.convertToStream(resultSet).map(this::fromRowToCassandraIdAndPath));
}
private CassandraIdAndPath fromRowToCassandraIdAndPath(Row row) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
index f4eddf9..f3264f4 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.cassandra.table.CassandraMailboxRecentsTable;
import com.datastax.driver.core.BoundStatement;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
+import com.google.common.annotations.VisibleForTesting;
public class CassandraMailboxRecentsDAO {
@@ -46,13 +47,20 @@ public class CassandraMailboxRecentsDAO {
private final PreparedStatement readStatement;
private final PreparedStatement deleteStatement;
private final PreparedStatement addStatement;
+ private CassandraUtils cassandraUtils;
@Inject
- public CassandraMailboxRecentsDAO(Session session) {
+ public CassandraMailboxRecentsDAO(Session session, CassandraUtils cassandraUtils) {
cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
readStatement = createReadStatement(session);
deleteStatement = createDeleteStatement(session);
addStatement = createAddStatement(session);
+ this.cassandraUtils = cassandraUtils;
+ }
+
+ @VisibleForTesting
+ public CassandraMailboxRecentsDAO(Session session) {
+ this(session, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
}
private PreparedStatement createReadStatement(Session session) {
@@ -79,7 +87,7 @@ public class CassandraMailboxRecentsDAO {
public CompletableFuture<Stream<MessageUid>> getRecentMessageUidsInMailbox(CassandraId mailboxId) {
return cassandraAsyncExecutor.execute(bindWithMailbox(mailboxId, readStatement))
- .thenApply(CassandraUtils::convertToStream)
+ .thenApply(cassandraUtils::convertToStream)
.thenApply(stream -> stream.map(row -> row.getLong(CassandraMailboxRecentsTable.RECENT_MESSAGE_UID)))
.thenApply(stream -> stream.map(MessageUid::of));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
index b5101c3..9dd3d21 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
@@ -55,6 +55,7 @@ import javax.mail.Flags;
import javax.mail.util.SharedByteArrayInputStream;
import org.apache.commons.lang3.tuple.Pair;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.MessageUid;
@@ -93,8 +94,6 @@ import com.google.common.io.ByteStreams;
import com.google.common.primitives.Bytes;
public class CassandraMessageDAO {
-
- public static final int CHUNK_SIZE_ON_READ = 100;
private final CassandraAsyncExecutor cassandraAsyncExecutor;
private final CassandraTypesProvider typesProvider;
private final PreparedStatement insert;
@@ -103,9 +102,10 @@ public class CassandraMessageDAO {
private final PreparedStatement selectHeaders;
private final PreparedStatement selectFields;
private final PreparedStatement selectBody;
+ private final CassandraConfiguration cassandraConfiguration;
@Inject
- public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider) {
+ public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider, CassandraConfiguration cassandraConfiguration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.typesProvider = typesProvider;
this.insert = prepareInsert(session);
@@ -114,6 +114,12 @@ public class CassandraMessageDAO {
this.selectHeaders = prepareSelect(session, HEADERS);
this.selectFields = prepareSelect(session, FIELDS);
this.selectBody = prepareSelect(session, BODY);
+ this.cassandraConfiguration = cassandraConfiguration;
+ }
+
+ @VisibleForTesting
+ public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider) {
+ this(session, typesProvider, CassandraConfiguration.DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareSelect(Session session, String[] fields) {
@@ -193,7 +199,7 @@ public class CassandraMessageDAO {
public CompletableFuture<Stream<Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>>>> retrieveMessages(List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Optional<Integer> limit) {
return CompletableFutureUtil.chainAll(
getLimitedIdStream(messageIds.stream().distinct(), limit)
- .collect(JamesCollectors.chunker(CHUNK_SIZE_ON_READ)),
+ .collect(JamesCollectors.chunker(cassandraConfiguration.getMessageReadChunkSize())),
ids -> FluentFutureStream.of(
ids.stream()
.map(id -> retrieveRow(id, fetchType)
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
index e7d5a34..6f9c265 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
@@ -65,6 +65,7 @@ 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;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableSet;
public class CassandraMessageIdDAO {
@@ -80,10 +81,11 @@ public class CassandraMessageIdDAO {
private final PreparedStatement selectAllUids;
private final PreparedStatement selectUidGte;
private final PreparedStatement selectUidRange;
+ private CassandraUtils cassandraUtils;
private final PreparedStatement update;
@Inject
- public CassandraMessageIdDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
+ public CassandraMessageIdDAO(Session session, CassandraMessageId.Factory messageIdFactory, CassandraUtils cassandraUtils) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.messageIdFactory = messageIdFactory;
this.delete = prepareDelete(session);
@@ -93,6 +95,12 @@ public class CassandraMessageIdDAO {
this.selectAllUids = prepareSelectAllUids(session);
this.selectUidGte = prepareSelectUidGte(session);
this.selectUidRange = prepareSelectUidRange(session);
+ this.cassandraUtils = cassandraUtils;
+ }
+
+ @VisibleForTesting
+ public CassandraMessageIdDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
+ this(session, messageIdFactory, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
}
private PreparedStatement prepareDelete(Session session) {
@@ -253,7 +261,7 @@ public class CassandraMessageIdDAO {
private CompletableFuture<Stream<ComposedMessageIdWithMetaData>> toMessageIds(CompletableFuture<ResultSet> completableFuture) {
return completableFuture
- .thenApply(resultSet -> CassandraUtils.convertToStream(resultSet)
+ .thenApply(resultSet -> cassandraUtils.convertToStream(resultSet)
.map(this::fromRowToComposedMessageIdWithFlags));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index bf3dc1d..91e7b3a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -29,6 +29,7 @@ import java.util.stream.Stream;
import javax.mail.Flags;
import org.apache.commons.lang3.tuple.Pair;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
import org.apache.james.backends.cassandra.utils.LightweightTransactionException;
import org.apache.james.mailbox.MailboxSession;
@@ -60,8 +61,6 @@ import com.github.steveash.guavate.Guavate;
import com.google.common.base.Throwables;
public class CassandraMessageIdMapper implements MessageIdMapper {
-
- private static final int MAX_RETRY = 1000;
private static final Logger LOGGER = LoggerFactory.getLogger(CassandraMessageIdMapper.class);
private final MailboxMapper mailboxMapper;
@@ -73,10 +72,11 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
private final ModSeqProvider modSeqProvider;
private final MailboxSession mailboxSession;
private final AttachmentLoader attachmentLoader;
+ private final CassandraConfiguration cassandraConfiguration;
public CassandraMessageIdMapper(MailboxMapper mailboxMapper, CassandraMailboxDAO mailboxDAO, CassandraAttachmentMapper attachmentMapper,
CassandraMessageIdToImapUidDAO imapUidDAO, CassandraMessageIdDAO messageIdDAO, CassandraMessageDAO messageDAO,
- CassandraIndexTableHandler indexTableHandler, ModSeqProvider modSeqProvider, MailboxSession mailboxSession) {
+ CassandraIndexTableHandler indexTableHandler, ModSeqProvider modSeqProvider, MailboxSession mailboxSession, CassandraConfiguration cassandraConfiguration) {
this.mailboxMapper = mailboxMapper;
this.mailboxDAO = mailboxDAO;
this.imapUidDAO = imapUidDAO;
@@ -86,6 +86,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
this.modSeqProvider = modSeqProvider;
this.mailboxSession = mailboxSession;
this.attachmentLoader = new AttachmentLoader(attachmentMapper);
+ this.cassandraConfiguration = cassandraConfiguration;
}
@Override
@@ -223,7 +224,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
private Stream<Pair<MailboxId, UpdatedFlags>> flagsUpdateWithRetry(Flags newState, MessageManager.FlagsUpdateMode updateMode, MailboxId mailboxId, MessageId messageId) {
try {
- Pair<Flags, ComposedMessageIdWithMetaData> pair = new FunctionRunnerWithRetry(MAX_RETRY)
+ Pair<Flags, ComposedMessageIdWithMetaData> pair = new FunctionRunnerWithRetry(cassandraConfiguration.getFlagsUpdateMessageIdMaxRetry())
.executeAndRetrieveObject(() -> tryFlagsUpdate(newState, updateMode, mailboxId, messageId));
ComposedMessageIdWithMetaData composedMessageIdWithMetaData = pair.getRight();
Flags oldFlags = pair.getLeft();
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
index 3e1bbbd..38a02d6 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
@@ -62,6 +62,7 @@ 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;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableSet;
public class CassandraMessageIdToImapUidDAO {
@@ -75,9 +76,10 @@ public class CassandraMessageIdToImapUidDAO {
private final PreparedStatement update;
private final PreparedStatement selectAll;
private final PreparedStatement select;
+ private CassandraUtils cassandraUtils;
@Inject
- public CassandraMessageIdToImapUidDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
+ public CassandraMessageIdToImapUidDAO(Session session, CassandraMessageId.Factory messageIdFactory, CassandraUtils cassandraUtils) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.messageIdFactory = messageIdFactory;
this.delete = prepareDelete(session);
@@ -85,6 +87,12 @@ public class CassandraMessageIdToImapUidDAO {
this.update = prepareUpdate(session);
this.selectAll = prepareSelectAll(session);
this.select = prepareSelect(session);
+ this.cassandraUtils = cassandraUtils;
+ }
+
+ @VisibleForTesting
+ public CassandraMessageIdToImapUidDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
+ this(session, messageIdFactory, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
}
private PreparedStatement prepareDelete(Session session) {
@@ -185,7 +193,7 @@ public class CassandraMessageIdToImapUidDAO {
public CompletableFuture<Stream<ComposedMessageIdWithMetaData>> retrieve(CassandraMessageId messageId, Optional<CassandraId> mailboxId) {
return selectStatement(messageId, mailboxId)
- .thenApply(resultSet -> CassandraUtils.convertToStream(resultSet)
+ .thenApply(resultSet -> cassandraUtils.convertToStream(resultSet)
.map(this::toComposedMessageIdWithMetadata));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index 2a6e74d..55bf43d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -32,6 +32,7 @@ import javax.mail.Flags;
import javax.mail.Flags.Flag;
import org.apache.commons.lang3.tuple.Pair;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.mailbox.ApplicableFlagBuilder;
import org.apache.james.mailbox.FlagsBuilder;
import org.apache.james.mailbox.MailboxSession;
@@ -67,14 +68,11 @@ public class CassandraMessageMapper implements MessageMapper {
.count(0L)
.unseen(0L)
.build();
- public static final int EXPUNGE_BATCH_SIZE = 100;
- public static final int UPDATE_FLAGS_BATCH_SIZE = 20;
public static final Logger LOGGER = LoggerFactory.getLogger(CassandraMessageMapper.class);
private final CassandraModSeqProvider modSeqProvider;
private final MailboxSession mailboxSession;
private final CassandraUidProvider uidProvider;
- private final int maxRetries;
private final CassandraMessageDAO messageDAO;
private final CassandraMessageIdDAO messageIdDAO;
private final CassandraMessageIdToImapUidDAO imapUidDAO;
@@ -85,16 +83,16 @@ public class CassandraMessageMapper implements MessageMapper {
private final CassandraFirstUnseenDAO firstUnseenDAO;
private final AttachmentLoader attachmentLoader;
private final CassandraDeletedMessageDAO deletedMessageDAO;
+ private final CassandraConfiguration cassandraConfiguration;
public CassandraMessageMapper(CassandraUidProvider uidProvider, CassandraModSeqProvider modSeqProvider,
- MailboxSession mailboxSession, int maxRetries, CassandraAttachmentMapper attachmentMapper,
+ MailboxSession mailboxSession, CassandraAttachmentMapper attachmentMapper,
CassandraMessageDAO messageDAO, CassandraMessageIdDAO messageIdDAO, CassandraMessageIdToImapUidDAO imapUidDAO,
CassandraMailboxCounterDAO mailboxCounterDAO, CassandraMailboxRecentsDAO mailboxRecentDAO, CassandraApplicableFlagDAO applicableFlagDAO,
- CassandraIndexTableHandler indexTableHandler, CassandraFirstUnseenDAO firstUnseenDAO, CassandraDeletedMessageDAO deletedMessageDAO) {
+ CassandraIndexTableHandler indexTableHandler, CassandraFirstUnseenDAO firstUnseenDAO, CassandraDeletedMessageDAO deletedMessageDAO, CassandraConfiguration cassandraConfiguration) {
this.uidProvider = uidProvider;
this.modSeqProvider = modSeqProvider;
this.mailboxSession = mailboxSession;
- this.maxRetries = maxRetries;
this.messageDAO = messageDAO;
this.messageIdDAO = messageIdDAO;
this.imapUidDAO = imapUidDAO;
@@ -105,6 +103,7 @@ public class CassandraMessageMapper implements MessageMapper {
this.attachmentLoader = new AttachmentLoader(attachmentMapper);
this.applicableFlagDAO = applicableFlagDAO;
this.deletedMessageDAO = deletedMessageDAO;
+ this.cassandraConfiguration = cassandraConfiguration;
}
@Override
@@ -230,7 +229,7 @@ public class CassandraMessageMapper implements MessageMapper {
return deletedMessageDAO.retrieveDeletedMessage(mailboxId, messageRange)
.join()
- .collect(JamesCollectors.chunker(EXPUNGE_BATCH_SIZE))
+ .collect(JamesCollectors.chunker(cassandraConfiguration.getExpungeChunkSize()))
.map(uidChunk -> expungeUidChunk(mailboxId, uidChunk))
.flatMap(CompletableFuture::join)
.collect(Guavate.toImmutableMap(MailboxMessage::getUid, SimpleMessageMetaData::new));
@@ -303,7 +302,7 @@ public class CassandraMessageMapper implements MessageMapper {
private FlagsUpdateStageResult handleUpdatesStagedRetry(CassandraId mailboxId, FlagsUpdateCalculator flagUpdateCalculator, FlagsUpdateStageResult firstResult) {
FlagsUpdateStageResult globalResult = firstResult;
int retryCount = 0;
- while (retryCount < maxRetries && globalResult.containsFailedResults()) {
+ while (retryCount < cassandraConfiguration.getFlagsUpdateMessageMaxRetry() && globalResult.containsFailedResults()) {
retryCount++;
FlagsUpdateStageResult stageResult = retryUpdatesStage(mailboxId, flagUpdateCalculator, globalResult.getFailed());
globalResult = globalResult.keepSucceded().merge(stageResult);
@@ -323,7 +322,7 @@ public class CassandraMessageMapper implements MessageMapper {
private FlagsUpdateStageResult runUpdateStage(CassandraId mailboxId, Stream<ComposedMessageIdWithMetaData> toBeUpdated, FlagsUpdateCalculator flagsUpdateCalculator) {
Long newModSeq = modSeqProvider.nextModSeq(mailboxId).join().orElseThrow(() -> new RuntimeException("ModSeq generation failed for mailbox " + mailboxId.asUuid()));
- return toBeUpdated.collect(JamesCollectors.chunker(UPDATE_FLAGS_BATCH_SIZE))
+ return toBeUpdated.collect(JamesCollectors.chunker(cassandraConfiguration.getFlagsUpdateChunkSize()))
.map(uidChunk -> performUpdatesForChunk(mailboxId, flagsUpdateCalculator, newModSeq, uidChunk))
.map(CompletableFuture::join)
.reduce(FlagsUpdateStageResult.none(), FlagsUpdateStageResult::merge);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
index 1a6a885..986fc74 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
@@ -35,6 +35,7 @@ import java.util.concurrent.CompletionException;
import javax.inject.Inject;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
import org.apache.james.mailbox.MailboxSession;
@@ -46,6 +47,7 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Supplier;
public class CassandraModSeqProvider implements ModSeqProvider {
@@ -76,7 +78,6 @@ public class CassandraModSeqProvider implements ModSeqProvider {
}
}
- private static final int DEFAULT_MAX_RETRY = 100000;
private static final ModSeq FIRST_MODSEQ = new ModSeq(0);
private final CassandraAsyncExecutor cassandraAsyncExecutor;
@@ -85,14 +86,20 @@ public class CassandraModSeqProvider implements ModSeqProvider {
private final PreparedStatement update;
private final PreparedStatement insert;
- public CassandraModSeqProvider(Session session, int maxRetry) {
+ @Inject
+ public CassandraModSeqProvider(Session session, CassandraConfiguration cassandraConfiguration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
- this.runner = new FunctionRunnerWithRetry(maxRetry);
+ this.runner = new FunctionRunnerWithRetry(cassandraConfiguration.getModSeqMaxRetry());
this.insert = prepareInsert(session);
this.update = prepareUpdate(session);
this.select = prepareSelect(session);
}
+ @VisibleForTesting
+ public CassandraModSeqProvider(Session session) {
+ this(session, CassandraConfiguration.DEFAULT_CONFIGURATION);
+ }
+
private PreparedStatement prepareInsert(Session session) {
return session.prepare(insertInto(TABLE_NAME)
.value(NEXT_MODSEQ, bindMarker(NEXT_MODSEQ))
@@ -113,10 +120,7 @@ public class CassandraModSeqProvider implements ModSeqProvider {
.where(eq(MAILBOX_ID, bindMarker(MAILBOX_ID))));
}
- @Inject
- public CassandraModSeqProvider(Session session) {
- this(session, DEFAULT_MAX_RETRY);
- }
+
@Override
public long nextModSeq(MailboxSession mailboxSession, Mailbox mailbox) throws MailboxException {
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
index 4aeb483..8f738f4 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
@@ -34,6 +34,7 @@ import java.util.concurrent.CompletableFuture;
import javax.inject.Inject;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
import org.apache.james.mailbox.MailboxSession;
@@ -47,9 +48,9 @@ import org.apache.james.util.OptionalConverter;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
+import com.google.common.annotations.VisibleForTesting;
public class CassandraUidProvider implements UidProvider {
- private static final int DEFAULT_MAX_RETRY = 100000;
private static final String CONDITION = "Condition";
private final CassandraAsyncExecutor executor;
@@ -58,14 +59,20 @@ public class CassandraUidProvider implements UidProvider {
private final PreparedStatement updateStatement;
private final PreparedStatement selectStatement;
- public CassandraUidProvider(Session session, int maxRetry) {
+ @Inject
+ public CassandraUidProvider(Session session, CassandraConfiguration cassandraConfiguration) {
this.executor = new CassandraAsyncExecutor(session);
- this.runner = new FunctionRunnerWithRetry(maxRetry);
+ this.runner = new FunctionRunnerWithRetry(cassandraConfiguration.getUidMaxRetry());
this.selectStatement = prepareSelect(session);
this.updateStatement = prepareUpdate(session);
this.insertStatement = prepareInsert(session);
}
+ @VisibleForTesting
+ public CassandraUidProvider(Session session) {
+ this(session, CassandraConfiguration.DEFAULT_CONFIGURATION);
+ }
+
private PreparedStatement prepareSelect(Session session) {
return session.prepare(select(NEXT_UID)
.from(TABLE_NAME)
@@ -86,11 +93,6 @@ public class CassandraUidProvider implements UidProvider {
.ifNotExists());
}
- @Inject
- public CassandraUidProvider(Session session) {
- this(session, DEFAULT_MAX_RETRY);
- }
-
@Override
public MessageUid nextUid(MailboxSession mailboxSession, Mailbox mailbox) throws MailboxException {
return nextUid(mailboxSession, mailbox.getMailboxId());
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
index 4f78655..a1ce340 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
@@ -42,9 +42,11 @@ import com.datastax.driver.core.querybuilder.QueryBuilder;
public class CassandraSubscriptionMapper extends NonTransactionalMapper implements SubscriptionMapper {
private final Session session;
+ private CassandraUtils cassandraUtils;
- public CassandraSubscriptionMapper(Session session) {
+ public CassandraSubscriptionMapper(Session session, CassandraUtils cassandraUtils) {
this.session = session;
+ this.cassandraUtils = cassandraUtils;
}
@Override
@@ -66,7 +68,7 @@ public class CassandraSubscriptionMapper extends NonTransactionalMapper implemen
@Override
public List<Subscription> findSubscriptionsForUser(String user) {
- return CassandraUtils.convertToStream(
+ return cassandraUtils.convertToStream(
session.execute(select(MAILBOX)
.from(TABLE_NAME)
.where(eq(USER, user))))
@@ -82,7 +84,7 @@ public class CassandraSubscriptionMapper extends NonTransactionalMapper implemen
}
public List<SimpleSubscription> list() {
- return CassandraUtils.convertToStream(
+ return cassandraUtils.convertToStream(
session.execute(select(FIELDS)
.from(TABLE_NAME)))
.map((row) -> new SimpleSubscription(row.getString(USER), row.getString(MAILBOX)))
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
index d10b7c3..c34effb 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
@@ -48,7 +48,6 @@ import com.google.common.base.Throwables;
public class CassandraMailboxManagerProvider {
private static final int LIMIT_ANNOTATIONS = 3;
private static final int LIMIT_ANNOTATION_SIZE = 30;
- public static final int MAX_ACL_RETRY = 10;
public static CassandraMailboxManager provideMailboxManager(Session session, CassandraTypesProvider cassandraTypesProvider) {
CassandraUidProvider uidProvider = new CassandraUidProvider(session);
@@ -59,7 +58,7 @@ public class CassandraMailboxManagerProvider {
CassandraMessageDAO messageDAO = new CassandraMessageDAO(session, cassandraTypesProvider);
CassandraMailboxCounterDAO mailboxCounterDAO = new CassandraMailboxCounterDAO(session);
CassandraMailboxRecentsDAO mailboxRecentsDAO = new CassandraMailboxRecentsDAO(session);
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(session, cassandraTypesProvider, MAX_ACL_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(session, cassandraTypesProvider);
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(session, cassandraTypesProvider);
CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(session);
CassandraApplicableFlagDAO applicableFlagDAO = new CassandraApplicableFlagDAO(session);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[12/15] james-project git commit: JAMES-2090 Add soft asserts to
CassandraConfiguration test
Posted by ad...@apache.org.
JAMES-2090 Add soft asserts to CassandraConfiguration test
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/54429834
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/54429834
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/54429834
Branch: refs/heads/master
Commit: 54429834c1c0e3f42be7dafb0e197fb52ac41984
Parents: a66c080
Author: benwa <bt...@linagora.com>
Authored: Thu Jul 6 08:45:02 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:48:54 2017 +0700
----------------------------------------------------------------------
.../cassandra/CassandraConfigurationTest.java | 22 ++++++++++++--------
1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/54429834/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
index dec62ea..10f111e 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
@@ -21,6 +21,7 @@ package org.apache.james.backends.cassandra;
import static org.assertj.core.api.Assertions.assertThat;
+import org.assertj.core.api.JUnitSoftAssertions;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -32,6 +33,9 @@ public class CassandraConfigurationTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
+ @Rule
+ public final JUnitSoftAssertions softly = new JUnitSoftAssertions();
+
@Test
public void cassandraConfigurationShouldRespectBeanContract() {
EqualsVerifier.forClass(CassandraConfiguration.class).verify();
@@ -211,15 +215,15 @@ public class CassandraConfigurationTest {
.expungeChunkSize(expungeChunkSize)
.build();
- assertThat(configuration.getAclMaxRetry()).isEqualTo(aclMaxRetry);
- assertThat(configuration.getModSeqMaxRetry()).isEqualTo(modSeqMaxRetry);
- assertThat(configuration.getUidMaxRetry()).isEqualTo(uidMaxRetry);
- assertThat(configuration.getFetchNextPageInAdvanceRow()).isEqualTo(fetchNextPageInAdvanceRow);
- assertThat(configuration.getFlagsUpdateMessageMaxRetry()).isEqualTo(flagsUpdateMessageMaxRetry);
- assertThat(configuration.getFlagsUpdateMessageIdMaxRetry()).isEqualTo(flagsUpdateMessageIdMaxRetry);
- assertThat(configuration.getFlagsUpdateChunkSize()).isEqualTo(flagsUpdateChunkSize);
- assertThat(configuration.getMessageReadChunkSize()).isEqualTo(messageReadChunkSize);
- assertThat(configuration.getExpungeChunkSize()).isEqualTo(expungeChunkSize);
+ softly.assertThat(configuration.getAclMaxRetry()).isEqualTo(aclMaxRetry);
+ softly.assertThat(configuration.getModSeqMaxRetry()).isEqualTo(modSeqMaxRetry);
+ softly.assertThat(configuration.getUidMaxRetry()).isEqualTo(uidMaxRetry);
+ softly.assertThat(configuration.getFetchNextPageInAdvanceRow()).isEqualTo(fetchNextPageInAdvanceRow);
+ softly.assertThat(configuration.getFlagsUpdateMessageMaxRetry()).isEqualTo(flagsUpdateMessageMaxRetry);
+ softly.assertThat(configuration.getFlagsUpdateMessageIdMaxRetry()).isEqualTo(flagsUpdateMessageIdMaxRetry);
+ softly.assertThat(configuration.getFlagsUpdateChunkSize()).isEqualTo(flagsUpdateChunkSize);
+ softly.assertThat(configuration.getMessageReadChunkSize()).isEqualTo(messageReadChunkSize);
+ softly.assertThat(configuration.getExpungeChunkSize()).isEqualTo(expungeChunkSize);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[11/15] james-project git commit: JAMES-2090 Rename
CassandraUtilsDefaultValue
Posted by ad...@apache.org.
JAMES-2090 Rename CassandraUtilsDefaultValue
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c8286d99
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c8286d99
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c8286d99
Branch: refs/heads/master
Commit: c8286d9937d622059fac33805d308d1ab00c564c
Parents: 366023f
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 5 15:55:35 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:48:54 2017 +0700
----------------------------------------------------------------------
.../apache/james/backends/cassandra/utils/CassandraUtils.java | 2 +-
.../cassandra/CassandraMailboxSessionMapperFactory.java | 2 +-
.../mailbox/cassandra/mail/CassandraDeletedMessageDAO.java | 2 +-
.../james/mailbox/cassandra/mail/CassandraMailboxDAO.java | 3 +--
.../james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java | 2 +-
.../mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java | 2 +-
.../james/mailbox/cassandra/mail/CassandraMessageIdDAO.java | 2 +-
.../mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java | 2 +-
...asedRegisteredDistributedMailboxDelegatingListenerTest.java | 6 +++---
.../distributed/CassandraMailboxPathRegistrerMapperTest.java | 4 ++--
.../cassandra/user/CassandraSubscriptionMapperTest.java | 2 +-
.../mpt/managesieve/cassandra/host/CassandraHostSystem.java | 2 +-
.../apache/james/domainlist/cassandra/CassandraDomainList.java | 2 +-
.../rrt/cassandra/CassandraRecipientRewriteTableTest.java | 2 +-
.../java/org/apache/james/rrt/cassandra/CassandraStepdefs.java | 2 +-
.../james/user/cassandra/CassandraUsersRepositoryTest.java | 2 +-
16 files changed, 19 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
index c224b57..568b2bf 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
@@ -31,7 +31,7 @@ import com.datastax.driver.core.Row;
public class CassandraUtils {
- public static final CassandraUtils DEFAULT_CASSANDRA_UTILS = new CassandraUtils(CassandraConfiguration.DEFAULT_CONFIGURATION);
+ public static final CassandraUtils WITH_DEFAULT_CONFIGURATION = new CassandraUtils(CassandraConfiguration.DEFAULT_CONFIGURATION);
private final CassandraConfiguration cassandraConfiguration;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
index dc0d622..0168e84 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
@@ -123,7 +123,7 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
this(uidProvider, modSeqProvider, session, messageDAO, messageIdDAO, imapUidDAO, mailboxCounterDAO,
mailboxRecentsDAO, mailboxDAO, mailboxPathDAO, firstUnseenDAO, applicableFlagDAO, deletedMesageDAO,
- CassandraUtils.DEFAULT_CASSANDRA_UTILS, CassandraConfiguration.DEFAULT_CONFIGURATION);
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION, CassandraConfiguration.DEFAULT_CONFIGURATION);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
index c86d1e0..f9a3803 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAO.java
@@ -75,7 +75,7 @@ public class CassandraDeletedMessageDAO {
@VisibleForTesting
public CassandraDeletedMessageDAO(Session session) {
- this(session, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ this(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareAllUidStatement(Session session) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
index ca6cfd7..fee0e15 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
@@ -37,7 +37,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
import javax.inject.Inject;
-import javax.inject.Named;
import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
@@ -87,7 +86,7 @@ public class CassandraMailboxDAO {
@VisibleForTesting
public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider) {
- this(session, typesProvider, CassandraUtils.DEFAULT_CASSANDRA_UTILS, CassandraConfiguration.DEFAULT_CONFIGURATION);
+ this(session, typesProvider, CassandraUtils.WITH_DEFAULT_CONFIGURATION, CassandraConfiguration.DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareInsert(Session session) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
index 15d4a94..3ad6695 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAO.java
@@ -107,7 +107,7 @@ public class CassandraMailboxPathDAO {
@VisibleForTesting
public CassandraMailboxPathDAO(Session session, CassandraTypesProvider typesProvider) {
- this(session, typesProvider, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ this(session, typesProvider, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareDelete(Session session) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
index f3264f4..738e7ac 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentsDAO.java
@@ -60,7 +60,7 @@ public class CassandraMailboxRecentsDAO {
@VisibleForTesting
public CassandraMailboxRecentsDAO(Session session) {
- this(session, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ this(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
private PreparedStatement createReadStatement(Session session) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
index 6f9c265..f32f0a0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAO.java
@@ -100,7 +100,7 @@ public class CassandraMessageIdDAO {
@VisibleForTesting
public CassandraMessageIdDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
- this(session, messageIdFactory, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ this(session, messageIdFactory, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareDelete(Session session) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
index 38a02d6..ae1ffc1 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
@@ -92,7 +92,7 @@ public class CassandraMessageIdToImapUidDAO {
@VisibleForTesting
public CassandraMessageIdToImapUidDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
- this(session, messageIdFactory, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ this(session, messageIdFactory, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareDelete(Session session) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index 88ebebc..efefb22 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -77,7 +77,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
new CassandraMailboxPathRegisterMapper(
cassandra.getConf(),
cassandra.getTypesProvider(),
- CassandraUtils.DEFAULT_CASSANDRA_UTILS,
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener1 = new RegisteredDelegatingMailboxListener(
@@ -92,7 +92,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
new CassandraMailboxPathRegisterMapper(
cassandra.getConf(),
cassandra.getTypesProvider(),
- CassandraUtils.DEFAULT_CASSANDRA_UTILS,
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener2 = new RegisteredDelegatingMailboxListener(
@@ -107,7 +107,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
new CassandraMailboxPathRegisterMapper(
cassandra.getConf(),
cassandra.getTypesProvider(),
- CassandraUtils.DEFAULT_CASSANDRA_UTILS,
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener3 = new RegisteredDelegatingMailboxListener(
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
index 8ba28ac..3e66222 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
@@ -48,7 +48,7 @@ public class CassandraMailboxPathRegistrerMapperTest {
public void setUp() {
mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(),
cassandra.getTypesProvider(),
- CassandraUtils.DEFAULT_CASSANDRA_UTILS,
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CASSANDRA_TIME_OUT_IN_S);
}
@@ -112,7 +112,7 @@ public class CassandraMailboxPathRegistrerMapperTest {
int verySmallTimeoutInSecond = 1;
mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(),
cassandra.getTypesProvider(),
- CassandraUtils.DEFAULT_CASSANDRA_UTILS,
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
verySmallTimeoutInSecond);
mapper.doRegister(MAILBOX_PATH, TOPIC);
Thread.sleep(2 * TimeUnit.SECONDS.toMillis(verySmallTimeoutInSecond));
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
index c194d90..a08b589 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
@@ -33,7 +33,7 @@ public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
@Override
protected SubscriptionMapper createSubscriptionMapper() {
cassandra.ensureAllTables();
- return new CassandraSubscriptionMapper(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ return new CassandraSubscriptionMapper(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
@After
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
index d9bc5f9..3b24879 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
@@ -50,7 +50,7 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
}
protected static UsersRepository createUsersRepository() {
- CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(CASSANDRA_CLUSTER.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(CASSANDRA_CLUSTER.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
cassandraUsersRepository.setEnableVirtualHosting(false);
return cassandraUsersRepository;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
index c49956c..efbc554 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
@@ -87,7 +87,7 @@ public class CassandraDomainList extends AbstractDomainList {
@VisibleForTesting
CassandraDomainList(Session session) {
- this(session, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ this(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
index 525eb2a..e55ce6a 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
@@ -51,7 +51,7 @@ public class CassandraRecipientRewriteTableTest extends AbstractRecipientRewrite
@Override
protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
- CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
rrt.setLog(LoggerFactory.getLogger("MockLog"));
rrt.configure(new DefaultConfigurationBuilder());
return rrt;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
index 61dc4a8..d6ce16f 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
@@ -52,7 +52,7 @@ public class CassandraStepdefs {
}
private AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
- CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
rrt.setLog(LoggerFactory.getLogger("MockLog"));
rrt.configure(new DefaultConfigurationBuilder());
return rrt;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c8286d99/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
index 5fea737..326bc6b 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
@@ -37,6 +37,6 @@ public class CassandraUsersRepositoryTest extends AbstractUsersRepositoryTest {
@Override
protected AbstractUsersRepository getUsersRepository() throws Exception {
cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule());
- return new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
+ return new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[10/15] james-project git commit: JAMES-2090 Add new Cassandra
properties in sample docker configuration files
Posted by ad...@apache.org.
JAMES-2090 Add new Cassandra properties in sample docker configuration files
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5914a838
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5914a838
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5914a838
Branch: refs/heads/master
Commit: 5914a838769c94bc3aa918450e4bde7f64add833
Parents: 4695c7a
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 5 11:18:50 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:48:54 2017 +0700
----------------------------------------------------------------------
.../destination/conf/cassandra.properties | 15 ++++++++++++++-
.../cassandra/destination/conf/cassandra.properties | 14 +++++++++++++-
2 files changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/5914a838/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
----------------------------------------------------------------------
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
index 6070413..3b273e6 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
@@ -3,4 +3,17 @@ cassandra.nodes=cassandra
cassandra.keyspace=apache_james
cassandra.replication.factor=1
cassandra.retryConnection.maxRetries=10
-cassandra.retryConnection.minDelay=5000
\ No newline at end of file
+cassandra.retryConnection.minDelay=5000
+
+
+## These low level tuning options controls performance related options in Cassandra related code
+## The default values are documented here. Understand the effects before editing.
+# mailbox.max.retry.acl=1000
+# mailbox.max.retry.modseq=100000
+# mailbox.max.retry.uid=100000
+# mailbox.max.retry.message.flags.update=1000
+# mailbox.max.retry.message.id.flags.update=1000
+# fetch.advance.row.count=1000
+# chunk.size.flags.update=20
+# chunk.size.message.read=100
+# chunk.size.expunge=100
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/5914a838/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
----------------------------------------------------------------------
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
index 42a9159..54540e4 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
@@ -13,4 +13,16 @@ cassandra.retryConnection.minDelay=5000
## In ms. Should be higher than socket read timeout
# cassandra.pooling.timeout=5000
## In seconds.
-# cassandra.pooling.heartbeat.timeout=30
\ No newline at end of file
+# cassandra.pooling.heartbeat.timeout=30
+
+## These low level tuning options controls performance related options in Cassandra related code
+## The default values are documented here. Understand the effects before editing.
+# mailbox.max.retry.acl=1000
+# mailbox.max.retry.modseq=100000
+# mailbox.max.retry.uid=100000
+# mailbox.max.retry.message.flags.update=1000
+# mailbox.max.retry.message.id.flags.update=1000
+# fetch.advance.row.count=1000
+# chunk.size.flags.update=20
+# chunk.size.message.read=100
+# chunk.size.expunge=100
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[14/15] james-project git commit: JAMES-2090 Reindent cassandra
backend pom.xml
Posted by ad...@apache.org.
JAMES-2090 Reindent cassandra backend pom.xml
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9277d504
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9277d504
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9277d504
Branch: refs/heads/master
Commit: 9277d50457c28b85343dcf676240f219498723d1
Parents: 5442983
Author: benwa <bt...@linagora.com>
Authored: Thu Jul 6 15:45:22 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 15:45:22 2017 +0700
----------------------------------------------------------------------
backends-common/cassandra/pom.xml | 40 +++++++++++++++++-----------------
1 file changed, 20 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/9277d504/backends-common/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/pom.xml b/backends-common/cassandra/pom.xml
index 6810208..599419b 100644
--- a/backends-common/cassandra/pom.xml
+++ b/backends-common/cassandra/pom.xml
@@ -144,19 +144,19 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.6</version>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ </dependency>
<dependency>
<groupId>net.javacrumbs.future-converter</groupId>
<artifactId>future-converter-java8-guava</artifactId>
@@ -174,13 +174,13 @@
<version>1.7.6</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.cassandraunit</groupId>
- <artifactId>cassandra-unit</artifactId>
- <version>2.1.9.2</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <dependency>
+ <groupId>org.cassandraunit</groupId>
+ <artifactId>cassandra-unit</artifactId>
+ <version>2.1.9.2</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
<build>
<plugins>
<plugin>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[15/15] james-project git commit: Merge remote-tracking branch
'btellier/JAMES-2090'
Posted by ad...@apache.org.
Merge remote-tracking branch 'btellier/JAMES-2090'
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1dafd884
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1dafd884
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1dafd884
Branch: refs/heads/master
Commit: 1dafd8849c45d79f908a63efe8dbb789bf7dfad2
Parents: 1128983 9277d50
Author: Antoine Duprat <ad...@linagora.com>
Authored: Thu Jul 6 14:12:51 2017 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Jul 6 14:12:51 2017 +0200
----------------------------------------------------------------------
backends-common/cassandra/pom.xml | 46 ++--
.../cassandra/CassandraConfiguration.java | 268 +++++++++++++++++++
.../init/SpringStaticSessionFactory.java | 36 ---
.../cassandra/utils/CassandraUtils.java | 24 +-
.../utils/ZonedDateTimeRepresentation.java | 19 +-
.../cassandra/CassandraConfigurationTest.java | 229 ++++++++++++++++
.../destination/conf/cassandra.properties | 15 +-
.../destination/conf/cassandra.properties | 14 +-
.../CassandraMailboxSessionMapperFactory.java | 28 +-
.../CassandraMailboxPathRegisterMapper.java | 6 +-
.../cassandra/mail/CassandraACLMapper.java | 10 +-
.../mail/CassandraAnnotationMapper.java | 26 +-
.../mail/CassandraDeletedMessageDAO.java | 17 +-
.../cassandra/mail/CassandraMailboxDAO.java | 23 +-
.../cassandra/mail/CassandraMailboxMapper.java | 9 +-
.../cassandra/mail/CassandraMailboxPathDAO.java | 12 +-
.../mail/CassandraMailboxRecentsDAO.java | 12 +-
.../cassandra/mail/CassandraMessageDAO.java | 14 +-
.../cassandra/mail/CassandraMessageIdDAO.java | 12 +-
.../mail/CassandraMessageIdMapper.java | 9 +-
.../mail/CassandraMessageIdToImapUidDAO.java | 12 +-
.../cassandra/mail/CassandraMessageMapper.java | 17 +-
.../cassandra/mail/CassandraModSeqProvider.java | 18 +-
.../cassandra/mail/CassandraUidProvider.java | 18 +-
...essageDeletedDuringFlagsUpdateException.java | 30 ---
.../user/CassandraSubscriptionMapper.java | 8 +-
.../CassandraMailboxManagerProvider.java | 3 +-
.../cassandra/CassandraTestSystemFixture.java | 3 +-
...istributedMailboxDelegatingListenerTest.java | 4 +
...CassandraMailboxPathRegistrerMapperTest.java | 11 +-
.../cassandra/mail/CassandraACLMapperTest.java | 18 +-
.../cassandra/mail/CassandraMailboxDAOTest.java | 3 +-
.../CassandraMailboxManagerAttachmentTest.java | 4 +-
.../CassandraMailboxMapperConcurrencyTest.java | 6 +-
.../mail/CassandraMailboxMapperTest.java | 6 +-
.../cassandra/mail/CassandraMapperProvider.java | 2 +-
.../mail/CassandraModSeqProviderTest.java | 7 +-
.../mail/CassandraUidProviderTest.java | 7 +-
.../user/CassandraSubscriptionMapperTest.java | 3 +-
mpt/app/dependency-reduced-pom.xml | 102 -------
.../cassandra/host/CassandraHostSystem.java | 3 +-
.../cassandra/host/CassandraHostSystem.java | 4 +-
protocols/smtp/dependency-reduced-pom.xml | 143 ----------
.../modules/mailbox/CassandraMailboxModule.java | 4 -
.../mailbox/CassandraSessionConfiguration.java | 4 +-
.../modules/mailbox/CassandraSessionModule.java | 44 ++-
.../mailbox/CassandraSessionModuleTest.java | 65 +++++
.../modules/mailbox/cassandra.properties | 9 +
.../cassandra/CassandraDomainList.java | 93 +++++--
.../CassandraRecipientRewriteTable.java | 105 +++++---
.../cassandra/CassandraUsersRepository.java | 123 ++++++---
.../CassandraUsersRepositoryModule.java | 3 +-
.../cassandra/CassandraDomainListTest.java | 3 +-
.../CassandraRecipientRewriteTableTest.java | 4 +-
.../james/rrt/cassandra/CassandraStepdefs.java | 4 +-
.../cassandra/CassandraUsersRepositoryTest.java | 5 +-
src/site/xdoc/server/config-cassandra.xml | 18 ++
57 files changed, 1154 insertions(+), 591 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/1dafd884/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
----------------------------------------------------------------------
diff --cc mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index d163233,dda89ec..8eb5136
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@@ -37,13 -38,9 +38,12 @@@ import org.apache.james.mailbox.store.m
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class CassandraMailboxMapperTest {
+ private static final Logger LOGGER = LoggerFactory.getLogger(CassandraMailboxMapperTest.class);
- public static final int MAX_RETRY = 10;
public static final int UID_VALIDITY = 52;
public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
private CassandraCluster cassandra;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[03/15] james-project git commit: JAMES-2090 Add missing license
Posted by ad...@apache.org.
JAMES-2090 Add missing license
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/29fb5d30
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/29fb5d30
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/29fb5d30
Branch: refs/heads/master
Commit: 29fb5d30420a28555299f1153fea4821a09a61e4
Parents: 797dca1
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 4 17:17:26 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 5 11:36:37 2017 +0700
----------------------------------------------------------------------
.../utils/ZonedDateTimeRepresentation.java | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/29fb5d30/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/ZonedDateTimeRepresentation.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/ZonedDateTimeRepresentation.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/ZonedDateTimeRepresentation.java
index f74cc03..d5a7c45 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/ZonedDateTimeRepresentation.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/ZonedDateTimeRepresentation.java
@@ -1,4 +1,21 @@
-
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
package org.apache.james.backends.cassandra.utils;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[02/15] james-project git commit: JAMES-2090 Remove unused
Cassandra-spring class
Posted by ad...@apache.org.
JAMES-2090 Remove unused Cassandra-spring class
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/797dca14
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/797dca14
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/797dca14
Branch: refs/heads/master
Commit: 797dca14fb8df57a89ce067cc5ead1d7491fd5b8
Parents: 96facc5
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 4 17:09:10 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 5 11:36:28 2017 +0700
----------------------------------------------------------------------
.../init/SpringStaticSessionFactory.java | 36 --------------------
1 file changed, 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/797dca14/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java
deleted file mode 100644
index eb5d844..0000000
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.backends.cassandra.init;
-
-import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.Session;
-import org.apache.james.backends.cassandra.components.CassandraModule;
-
-public class SpringStaticSessionFactory {
-
- public static Session createSession(Cluster cluster, String keyspace, CassandraModule module) {
- return new SessionWithInitializedTablesFactory(module).createSession(cluster, keyspace);
- }
-
- public static Session createSession(Cluster cluster, CassandraModule module) {
- return new SessionWithInitializedTablesFactory(module).createSession(cluster);
- }
-
-}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[04/15] james-project git commit: JAMES-2090 Cassandra guice should
Inject CassandraConfiguration
Posted by ad...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index 7028b36..a58b348 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -59,7 +59,6 @@ import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
public class CassandraTestSystemFixture {
public static final int MOD_SEQ = 452;
- public static final int MAX_ACL_RETRY = 10;
private static CassandraCluster cassandra;
public static CassandraMailboxSessionMapperFactory createMapperFactory() {
@@ -74,7 +73,7 @@ public class CassandraTestSystemFixture {
CassandraMailboxRecentsDAO mailboxRecentsDAO = new CassandraMailboxRecentsDAO(cassandra.getConf());
CassandraApplicableFlagDAO applicableFlagDAO = new CassandraApplicableFlagDAO(cassandra.getConf());
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_ACL_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(cassandra.getConf());
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index e9b49fc..88ebebc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.TreeMap;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.modules.CassandraRegistrationModule;
@@ -76,6 +77,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
new CassandraMailboxPathRegisterMapper(
cassandra.getConf(),
cassandra.getTypesProvider(),
+ CassandraUtils.DEFAULT_CASSANDRA_UTILS,
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener1 = new RegisteredDelegatingMailboxListener(
@@ -90,6 +92,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
new CassandraMailboxPathRegisterMapper(
cassandra.getConf(),
cassandra.getTypesProvider(),
+ CassandraUtils.DEFAULT_CASSANDRA_UTILS,
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener2 = new RegisteredDelegatingMailboxListener(
@@ -104,6 +107,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
new CassandraMailboxPathRegisterMapper(
cassandra.getConf(),
cassandra.getTypesProvider(),
+ CassandraUtils.DEFAULT_CASSANDRA_UTILS,
CASSANDRA_TIME_OUT_IN_S),
SCHEDULER_PERIOD_IN_S);
registeredDelegatingMailboxListener3 = new RegisteredDelegatingMailboxListener(
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
index 7cef1bc..8ba28ac 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
@@ -20,6 +20,7 @@
package org.apache.james.mailbox.cassandra.event.distributed;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraRegistrationModule;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.publisher.Topic;
@@ -45,7 +46,10 @@ public class CassandraMailboxPathRegistrerMapperTest {
@Before
public void setUp() {
- mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(), cassandra.getTypesProvider(), CASSANDRA_TIME_OUT_IN_S);
+ mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ CassandraUtils.DEFAULT_CASSANDRA_UTILS,
+ CASSANDRA_TIME_OUT_IN_S);
}
@After
@@ -106,7 +110,10 @@ public class CassandraMailboxPathRegistrerMapperTest {
@Test
public void entriesShouldExpire() throws Exception {
int verySmallTimeoutInSecond = 1;
- mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(), cassandra.getTypesProvider(), verySmallTimeoutInSecond);
+ mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ CassandraUtils.DEFAULT_CASSANDRA_UTILS,
+ verySmallTimeoutInSecond);
mapper.doRegister(MAILBOX_PATH, TOPIC);
Thread.sleep(2 * TimeUnit.SECONDS.toMillis(verySmallTimeoutInSecond));
assertThat(mapper.getTopics(MAILBOX_PATH)).isEmpty();
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index ae68dac..ca9858c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.cassandra.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -47,7 +48,6 @@ import com.google.common.base.Throwables;
public class CassandraACLMapperTest {
public static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("464765a0-e4e7-11e4-aba4-710c1de3782b"));
- public static final int MAX_RETRY = 100;
private CassandraACLMapper cassandraACLMapper;
private CassandraCluster cassandra;
private CassandraAsyncExecutor cassandraAsyncExecutor;
@@ -58,7 +58,7 @@ public class CassandraACLMapperTest {
cassandra = CassandraCluster.create(new CassandraAclModule());
cassandra.ensureAllTables();
cassandraAsyncExecutor = new CassandraAsyncExecutor(cassandra.getConf());
- cassandraACLMapper = new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, MAX_RETRY);
+ cassandraACLMapper = new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, CassandraConfiguration.DEFAULT_CONFIGURATION);
executor = Executors.newFixedThreadPool(2);
}
@@ -69,18 +69,6 @@ public class CassandraACLMapperTest {
cassandra.close();
}
- @Test(expected = IllegalArgumentException.class)
- public void creatingACLMapperWithNegativeMaxRetryShouldFail() {
- int maxRetry = -1;
- new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, maxRetry);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void creatingACLMapperWithNullMaxRetryShouldFail() {
- int maxRetry = 0;
- new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, maxRetry);
- }
-
@Test
public void retrieveACLWhenPresentInBaseShouldReturnCorrespondingACL() throws Exception {
cassandra.getConf().execute(
@@ -209,7 +197,7 @@ public class CassandraACLMapperTest {
CassandraACLMapper aclMapper = new CassandraACLMapper(MAILBOX_ID,
cassandra.getConf(),
new CassandraAsyncExecutor(cassandra.getConf()),
- MAX_RETRY,
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
runnable);
try {
aclMapper.updateACL(new SimpleMailboxACL.SimpleMailboxACLCommand(key, MailboxACL.EditMode.ADD, rights));
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index 3a90d4c..c1f8147 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -40,7 +40,6 @@ import com.github.steveash.guavate.Guavate;
public class CassandraMailboxDAOTest {
- public static final int MAX_ACL_RETRY = 10;
public static final int UID_VALIDITY_1 = 145;
public static final int UID_VALIDITY_2 = 147;
public static final MailboxPath NEW_MAILBOX_PATH = new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "xyz");
@@ -56,7 +55,7 @@ public class CassandraMailboxDAOTest {
cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule()));
cassandra.ensureAllTables();
- testee = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_ACL_RETRY);
+ testee = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
mailbox1 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "abcd"),
UID_VALIDITY_1,
CASSANDRA_ID_1);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index 75d4b4b..722e7f7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -74,8 +74,6 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
cassandra.close();
}
- public static final int MAX_ACL_RETRY = 10;
-
private CassandraMailboxSessionMapperFactory mailboxSessionMapperFactory;
private CassandraMailboxManager mailboxManager;
private CassandraMailboxManager parseFailingMailboxManager;
@@ -83,7 +81,7 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
public CassandraMailboxManagerAttachmentTest() throws Exception {
CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_ACL_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(cassandra.getConf());
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 749242e..bd849e9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -25,6 +25,7 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -38,7 +39,6 @@ import org.junit.Test;
public class CassandraMailboxMapperConcurrencyTest {
- public static final int MAX_RETRY = 10;
public static final int UID_VALIDITY = 52;
public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
public static final int THREAD_COUNT = 10;
@@ -51,9 +51,9 @@ public class CassandraMailboxMapperConcurrencyTest {
cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule()));
cassandra.ensureAllTables();
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
- testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, MAX_RETRY);
+ testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
}
@After
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index 22113d8..dda89ec 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -26,6 +26,7 @@ import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO.CassandraIdAndPath;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -40,11 +41,8 @@ import org.junit.Test;
public class CassandraMailboxMapperTest {
- public static final int MAX_RETRY = 10;
public static final int UID_VALIDITY = 52;
public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
- public static final int THREAD_COUNT = 10;
- public static final int OPERATION_COUNT = 10;
private CassandraCluster cassandra;
private CassandraMailboxPathDAO mailboxPathDAO;
private CassandraMailboxMapper testee;
@@ -54,9 +52,9 @@ public class CassandraMailboxMapperTest {
cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule()));
cassandra.ensureAllTables();
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
- testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, MAX_RETRY);
+ testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
}
@After
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
index c16e05d..74602f3 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
@@ -105,7 +105,7 @@ public class CassandraMapperProvider implements MapperProvider {
}
private CassandraMailboxSessionMapperFactory createMapperFactory() {
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_ACL_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(cassandra.getConf());
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index 81bff9e..8fcca84 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertEquals;
import java.util.stream.LongStream;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -39,8 +40,6 @@ import com.github.fge.lambdas.Throwing;
public class CassandraModSeqProviderTest {
private CassandraCluster cassandra;
-
- private static final int MAX_RETRY = 100;
private CassandraModSeqProvider modSeqProvider;
private CassandraMailboxMapper mapper;
@@ -55,9 +54,9 @@ public class CassandraModSeqProviderTest {
new CassandraModSeqModule()));
cassandra.ensureAllTables();
modSeqProvider = new CassandraModSeqProvider(cassandra.getConf());
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
- mapper = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, MAX_RETRY);
+ mapper = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
mailbox = new SimpleMailbox(path, 1234);
mapper.save(mailbox);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index c93a1c4..7e61a92 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -24,6 +24,7 @@ import static org.assertj.guava.api.Assertions.assertThat;
import java.util.stream.LongStream;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -45,8 +46,6 @@ public class CassandraUidProviderTest {
new CassandraMailboxModule(),
new CassandraUidModule()));
- private static final int MAX_RETRY = 100;
-
private CassandraUidProvider uidProvider;
private CassandraMailboxMapper mapper;
private SimpleMailbox mailbox;
@@ -55,9 +54,9 @@ public class CassandraUidProviderTest {
public void setUpClass() throws Exception {
cassandra.ensureAllTables();
uidProvider = new CassandraUidProvider(cassandra.getConf());
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), MAX_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
- mapper = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, MAX_RETRY);
+ mapper = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
mailbox = new SimpleMailbox(path, 1234);
mapper.save(mailbox);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
index 8399756..c194d90 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.cassandra.user;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
import org.apache.james.mailbox.store.user.SubscriptionMapper;
import org.apache.james.mailbox.store.user.SubscriptionMapperTest;
@@ -32,7 +33,7 @@ public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
@Override
protected SubscriptionMapper createSubscriptionMapper() {
cassandra.ensureAllTables();
- return new CassandraSubscriptionMapper(cassandra.getConf());
+ return new CassandraSubscriptionMapper(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
}
@After
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index 7f6e645..79932dd 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -79,7 +79,6 @@ public class CassandraHostSystem extends JamesImapHostSystem {
Feature.USER_FLAGS_SUPPORT,
Feature.QUOTA_SUPPORT,
Feature.ANNOTATION_SUPPORT);
- public static final int MAX_ACL_RETRY = 10;
private final CassandraMailboxManager mailboxManager;
private final CassandraCluster cassandraClusterSingleton;
@@ -112,7 +111,7 @@ public class CassandraHostSystem extends JamesImapHostSystem {
CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(session, messageIdFactory);
CassandraMailboxCounterDAO mailboxCounterDAO = new CassandraMailboxCounterDAO(session);
CassandraMailboxRecentsDAO mailboxRecentsDAO = new CassandraMailboxRecentsDAO(session);
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(session, typesProvider, MAX_ACL_RETRY);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(session, typesProvider);
CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(session, typesProvider);
CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(session);
CassandraApplicableFlagDAO applicableFlagDAO = new CassandraApplicableFlagDAO(session);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
index a771517..d9bc5f9 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
@@ -20,6 +20,7 @@
package org.apache.james.mpt.managesieve.cassandra.host;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mpt.host.JamesManageSieveHostSystem;
import org.apache.james.sieve.cassandra.CassandraActiveScriptDAO;
import org.apache.james.sieve.cassandra.CassandraSieveDAO;
@@ -49,8 +50,7 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
}
protected static UsersRepository createUsersRepository() {
- CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository();
- cassandraUsersRepository.setSession(CASSANDRA_CLUSTER.getConf());
+ CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(CASSANDRA_CLUSTER.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
cassandraUsersRepository.setEnableVirtualHosting(false);
return cassandraUsersRepository;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index fc7c3cc..78221b7 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -75,10 +75,6 @@ public class CassandraMailboxModule extends AbstractModule {
install(new DefaultEventModule());
install(new CassandraQuotaModule());
- bind(Integer.class)
- .annotatedWith(com.google.inject.name.Names.named(CassandraMailboxDAO.MAX_ACL_RETRY))
- .toInstance(CassandraMailboxSessionMapperFactory.DEFAULT_MAX_RETRY);
-
bind(CassandraMailboxSessionMapperFactory.class).in(Scopes.SINGLETON);
bind(CassandraMailboxManager.class).in(Scopes.SINGLETON);
bind(NoMailboxPathLocker.class).in(Scopes.SINGLETON);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index 6208d52..9d5ca75 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -30,6 +30,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
@@ -37,6 +38,7 @@ import org.apache.james.backends.cassandra.init.ClusterBuilder;
import org.apache.james.backends.cassandra.init.ClusterWithKeyspaceCreatedFactory;
import org.apache.james.backends.cassandra.init.QueryLoggerConfiguration;
import org.apache.james.backends.cassandra.init.SessionWithInitializedTablesFactory;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.store.BatchSizes;
import org.apache.james.util.Host;
import org.apache.james.utils.PropertiesProvider;
@@ -54,6 +56,7 @@ import com.datastax.driver.core.exceptions.NoHostAvailableException;
import com.github.steveash.guavate.Guavate;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
+import com.google.inject.Scopes;
import com.google.inject.Singleton;
import com.google.inject.multibindings.Multibinder;
import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
@@ -77,6 +80,8 @@ public class CassandraSessionModule extends AbstractModule {
@Override
protected void configure() {
bind(ScheduledExecutorService.class).toProvider(ScheduledExecutorServiceProvider.class);
+ bind(CassandraConfiguration.class).toInstance(CassandraConfiguration.DEFAULT_CONFIGURATION);
+ bind(CassandraUtils.class).in(Scopes.SINGLETON);
Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
cassandraDataDefinitions.addBinding().to(CassandraZonedDateTimeModule.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
index 10599a8..fbee908 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
@@ -28,7 +28,6 @@ import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
-import javax.annotation.Resource;
import javax.inject.Inject;
import org.apache.james.backends.cassandra.utils.CassandraConstants;
@@ -39,20 +38,27 @@ import org.apache.james.domainlist.cassandra.tables.CassandraDomainsTable;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
+import com.google.common.annotations.VisibleForTesting;
public class CassandraDomainList extends AbstractDomainList {
- private Session session;
+ private final Session session;
+ private final CassandraUtils cassandraUtils;
@Inject
- @Resource
- public void setSession(Session session) {
+ public CassandraDomainList(Session session, CassandraUtils cassandraUtils) {
this.session = session;
+ this.cassandraUtils = cassandraUtils;
+ }
+
+ @VisibleForTesting
+ CassandraDomainList(Session session) {
+ this(session, CassandraUtils.DEFAULT_CASSANDRA_UTILS);
}
@Override
protected List<String> getDomainListInternal() throws DomainListException {
- return CassandraUtils.convertToStream(session.execute(select(CassandraDomainsTable.DOMAIN).from(CassandraDomainsTable.TABLE_NAME)))
+ return cassandraUtils.convertToStream(session.execute(select(CassandraDomainsTable.DOMAIN).from(CassandraDomainsTable.TABLE_NAME)))
.map(row -> row.getString(CassandraDomainsTable.DOMAIN))
.collect(Collectors.toList());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
index e3d8824..f7b9251 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
@@ -55,12 +55,13 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
private static final String DEFAULT_ALGO_VALUE = "SHA1";
- private Session session;
+ private final Session session;
+ private final CassandraUtils cassandraUtils;
@Inject
- @Resource
- public void setSession(Session session) {
+ public CassandraUsersRepository(Session session, CassandraUtils cassandraUtils) {
this.session = session;
+ this.cassandraUtils = cassandraUtils;
}
@Override
@@ -132,7 +133,7 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
ResultSet result = session.execute(
select(REALNAME)
.from(TABLE_NAME));
- return CassandraUtils.convertToStream(result)
+ return cassandraUtils.convertToStream(result)
.map(row -> row.getString(REALNAME))
.iterator();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
index 802d92d..411aa1b 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
@@ -30,9 +30,8 @@ public class CassandraDomainListTest extends AbstractDomainListTest {
@Override
protected DomainList createDomainList() {
- CassandraDomainList testee = new CassandraDomainList();
cassandra = CassandraCluster.create(new CassandraDomainListModule());
- testee.setSession(cassandra.getConf());
+ CassandraDomainList testee = new CassandraDomainList(cassandra.getConf());
testee.setLog(LoggerFactory.getLogger(getClass()));
testee.setDNSService(getDNSServer("localhost"));
testee.setAutoDetect(false);
http://git-wip-us.apache.org/repos/asf/james-project/blob/0daadc62/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
index f9a3853..5fea737 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
@@ -20,6 +20,7 @@
package org.apache.james.user.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.user.lib.AbstractUsersRepository;
import org.apache.james.user.lib.AbstractUsersRepositoryTest;
import org.junit.After;
@@ -36,8 +37,6 @@ public class CassandraUsersRepositoryTest extends AbstractUsersRepositoryTest {
@Override
protected AbstractUsersRepository getUsersRepository() throws Exception {
cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule());
- CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository();
- cassandraUsersRepository.setSession(cassandra.getConf());
- return cassandraUsersRepository;
+ return new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.DEFAULT_CASSANDRA_UTILS);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[13/15] james-project git commit: JAMES-2090 Remove
dependency-reduced-pom.xml
Posted by ad...@apache.org.
JAMES-2090 Remove dependency-reduced-pom.xml
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a66c0806
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a66c0806
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a66c0806
Branch: refs/heads/master
Commit: a66c0806b94e82175ad1777cd05120fe1d71fcb6
Parents: c8286d9
Author: benwa <bt...@linagora.com>
Authored: Thu Jul 6 08:33:04 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:48:54 2017 +0700
----------------------------------------------------------------------
mpt/app/dependency-reduced-pom.xml | 102 ------------------
protocols/smtp/dependency-reduced-pom.xml | 143 -------------------------
2 files changed, 245 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/a66c0806/mpt/app/dependency-reduced-pom.xml
----------------------------------------------------------------------
diff --git a/mpt/app/dependency-reduced-pom.xml b/mpt/app/dependency-reduced-pom.xml
deleted file mode 100644
index 9815884..0000000
--- a/mpt/app/dependency-reduced-pom.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <artifactId>apache-james-mpt</artifactId>
- <groupId>org.apache.james</groupId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>apache-james-mpt-app</artifactId>
- <name>Apache James MPT Application</name>
- <description>Apache James Mail Protocol Tester (MPT) is a library providing a framework for the
-scriptable functional testing of ASCII based line protocols. This application provides easy executable
-interfaces to the MPT library.</description>
- <url>http://james.apache.org/mpt/app</url>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-shade-plugin</artifactId>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <artifactSet>
- <includes>
- <include>commons-logging:commons-logging</include>
- <include>commons-cli:commons-cli</include>
- <include>junit:junit</include>
- <include>${project.groupId}:apache-james-mpt-core</include>
- </includes>
- </artifactSet>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifestEntries>
- <Main-Class>org.apache.james.mpt.app.Main</Main-Class>
- <Specification-Title>Apache James MPT Application</Specification-Title>
- <Specification-Version>${project.version}</Specification-Version>
- <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
- <Implementation-Title>Apache James MPT Application</Implementation-Title>
- <Implementation-Version>${project.version}</Implementation-Version>
- <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
- <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
- <url>${project.url}</url>
- </manifestEntries>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-javadoc-plugin</artifactId>
- <executions>
- <execution>
- <id>create-javadocs</id>
- <phase>package</phase>
- <goals>
- <goal>javadoc</goal>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <profiles>
- <profile>
- <id>doclint-java8-disable</id>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <additionalparam>-Xdoclint:none</additionalparam>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
- <dependencies>
- <dependency>
- <groupId>org.apache.james</groupId>
- <artifactId>apache-james-mpt-core</artifactId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>jmock</groupId>
- <artifactId>jmock</artifactId>
- <version>1.1.0</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
-
http://git-wip-us.apache.org/repos/asf/james-project/blob/a66c0806/protocols/smtp/dependency-reduced-pom.xml
----------------------------------------------------------------------
diff --git a/protocols/smtp/dependency-reduced-pom.xml b/protocols/smtp/dependency-reduced-pom.xml
deleted file mode 100644
index 51135a9..0000000
--- a/protocols/smtp/dependency-reduced-pom.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <artifactId>protocols</artifactId>
- <groupId>org.apache.james</groupId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.james.protocols</groupId>
- <artifactId>protocols-smtp</artifactId>
- <packaging>bundle</packaging>
- <name>Apache James :: Protocols :: SMTP</name>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-shade-plugin</artifactId>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <artifactSet>
- <includes>
- <include>commons-codec:commons-codec</include>
- </includes>
- </artifactSet>
- <filters>
- <filter>
- <artifact>commons-codec:commons-codec</artifact>
- <excludes>
- <exclude>org/apache/commons/codec/*</exclude>
- </excludes>
- <includes>
- <include>org/apache/commons/codec/binary/*</include>
- </includes>
- </filter>
- </filters>
- <relocations>
- <relocation>
- <pattern>org.apache.commons.codec.binary</pattern>
- <shadedPattern>org.apache.james.protocols.smtp.util</shadedPattern>
- </relocation>
- </relocations>
- <transformers>
- <transformer />
- </transformers>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.apache.james</groupId>
- <artifactId>james-server-util</artifactId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.james.protocols</groupId>
- <artifactId>protocols-api</artifactId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.james.protocols</groupId>
- <artifactId>protocols-api</artifactId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.james.protocols</groupId>
- <artifactId>protocols-netty</artifactId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.james</groupId>
- <artifactId>metrics-api</artifactId>
- <version>3.0.0-beta6-SNAPSHOT</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>18.0</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>commons-net</groupId>
- <artifactId>commons-net</artifactId>
- <version>3.2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty</artifactId>
- <version>3.10.6.Final</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <version>1</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <artifactId>hamcrest-core</artifactId>
- <groupId>org.hamcrest</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.sun.mail</groupId>
- <artifactId>javax.mail</artifactId>
- <version>1.5.4</version>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <artifactId>activation</artifactId>
- <groupId>javax.activation</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
- <version>1.7.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
-
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[07/15] james-project git commit: JAMES-2090 Read configuration
object from properties
Posted by ad...@apache.org.
JAMES-2090 Read configuration object from properties
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4695c7a7
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4695c7a7
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4695c7a7
Branch: refs/heads/master
Commit: 4695c7a7d55454561d6e36b2701cac1e03f83bec
Parents: 35ab6bd
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 5 11:14:56 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 6 08:48:51 2017 +0700
----------------------------------------------------------------------
.../cassandra/CassandraConfiguration.java | 45 ++++++++++++++
.../cassandra/utils/CassandraUtils.java | 3 +
.../modules/mailbox/CassandraSessionModule.java | 39 +++++++++++-
.../mailbox/CassandraSessionModuleTest.java | 65 ++++++++++++++++++++
.../modules/mailbox/cassandra.properties | 9 +++
5 files changed, 160 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/4695c7a7/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
index 3d985d4..ff3cad9 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
@@ -104,6 +104,51 @@ public class CassandraConfiguration {
return this;
}
+ public Builder messageReadChunkSize(Optional<Integer> value) {
+ value.ifPresent(this::messageReadChunkSize);
+ return this;
+ }
+
+ public Builder expungeChunkSize(Optional<Integer> value) {
+ value.ifPresent(this::expungeChunkSize);
+ return this;
+ }
+
+ public Builder flagsUpdateChunkSize(Optional<Integer> value) {
+ value.ifPresent(this::flagsUpdateChunkSize);
+ return this;
+ }
+
+ public Builder flagsUpdateMessageIdMaxRetry(Optional<Integer> value) {
+ value.ifPresent(this::flagsUpdateMessageIdMaxRetry);
+ return this;
+ }
+
+ public Builder flagsUpdateMessageMaxRetry(Optional<Integer> value) {
+ value.ifPresent(this::flagsUpdateMessageMaxRetry);
+ return this;
+ }
+
+ public Builder modSeqMaxRetry(Optional<Integer> value) {
+ value.ifPresent(this::modSeqMaxRetry);
+ return this;
+ }
+
+ public Builder uidMaxRetry(Optional<Integer> value) {
+ value.ifPresent(this::uidMaxRetry);
+ return this;
+ }
+
+ public Builder aclMaxRetry(Optional<Integer> value) {
+ value.ifPresent(this::aclMaxRetry);
+ return this;
+ }
+
+ public Builder fetchNextPageInAdvanceRow(Optional<Integer> value) {
+ value.ifPresent(this::fetchNextPageInAdvanceRow);
+ return this;
+ }
+
public CassandraConfiguration build() {
return new CassandraConfiguration(aclMaxRetry.orElse(DEFAULT_ACL_MAX_RETRY),
messageReadChunkSize.orElse(DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ),
http://git-wip-us.apache.org/repos/asf/james-project/blob/4695c7a7/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
index adef1c0..c224b57 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
@@ -22,6 +22,8 @@ package org.apache.james.backends.cassandra.utils;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
+import javax.inject.Inject;
+
import org.apache.james.backends.cassandra.CassandraConfiguration;
import com.datastax.driver.core.ResultSet;
@@ -33,6 +35,7 @@ public class CassandraUtils {
private final CassandraConfiguration cassandraConfiguration;
+ @Inject
public CassandraUtils(CassandraConfiguration cassandraConfiguration) {
this.cassandraConfiguration = cassandraConfiguration;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/4695c7a7/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index f20aa98..9b4806f 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -54,6 +54,7 @@ import com.datastax.driver.core.QueryLogger;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.exceptions.NoHostAvailableException;
import com.github.steveash.guavate.Guavate;
+import com.google.common.annotations.VisibleForTesting;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Scopes;
@@ -76,11 +77,19 @@ public class CassandraSessionModule extends AbstractModule {
private static final int DEFAULT_READ_TIMEOUT_MILLIS = 5000;
private static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 5000;
private static final String BATCHSIZES_FILE_NAME = "batchsizes";
+ private static final String MAILBOX_MAX_RETRY_ACL = "mailbox.max.retry.acl";
+ private static final String MAILBOX_MAX_RETRY_MODSEQ = "mailbox.max.retry.modseq";
+ private static final String MAILBOX_MAX_RETRY_UID = "mailbox.max.retry.uid";
+ private static final String MAILBOX_MAX_RETRY_MESSAGE_FLAGS_UPDATE = "mailbox.max.retry.message.flags.update";
+ private static final String MAILBOX_MAX_RETRY_MESSAGE_ID_FLAGS_UPDATE = "mailbox.max.retry.message.id.flags.update";
+ private static final String FETCH_ADVANCE_ROW_COUNT = "fetch.advance.row.count";
+ private static final String CHUNK_SIZE_FLAGS_UPDATE = "chunk.size.flags.update";
+ private static final String CHUNK_SIZE_MESSAGE_READ = "chunk.size.message.read";
+ private static final String CHUNK_SIZE_EXPUNGE = "chunk.size.expunge";
@Override
protected void configure() {
bind(ScheduledExecutorService.class).toProvider(ScheduledExecutorServiceProvider.class);
- bind(CassandraConfiguration.class).toInstance(CassandraConfiguration.DEFAULT_CONFIGURATION);
bind(CassandraUtils.class).in(Scopes.SINGLETON);
Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
@@ -243,6 +252,34 @@ public class CassandraSessionModule extends AbstractModule {
return new AsyncRetryExecutor(scheduler);
}
+ @VisibleForTesting
+ @Provides
+ @Singleton
+ CassandraConfiguration provideCassandraConfiguration(CassandraSessionConfiguration sessionConfiguration) throws ConfigurationException {
+ PropertiesConfiguration propertiesConfiguration = sessionConfiguration.getConfiguration();
+
+ return CassandraConfiguration.builder()
+ .aclMaxRetry(Optional.ofNullable(
+ propertiesConfiguration.getInteger(MAILBOX_MAX_RETRY_ACL, null)))
+ .modSeqMaxRetry(Optional.ofNullable(
+ propertiesConfiguration.getInteger(MAILBOX_MAX_RETRY_MODSEQ, null)))
+ .uidMaxRetry(Optional.ofNullable(
+ propertiesConfiguration.getInteger(MAILBOX_MAX_RETRY_UID, null)))
+ .flagsUpdateMessageMaxRetry(Optional.ofNullable(
+ propertiesConfiguration.getInteger(MAILBOX_MAX_RETRY_MESSAGE_FLAGS_UPDATE, null)))
+ .flagsUpdateMessageIdMaxRetry(Optional.ofNullable(
+ propertiesConfiguration.getInteger(MAILBOX_MAX_RETRY_MESSAGE_ID_FLAGS_UPDATE, null)))
+ .fetchNextPageInAdvanceRow(Optional.ofNullable(
+ propertiesConfiguration.getInteger(FETCH_ADVANCE_ROW_COUNT, null)))
+ .flagsUpdateChunkSize(Optional.ofNullable(
+ propertiesConfiguration.getInteger(CHUNK_SIZE_FLAGS_UPDATE, null)))
+ .messageReadChunkSize(Optional.ofNullable(
+ propertiesConfiguration.getInteger(CHUNK_SIZE_MESSAGE_READ, null)))
+ .expungeChunkSize(Optional.ofNullable(
+ propertiesConfiguration.getInteger(CHUNK_SIZE_EXPUNGE, null)))
+ .build();
+ }
+
private PropertiesConfiguration getConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException {
try {
return propertiesProvider.getConfiguration("cassandra");
http://git-wip-us.apache.org/repos/asf/james-project/blob/4695c7a7/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
new file mode 100644
index 0000000..893f76d
--- /dev/null
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
@@ -0,0 +1,65 @@
+/****************************************************************
+ * 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.modules.mailbox;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CassandraSessionModuleTest {
+
+ private CassandraSessionModule cassandraSessionModule;
+
+ @Before
+ public void setUp() {
+ cassandraSessionModule = new CassandraSessionModule();
+ }
+
+ @Test
+ public void provideCassandraConfigurationShouldReturnDefaultOnEmptyConfigurationFile() throws ConfigurationException {
+ CassandraConfiguration configuration = cassandraSessionModule.provideCassandraConfiguration(PropertiesConfiguration::new);
+
+ assertThat(configuration).isEqualTo(CassandraConfiguration.DEFAULT_CONFIGURATION);
+ }
+
+ @Test
+ public void provideCassandraConfigurationShouldReturnRightConfigurationFile() throws ConfigurationException {
+ CassandraConfiguration configuration = cassandraSessionModule.provideCassandraConfiguration(
+ () -> new PropertiesConfiguration(ClassLoader.getSystemResource("modules/mailbox/cassandra.properties")));
+
+ assertThat(configuration)
+ .isEqualTo(CassandraConfiguration.builder()
+ .aclMaxRetry(1)
+ .modSeqMaxRetry(2)
+ .uidMaxRetry(3)
+ .flagsUpdateMessageMaxRetry(4)
+ .flagsUpdateMessageIdMaxRetry(5)
+ .fetchNextPageInAdvanceRow(6)
+ .flagsUpdateChunkSize(7)
+ .messageReadChunkSize(8)
+ .expungeChunkSize(9)
+ .build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/4695c7a7/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties b/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties
new file mode 100644
index 0000000..217be79
--- /dev/null
+++ b/server/container/guice/cassandra-guice/src/test/resources/modules/mailbox/cassandra.properties
@@ -0,0 +1,9 @@
+mailbox.max.retry.acl=1
+mailbox.max.retry.modseq=2
+mailbox.max.retry.uid=3
+mailbox.max.retry.message.flags.update=4
+mailbox.max.retry.message.id.flags.update=5
+fetch.advance.row.count=6
+chunk.size.flags.update=7
+chunk.size.message.read=8
+chunk.size.expunge=9
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org