You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/02/18 08:40:28 UTC
[james-project] branch master updated (71e8501 -> 439ea3a)
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.
from 71e8501 Merge remote-tracking branch 'benoit/MAILBOX-374-limit-rate'
new 2033d10 Checkstyle and warnings fixes
new 859233b MAILBOX-374 Reuse forks in `mailbox/event/rabbitmq` to fasten tests
new f80a3f8 JAMES-2632 QuotaRootResolver exposes a method to retrieve QuotaRoot from MailboxId
new c72a758 JAMES-2632 Remove unused method signature
new bc958e7 JAMES-2630 Use Reactor to enforce backend rate limits
new 46b9ba0 JAMES-2630 Remove some Exception from method signature in CassandraMessageMapper
new 56ac1fa JAMES-2630 Remove useless method signature in CassandraMessageDAOTest
new c5932ce JAMES-2630 Ensure Iterable flux get published on ElasticScheduler before rate limiting
new 6e1887f JAMES-2630 Rely on Reactor for connection retries
new a0c35b1 JAMES-2630 Remove no more used async-retry dependency
new 3fb34e8 JAMES-2630 Do not perform exponential retries upon connection recovery
new 439ea3a JAMES-2630 Add logs before connection retries
The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../backend/rabbitmq/DockerRabbitMQTestRule.java | 3 -
.../eventstore/cassandra/EventStoreDao.java | 6 +-
.../cassandra/CassandraEventStoreExtension.java | 4 +-
.../james/mailbox/events/EventBusTestFixture.java | 2 +
.../mailbox/events/EventDeadLettersContract.java | 9 ++
.../events/RetryBackoffConfigurationTest.java | 1 +
.../mailbox/cassandra/mail/AttachmentLoader.java | 5 +-
.../cassandra/mail/CassandraAttachmentDAO.java | 6 +-
.../cassandra/mail/CassandraMessageDAO.java | 25 ++--
.../cassandra/mail/CassandraMessageIdDAO.java | 12 +-
.../cassandra/mail/CassandraMessageIdMapper.java | 36 +++---
.../cassandra/mail/CassandraMessageMapper.java | 17 +--
.../cassandra/mail/CassandraAttachmentDAOTest.java | 2 -
.../mail/CassandraAttachmentFallbackTest.java | 2 -
.../mail/CassandraAttachmentOwnerDAOTest.java | 14 +--
.../cassandra/mail/CassandraMessageDAOTest.java | 6 +-
.../migration/AttachmentMessageIdCreationTest.java | 4 +-
.../mail/migration/AttachmentV2MigrationTest.java | 2 -
.../events/delivery/InVmEventDeliveryTest.java | 3 -
mailbox/event/event-rabbitmq/pom.xml | 11 ++
.../james/mailbox/events/RabbitMQEventBusTest.java | 10 +-
.../james/event/json/dtos/MessageIdTest.java | 3 -
.../james/event/json/dtos/MessageUidTest.java | 3 -
.../james/mailbox/store/StoreMessageIdManager.java | 21 ++--
.../AbstractMailboxManagerAttachmentTest.java | 5 +-
.../AbstractMessageIdManagerSideEffectTest.java | 1 +
.../transport/mailets/ICALToJsonAttributeTest.java | 10 +-
.../transport/mailets/ICalendarParserTest.java | 5 +-
.../transport/mailets/AmqpForwardAttribute.java | 1 +
.../transport/mailets/MimeDecodingMailetTest.java | 2 +-
.../transport/mailets/StripAttachmentTest.java | 7 +-
.../apache/mailet/base/test/FakeMailContext.java | 2 +-
.../cassandra/host/CassandraHostSystem.java | 3 +-
pom.xml | 5 -
.../protocols/pop3/core/RetrCmdHandlerTest.java | 6 +-
server/container/guice/cassandra-guice/pom.xml | 4 -
.../modules/mailbox/CassandraSessionModule.java | 9 --
.../mailbox/ElasticSearchMailboxModule.java | 22 ++--
.../modules/mailbox/ResilientClusterProvider.java | 25 ++--
.../mailbox/ScheduledExecutorServiceProvider.java | 53 ---------
server/container/guice/jpa-guice/pom.xml | 4 -
server/container/util/pom.xml | 4 -
.../apache/james/util/retry/RetryExecutorUtil.java | 44 -------
.../apache/james/util/streams/JamesCollectors.java | 80 -------------
.../org/apache/james/util/FunctionalUtilsTest.java | 6 +-
.../james/util/retry/RetryExecutorUtilTest.java | 130 ---------------------
.../james/util/streams/JamesCollectorsTest.java | 115 ------------------
.../user/cassandra/CassandraUsersRepository.java | 5 +-
...ventSourcingDLPConfigurationStoreExtension.java | 2 -
.../cassandra/CassandraUsersRepositoryTest.java | 3 +-
.../rrt/file/XMLRecipientRewriteTableTest.java | 1 -
.../org/apache/james/smtp/SmtpContentTypeTest.java | 4 +-
.../samples/mailets/InstrumentationMailet.java | 1 -
.../jmap/cassandra/CassandraSendMDNMethodTest.java | 6 -
.../jmap/methods/integration/QuotaMailingTest.java | 1 -
.../james/jmap/memory/MemorySendMDNMethodTest.java | 3 -
.../jmap/rabbitmq/RabbitMQSendMDNMethodTest.java | 1 -
.../james/webadmin/routes/AliasRoutesTest.java | 37 +++---
server/queue/queue-rabbitmq/pom.xml | 4 -
.../rabbitmq/view/cassandra/EnqueuedMailsDAO.java | 10 +-
.../CassandraMailQueueViewTestFactory.java | 5 +-
.../view/cassandra/EnqueuedMailsDaoTest.java | 6 +-
62 files changed, 166 insertions(+), 673 deletions(-)
delete mode 100644 server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java
delete mode 100644 server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java
delete mode 100644 server/container/util/src/main/java/org/apache/james/util/streams/JamesCollectors.java
delete mode 100644 server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java
delete mode 100644 server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 03/12: JAMES-2632 QuotaRootResolver exposes a
method to retrieve QuotaRoot from MailboxId
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit f80a3f8cba606a3b6af1109f0ac35a73d552d8f7
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 10:39:08 2019 +0700
JAMES-2632 QuotaRootResolver exposes a method to retrieve QuotaRoot from MailboxId
---
.../james/mailbox/store/StoreMessageIdManager.java | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 3b0b9f2..679dc09 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -289,7 +289,7 @@ public class StoreMessageIdManager implements MessageIdManager {
private void applyMessageMoveNoMailboxChecks(MailboxSession mailboxSession, List<MailboxMessage> currentMailboxMessages, MessageMoves messageMoves) throws MailboxException {
MailboxMessage mailboxMessage = currentMailboxMessages.stream().findAny().orElseThrow(() -> new MailboxNotFoundException("can't load message"));
- validateQuota(messageMoves, mailboxSession, mailboxMessage);
+ validateQuota(messageMoves, mailboxMessage);
addMessageToMailboxes(mailboxMessage, messageMoves.addedMailboxIds(), mailboxSession);
removeMessageFromMailboxes(mailboxMessage, messageMoves.removedMailboxIds(), mailboxSession);
@@ -342,10 +342,8 @@ public class StoreMessageIdManager implements MessageIdManager {
}
}
- private void validateQuota(MessageMoves messageMoves, MailboxSession mailboxSession, MailboxMessage mailboxMessage) throws MailboxException {
- MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
-
- Map<QuotaRoot, Integer> messageCountByQuotaRoot = buildMapQuotaRoot(messageMoves, mailboxMapper);
+ private void validateQuota(MessageMoves messageMoves, MailboxMessage mailboxMessage) throws MailboxException {
+ Map<QuotaRoot, Integer> messageCountByQuotaRoot = buildMapQuotaRoot(messageMoves);
for (Map.Entry<QuotaRoot, Integer> entry : messageCountByQuotaRoot.entrySet()) {
Integer additionalCopyCount = entry.getValue();
if (additionalCopyCount > 0) {
@@ -356,16 +354,16 @@ public class StoreMessageIdManager implements MessageIdManager {
}
}
- private Map<QuotaRoot, Integer> buildMapQuotaRoot(MessageMoves messageMoves, MailboxMapper mailboxMapper) throws MailboxException {
+ private Map<QuotaRoot, Integer> buildMapQuotaRoot(MessageMoves messageMoves) throws MailboxException {
Map<QuotaRoot, Integer> messageCountByQuotaRoot = new HashMap<>();
for (MailboxId mailboxId : messageMoves.addedMailboxIds()) {
- QuotaRoot quotaRoot = retrieveQuotaRoot(mailboxMapper, mailboxId);
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxId);
int currentCount = Optional.ofNullable(messageCountByQuotaRoot.get(quotaRoot))
.orElse(0);
messageCountByQuotaRoot.put(quotaRoot, currentCount + 1);
}
for (MailboxId mailboxId : messageMoves.removedMailboxIds()) {
- QuotaRoot quotaRoot = retrieveQuotaRoot(mailboxMapper, mailboxId);
+ QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxId);
int currentCount = Optional.ofNullable(messageCountByQuotaRoot.get(quotaRoot))
.orElse(0);
messageCountByQuotaRoot.put(quotaRoot, currentCount - 1);
@@ -373,11 +371,6 @@ public class StoreMessageIdManager implements MessageIdManager {
return messageCountByQuotaRoot;
}
- private QuotaRoot retrieveQuotaRoot(MailboxMapper mailboxMapper, MailboxId mailboxId) throws MailboxException {
- Mailbox mailbox = mailboxMapper.findMailboxById(mailboxId);
- return quotaRootResolver.getQuotaRoot(mailbox.generateAssociatedPath());
- }
-
private void addMessageToMailboxes(MailboxMessage mailboxMessage, Set<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 08/12: JAMES-2630 Ensure Iterable flux get
published on ElasticScheduler before rate limiting
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit c5932ce62f601dc9e940972ba091404b1acfa850
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Feb 14 16:13:12 2019 +0700
JAMES-2630 Ensure Iterable flux get published on ElasticScheduler before rate limiting
---
.../org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java | 2 ++
.../apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java | 3 +++
2 files changed, 5 insertions(+)
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 29e9738..ae37a96 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
@@ -91,6 +91,7 @@ import com.google.common.primitives.Bytes;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
import reactor.util.function.Tuple2;
public class CassandraMessageDAO {
@@ -232,6 +233,7 @@ public class CassandraMessageDAO {
public Flux<MessageResult> retrieveMessages(List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Limit limit) {
return Flux.fromStream(limit.applyOnStream(messageIds.stream().distinct()))
+ .publishOn(Schedulers.elastic())
.limitRate(configuration.getMessageReadChunkSize())
.flatMap(id -> retrieveRow(id, fetchType)
.flatMap(resultSet -> message(resultSet, id, fetchType)));
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 fb0eb4f..f74b2ca 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
@@ -56,6 +56,7 @@ import com.google.common.collect.Multimap;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
public class CassandraMessageIdMapper implements MessageIdMapper {
private static final Logger LOGGER = LoggerFactory.getLogger(CassandraMessageIdMapper.class);
@@ -91,6 +92,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
@Override
public List<MailboxMessage> find(Collection<MessageId> messageIds, FetchType fetchType) {
return Flux.fromStream(messageIds.stream())
+ .publishOn(Schedulers.elastic())
.limitRate(cassandraConfiguration.getMessageReadChunkSize())
.flatMap(messageId -> imapUidDAO.retrieve((CassandraMessageId) messageId, Optional.empty()))
.collectList()
@@ -178,6 +180,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
Flux.fromIterable(ids.asMap()
.entrySet())
.limitRate(cassandraConfiguration.getExpungeChunkSize())
+ .publishOn(Schedulers.elastic())
.flatMap(entry -> deleteAsMono(entry.getKey(), entry.getValue()))
.then()
.block();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 10/12: JAMES-2630 Remove no more used async-retry
dependency
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit a0c35b1e3574d9657a0c5c83754eba7ea2a1d2ab
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 13:49:54 2019 +0700
JAMES-2630 Remove no more used async-retry dependency
---
pom.xml | 5 -----
server/container/guice/cassandra-guice/pom.xml | 4 ----
server/container/guice/jpa-guice/pom.xml | 4 ----
server/container/util/pom.xml | 4 ----
server/queue/queue-rabbitmq/pom.xml | 4 ----
5 files changed, 21 deletions(-)
diff --git a/pom.xml b/pom.xml
index 8b28980..891ca53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1855,11 +1855,6 @@
</exclusions>
</dependency>
<dependency>
- <groupId>com.nurkiewicz.asyncretry</groupId>
- <artifactId>asyncretry</artifactId>
- <version>0.0.7</version>
- </dependency>
- <dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.6.0</version>
diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml
index c98e119..5ddae3f 100644
--- a/server/container/guice/cassandra-guice/pom.xml
+++ b/server/container/guice/cassandra-guice/pom.xml
@@ -259,10 +259,6 @@
<artifactId>logback-elasticsearch-appender</artifactId>
</dependency>
<dependency>
- <groupId>com.nurkiewicz.asyncretry</groupId>
- <artifactId>asyncretry</artifactId>
- </dependency>
- <dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
diff --git a/server/container/guice/jpa-guice/pom.xml b/server/container/guice/jpa-guice/pom.xml
index d8753bc..0340513 100644
--- a/server/container/guice/jpa-guice/pom.xml
+++ b/server/container/guice/jpa-guice/pom.xml
@@ -159,10 +159,6 @@
<artifactId>logback-elasticsearch-appender</artifactId>
</dependency>
<dependency>
- <groupId>com.nurkiewicz.asyncretry</groupId>
- <artifactId>asyncretry</artifactId>
- </dependency>
- <dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
diff --git a/server/container/util/pom.xml b/server/container/util/pom.xml
index f34ab20..9177ff6 100644
--- a/server/container/util/pom.xml
+++ b/server/container/util/pom.xml
@@ -59,10 +59,6 @@
<artifactId>icu4j</artifactId>
</dependency>
<dependency>
- <groupId>com.nurkiewicz.asyncretry</groupId>
- <artifactId>asyncretry</artifactId>
- </dependency>
- <dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</dependency>
diff --git a/server/queue/queue-rabbitmq/pom.xml b/server/queue/queue-rabbitmq/pom.xml
index 504ee06..aa59f09 100644
--- a/server/queue/queue-rabbitmq/pom.xml
+++ b/server/queue/queue-rabbitmq/pom.xml
@@ -144,10 +144,6 @@
<artifactId>guava</artifactId>
</dependency>
<dependency>
- <groupId>com.nurkiewicz.asyncretry</groupId>
- <artifactId>asyncretry</artifactId>
- </dependency>
- <dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
</dependency>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 01/12: Checkstyle and warnings fixes
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 2033d10ff09cbcfb10c190f43948b48bd1f73079
Author: Raphael Ouazana <ra...@linagora.com>
AuthorDate: Mon Feb 4 11:14:50 2019 +0100
Checkstyle and warnings fixes
---
.../backend/rabbitmq/DockerRabbitMQTestRule.java | 3 --
.../eventstore/cassandra/EventStoreDao.java | 6 ++--
.../cassandra/CassandraEventStoreExtension.java | 4 +--
.../james/mailbox/events/EventBusTestFixture.java | 2 ++
.../mailbox/events/EventDeadLettersContract.java | 9 ++++++
.../events/RetryBackoffConfigurationTest.java | 1 +
.../cassandra/mail/CassandraAttachmentDAO.java | 6 ++--
.../cassandra/mail/CassandraMessageDAO.java | 12 +++----
.../cassandra/mail/CassandraMessageIdDAO.java | 12 ++-----
.../cassandra/mail/CassandraAttachmentDAOTest.java | 2 --
.../mail/CassandraAttachmentFallbackTest.java | 2 --
.../cassandra/mail/CassandraMessageDAOTest.java | 4 +--
.../migration/AttachmentMessageIdCreationTest.java | 4 +--
.../mail/migration/AttachmentV2MigrationTest.java | 2 --
.../events/delivery/InVmEventDeliveryTest.java | 3 --
.../james/mailbox/events/RabbitMQEventBusTest.java | 10 +++---
.../james/event/json/dtos/MessageIdTest.java | 3 --
.../james/event/json/dtos/MessageUidTest.java | 3 --
.../AbstractMailboxManagerAttachmentTest.java | 5 +--
.../AbstractMessageIdManagerSideEffectTest.java | 1 +
.../transport/mailets/ICALToJsonAttributeTest.java | 10 ++----
.../transport/mailets/ICalendarParserTest.java | 5 ++-
.../transport/mailets/AmqpForwardAttribute.java | 1 +
.../transport/mailets/MimeDecodingMailetTest.java | 2 +-
.../transport/mailets/StripAttachmentTest.java | 7 ++--
.../apache/mailet/base/test/FakeMailContext.java | 2 +-
.../cassandra/host/CassandraHostSystem.java | 3 +-
.../protocols/pop3/core/RetrCmdHandlerTest.java | 6 ++--
.../org/apache/james/util/FunctionalUtilsTest.java | 6 ++--
.../user/cassandra/CassandraUsersRepository.java | 5 +--
...ventSourcingDLPConfigurationStoreExtension.java | 2 --
.../cassandra/CassandraUsersRepositoryTest.java | 3 +-
.../rrt/file/XMLRecipientRewriteTableTest.java | 1 -
.../org/apache/james/smtp/SmtpContentTypeTest.java | 4 +--
.../samples/mailets/InstrumentationMailet.java | 1 -
.../jmap/cassandra/CassandraSendMDNMethodTest.java | 6 ----
.../jmap/methods/integration/QuotaMailingTest.java | 1 -
.../james/jmap/memory/MemorySendMDNMethodTest.java | 3 --
.../jmap/rabbitmq/RabbitMQSendMDNMethodTest.java | 1 -
.../james/webadmin/routes/AliasRoutesTest.java | 37 +++++++++++-----------
.../rabbitmq/view/cassandra/EnqueuedMailsDAO.java | 10 +++---
.../CassandraMailQueueViewTestFactory.java | 5 ++-
.../view/cassandra/EnqueuedMailsDaoTest.java | 6 ++--
43 files changed, 86 insertions(+), 135 deletions(-)
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java
index 9216fe1..a0d996e 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java
@@ -19,9 +19,6 @@
package org.apache.james.backend.rabbitmq;
import org.junit.rules.ExternalResource;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
public class DockerRabbitMQTestRule extends ExternalResource {
diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.java
index d99c15a..b022ca7 100644
--- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.java
+++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.java
@@ -34,7 +34,6 @@ import java.util.List;
import javax.inject.Inject;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.eventsourcing.AggregateId;
import org.apache.james.eventsourcing.Event;
import org.apache.james.eventsourcing.eventstore.History;
@@ -45,18 +44,17 @@ import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.fasterxml.jackson.core.JsonProcessingException;
+
import reactor.core.publisher.Mono;
public class EventStoreDao {
- private final CassandraUtils cassandraUtils;
private final CassandraAsyncExecutor cassandraAsyncExecutor;
private final PreparedStatement insert;
private final PreparedStatement select;
private final JsonEventSerializer jsonEventSerializer;
@Inject
- public EventStoreDao(Session session, CassandraUtils cassandraUtils, JsonEventSerializer jsonEventSerializer) {
- this.cassandraUtils = cassandraUtils;
+ public EventStoreDao(Session session, JsonEventSerializer jsonEventSerializer) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.jsonEventSerializer = jsonEventSerializer;
this.insert = prepareInsert(session);
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java
index 8633cb0..dfebb5f 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java
@@ -23,7 +23,6 @@ import java.util.Arrays;
import java.util.Set;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.eventsourcing.eventstore.EventStore;
import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
import org.junit.jupiter.api.extension.AfterAllCallback;
@@ -62,8 +61,7 @@ public class CassandraEventStoreExtension implements BeforeAllCallback, AfterAll
public void beforeEach(ExtensionContext context) {
JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules);
- eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION,
- jsonEventSerializer);
+ eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), jsonEventSerializer);
}
@Override
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
index 798d765..c655cbd 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
@@ -70,7 +70,9 @@ public interface EventBusTestFixture {
}
class GroupA extends Group {}
+
class GroupB extends Group {}
+
class GroupC extends Group {}
MailboxSession.SessionId SESSION_ID = MailboxSession.SessionId.of(42);
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventDeadLettersContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventDeadLettersContract.java
index aef0100..b0d21d9 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventDeadLettersContract.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventDeadLettersContract.java
@@ -48,14 +48,23 @@ import com.google.common.collect.Multimaps;
interface EventDeadLettersContract {
class Group0 extends Group{}
+
class Group1 extends Group{}
+
class Group2 extends Group{}
+
class Group3 extends Group{}
+
class Group4 extends Group{}
+
class Group5 extends Group{}
+
class Group6 extends Group{}
+
class Group7 extends Group{}
+
class Group8 extends Group{}
+
class Group9 extends Group{}
static ImmutableMap<Integer, Group> concurrentGroups() {
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/RetryBackoffConfigurationTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/RetryBackoffConfigurationTest.java
index 2253cd7..0788da9 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/RetryBackoffConfigurationTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/RetryBackoffConfigurationTest.java
@@ -119,6 +119,7 @@ class RetryBackoffConfigurationTest {
assertThat(retryBackoff.getJitterFactor())
.isEqualTo(0);
}
+
@Test
void buildShouldReturnCorrespondingValues() {
RetryBackoffConfiguration retryBackoff = RetryBackoffConfiguration.builder()
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
index f7cdcf6..f954ed7 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAO.java
@@ -38,7 +38,6 @@ import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.AttachmentId;
@@ -46,13 +45,13 @@ import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.google.common.base.Preconditions;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public class CassandraAttachmentDAO {
private final CassandraAsyncExecutor cassandraAsyncExecutor;
- private final CassandraUtils cassandraUtils;
private CassandraConfiguration configuration;
private final PreparedStatement insertStatement;
private final PreparedStatement deleteStatement;
@@ -60,14 +59,13 @@ public class CassandraAttachmentDAO {
private final PreparedStatement selectAllStatement;
@Inject
- public CassandraAttachmentDAO(Session session, CassandraUtils cassandraUtils, CassandraConfiguration configuration) {
+ public CassandraAttachmentDAO(Session session, CassandraConfiguration configuration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.selectStatement = prepareSelect(session);
this.selectAllStatement = prepareSelectAll(session);
this.deleteStatement = prepareDelete(session);
this.insertStatement = prepareInsert(session);
- this.cassandraUtils = cassandraUtils;
this.configuration = configuration;
}
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 6bb6e24..03ec22c 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
@@ -56,7 +56,6 @@ import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.BlobStore;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
@@ -91,6 +90,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.primitives.Bytes;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.util.function.Tuple2;
@@ -104,7 +104,6 @@ public class CassandraMessageDAO {
private final BlobStore blobStore;
private final BlobId.Factory blobIdFactory;
private final CassandraConfiguration configuration;
- private final CassandraUtils cassandraUtils;
private final CassandraMessageId.Factory messageIdFactory;
private final PreparedStatement insert;
private final PreparedStatement delete;
@@ -117,14 +116,13 @@ public class CassandraMessageDAO {
@Inject
public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider, BlobStore blobStore,
- BlobId.Factory blobIdFactory, CassandraConfiguration cassandraConfiguration,
- CassandraUtils cassandraUtils, CassandraMessageId.Factory messageIdFactory) {
+ BlobId.Factory blobIdFactory, CassandraConfiguration cassandraConfiguration,
+ CassandraMessageId.Factory messageIdFactory) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.typesProvider = typesProvider;
this.blobStore = blobStore;
this.blobIdFactory = blobIdFactory;
this.configuration = cassandraConfiguration;
- this.cassandraUtils = cassandraUtils;
this.messageIdFactory = messageIdFactory;
this.insert = prepareInsert(session);
@@ -139,8 +137,8 @@ public class CassandraMessageDAO {
@VisibleForTesting
public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider, BlobStore blobStore,
- BlobId.Factory blobIdFactory, CassandraUtils cassandraUtils, CassandraMessageId.Factory messageIdFactory) {
- this(session, typesProvider, blobStore, blobIdFactory, CassandraConfiguration.DEFAULT_CONFIGURATION, cassandraUtils, messageIdFactory);
+ BlobId.Factory blobIdFactory, CassandraMessageId.Factory messageIdFactory) {
+ this(session, typesProvider, blobStore, blobIdFactory, CassandraConfiguration.DEFAULT_CONFIGURATION, messageIdFactory);
}
private PreparedStatement prepareSelect(Session session, String[] fields) {
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 e7cafbe..e74a667 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
@@ -49,7 +49,6 @@ import javax.mail.Flags;
import javax.mail.Flags.Flag;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
@@ -62,8 +61,8 @@ 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.collect.ImmutableSet;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -80,11 +79,10 @@ 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, CassandraUtils cassandraUtils) {
+ public CassandraMessageIdDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.messageIdFactory = messageIdFactory;
this.delete = prepareDelete(session);
@@ -94,12 +92,6 @@ 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.WITH_DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareDelete(Session session) {
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
index 5cb927e..ec41c87 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
@@ -27,7 +27,6 @@ import java.util.Optional;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.AttachmentId;
@@ -47,7 +46,6 @@ class CassandraAttachmentDAOTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
testee = new CassandraAttachmentDAO(cassandra.getConf(),
- CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CassandraConfiguration.DEFAULT_CONFIGURATION);
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
index 7d2b475..3e9c96b 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
@@ -29,7 +29,6 @@ import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.cassandra.CassandraBlobModule;
@@ -67,7 +66,6 @@ class CassandraAttachmentFallbackTest {
void setUp(CassandraCluster cassandra) {
attachmentDAOV2 = new CassandraAttachmentDAOV2(BLOB_ID_FACTORY, cassandra.getConf());
attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
- CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CassandraConfiguration.DEFAULT_CONFIGURATION);
blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
attachmentMessageIdDAO = new CassandraAttachmentMessageIdDAO(cassandra.getConf(), new CassandraMessageId.Factory());
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
index 4bb120c..de7292a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -36,7 +36,6 @@ import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.cassandra.CassandraBlobModule;
@@ -62,6 +61,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.primitives.Bytes;
+
import nl.jqno.equalsverifier.EqualsVerifier;
import reactor.core.publisher.Flux;
@@ -95,7 +95,7 @@ class CassandraMessageDAOTest {
CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
HashBlobId.Factory blobIdFactory = new HashBlobId.Factory();
testee = new CassandraMessageDAO(cassandra.getConf(), cassandra.getTypesProvider(), blobsDAO, blobIdFactory,
- CassandraUtils.WITH_DEFAULT_CONFIGURATION, new CassandraMessageId.Factory());
+ new CassandraMessageId.Factory());
messageIds = ImmutableList.of(ComposedMessageIdWithMetaData.builder()
.composedMessageId(new ComposedMessageId(MAILBOX_ID, messageId, messageUid))
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
index 27d28ca..c81b05c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
@@ -36,7 +36,6 @@ import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.migration.Migration;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.cassandra.CassandraBlobModule;
@@ -60,6 +59,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+
import reactor.core.publisher.Flux;
class AttachmentMessageIdCreationTest {
@@ -88,7 +88,7 @@ class AttachmentMessageIdCreationTest {
blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
cassandraMessageDAO = new CassandraMessageDAO(cassandra.getConf(), cassandra.getTypesProvider(),
- blobsDAO, new HashBlobId.Factory(), CassandraUtils.WITH_DEFAULT_CONFIGURATION, messageIdFactory);
+ blobsDAO, new HashBlobId.Factory(), messageIdFactory);
attachmentMessageIdDAO = new CassandraAttachmentMessageIdDAO(cassandra.getConf(),
new CassandraMessageId.Factory());
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
index f11c800..f5de50e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
@@ -31,7 +31,6 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.backends.cassandra.migration.Migration;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.cassandra.CassandraBlobModule;
import org.apache.james.blob.cassandra.CassandraBlobsDAO;
@@ -68,7 +67,6 @@ class AttachmentV2MigrationTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
- CassandraUtils.WITH_DEFAULT_CONFIGURATION,
CassandraConfiguration.DEFAULT_CONFIGURATION);
attachmentDAOV2 = new CassandraAttachmentDAOV2(BLOB_ID_FACTORY, cassandra.getConf());
blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
diff --git a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
index 08d22c9..547e192 100644
--- a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
+++ b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
@@ -27,7 +27,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -46,11 +45,9 @@ import org.junit.jupiter.api.Test;
class InVmEventDeliveryTest {
private InVmEventDelivery inVmEventDelivery;
private MailboxListenerCountingSuccessfulExecution listener;
- private MailboxListener.MailboxEvent event;
@BeforeEach
void setUp() {
- event = mock(MailboxListener.MailboxEvent.class);
listener = newListener();
inVmEventDelivery = new InVmEventDelivery(new NoopMetricFactory());
}
diff --git a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
index c1150c1..e56c162 100644
--- a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
+++ b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/RabbitMQEventBusTest.java
@@ -28,9 +28,7 @@ import static org.apache.james.backend.rabbitmq.Constants.NO_ARGUMENTS;
import static org.apache.james.mailbox.events.EventBusTestFixture.ALL_GROUPS;
import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT;
import static org.apache.james.mailbox.events.EventBusTestFixture.GROUP_A;
-import static org.apache.james.mailbox.events.EventBusTestFixture.GroupA;
import static org.apache.james.mailbox.events.EventBusTestFixture.KEY_1;
-import static org.apache.james.mailbox.events.EventBusTestFixture.MailboxListenerCountingSuccessfulExecution;
import static org.apache.james.mailbox.events.EventBusTestFixture.NO_KEYS;
import static org.apache.james.mailbox.events.EventBusTestFixture.THIRTY_SECONDS;
import static org.apache.james.mailbox.events.EventBusTestFixture.WAIT_CONDITION;
@@ -51,13 +49,14 @@ import static org.mockito.Mockito.when;
import java.io.Closeable;
import java.nio.charset.StandardCharsets;
-import java.time.Duration;
import java.util.concurrent.TimeUnit;
import org.apache.james.backend.rabbitmq.RabbitMQConnectionFactory;
import org.apache.james.backend.rabbitmq.RabbitMQExtension;
import org.apache.james.backend.rabbitmq.RabbitMQManagementAPI;
import org.apache.james.event.json.EventSerializer;
+import org.apache.james.mailbox.events.EventBusTestFixture.GroupA;
+import org.apache.james.mailbox.events.EventBusTestFixture.MailboxListenerCountingSuccessfulExecution;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.metrics.api.NoopMetricFactory;
@@ -71,6 +70,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import org.mockito.stubbing.Answer;
import com.rabbitmq.client.Connection;
+
import reactor.core.publisher.Mono;
import reactor.rabbitmq.BindingSpecification;
import reactor.rabbitmq.ExchangeSpecification;
@@ -195,7 +195,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
MailboxListenerCountingSuccessfulExecution eventBusListener = spy(new EventBusTestFixture.MailboxListenerCountingSuccessfulExecution());
MailboxListenerCountingSuccessfulExecution eventBus2Listener = spy(new EventBusTestFixture.MailboxListenerCountingSuccessfulExecution());
MailboxListenerCountingSuccessfulExecution eventBus3Listener = spy(new EventBusTestFixture.MailboxListenerCountingSuccessfulExecution());
- Answer callEventAndSleepForever = invocation -> {
+ Answer<?> callEventAndSleepForever = invocation -> {
invocation.callRealMethod();
TimeUnit.SECONDS.sleep(Long.MAX_VALUE);
return null;
@@ -278,8 +278,6 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
@Nested
class LifeCycleTest {
- private final Duration TEN_SECONDS = Duration.ofSeconds(10);
-
private static final int THREAD_COUNT = 10;
private static final int OPERATION_COUNT = 100000;
private static final int MAX_EVENT_DISPATCHED_COUNT = THREAD_COUNT * OPERATION_COUNT;
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageIdTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageIdTest.java
index ef2c241..91605c5 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageIdTest.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageIdTest.java
@@ -29,10 +29,7 @@ import org.junit.jupiter.api.Test;
import play.api.libs.json.JsError;
import play.api.libs.json.JsNull$;
import play.api.libs.json.JsNumber;
-import play.api.libs.json.JsPath;
import play.api.libs.json.JsString;
-import play.api.libs.json.JsSuccess;
-import scala.collection.immutable.List;
import scala.math.BigDecimal;
class MessageIdTest {
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageUidTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageUidTest.java
index e6a2ce3..0d59839 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageUidTest.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/MessageUidTest.java
@@ -28,10 +28,7 @@ import org.junit.jupiter.api.Test;
import play.api.libs.json.JsError;
import play.api.libs.json.JsNull$;
import play.api.libs.json.JsNumber;
-import play.api.libs.json.JsPath;
import play.api.libs.json.JsString;
-import play.api.libs.json.JsSuccess;
-import scala.collection.immutable.List;
import scala.math.BigDecimal;
class MessageUidTest {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
index 9c43818..5d516fd 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
@@ -28,8 +28,6 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
-import com.github.fge.lambdas.Throwing;
-import com.google.common.collect.ImmutableList;
import org.apache.commons.io.IOUtils;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
@@ -48,6 +46,9 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.junit.Test;
+import com.github.fge.lambdas.Throwing;
+import com.google.common.collect.ImmutableList;
+
public abstract class AbstractMailboxManagerAttachmentTest {
private static final String USERNAME = "user@domain.tld";
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 36f59cb..b798123 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -126,6 +126,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
});
}
+ @SuppressWarnings("unchecked")
@Test
public void deletesShouldCallEventDispatcher() throws Exception {
givenUnlimitedQuota();
diff --git a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
index a95b797..8588657 100644
--- a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
+++ b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
@@ -51,6 +51,7 @@ import net.fortuna.ical4j.model.Calendar;
public class ICALToJsonAttributeTest {
private static final MailAddress SENDER = MailAddressFixture.ANY_AT_JAMES;
+ @SuppressWarnings("unchecked")
private static final Class<Map<String, byte[]>> MAP_STRING_BYTES_CLASS = (Class<Map<String, byte[]>>) (Object) Map.class;
@Rule
@@ -213,6 +214,7 @@ public class ICALToJsonAttributeTest {
.isEmpty();
}
+ @SuppressWarnings("unchecked")
@Test
public void serviceShouldAttachEmptyListWhenNoRecipient() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -233,7 +235,6 @@ public class ICALToJsonAttributeTest {
.hasValueSatisfying(map -> assertThat(map).isEmpty());
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldAttachJson() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -273,7 +274,6 @@ public class ICALToJsonAttributeTest {
return new String(BufferRecyclers.getJsonStringEncoder().quoteAsUTF8(new String(ics, StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldAttachJsonForSeveralRecipient() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -319,7 +319,6 @@ public class ICALToJsonAttributeTest {
});
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldAttachJsonForSeveralICALs() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -368,7 +367,6 @@ public class ICALToJsonAttributeTest {
});
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldFilterInvalidICS() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -407,7 +405,6 @@ public class ICALToJsonAttributeTest {
});
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldFilterNonExistingKeys() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -446,7 +443,6 @@ public class ICALToJsonAttributeTest {
});
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldUseFromWhenSpecified() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -485,7 +481,6 @@ public class ICALToJsonAttributeTest {
});
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldSupportMimeMessagesWithoutFromFields() throws Exception {
testee.init(FakeMailetConfig.builder().build());
@@ -522,7 +517,6 @@ public class ICALToJsonAttributeTest {
});
}
- @SuppressWarnings("unchecked")
@Test
public void serviceShouldUseFromWhenSpecifiedAndNoSender() throws Exception {
testee.init(FakeMailetConfig.builder().build());
diff --git a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICalendarParserTest.java b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICalendarParserTest.java
index 2c8cb0e..9e57b09 100644
--- a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICalendarParserTest.java
+++ b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICalendarParserTest.java
@@ -56,6 +56,7 @@ public class ICalendarParserTest {
"END:VCALENDAR";
private static final String WRONG_ICAL_VALUE = "anyValue";
+ @SuppressWarnings("unchecked")
public static final Class<Map<String, Calendar>> MAP_STRING_CALENDAR_CLASS = (Class<Map<String, Calendar>>) (Object) Map.class;
@Rule
@@ -156,7 +157,7 @@ public class ICalendarParserTest {
assertThat(mail.getAttribute(DESTINATION_CUSTOM_ATTRIBUTE_NAME))
.isPresent()
- .hasValueSatisfying(attribute -> assertThat((Map) attribute.getValue().value()).isEmpty());
+ .hasValueSatisfying(attribute -> assertThat((Map<?, ?>) attribute.getValue().value()).isEmpty());
}
@Test
@@ -206,7 +207,6 @@ public class ICalendarParserTest {
}
@Test
- @SuppressWarnings("unchecked")
public void serviceShouldFilterResultWhenErrorParsing() throws Exception {
FakeMailetConfig mailetConfiguration = FakeMailetConfig.builder()
.mailetName("ICalendarParser")
@@ -240,7 +240,6 @@ public class ICalendarParserTest {
}
@Test
- @SuppressWarnings("unchecked")
public void parsingShouldBeLenient() throws Exception {
FakeMailetConfig mailetConfiguration = FakeMailetConfig.builder()
.mailetName("ICalendarParser")
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/AmqpForwardAttribute.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/AmqpForwardAttribute.java
index 671dad1..13f7c7e 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/AmqpForwardAttribute.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/AmqpForwardAttribute.java
@@ -122,6 +122,7 @@ public class AmqpForwardAttribute extends GenericMailet {
+ attribute.toString() + " found."));
}
+ @SuppressWarnings("unchecked")
private Optional<Stream<byte[]>> extractAttributeValueContent(Object attributeContent) {
if (attributeContent instanceof Map) {
return Optional.of(((Map<String, byte[]>) attributeContent).values().stream());
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MimeDecodingMailetTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MimeDecodingMailetTest.java
index 685c375..455c3a2 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MimeDecodingMailetTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MimeDecodingMailetTest.java
@@ -48,6 +48,7 @@ import com.google.common.collect.ImmutableMap;
class MimeDecodingMailetTest {
private static final AttributeName MAIL_ATTRIBUTE = AttributeName.of("mime.attachments");
+ @SuppressWarnings("unchecked")
private static final Class<Map<String, byte[]>> MAP_STRING_BYTES_CLASS = (Class<Map<String, byte[]>>) (Object) Map.class;
private MailetContext mailetContext;
@@ -130,7 +131,6 @@ class MimeDecodingMailetTest {
}
@Test
- @SuppressWarnings("unchecked")
void serviceShouldChangeAttributeWhenDefined() throws MessagingException {
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
.mailetName("Test")
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 36da780..4abcde2 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -39,8 +39,6 @@ import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
-import com.github.fge.lambdas.Throwing;
-import com.github.fge.lambdas.consumers.ConsumerChainer;
import org.apache.commons.io.IOUtils;
import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.junit.TemporaryFolderExtension;
@@ -58,10 +56,15 @@ import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.consumers.ConsumerChainer;
+
@ExtendWith(TemporaryFolderExtension.class)
class StripAttachmentTest {
+ @SuppressWarnings("unchecked")
private static Class<Collection<AttributeValue<String>>> COLLECTION_STRING_CLASS = (Class<Collection<AttributeValue<String>>>) (Object) Collection.class;
+ @SuppressWarnings("unchecked")
private static Class<Map<String, byte[]>> MAP_STRING_BYTES_CLASS = (Class<Map<String, byte[]>>) (Object) Map.class;
private static final String EXPECTED_ATTACHMENT_CONTENT = "#¤ãàé";
diff --git a/mailet/test/src/main/java/org/apache/mailet/base/test/FakeMailContext.java b/mailet/test/src/main/java/org/apache/mailet/base/test/FakeMailContext.java
index d34f5d4..5794158 100644
--- a/mailet/test/src/main/java/org/apache/mailet/base/test/FakeMailContext.java
+++ b/mailet/test/src/main/java/org/apache/mailet/base/test/FakeMailContext.java
@@ -412,7 +412,7 @@ public class FakeMailContext implements MailetContext {
@Override
public Object getAttribute(String name) {
- return attributes.get(name);
+ return attributes.get(AttributeName.of(name));
}
@Override
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 f424021..cdbbb82 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
@@ -21,7 +21,6 @@ package org.apache.james.mpt.managesieve.cassandra.host;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mpt.host.JamesManageSieveHostSystem;
import org.apache.james.sieve.cassandra.CassandraActiveScriptDAO;
import org.apache.james.sieve.cassandra.CassandraSieveDAO;
@@ -61,7 +60,7 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
@Override
protected UsersRepository createUsersRepository() {
- CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(cassandra.getConf());
cassandraUsersRepository.setEnableVirtualHosting(false);
return cassandraUsersRepository;
}
diff --git a/protocols/pop3/src/test/java/org/apache/james/protocols/pop3/core/RetrCmdHandlerTest.java b/protocols/pop3/src/test/java/org/apache/james/protocols/pop3/core/RetrCmdHandlerTest.java
index 92d1d6b..7ffb6d0 100644
--- a/protocols/pop3/src/test/java/org/apache/james/protocols/pop3/core/RetrCmdHandlerTest.java
+++ b/protocols/pop3/src/test/java/org/apache/james/protocols/pop3/core/RetrCmdHandlerTest.java
@@ -23,15 +23,15 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.util.Collections;
+import java.util.stream.Collectors;
+
import org.apache.james.protocols.api.Request;
import org.apache.james.protocols.pop3.POP3Session;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
-import java.util.Collections;
-import java.util.stream.Collectors;
-
class RetrCmdHandlerTest {
@ParameterizedTest
diff --git a/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java b/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java
index 8387a53..2147ef4 100644
--- a/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java
+++ b/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java
@@ -20,13 +20,13 @@ package org.apache.james.util;
import static org.assertj.core.api.Assertions.assertThat;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+
class FunctionalUtilsTest {
@Nested
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 eeaf265..29b4f9d 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
@@ -39,7 +39,6 @@ import java.util.Optional;
import javax.inject.Inject;
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;
import org.apache.james.user.api.model.User;
@@ -59,7 +58,6 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
private static final Logger LOGGER = LoggerFactory.getLogger(CassandraUsersRepository.class);
private final CassandraAsyncExecutor executor;
- private final CassandraUtils cassandraUtils;
private final PreparedStatement getUserStatement;
private final PreparedStatement updateUserStatement;
private final PreparedStatement removeUserStatement;
@@ -68,9 +66,8 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
private final PreparedStatement insertStatement;
@Inject
- public CassandraUsersRepository(Session session, CassandraUtils cassandraUtils) {
+ public CassandraUsersRepository(Session session) {
this.executor = new CassandraAsyncExecutor(session);
- this.cassandraUtils = cassandraUtils;
this.getUserStatement = prepareGetUserStatement(session);
this.updateUserStatement = prepareUpdateUserStatement(session);
this.removeUserStatement = prepareRemoveUserStatement(session);
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
index 7cde47a..f47b2cb 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
@@ -21,7 +21,6 @@ package org.apache.james.dlp.eventsourcing.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraExtension;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.dlp.api.DLPConfigurationStore;
import org.apache.james.dlp.eventsourcing.EventSourcingDLPConfigurationStore;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStore;
@@ -80,7 +79,6 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef
EventStoreDao eventStoreDao = new EventStoreDao(
cassandra.getConf(),
- CassandraUtils.WITH_DEFAULT_CONFIGURATION,
jsonEventSerializer);
return new EventSourcingDLPConfigurationStore(new CassandraEventStore(eventStoreDao));
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 2951016..6cc9712 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
@@ -21,7 +21,6 @@ package org.apache.james.user.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraRule;
-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;
@@ -61,6 +60,6 @@ public class CassandraUsersRepositoryTest extends AbstractUsersRepositoryTest {
@Override
protected AbstractUsersRepository getUsersRepository() {
- return new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ return new CassandraUsersRepository(cassandra.getConf());
}
}
diff --git a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
index 16591e2..057b225 100644
--- a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
+++ b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
@@ -20,7 +20,6 @@ package org.apache.james.rrt.file;
import java.util.ArrayList;
import java.util.List;
-import java.util.Optional;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.rrt.api.RecipientRewriteTableException;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
index d72dbca..de4fb1e 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
@@ -28,6 +28,8 @@ import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.startsWith;
+import javax.mail.MessagingException;
+
import org.apache.james.MemoryJamesServerMain;
import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.mailets.TemporaryJamesServer;
@@ -52,8 +54,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
-import javax.mail.MessagingException;
-
public class SmtpContentTypeTest {
private static final String FROM = "fromuser@" + DEFAULT_DOMAIN;
private static final String TO = "to@any.com";
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java b/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
index 4a68bb2..ea26413 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java
@@ -21,7 +21,6 @@ package org.apache.james.samples.mailets;
import java.io.IOException;
import java.util.Collection;
import java.util.Enumeration;
-import java.util.Iterator;
import javax.mail.Address;
import javax.mail.Flags;
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java
index 0509126..13d414d 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java
@@ -21,11 +21,7 @@ package org.apache.james.jmap.cassandra;
import static org.apache.james.CassandraJamesServerMain.ALL_BUT_JMX_CASSANDRA_MODULE;
-import java.io.IOException;
-
import org.apache.james.CassandraExtension;
-import org.apache.james.CassandraJmapTestRule;
-import org.apache.james.DockerCassandraRule;
import org.apache.james.EmbeddedElasticSearchExtension;
import org.apache.james.GuiceJamesServer;
import org.apache.james.JamesServerExtension;
@@ -36,8 +32,6 @@ import org.apache.james.mailbox.extractor.TextExtractor;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.search.PDFTextExtractor;
import org.apache.james.modules.TestJMAPServerModule;
-import org.junit.ClassRule;
-import org.junit.Rule;
import org.junit.jupiter.api.extension.RegisterExtension;
public class CassandraSendMDNMethodTest extends SendMDNMethodTest {
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/QuotaMailingTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/QuotaMailingTest.java
index b27bcba..036435f 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/QuotaMailingTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/QuotaMailingTest.java
@@ -34,7 +34,6 @@ import static org.hamcrest.Matchers.hasItem;
import java.io.IOException;
import java.util.List;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.apache.james.GuiceJamesServer;
diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySendMDNMethodTest.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySendMDNMethodTest.java
index e3848d2..a8f3d6f 100644
--- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySendMDNMethodTest.java
+++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySendMDNMethodTest.java
@@ -19,7 +19,6 @@
package org.apache.james.jmap.memory;
-import java.io.IOException;
import java.util.Random;
import org.apache.activemq.store.PersistenceAdapter;
@@ -28,7 +27,6 @@ import org.apache.james.GuiceJamesServer;
import org.apache.james.JamesServerExtension;
import org.apache.james.JamesServerExtensionBuilder;
import org.apache.james.MemoryJamesServerMain;
-import org.apache.james.MemoryJmapTestRule;
import org.apache.james.jmap.methods.integration.SendMDNMethodTest;
import org.apache.james.mailbox.extractor.TextExtractor;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
@@ -37,7 +35,6 @@ import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.store.search.PDFTextExtractor;
import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
import org.apache.james.modules.TestJMAPServerModule;
-import org.junit.Rule;
import org.junit.jupiter.api.extension.RegisterExtension;
public class MemorySendMDNMethodTest extends SendMDNMethodTest {
diff --git a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQSendMDNMethodTest.java b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQSendMDNMethodTest.java
index f18f3f1..10fe8d2 100644
--- a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQSendMDNMethodTest.java
+++ b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQSendMDNMethodTest.java
@@ -21,7 +21,6 @@ package org.apache.james.jmap.rabbitmq;
import org.apache.james.CassandraExtension;
import org.apache.james.CassandraRabbitMQJamesServerMain;
-import org.apache.james.CleanupTasksPerformer;
import org.apache.james.EmbeddedElasticSearchExtension;
import org.apache.james.GuiceJamesServer;
import org.apache.james.JamesServerExtension;
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AliasRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AliasRoutesTest.java
index 52717f3..84ef6cc 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AliasRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AliasRoutesTest.java
@@ -19,9 +19,22 @@
package org.apache.james.webadmin.routes;
-import io.restassured.RestAssured;
-import io.restassured.filter.log.LogDetail;
-import io.restassured.http.ContentType;
+import static io.restassured.RestAssured.given;
+import static io.restassured.RestAssured.when;
+import static io.restassured.RestAssured.with;
+import static org.apache.james.webadmin.Constants.SEPARATOR;
+import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.CoreMatchers.hasItems;
+import static org.hamcrest.CoreMatchers.is;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+
+import java.util.List;
+import java.util.Map;
+
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.core.Domain;
import org.apache.james.dnsservice.api.DNSService;
@@ -46,21 +59,9 @@ import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
-import java.util.List;
-import java.util.Map;
-
-import static io.restassured.RestAssured.given;
-import static io.restassured.RestAssured.when;
-import static io.restassured.RestAssured.with;
-import static org.apache.james.webadmin.Constants.SEPARATOR;
-import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.hamcrest.CoreMatchers.hasItems;
-import static org.hamcrest.CoreMatchers.is;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
+import io.restassured.RestAssured;
+import io.restassured.filter.log.LogDetail;
+import io.restassured.http.ContentType;
class AliasRoutesTest {
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java
index 009cfb7..dde1aa6 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java
@@ -43,8 +43,6 @@ import static org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueV
import static org.apache.james.queue.rabbitmq.view.cassandra.EnqueuedMailsDaoUtil.asStringList;
import static org.apache.james.queue.rabbitmq.view.cassandra.EnqueuedMailsDaoUtil.toHeaderMap;
import static org.apache.james.queue.rabbitmq.view.cassandra.EnqueuedMailsDaoUtil.toRawAttributeMap;
-import static org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.BucketId;
-import static org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.Slice;
import java.util.Date;
@@ -52,16 +50,18 @@ import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.mail.MimeMessagePartsId;
import org.apache.james.queue.rabbitmq.EnqueuedItem;
import org.apache.james.queue.rabbitmq.MailQueueName;
+import org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.BucketId;
+import org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.Slice;
import org.apache.james.queue.rabbitmq.view.cassandra.model.EnqueuedItemWithSlicingContext;
import org.apache.mailet.Mail;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -70,15 +70,13 @@ public class EnqueuedMailsDAO {
private final CassandraAsyncExecutor executor;
private final PreparedStatement selectFrom;
private final PreparedStatement insert;
- private final CassandraUtils cassandraUtils;
private final CassandraTypesProvider cassandraTypesProvider;
private final BlobId.Factory blobFactory;
@Inject
- EnqueuedMailsDAO(Session session, CassandraUtils cassandraUtils, CassandraTypesProvider cassandraTypesProvider,
+ EnqueuedMailsDAO(Session session, CassandraTypesProvider cassandraTypesProvider,
BlobId.Factory blobIdFactory) {
this.executor = new CassandraAsyncExecutor(session);
- this.cassandraUtils = cassandraUtils;
this.cassandraTypesProvider = cassandraTypesProvider;
this.selectFrom = prepareSelectFrom(session);
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
index d9a451a..f91b346 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
@@ -24,7 +24,6 @@ import java.util.Optional;
import java.util.concurrent.ThreadLocalRandom;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStore;
@@ -48,7 +47,7 @@ public class CassandraMailQueueViewTestFactory {
MimeMessageStore.Factory mimeMessageStoreFactory) {
HashBlobId.Factory blobIdFactory = new HashBlobId.Factory();
- EnqueuedMailsDAO enqueuedMailsDao = new EnqueuedMailsDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION, typesProvider, blobIdFactory);
+ EnqueuedMailsDAO enqueuedMailsDao = new EnqueuedMailsDAO(session, typesProvider, blobIdFactory);
BrowseStartDAO browseStartDao = new BrowseStartDAO(session);
DeletedMailsDAO deletedMailsDao = new DeletedMailsDAO(session);
@@ -57,7 +56,7 @@ public class CassandraMailQueueViewTestFactory {
CassandraMailQueueMailDelete cassandraMailQueueMailDelete = new CassandraMailQueueMailDelete(deletedMailsDao, browseStartDao, cassandraMailQueueBrowser, configuration, random);
- EventsourcingConfigurationManagement eventsourcingConfigurationManagement = new EventsourcingConfigurationManagement(new CassandraEventStore(new EventStoreDao(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ EventsourcingConfigurationManagement eventsourcingConfigurationManagement = new EventsourcingConfigurationManagement(new CassandraEventStore(new EventStoreDao(session,
new JsonEventSerializer(ImmutableSet.of(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION)))));
return new CassandraMailQueueView.Factory(
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDaoTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDaoTest.java
index 13b9e00..d855d80 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDaoTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDaoTest.java
@@ -19,8 +19,6 @@
package org.apache.james.queue.rabbitmq.view.cassandra;
-import static org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.BucketId;
-import static org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.Slice;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.SoftAssertions.assertSoftly;
@@ -29,12 +27,13 @@ import java.util.List;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
-import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.mail.MimeMessagePartsId;
import org.apache.james.queue.rabbitmq.EnqueuedItem;
import org.apache.james.queue.rabbitmq.MailQueueName;
+import org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.BucketId;
+import org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.Slice;
import org.apache.james.queue.rabbitmq.view.cassandra.model.EnqueuedItemWithSlicingContext;
import org.apache.james.queue.rabbitmq.view.cassandra.model.MailKey;
import org.apache.mailet.base.test.FakeMail;
@@ -69,7 +68,6 @@ class EnqueuedMailsDaoTest {
BlobId.Factory blobFactory = new HashBlobId.Factory();
testee = new EnqueuedMailsDAO(
cassandra.getConf(),
- CassandraUtils.WITH_DEFAULT_CONFIGURATION,
cassandra.getTypesProvider(), blobFactory);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 11/12: JAMES-2630 Do not perform exponential
retries upon connection recovery
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 3fb34e825a27b26e5c6a5b39cabaa55864a1ce78
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 15:27:50 2019 +0700
JAMES-2630 Do not perform exponential retries upon connection recovery
---
.../org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java | 3 ++-
.../org/apache/james/modules/mailbox/ResilientClusterProvider.java | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
index b50f0f6..c838516 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
@@ -139,8 +139,9 @@ public class ElasticSearchMailboxModule extends AbstractModule {
ElasticSearchMailboxConfiguration mailboxConfiguration,
ElasticSearchQuotaConfiguration quotaConfiguration) {
+ Duration waitDelay = Duration.ofMillis(configuration.getMinDelay());
return Mono.fromCallable(() -> connectToCluster(configuration, mailboxConfiguration, quotaConfiguration))
- .retryBackoff(configuration.getMaxRetries(), Duration.ofMillis(configuration.getMinDelay()))
+ .retryBackoff(configuration.getMaxRetries(), waitDelay, waitDelay)
.publishOn(Schedulers.elastic())
.block();
}
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
index f514675..06bfb9b 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
@@ -48,8 +48,9 @@ public class ResilientClusterProvider implements Provider<Cluster> {
@Inject
private ResilientClusterProvider(ClusterConfiguration configuration) {
+ Duration waitDelay = Duration.ofMillis(configuration.getMinDelay());
cluster = Mono.fromCallable(getClusterRetryCallable(configuration))
- .retryBackoff(configuration.getMaxRetry(), Duration.ofMillis(configuration.getMinDelay()))
+ .retryBackoff(configuration.getMaxRetry(), waitDelay, waitDelay)
.publishOn(Schedulers.elastic())
.block();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 12/12: JAMES-2630 Add logs before connection retries
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 439ea3a893c944dad07635e4d85e31d88ead1b28
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Feb 14 16:18:47 2019 +0700
JAMES-2630 Add logs before connection retries
---
.../org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java | 1 +
.../java/org/apache/james/modules/mailbox/ResilientClusterProvider.java | 1 +
2 files changed, 2 insertions(+)
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
index c838516..c8117bc 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
@@ -141,6 +141,7 @@ public class ElasticSearchMailboxModule extends AbstractModule {
Duration waitDelay = Duration.ofMillis(configuration.getMinDelay());
return Mono.fromCallable(() -> connectToCluster(configuration, mailboxConfiguration, quotaConfiguration))
+ .doOnError(e -> LOGGER.warn("Error establishing ElasticSearch connection. Next retry scheduled in {} ms", waitDelay, e))
.retryBackoff(configuration.getMaxRetries(), waitDelay, waitDelay)
.publishOn(Schedulers.elastic())
.block();
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
index 06bfb9b..9ed14c2 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
@@ -50,6 +50,7 @@ public class ResilientClusterProvider implements Provider<Cluster> {
private ResilientClusterProvider(ClusterConfiguration configuration) {
Duration waitDelay = Duration.ofMillis(configuration.getMinDelay());
cluster = Mono.fromCallable(getClusterRetryCallable(configuration))
+ .doOnError(e -> LOGGER.warn("Error establishing Cassandra connection. Next retry scheduled in {} ms", waitDelay, e))
.retryBackoff(configuration.getMaxRetry(), waitDelay, waitDelay)
.publishOn(Schedulers.elastic())
.block();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 07/12: JAMES-2630 Remove useless method signature
in CassandraMessageDAOTest
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 56ac1fa1b9d9f3b48929b5e9cafec22c6653f866
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 11:03:02 2019 +0700
JAMES-2630 Remove useless method signature in CassandraMessageDAOTest
Again this solves intelliJ warnings
---
.../apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
index de7292a..1b4c027 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -189,7 +189,7 @@ class CassandraMessageDAOTest {
.build();
}
- private MessageWithoutAttachment toMessage(Flux<CassandraMessageDAO.MessageResult> read) throws InterruptedException, java.util.concurrent.ExecutionException {
+ private MessageWithoutAttachment toMessage(Flux<CassandraMessageDAO.MessageResult> read) {
return read.toStream()
.map(CassandraMessageDAO.MessageResult::message)
.map(Pair::getLeft)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 02/12: MAILBOX-374 Reuse forks in
`mailbox/event/rabbitmq` to fasten tests
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 859233bfaa10b145b694deb59022a05e596c1744
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Feb 1 15:38:50 2019 +0700
MAILBOX-374 Reuse forks in `mailbox/event/rabbitmq` to fasten tests
---
mailbox/event/event-rabbitmq/pom.xml | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/mailbox/event/event-rabbitmq/pom.xml b/mailbox/event/event-rabbitmq/pom.xml
index cad95db..c87e0f6 100644
--- a/mailbox/event/event-rabbitmq/pom.xml
+++ b/mailbox/event/event-rabbitmq/pom.xml
@@ -115,5 +115,16 @@
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <reuseForks>true</reuseForks>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
\ 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
[james-project] 06/12: JAMES-2630 Remove some Exception from method
signature in CassandraMessageMapper
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 46b9ba0754fa4c01e3ade71234fff5ba7df241ed
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 10:57:40 2019 +0700
JAMES-2630 Remove some Exception from method signature in CassandraMessageMapper
This generates warnings in IntelliJ
---
.../mailbox/cassandra/mail/CassandraMessageMapper.java | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
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 908e739..5f0ee84 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
@@ -107,7 +107,7 @@ public class CassandraMessageMapper implements MessageMapper {
}
@Override
- public Iterator<MessageUid> listAllMessageUids(Mailbox mailbox) throws MailboxException {
+ public Iterator<MessageUid> listAllMessageUids(Mailbox mailbox) {
CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
return messageIdDAO.retrieveMessages(cassandraId, MessageRange.all())
.map(metaData -> metaData.getComposedMessageId().getUid())
@@ -160,7 +160,7 @@ public class CassandraMessageMapper implements MessageMapper {
}
@Override
- public Iterator<MailboxMessage> findInMailbox(Mailbox mailbox, MessageRange messageRange, FetchType ftype, int max) throws MailboxException {
+ public Iterator<MailboxMessage> findInMailbox(Mailbox mailbox, MessageRange messageRange, FetchType ftype, int max) {
CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
return retrieveMessages(retrieveMessageIds(mailboxId, messageRange), ftype, Limit.from(max))
.map(MailboxMessage.class::cast)
@@ -183,7 +183,7 @@ public class CassandraMessageMapper implements MessageMapper {
}
@Override
- public List<MessageUid> findRecentMessageUidsInMailbox(Mailbox mailbox) throws MailboxException {
+ public List<MessageUid> findRecentMessageUidsInMailbox(Mailbox mailbox) {
CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
return mailboxRecentDAO.getRecentMessageUidsInMailbox(mailboxId)
.collectList()
@@ -191,7 +191,7 @@ public class CassandraMessageMapper implements MessageMapper {
}
@Override
- public MessageUid findFirstUnseenMessageUid(Mailbox mailbox) throws MailboxException {
+ public MessageUid findFirstUnseenMessageUid(Mailbox mailbox) {
CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
return firstUnseenDAO.retrieveFirstUnread(mailboxId)
.blockOptional()
@@ -199,7 +199,7 @@ public class CassandraMessageMapper implements MessageMapper {
}
@Override
- public Map<MessageUid, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox mailbox, MessageRange messageRange) throws MailboxException {
+ public Map<MessageUid, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox mailbox, MessageRange messageRange) {
CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
return deletedMessageDAO.retrieveDeletedMessage(mailboxId, messageRange)
@@ -270,7 +270,7 @@ public class CassandraMessageMapper implements MessageMapper {
}
@Override
- public Iterator<UpdatedFlags> updateFlags(Mailbox mailbox, FlagsUpdateCalculator flagUpdateCalculator, MessageRange range) throws MailboxException {
+ public Iterator<UpdatedFlags> updateFlags(Mailbox mailbox, FlagsUpdateCalculator flagUpdateCalculator, MessageRange range) {
CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
Flux<ComposedMessageIdWithMetaData> toBeUpdated = messageIdDAO.retrieveMessages(mailboxId, range);
@@ -348,7 +348,7 @@ public class CassandraMessageMapper implements MessageMapper {
}
@Override
- public Flags getApplicableFlag(Mailbox mailbox) throws MailboxException {
+ public Flags getApplicableFlag(Mailbox mailbox) {
return ApplicableFlagBuilder.builder()
.add(applicableFlagDAO.retrieveApplicableFlag((CassandraId) mailbox.getMailboxId())
.defaultIfEmpty(new Flags())
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 09/12: JAMES-2630 Rely on Reactor for connection
retries
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 6e1887f9b76d4f7853c31a4c09fd0d424e0a4f57
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 13:38:06 2019 +0700
JAMES-2630 Rely on Reactor for connection retries
---
.../modules/mailbox/CassandraSessionModule.java | 9 --
.../mailbox/ElasticSearchMailboxModule.java | 18 +--
.../modules/mailbox/ResilientClusterProvider.java | 23 ++--
.../mailbox/ScheduledExecutorServiceProvider.java | 53 ---------
.../apache/james/util/retry/RetryExecutorUtil.java | 44 -------
.../james/util/retry/RetryExecutorUtilTest.java | 130 ---------------------
6 files changed, 21 insertions(+), 256 deletions(-)
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 4a81d1e..ad9ab2a 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
@@ -21,7 +21,6 @@ package org.apache.james.modules.mailbox;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.ScheduledExecutorService;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
@@ -57,7 +56,6 @@ 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;
public class CassandraSessionModule extends AbstractModule {
@@ -70,7 +68,6 @@ public class CassandraSessionModule extends AbstractModule {
@Override
protected void configure() {
- bind(ScheduledExecutorService.class).toProvider(ScheduledExecutorServiceProvider.class);
bind(CassandraUtils.class).in(Scopes.SINGLETON);
bind(Session.class).toProvider(SessionWithInitializedTablesFactory.class);
bind(Cluster.class).toProvider(ResilientClusterProvider.class);
@@ -116,12 +113,6 @@ public class CassandraSessionModule extends AbstractModule {
}
}
-
- @Provides
- private AsyncRetryExecutor provideAsyncRetryExecutor(ScheduledExecutorService scheduler) {
- return new AsyncRetryExecutor(scheduler);
- }
-
@VisibleForTesting
@Provides
@Singleton
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
index 4a72fe5..b50f0f6 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
@@ -22,8 +22,8 @@ package org.apache.james.modules.mailbox;
import static org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher.DEFAULT_SEARCH_SIZE;
import java.io.FileNotFoundException;
+import java.time.Duration;
import java.time.LocalDateTime;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import javax.inject.Named;
@@ -48,10 +48,8 @@ import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.quota.search.elasticsearch.ElasticSearchQuotaConfiguration;
import org.apache.james.quota.search.elasticsearch.QuotaSearchIndexCreationUtil;
-import org.apache.james.util.retry.RetryExecutorUtil;
import org.apache.james.utils.PropertiesProvider;
import org.elasticsearch.client.Client;
-import org.elasticsearch.client.transport.NoNodeAvailableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,7 +57,9 @@ import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Scopes;
import com.google.inject.multibindings.Multibinder;
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+
+import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
public class ElasticSearchMailboxModule extends AbstractModule {
private static final Logger LOGGER = LoggerFactory.getLogger(ElasticSearchMailboxModule.class);
@@ -137,12 +137,12 @@ public class ElasticSearchMailboxModule extends AbstractModule {
@Singleton
protected Client provideClient(ElasticSearchConfiguration configuration,
ElasticSearchMailboxConfiguration mailboxConfiguration,
- ElasticSearchQuotaConfiguration quotaConfiguration,
- AsyncRetryExecutor executor) throws ExecutionException, InterruptedException {
+ ElasticSearchQuotaConfiguration quotaConfiguration) {
- return RetryExecutorUtil.retryOnExceptions(executor, configuration.getMaxRetries(), configuration.getMinDelay(), NoNodeAvailableException.class)
- .getWithRetry(context -> connectToCluster(configuration, mailboxConfiguration, quotaConfiguration))
- .get();
+ return Mono.fromCallable(() -> connectToCluster(configuration, mailboxConfiguration, quotaConfiguration))
+ .retryBackoff(configuration.getMaxRetries(), Duration.ofMillis(configuration.getMinDelay()))
+ .publishOn(Schedulers.elastic())
+ .block();
}
private Client connectToCluster(ElasticSearchConfiguration configuration,
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
index ef2e4a8..f514675 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
@@ -19,8 +19,9 @@
package org.apache.james.modules.mailbox;
+import java.time.Duration;
import java.time.LocalDateTime;
-import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Callable;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
@@ -30,15 +31,14 @@ import javax.inject.Singleton;
import org.apache.james.backends.cassandra.init.ClusterBuilder;
import org.apache.james.backends.cassandra.init.ClusterWithKeyspaceCreatedFactory;
import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
-import org.apache.james.util.retry.RetryExecutorUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.exceptions.NoHostAvailableException;
import com.google.common.collect.ImmutableList;
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-import com.nurkiewicz.asyncretry.function.RetryCallable;
+
+import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
@Singleton
public class ResilientClusterProvider implements Provider<Cluster> {
@@ -47,17 +47,18 @@ public class ResilientClusterProvider implements Provider<Cluster> {
private final Cluster cluster;
@Inject
- private ResilientClusterProvider(ClusterConfiguration configuration, AsyncRetryExecutor executor) throws ExecutionException, InterruptedException {
- cluster = RetryExecutorUtil.retryOnExceptions(executor, configuration.getMaxRetry(), configuration.getMinDelay(), NoHostAvailableException.class)
- .getWithRetry(getClusterRetryCallable(configuration))
- .get();
+ private ResilientClusterProvider(ClusterConfiguration configuration) {
+ cluster = Mono.fromCallable(getClusterRetryCallable(configuration))
+ .retryBackoff(configuration.getMaxRetry(), Duration.ofMillis(configuration.getMinDelay()))
+ .publishOn(Schedulers.elastic())
+ .block();
}
- private RetryCallable<Cluster> getClusterRetryCallable(ClusterConfiguration configuration) {
+ private Callable<Cluster> getClusterRetryCallable(ClusterConfiguration configuration) {
LOGGER.info("Trying to connect to Cassandra service at {} (list {})", LocalDateTime.now(),
ImmutableList.copyOf(configuration.getHosts()).toString());
- return context -> {
+ return () -> {
Cluster cluster = ClusterBuilder.builder()
.servers(configuration.getHosts())
.poolingOptions(configuration.getPoolingOptions())
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java
deleted file mode 100644
index 56ec923..0000000
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java
+++ /dev/null
@@ -1,53 +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.modules.mailbox;
-
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-
-import javax.annotation.PreDestroy;
-
-import org.apache.james.util.concurrent.NamedThreadFactory;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.inject.Provider;
-
-@VisibleForTesting
-class ScheduledExecutorServiceProvider implements Provider<ScheduledExecutorService> {
-
- private final ScheduledExecutorService scheduler;
-
- @VisibleForTesting
- ScheduledExecutorServiceProvider() {
- ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass());
- scheduler = Executors.newSingleThreadScheduledExecutor(threadFactory);
- }
-
- @Override
- public ScheduledExecutorService get() {
- return scheduler;
- }
-
- @PreDestroy
- private void stop() {
- scheduler.shutdown();
- }
-}
diff --git a/server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java b/server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java
deleted file mode 100644
index 34bdcf9..0000000
--- a/server/container/util/src/main/java/org/apache/james/util/retry/RetryExecutorUtil.java
+++ /dev/null
@@ -1,44 +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.util.retry;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-
-public class RetryExecutorUtil {
- private static final Logger LOG = LoggerFactory.getLogger(RetryExecutorUtil.class);
-
- private static final int INITIAL_DELAY_MILLIS = 500;
- private static final int MULTIPLIER = 2;
-
- @SafeVarargs
- public static AsyncRetryExecutor retryOnExceptions(AsyncRetryExecutor executor, int maxRetries, int minDelay, Class<? extends Throwable>... clazz) {
- LOG.info("The action should retry when {} and retry to {} times if needed", clazz, maxRetries);
- return executor
- .withExponentialBackoff(INITIAL_DELAY_MILLIS, MULTIPLIER)
- .withProportionalJitter()
- .retryOn(clazz)
- .withMaxRetries(maxRetries)
- .withMinDelay(minDelay);
- }
-
-}
diff --git a/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java b/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java
deleted file mode 100644
index 3af80ca..0000000
--- a/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java
+++ /dev/null
@@ -1,130 +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.util.retry;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.BDDMockito.given;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-
-import org.apache.james.util.concurrent.NamedThreadFactory;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-import com.nurkiewicz.asyncretry.RetryExecutor;
-
-public class RetryExecutorUtilTest {
- private static final int MAX_RETRIES = 3;
- private static final int MIN_DELAY = 100;
- @Mock
- protected FaultyService serviceMock;
-
- private RetryExecutor retryExecutor;
- private ScheduledExecutorService scheduledExecutor;
-
- @BeforeEach
- void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass());
- scheduledExecutor = Executors.newSingleThreadScheduledExecutor(threadFactory);
- }
-
- @AfterEach
- void tearDown() throws Exception {
- scheduledExecutor.shutdownNow();
- }
-
- @Test
- void retryOnExceptionsAndExecuteShouldRethrowWhenScheduledServiceAlwaysThrowException() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalArgumentException.class)
- .willThrow(IllegalArgumentException.class)
- .willThrow(IllegalArgumentException.class)
- .willThrow(IllegalArgumentException.class);
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
-
- assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
- .isInstanceOf(ExecutionException.class)
- .hasCauseInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void retryOnExceptionsAndExecuteShouldRetryWhenMatchExceptionAndSuccess() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalArgumentException.class)
- .willReturn("Foo");
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
-
- final CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
-
- assertThat(future.get()).isEqualTo("Foo");
- }
-
- @Test
- void retryOnExceptionsAndExecuteShouldNotRetryWhenDoesNotMatchException() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalStateException.class)
- .willReturn("Foo");
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalArgumentException.class);
-
- assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
- .isInstanceOf(ExecutionException.class)
- .hasCauseInstanceOf(IllegalStateException.class);
- }
-
- @Test
- @SuppressWarnings("unchecked")
- void retryOnExceptionsAndExecuteShouldRetryWithMaxTimesAndReturnValue() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class)
- .willReturn("Foo");
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalStateException.class);
-
- CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
-
- assertThat(future.get()).isEqualTo("Foo");
- }
-
- @Test
- @SuppressWarnings("unchecked")
- void retryOnExceptionsAndExecuteShouldFailIfFailMoreThanMaxRetry() throws Exception {
- given(serviceMock.faultyService())
- .willThrow(IllegalStateException.class, IllegalStateException.class, IllegalStateException.class, IllegalStateException.class)
- .willReturn("Foo");
-
- retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalStateException.class);
-
- assertThatThrownBy(() -> retryExecutor.getWithRetry(serviceMock::faultyService).get())
- .isInstanceOf(ExecutionException.class)
- .hasCauseInstanceOf(IllegalStateException.class);
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 05/12: JAMES-2630 Use Reactor to enforce backend
rate limits
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit bc958e7138bab21ffd356294b3a81f63699c71ec
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 10:54:28 2019 +0700
JAMES-2630 Use Reactor to enforce backend rate limits
Previous code used to perform computation by chunks.
This had the following inconvenience:
- It makes the code hard to read as we need to handle a collection of entity and not an entity
- This is sub-optimal as the chunck needs to be fully processed before the next chunk computation begins. With reactor, this is better as a constant number of entity are continuously processed.
---
.../mailbox/cassandra/mail/AttachmentLoader.java | 5 +-
.../cassandra/mail/CassandraMessageDAO.java | 11 +-
.../cassandra/mail/CassandraMessageIdMapper.java | 33 +++---
.../cassandra/mail/CassandraMessageMapper.java | 3 +-
.../mail/CassandraAttachmentOwnerDAOTest.java | 14 +--
.../apache/james/util/streams/JamesCollectors.java | 80 --------------
.../james/util/streams/JamesCollectorsTest.java | 115 ---------------------
7 files changed, 23 insertions(+), 238 deletions(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java
index b3eef40..ab281d0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java
@@ -25,11 +25,12 @@ import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import com.github.steveash.guavate.Guavate;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -41,7 +42,7 @@ public class AttachmentLoader {
this.attachmentMapper = attachmentMapper;
}
- public Mono<SimpleMailboxMessage> addAttachmentToMessage(Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>> messageRepresentation, MessageMapper.FetchType fetchType) {
+ public Mono<MailboxMessage> addAttachmentToMessage(Pair<MessageWithoutAttachment, Stream<MessageAttachmentRepresentation>> messageRepresentation, MessageMapper.FetchType fetchType) {
return loadAttachments(messageRepresentation.getRight(), fetchType)
.map(attachments -> messageRepresentation.getLeft().toMailboxMessage(attachments));
}
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 03ec22c..29e9738 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
@@ -40,7 +40,6 @@ import static org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.T
import static org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.TEXTUAL_LINE_COUNT;
import java.io.IOException;
-import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -73,7 +72,6 @@ import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleProperty;
-import org.apache.james.util.streams.JamesCollectors;
import org.apache.james.util.streams.Limit;
import com.datastax.driver.core.BoundStatement;
@@ -233,13 +231,8 @@ public class CassandraMessageDAO {
}
public Flux<MessageResult> retrieveMessages(List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Limit limit) {
- return Flux.fromStream(limit.applyOnStream(messageIds.stream().distinct())
- .collect(JamesCollectors.chunker(configuration.getMessageReadChunkSize())))
- .flatMap(ids -> rowToMessages(fetchType, ids));
- }
-
- private Flux<MessageResult> rowToMessages(FetchType fetchType, Collection<ComposedMessageIdWithMetaData> ids) {
- return Flux.fromIterable(ids)
+ return Flux.fromStream(limit.applyOnStream(messageIds.stream().distinct()))
+ .limitRate(configuration.getMessageReadChunkSize())
.flatMap(id -> retrieveRow(id, fetchType)
.flatMap(resultSet -> message(resultSet, id, fetchType)));
}
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 bfc3afb..fb0eb4f 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
@@ -24,7 +24,6 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
-import java.util.stream.Stream;
import javax.mail.Flags;
@@ -46,16 +45,15 @@ import org.apache.james.mailbox.store.mail.MessageIdMapper;
import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
import org.apache.james.mailbox.store.mail.ModSeqProvider;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
import org.apache.james.util.FunctionalUtils;
import org.apache.james.util.ReactorUtils;
-import org.apache.james.util.streams.JamesCollectors;
import org.apache.james.util.streams.Limit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.steveash.guavate.Guavate;
import com.google.common.collect.Multimap;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -92,27 +90,20 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
@Override
public List<MailboxMessage> find(Collection<MessageId> messageIds, FetchType fetchType) {
- return messageIds.stream()
- .collect(JamesCollectors.chunker(cassandraConfiguration.getMessageReadChunkSize()))
- .flatMap(chuckedIds -> findAsStream(messageIds, fetchType))
- .collect(Guavate.toImmutableList());
- }
-
- private Stream<SimpleMailboxMessage> findAsStream(Collection<MessageId> messageIds, FetchType fetchType) {
return Flux.fromStream(messageIds.stream())
- .flatMap(messageId -> imapUidDAO.retrieve((CassandraMessageId) messageId, Optional.empty()))
- .collectList()
- .flatMapMany(composedMessageIds -> messageDAO.retrieveMessages(composedMessageIds, fetchType, Limit.unlimited()))
- .filter(CassandraMessageDAO.MessageResult::isFound)
- .map(CassandraMessageDAO.MessageResult::message)
- .flatMap(messageRepresentation -> attachmentLoader.addAttachmentToMessage(messageRepresentation, fetchType))
- .flatMap(this::keepMessageIfMailboxExists)
- .collectSortedList(Comparator.comparing(MailboxMessage::getUid))
- .block()
- .stream();
+ .limitRate(cassandraConfiguration.getMessageReadChunkSize())
+ .flatMap(messageId -> imapUidDAO.retrieve((CassandraMessageId) messageId, Optional.empty()))
+ .collectList()
+ .flatMapMany(composedMessageIds -> messageDAO.retrieveMessages(composedMessageIds, fetchType, Limit.unlimited()))
+ .filter(CassandraMessageDAO.MessageResult::isFound)
+ .map(CassandraMessageDAO.MessageResult::message)
+ .flatMap(messageRepresentation -> attachmentLoader.addAttachmentToMessage(messageRepresentation, fetchType))
+ .flatMap(this::keepMessageIfMailboxExists)
+ .collectSortedList(Comparator.comparing(MailboxMessage::getUid))
+ .block();
}
- private Mono<SimpleMailboxMessage> keepMessageIfMailboxExists(SimpleMailboxMessage message) {
+ private Mono<MailboxMessage> keepMessageIfMailboxExists(MailboxMessage message) {
CassandraId cassandraId = (CassandraId) message.getMailboxId();
return mailboxDAO.retrieveMailbox(cassandraId)
.map(any -> message)
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 ba66061..908e739 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
@@ -57,6 +57,7 @@ import org.slf4j.LoggerFactory;
import com.github.fge.lambdas.Throwing;
import com.github.steveash.guavate.Guavate;
import com.google.common.collect.ImmutableList;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -174,7 +175,7 @@ public class CassandraMessageMapper implements MessageMapper {
.block();
}
- private Flux<SimpleMailboxMessage> retrieveMessages(List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Limit limit) {
+ private Flux<MailboxMessage> retrieveMessages(List<ComposedMessageIdWithMetaData> messageIds, FetchType fetchType, Limit limit) {
return messageDAO.retrieveMessages(messageIds, fetchType, limit)
.filter(CassandraMessageDAO.MessageResult::isFound)
.map(CassandraMessageDAO.MessageResult::message)
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
index bf325af..7bf201c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
@@ -21,14 +21,11 @@ package org.apache.james.mailbox.cassandra.mail;
import static org.assertj.core.api.Assertions.assertThat;
-import java.util.stream.IntStream;
-
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.store.mail.model.Username;
-import org.apache.james.util.streams.JamesCollectors;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -78,13 +75,10 @@ class CassandraAttachmentOwnerDAOTest {
void retrieveOwnersShouldNotThrowWhenMoreReferencesThanPaging() {
int referenceCountExceedingPaging = 5050;
- IntStream.range(0, referenceCountExceedingPaging)
- .boxed()
- .collect(JamesCollectors.chunker(128))
- .forEach(chunk -> Flux.fromIterable(chunk)
- .flatMap(i -> testee.addOwner(ATTACHMENT_ID, Username.fromRawValue("owner" + i)))
- .then()
- .block());
+ Flux.range(0, referenceCountExceedingPaging)
+ .limitRate(128)
+ .flatMap(i -> testee.addOwner(ATTACHMENT_ID, Username.fromRawValue("owner" + i)))
+ .blockLast();
assertThat(testee.retrieveOwners(ATTACHMENT_ID).toIterable())
.hasSize(referenceCountExceedingPaging);
diff --git a/server/container/util/src/main/java/org/apache/james/util/streams/JamesCollectors.java b/server/container/util/src/main/java/org/apache/james/util/streams/JamesCollectors.java
deleted file mode 100644
index e705063..0000000
--- a/server/container/util/src/main/java/org/apache/james/util/streams/JamesCollectors.java
+++ /dev/null
@@ -1,80 +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.util.streams;
-
-import java.util.Collection;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.BiConsumer;
-import java.util.function.BinaryOperator;
-import java.util.function.Function;
-import java.util.function.Supplier;
-import java.util.stream.Collector;
-import java.util.stream.Stream;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Multimap;
-
-public class JamesCollectors {
- public static <D> Collector<D, ?, Stream<Collection<D>>> chunker(int chunkSize) {
- return new ChunkCollector<>(chunkSize);
- }
-
- public static class ChunkCollector<D> implements Collector<D, Multimap<Integer, D>, Stream<Collection<D>>> {
- private final int chunkSize;
- private final AtomicInteger counter;
-
- private ChunkCollector(int chunkSize) {
- Preconditions.checkArgument(chunkSize > 0, "ChunkSize should be strictly positive");
- this.chunkSize = chunkSize;
- this.counter = new AtomicInteger(-1);
- }
-
- @Override
- public Supplier<Multimap<Integer, D>> supplier() {
- return ArrayListMultimap::create;
- }
-
- @Override
- public BiConsumer<Multimap<Integer, D>, D> accumulator() {
- return (accumulator, value) -> accumulator.put(counter.incrementAndGet() / chunkSize, value);
- }
-
- @Override
- public BinaryOperator<Multimap<Integer, D>> combiner() {
- return (accumulator1, accumulator2) -> {
- accumulator1.putAll(accumulator2);
- return accumulator1;
- };
- }
-
- @Override
- public Function<Multimap<Integer, D>, Stream<Collection<D>>> finisher() {
- return accumulator -> accumulator.asMap().values().stream();
- }
-
- @Override
- public Set<Characteristics> characteristics() {
- return ImmutableSet.of();
- }
- }
-}
diff --git a/server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java b/server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java
deleted file mode 100644
index 8cca6bf..0000000
--- a/server/container/util/src/test/java/org/apache/james/util/streams/JamesCollectorsTest.java
+++ /dev/null
@@ -1,115 +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.util.streams;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Test;
-
-import com.github.steveash.guavate.Guavate;
-import com.google.common.collect.ImmutableList;
-
-public class JamesCollectorsTest {
-
- @Test
- void chunkerShouldAcceptEmptyStrem() {
- Stream<Integer> emptyStream = Stream.of();
-
- assertThat(emptyStream.collect(JamesCollectors.chunker(10))
- .collect(Guavate.toImmutableList()))
- .isEmpty();
- }
-
- @Test
- void chunkerShouldThrowOnZeroChunkSize() {
- assertThatIllegalArgumentException()
- .isThrownBy(() -> JamesCollectors.chunker(0));
- }
-
- @Test
- void chunkerShouldThrowOnNegativeChunkSize() {
- assertThatIllegalArgumentException()
- .isThrownBy(() -> JamesCollectors.chunker(-1));
- }
-
- @Test
- void chunkerShouldChunkMonoValueStreams() {
- Stream<Integer> monoValueStream = Stream.of(1);
-
- List<List<Integer>> values = monoValueStream.collect(JamesCollectors.chunker(10))
- .map(ImmutableList::copyOf)
- .collect(Guavate.toImmutableList());
- assertThat(values)
- .isEqualTo(ImmutableList.of(ImmutableList.of(1)));
- }
-
- @Test
- void chunkerShouldChunkStreamsSmallerThanChunkSize() {
- Stream<Integer> stream = Stream.of(1, 2);
-
- List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3))
- .map(ImmutableList::copyOf)
- .collect(Guavate.toImmutableList());
- assertThat(values)
- .isEqualTo(ImmutableList.of(ImmutableList.of(1, 2)));
- }
-
- @Test
- void chunkerShouldChunkStreamsAsBigAsChunkSize() {
- Stream<Integer> stream = Stream.of(1, 2, 3);
-
- List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3))
- .map(ImmutableList::copyOf)
- .collect(Guavate.toImmutableList());
- assertThat(values)
- .isEqualTo(ImmutableList.of(ImmutableList.of(1, 2, 3)));
- }
-
- @Test
- void chunkerShouldChunkStreamsBiggerThanChunkSize() {
- Stream<Integer> stream = Stream.of(1, 2, 3, 4);
-
- List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3))
- .map(ImmutableList::copyOf)
- .collect(Guavate.toImmutableList());
- assertThat(values)
- .isEqualTo(ImmutableList.of(
- ImmutableList.of(1, 2, 3),
- ImmutableList.of(4)));
- }
-
- @Test
- void chunkerShouldChunkInSeveralBuckets() {
- Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7);
-
- List<List<Integer>> values = stream.collect(JamesCollectors.chunker(3))
- .map(ImmutableList::copyOf)
- .collect(Guavate.toImmutableList());
- assertThat(values)
- .isEqualTo(ImmutableList.of(
- ImmutableList.of(1, 2, 3),
- ImmutableList.of(4, 5, 6),
- ImmutableList.of(7)));
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 04/12: JAMES-2632 Remove unused method signature
Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit c72a758adabe2e3e33e5606d5b2172b52ccdc47e
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 13 10:39:55 2019 +0700
JAMES-2632 Remove unused method signature
---
.../main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 679dc09..0ed5694 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -323,7 +323,7 @@ public class StoreMessageIdManager implements MessageIdManager {
}
}
- protected MailboxMessage createMessage(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder, List<MessageAttachment> attachments, MailboxId mailboxId) throws MailboxException {
+ protected MailboxMessage createMessage(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder, List<MessageAttachment> attachments, MailboxId mailboxId) {
return new SimpleMailboxMessage(messageIdFactory.generate(), internalDate, size, bodyStartOctet, content, flags, propertyBuilder, mailboxId, attachments);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org