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/09/25 03:31:30 UTC
[james-project] branch master updated (81e6cdf -> d3b4084)
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 81e6cdf JAMES-2893 GitIgnore on test logs
new d798b40 JAMES-2898 Move org.apache.james.backend.rabbitmq to org.apache.james.backends.rabbitmq
new 8c284f7 JAMES-2881 Slightly enhance 'ToHttp' mailets code quality
new 1990802 JAMES-2813 make reprocessing context additional informations immutable
new e844ff6 JAMES-2813 extract ErrorRecoveryIndexationTaskDTO
new a96ce14 JAMES-2813 add dto to serialize ReprocessingContextInformation
new 1920432 JAMES-2813 add tests to serialize ErrorRecoveryIndexationTask additionalInformation
new 5b4a019 JAMES-2813 serialize FullReindexing task additional informations tests
new e264e9a JAMES-2813 Extract SingleMailboxReindexingTaskDTO
new fca4be5 JAMES-2813 serialize additionalInformationDTO for SingleMailboxReindexingTask
new a93aca8 JAMES-2813 extract UserReindexingTaskDTO
new 76c2fd9 JAMES-2813 serialize additional informations for UserReindexingTask
new 925b2ae 3.4.0 release: Update changelog
new b48dcce 3.4.0 release: Update upgrade instructions
new 578e075 3.4.0 Release: Homepage should refer James 3.4.0
new 887ca0e 3.4.0 Release: Mail processing howto should refer James 3.4.0
new 093750f 3.4.0 Release: Documentation website should refer to 3.4.0
new a103f57 3.4.0 release: Download page should refer 3.4.0 and rely more on maven repository
new d3b4084 3.4.0 release: Blog post for 3.4.0 release
The 18 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:
CHANGELOG.md | 2 +
.../{backend => backends}/rabbitmq/Constants.java | 2 +-
.../rabbitmq/RabbitMQChannelPool.java | 2 +-
.../rabbitmq/RabbitMQConfiguration.java | 2 +-
.../rabbitmq/RabbitMQConnectionFactory.java | 2 +-
.../rabbitmq/RabbitMQHealthCheck.java | 2 +-
.../rabbitmq/RabbitMQManagementAPI.java | 2 +-
.../rabbitmq/ReactorRabbitMQChannelPool.java | 2 +-
.../rabbitmq/SimpleChannelPool.java | 2 +-
.../rabbitmq/SimpleConnectionPool.java | 2 +-
.../rabbitmq/ChannelPoolContract.java | 2 +-
.../rabbitmq/DockerClusterRabbitMQExtension.java | 2 +-
.../rabbitmq/DockerRabbitMQ.java | 4 +-
.../rabbitmq/DockerRabbitMQSingleton.java | 2 +-
.../rabbitmq/DockerRabbitMQTestRule.java | 4 +-
.../rabbitmq/InMemoryConsumer.java | 2 +-
.../rabbitmq/RabbitMQClusterTest.java | 22 ++--
.../rabbitmq/RabbitMQConfigurationTest.java | 8 +-
.../rabbitmq/RabbitMQConnectionFactoryTest.java | 4 +-
.../rabbitmq/RabbitMQExtension.java | 4 +-
.../rabbitmq/RabbitMQFixture.java | 2 +-
.../rabbitmq/RabbitMQHealthCheckTest.java | 2 +-
.../rabbitmq/RabbitMQTest.java | 30 ++---
.../rabbitmq/RabbitMQWaitStrategy.java | 2 +-
.../rabbitmq/ReactorRabbitMQChannelPoolTest.java | 4 +-
.../james/mailbox/events/EventDispatcher.java | 4 +-
.../james/mailbox/events/GroupConsumerRetry.java | 6 +-
.../james/mailbox/events/GroupRegistration.java | 10 +-
.../mailbox/events/KeyRegistrationHandler.java | 8 +-
.../james/mailbox/events/RabbitMQEventBus.java | 4 +-
.../james/mailbox/events/RoutingKeyConverter.java | 2 +-
.../james/mailbox/events/RabbitMQEventBusTest.java | 22 ++--
.../tools/indexer/ErrorRecoveryIndexationTask.java | 88 +------------
.../indexer/ErrorRecoveryIndexationTaskDTO.java | 109 ++++++++++++++++
.../mailbox/tools/indexer/FullReindexingTask.java | 4 +-
.../indexer/ReprocessingContextInformation.java | 21 +++-
.../indexer/ReprocessingContextInformationDTO.java | 137 +++++++++++++++++++++
.../tools/indexer/SingleMailboxReindexingTask.java | 59 +++------
...lboxReindexingTaskAdditionalInformationDTO.java | 76 ++++++++++++
.../indexer/SingleMailboxReindexingTaskDTO.java | 61 +++++++++
.../mailbox/tools/indexer/UserReindexingTask.java | 58 ++-------
...UserReindexingTaskAdditionalInformationDTO.java | 77 ++++++++++++
...Information.java => UserReindexingTaskDTO.java} | 49 ++++----
...rorRecoveryIndexationTaskSerializationTest.java | 36 +++++-
.../FullReindexingTaskSerializationTest.java | 41 ++++++
...ngleMailboxReindexingTaskSerializationTest.java | 45 ++++++-
.../UserReindexingTaskSerializationTest.java | 48 +++++++-
.../james/transport/mailets/SerialiseToHTTP.java | 4 +-
.../james/transport/mailets/HeadersToHTTPTest.java | 61 ++++-----
.../rabbitmq/RabbitMQAuthenticatePlainTest.java | 2 +-
.../rabbitmq/RabbitMQAuthenticatedStateTest.java | 2 +-
.../rabbitmq/RabbitMQConcurrentSessionsTest.java | 2 +-
.../rabbitmq/RabbitMQCondstoreTest.java | 2 +-
.../mpt/imapmailbox/rabbitmq/RabbitMQCopyTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQEventsTest.java | 2 +-
.../rabbitmq/RabbitMQFetchBodySectionTest.java | 2 +-
.../rabbitmq/RabbitMQFetchBodyStructureTest.java | 2 +-
.../rabbitmq/RabbitMQFetchHeadersTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQFetchTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQListingTest.java | 2 +-
.../rabbitmq/RabbitMQListingWithSharingTest.java | 2 +-
.../rabbitmq/RabbitMQMailboxAnnotationTest.java | 2 +-
.../RabbitMQMailboxWithLongNameErrorTest.java | 2 +-
.../mpt/imapmailbox/rabbitmq/RabbitMQMoveTest.java | 2 +-
.../RabbitMQNonAuthenticatedStateTest.java | 2 +-
.../rabbitmq/RabbitMQPartialFetchTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQQuotaTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQRenameTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQSearchTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQSecurityTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQSelectTest.java | 2 +-
.../rabbitmq/RabbitMQSelectedInboxTest.java | 2 +-
.../rabbitmq/RabbitMQSelectedStateTest.java | 2 +-
.../rabbitmq/RabbitMQUidSearchTest.java | 2 +-
.../rabbitmq/RabbitMQUserFlagsSupportTest.java | 2 +-
.../rabbitmq/host/RabbitMQEventBusHostSystem.java | 4 +-
.../host/RabbitMQEventBusHostSystemRule.java | 2 +-
.../CassandraRabbitMQAwsS3SmtpTestRuleFactory.java | 2 +-
.../james/CassandraRabbitMQAwsS3JmapTestRule.java | 2 +-
.../james/CassandraRabbitMQSwiftJmapTestRule.java | 2 +-
.../apache/james/modules/DockerRabbitMQRule.java | 8 +-
.../apache/james/modules/RabbitMQExtension.java | 2 +-
.../apache/james/modules/TestRabbitMQModule.java | 6 +-
.../james/modules/rabbitmq/RabbitMQModule.java | 8 +-
.../apache/james/queue/rabbitmq/RabbitClient.java | 12 +-
.../rabbitmq/RabbitMQMailQueueManagement.java | 4 +-
.../RabbitMQMailQueueConfigurationChangeTest.java | 2 +-
.../queue/rabbitmq/RabbitMQMailQueueTest.java | 4 +-
.../rabbitmq/RabbitMqMailQueueFactoryTest.java | 2 +-
.../distributed/RabbitMQTerminationSubscriber.java | 4 +-
.../distributed/RabbitMQWorkQueue.java | 4 +-
.../distributed/RabbitMQWorkQueueSupplier.scala | 3 +-
.../distributed/DistributedTaskManagerTest.java | 2 +-
.../RabbitMQTerminationSubscriberTest.java | 2 +-
.../distributed/RabbitMQWorkQueueTest.java | 2 +-
.../_posts/2019-09-05-james-3.4.0.markdown | 35 ++++++
src/homepage/howTo/mail-processing.html | 6 +-
src/homepage/index.html | 4 +-
src/site/xdoc/download.xml | 106 +++++++---------
src/site/xdoc/server/index.xml | 10 +-
upgrade-instructions.md | 4 +
101 files changed, 974 insertions(+), 464 deletions(-)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/Constants.java (97%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQChannelPool.java (97%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQConfiguration.java (99%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQConnectionFactory.java (98%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQHealthCheck.java (98%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQManagementAPI.java (99%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/ReactorRabbitMQChannelPool.java (99%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/SimpleChannelPool.java (99%)
rename backends-common/rabbitmq/src/main/java/org/apache/james/{backend => backends}/rabbitmq/SimpleConnectionPool.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/ChannelPoolContract.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/DockerClusterRabbitMQExtension.java (99%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/DockerRabbitMQ.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/DockerRabbitMQSingleton.java (97%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/DockerRabbitMQTestRule.java (94%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/InMemoryConsumer.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQClusterTest.java (94%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQConfigurationTest.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQConnectionFactoryTest.java (95%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQExtension.java (97%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQFixture.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQHealthCheckTest.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQTest.java (94%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/RabbitMQWaitStrategy.java (98%)
rename backends-common/rabbitmq/src/test/java/org/apache/james/{backend => backends}/rabbitmq/ReactorRabbitMQChannelPoolTest.java (96%)
create mode 100644 mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java
create mode 100644 mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformationDTO.java
create mode 100644 mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java
create mode 100644 mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskDTO.java
create mode 100644 mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java
copy mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/{ReprocessingContextInformation.java => UserReindexingTaskDTO.java} (51%)
create mode 100644 src/homepage/_posts/2019-09-05-james-3.4.0.markdown
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 05/18: JAMES-2813 add dto to serialize
ReprocessingContextInformation
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 a96ce1486b3b1cdadca517dd85bdc46a5a7af080
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Thu Sep 19 09:35:51 2019 +0200
JAMES-2813 add dto to serialize ReprocessingContextInformation
---
.../indexer/ReprocessingContextInformationDTO.java | 137 +++++++++++++++++++++
1 file changed, 137 insertions(+)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformationDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformationDTO.java
new file mode 100644
index 0000000..7d5c27d
--- /dev/null
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformationDTO.java
@@ -0,0 +1,137 @@
+/****************************************************************
+ * 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.mailbox.tools.indexer;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
+import org.apache.james.task.TaskType;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableListMultimap;
+
+public class ReprocessingContextInformationDTO implements AdditionalInformationDTO {
+
+ public static class ReindexingFailureDTO {
+
+ private final String mailboxId;
+ private final List<Long> uids;
+
+ private ReindexingFailureDTO(@JsonProperty("mailboxId") String mailboxId, @JsonProperty("uids") List<Long> uids) {
+ this.mailboxId = mailboxId;
+ this.uids = uids;
+ }
+
+ public String getMailboxId() {
+ return mailboxId;
+ }
+
+ public List<Long> getUids() {
+ return uids;
+ }
+ }
+
+ public static final Function<TaskType, Function<MailboxId.Factory, AdditionalInformationDTOModule<ReprocessingContextInformation, ReprocessingContextInformationDTO>>> SERIALIZATION_MODULE =
+ taskType -> factory ->
+ DTOModule.forDomainObject(ReprocessingContextInformation.class)
+ .convertToDTO(ReprocessingContextInformationDTO.class)
+ .toDomainObjectConverter(dto -> new ReprocessingContextInformation(dto.successfullyReprocessedMailCount, dto.failedReprocessedMailCount, deserializeFailures(factory, dto.failures)))
+ .toDTOConverter((details, type) -> new ReprocessingContextInformationDTO(details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), serializeFailures(details.failures())))
+ .typeName(taskType.asString())
+ .withFactory(AdditionalInformationDTOModule::new);
+
+ static ReIndexingExecutionFailures deserializeFailures(MailboxId.Factory mailboxIdFactory,
+ List<ReindexingFailureDTO> failures) {
+ List<ReIndexingExecutionFailures.ReIndexingFailure> reIndexingFailures = failures
+ .stream()
+ .flatMap(failuresForMailbox ->
+ getReIndexingFailureStream(mailboxIdFactory, failuresForMailbox))
+ .collect(Guavate.toImmutableList());
+
+ return new ReIndexingExecutionFailures(reIndexingFailures);
+ }
+
+ private static Stream<ReIndexingExecutionFailures.ReIndexingFailure> getReIndexingFailureStream(MailboxId.Factory mailboxIdFactory, ReindexingFailureDTO failuresForMailbox) {
+ return failuresForMailbox.uids
+ .stream()
+ .map(uid ->
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxIdFactory.fromString(failuresForMailbox.mailboxId), MessageUid.of(uid)));
+ }
+
+
+ static List<ReindexingFailureDTO> serializeFailures(ReIndexingExecutionFailures failures) {
+ ImmutableListMultimap<MailboxId, ReIndexingExecutionFailures.ReIndexingFailure> failuresByMailbox = failures.failures()
+ .stream()
+ .collect(Guavate.toImmutableListMultimap(ReIndexingExecutionFailures.ReIndexingFailure::getMailboxId));
+
+ return failuresByMailbox
+ .asMap()
+ .entrySet()
+ .stream()
+ .map(failureByMailbox ->
+ new ReindexingFailureDTO(
+ failureByMailbox.getKey().serialize(),
+ extractMessageUidsFromFailure(failureByMailbox)))
+ .collect(Guavate.toImmutableList());
+ }
+
+ private static ImmutableList<Long> extractMessageUidsFromFailure(Map.Entry<MailboxId, Collection<ReIndexingExecutionFailures.ReIndexingFailure>> failureByMailbox) {
+ return failureByMailbox
+ .getValue()
+ .stream()
+ .map(failure -> failure.getUid().asLong())
+ .collect(Guavate.toImmutableList());
+ }
+
+ private final int successfullyReprocessedMailCount;
+ private final int failedReprocessedMailCount;
+ private final List<ReindexingFailureDTO> failures;
+
+
+ ReprocessingContextInformationDTO(@JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
+ @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount,
+ @JsonProperty("failures") List<ReindexingFailureDTO> failures) {
+ this.successfullyReprocessedMailCount = successfullyReprocessedMailCount;
+ this.failedReprocessedMailCount = failedReprocessedMailCount;
+ this.failures = failures;
+ }
+
+ public int getSuccessfullyReprocessedMailCount() {
+ return successfullyReprocessedMailCount;
+ }
+
+ public int getFailedReprocessedMailCount() {
+ return failedReprocessedMailCount;
+ }
+
+ public List<ReindexingFailureDTO> getFailures() {
+ return failures;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 03/18: JAMES-2813 make reprocessing context
additional informations immutable
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 19908020b170c71231310e8287c8767dc03bb6cf
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Wed Sep 18 15:03:21 2019 +0200
JAMES-2813 make reprocessing context additional informations immutable
---
.../tools/indexer/ErrorRecoveryIndexationTask.java | 4 +---
.../mailbox/tools/indexer/FullReindexingTask.java | 4 +---
.../indexer/ReprocessingContextInformation.java | 21 +++++++++++++++------
.../tools/indexer/SingleMailboxReindexingTask.java | 15 ++++++++++-----
.../mailbox/tools/indexer/UserReindexingTask.java | 14 +++++++++-----
5 files changed, 36 insertions(+), 22 deletions(-)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
index 01bf9b4..fe08031 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
@@ -140,7 +140,6 @@ public class ErrorRecoveryIndexationTask implements Task {
}
private final ReIndexerPerformer reIndexerPerformer;
- private final ReprocessingContextInformation additionalInformation;
private final ReprocessingContext reprocessingContext;
private final ReIndexingExecutionFailures previousFailures;
@@ -148,7 +147,6 @@ public class ErrorRecoveryIndexationTask implements Task {
this.reIndexerPerformer = reIndexerPerformer;
this.previousFailures = previousFailures;
this.reprocessingContext = new ReprocessingContext();
- this.additionalInformation = new ReprocessingContextInformation(reprocessingContext);
}
@Override
@@ -163,6 +161,6 @@ public class ErrorRecoveryIndexationTask implements Task {
@Override
public Optional<TaskExecutionDetails.AdditionalInformation> details() {
- return Optional.of(additionalInformation);
+ return Optional.of(ReprocessingContextInformation.from(reprocessingContext));
}
}
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java
index b30cb5d..0177a6a 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java
@@ -39,7 +39,6 @@ public class FullReindexingTask implements Task {
public static final TaskType FULL_RE_INDEXING = TaskType.of("FullReIndexing");
private final ReIndexerPerformer reIndexerPerformer;
- private final ReprocessingContextInformation additionalInformation;
private final ReprocessingContext reprocessingContext;
public static final Function<FullReindexingTask.Factory, TaskDTOModule<FullReindexingTask, FullReindexingTaskDTO>> MODULE = (factory) ->
@@ -84,7 +83,6 @@ public class FullReindexingTask implements Task {
public FullReindexingTask(ReIndexerPerformer reIndexerPerformer) {
this.reIndexerPerformer = reIndexerPerformer;
this.reprocessingContext = new ReprocessingContext();
- this.additionalInformation = new ReprocessingContextInformation(reprocessingContext);
}
@Override
@@ -103,6 +101,6 @@ public class FullReindexingTask implements Task {
@Override
public Optional<TaskExecutionDetails.AdditionalInformation> details() {
- return Optional.of(additionalInformation);
+ return Optional.of(ReprocessingContextInformation.from(reprocessingContext));
}
}
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformation.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformation.java
index 4ab24d3..cad7c52 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformation.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformation.java
@@ -27,26 +27,35 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ReprocessingContextInformation implements TaskExecutionDetails.AdditionalInformation, IndexingDetailInformation {
- private final ReprocessingContext reprocessingContext;
- ReprocessingContextInformation(ReprocessingContext reprocessingContext) {
- this.reprocessingContext = reprocessingContext;
+ public static ReprocessingContextInformation from(ReprocessingContext reprocessingContext) {
+ return new ReprocessingContextInformation(reprocessingContext.successfullyReprocessedMailCount(), reprocessingContext.failedReprocessingMailCount(), reprocessingContext.failures());
+ }
+
+ private final int successfullyReprocessedMailCount;
+ private final int failedReprocessedMailCount;
+ private final ReIndexingExecutionFailures failures;
+
+ ReprocessingContextInformation(int successfullyReprocessedMailCount, int failedReprocessedMailCount, ReIndexingExecutionFailures failures) {
+ this.successfullyReprocessedMailCount = successfullyReprocessedMailCount;
+ this.failedReprocessedMailCount = failedReprocessedMailCount;
+ this.failures = failures;
}
@Override
public int getSuccessfullyReprocessedMailCount() {
- return reprocessingContext.successfullyReprocessedMailCount();
+ return successfullyReprocessedMailCount;
}
@Override
public int getFailedReprocessedMailCount() {
- return reprocessingContext.failedReprocessingMailCount();
+ return failedReprocessedMailCount;
}
@Override
@JsonIgnore
public ReIndexingExecutionFailures failures() {
- return reprocessingContext.failures();
+ return failures;
}
@JsonProperty("failures")
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
index 71cb0db..4ad0106 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
@@ -25,6 +25,7 @@ import java.util.function.Function;
import javax.inject.Inject;
import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.server.task.json.dto.TaskDTO;
import org.apache.james.server.task.json.dto.TaskDTOModule;
@@ -75,8 +76,8 @@ public class SingleMailboxReindexingTask implements Task {
public static class AdditionalInformation extends ReprocessingContextInformation {
private final MailboxId mailboxId;
- AdditionalInformation(MailboxId mailboxId, ReprocessingContext reprocessingContext) {
- super(reprocessingContext);
+ AdditionalInformation(MailboxId mailboxId, int successfullyReprocessedMailCount, int failedReprocessedMailCount, ReIndexingExecutionFailures failures) {
+ super(successfullyReprocessedMailCount, failedReprocessedMailCount, failures);
this.mailboxId = mailboxId;
}
@@ -104,7 +105,6 @@ public class SingleMailboxReindexingTask implements Task {
private final ReIndexerPerformer reIndexerPerformer;
private final MailboxId mailboxId;
- private final AdditionalInformation additionalInformation;
private final ReprocessingContext reprocessingContext;
@Inject
@@ -112,7 +112,6 @@ public class SingleMailboxReindexingTask implements Task {
this.reIndexerPerformer = reIndexerPerformer;
this.mailboxId = mailboxId;
this.reprocessingContext = new ReprocessingContext();
- this.additionalInformation = new AdditionalInformation(mailboxId, reprocessingContext);
}
@Override
@@ -131,7 +130,13 @@ public class SingleMailboxReindexingTask implements Task {
@Override
public Optional<TaskExecutionDetails.AdditionalInformation> details() {
- return Optional.of(additionalInformation);
+ return Optional.of(
+ new SingleMailboxReindexingTask.AdditionalInformation(
+ mailboxId,
+ reprocessingContext.successfullyReprocessedMailCount(),
+ reprocessingContext.failedReprocessingMailCount(),
+ reprocessingContext.failures())
+ );
}
}
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
index 9be6734..53d9275 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
@@ -27,6 +27,7 @@ import javax.inject.Inject;
import org.apache.james.core.User;
import org.apache.james.json.DTOModule;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
import org.apache.james.server.task.json.dto.TaskDTO;
import org.apache.james.server.task.json.dto.TaskDTOModule;
import org.apache.james.task.Task;
@@ -76,19 +77,19 @@ public class UserReindexingTask implements Task {
public static class AdditionalInformation extends ReprocessingContextInformation {
private final User user;
- AdditionalInformation(ReprocessingContext reprocessingContext, User user) {
- super(reprocessingContext);
+ AdditionalInformation(User user, int successfullyReprocessedMailCount, int failedReprocessedMailCount, ReIndexingExecutionFailures failures) {
+ super(successfullyReprocessedMailCount, failedReprocessedMailCount, failures);
this.user = user;
}
public String getUser() {
return user.asString();
}
+
}
private final ReIndexerPerformer reIndexerPerformer;
private final User user;
- private final AdditionalInformation additionalInformation;
private final ReprocessingContext reprocessingContext;
@Inject
@@ -96,7 +97,6 @@ public class UserReindexingTask implements Task {
this.reIndexerPerformer = reIndexerPerformer;
this.user = user;
this.reprocessingContext = new ReprocessingContext();
- this.additionalInformation = new AdditionalInformation(reprocessingContext, user);
}
public static class Factory {
@@ -130,6 +130,10 @@ public class UserReindexingTask implements Task {
@Override
public Optional<TaskExecutionDetails.AdditionalInformation> details() {
- return Optional.of(additionalInformation);
+ return Optional.of(new UserReindexingTask.AdditionalInformation(user,
+ reprocessingContext.successfullyReprocessedMailCount(),
+ reprocessingContext.failedReprocessingMailCount(),
+ reprocessingContext.failures())
+ );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 08/18: JAMES-2813 Extract
SingleMailboxReindexingTaskDTO
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 e264e9a37afd176d8de591a6f8543b399f7ca25e
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Fri Sep 20 16:41:10 2019 +0200
JAMES-2813 Extract SingleMailboxReindexingTaskDTO
---
.../tools/indexer/SingleMailboxReindexingTask.java | 44 ++--------------
.../indexer/SingleMailboxReindexingTaskDTO.java | 61 ++++++++++++++++++++++
...ngleMailboxReindexingTaskSerializationTest.java | 2 +-
3 files changed, 66 insertions(+), 41 deletions(-)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
index 4ad0106..b29f000 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
@@ -20,59 +20,19 @@
package org.apache.mailbox.tools.indexer;
import java.util.Optional;
-import java.util.function.Function;
import javax.inject.Inject;
-import org.apache.james.json.DTOModule;
import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.server.task.json.dto.TaskDTO;
-import org.apache.james.server.task.json.dto.TaskDTOModule;
import org.apache.james.task.Task;
import org.apache.james.task.TaskExecutionDetails;
import org.apache.james.task.TaskType;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
public class SingleMailboxReindexingTask implements Task {
- public static class SingleMailboxReindexingTaskDTO implements TaskDTO {
-
- public static SingleMailboxReindexingTask.SingleMailboxReindexingTaskDTO of(SingleMailboxReindexingTask task, String typeName) {
- return new SingleMailboxReindexingTask.SingleMailboxReindexingTaskDTO(typeName, task.mailboxId.serialize());
- }
-
- private final String type;
- private final String mailboxId;
-
- public SingleMailboxReindexingTaskDTO(@JsonProperty("type") String type, @JsonProperty("mailboxId") String mailboxId) {
- this.type = type;
- this.mailboxId = mailboxId;
- }
-
- @Override
- public String getType() {
- return type;
- }
-
- public String getMailboxId() {
- return mailboxId;
- }
-
- }
-
public static final TaskType MAILBOX_RE_INDEXING = TaskType.of("mailboxReIndexing");
- public static final Function<Factory, TaskDTOModule<SingleMailboxReindexingTask, SingleMailboxReindexingTaskDTO>> MODULE = (factory) ->
- DTOModule
- .forDomainObject(SingleMailboxReindexingTask.class)
- .convertToDTO(SingleMailboxReindexingTaskDTO.class)
- .toDomainObjectConverter(factory::create)
- .toDTOConverter(SingleMailboxReindexingTaskDTO::of)
- .typeName(MAILBOX_RE_INDEXING.asString())
- .withFactory(TaskDTOModule::new);
-
public static class AdditionalInformation extends ReprocessingContextInformation {
private final MailboxId mailboxId;
@@ -123,6 +83,10 @@ public class SingleMailboxReindexingTask implements Task {
}
}
+ public MailboxId getMailboxId() {
+ return mailboxId;
+ }
+
@Override
public TaskType type() {
return MAILBOX_RE_INDEXING;
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskDTO.java
new file mode 100644
index 0000000..6d16df5
--- /dev/null
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskDTO.java
@@ -0,0 +1,61 @@
+/****************************************************************
+ * 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.mailbox.tools.indexer;
+
+import java.util.function.Function;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.server.task.json.dto.TaskDTO;
+import org.apache.james.server.task.json.dto.TaskDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class SingleMailboxReindexingTaskDTO implements TaskDTO {
+
+ public static final Function<SingleMailboxReindexingTask.Factory, TaskDTOModule<SingleMailboxReindexingTask, SingleMailboxReindexingTaskDTO>> MODULE = (factory) ->
+ DTOModule
+ .forDomainObject(SingleMailboxReindexingTask.class)
+ .convertToDTO(SingleMailboxReindexingTaskDTO.class)
+ .toDomainObjectConverter(factory::create)
+ .toDTOConverter(SingleMailboxReindexingTaskDTO::of)
+ .typeName(SingleMailboxReindexingTask.MAILBOX_RE_INDEXING.asString())
+ .withFactory(TaskDTOModule::new);
+
+ public static SingleMailboxReindexingTaskDTO of(SingleMailboxReindexingTask task, String typeName) {
+ return new SingleMailboxReindexingTaskDTO(typeName, task.getMailboxId().serialize());
+ }
+
+ private final String type;
+ private final String mailboxId;
+
+ public SingleMailboxReindexingTaskDTO(@JsonProperty("type") String type, @JsonProperty("mailboxId") String mailboxId) {
+ this.type = type;
+ this.mailboxId = mailboxId;
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ public String getMailboxId() {
+ return mailboxId;
+ }
+
+}
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
index d117303..6fa7c3a 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
@@ -41,7 +41,7 @@ class SingleMailboxReindexingTaskSerializationTest {
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
SingleMailboxReindexingTask.Factory factory = new SingleMailboxReindexingTask.Factory(reIndexerPerformer, new TestId.Factory());
- taskSerializer = new JsonTaskSerializer(SingleMailboxReindexingTask.MODULE.apply(factory));
+ taskSerializer = new JsonTaskSerializer(SingleMailboxReindexingTaskDTO.MODULE.apply(factory));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 16/18: 3.4.0 Release: Documentation website should
refer to 3.4.0
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 093750f67ee6e1a34ae76e91bd612043aa900868
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Sep 5 15:24:11 2019 +0200
3.4.0 Release: Documentation website should refer to 3.4.0
---
src/site/xdoc/server/index.xml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/site/xdoc/server/index.xml b/src/site/xdoc/server/index.xml
index 1d71556..b05fe36 100644
--- a/src/site/xdoc/server/index.xml
+++ b/src/site/xdoc/server/index.xml
@@ -40,22 +40,22 @@
<a href="manage.html">manage</a>, <a href="monitor.html">monitor</a>
and <a href="dev.html">develop</a> Apache James Server.</p>
- <p>Download Apache James Mail Server 3.3.0 and <a href="quick-start.html">quick-start</a> it!</p>
+ <p>Download Apache James Mail Server 3.4.0 and <a href="quick-start.html">quick-start</a> it!</p>
<p>
<span class="minibutton btn-download">
<a href="http://james.apache.org/download.cgi#Apache_James_Server">
- <span><span class="icon"></span>Apache James Server 3.3.0</span>
+ <span><span class="icon"></span>Apache James Server 3.4.0</span>
</a>
</span>
</p>
<p>You can also have a look to the last stable version</p>
- <p>Apache James Server 3.3.0 represents the leading edge of development. This code stream has many more
+ <p>Apache James Server 3.4.0 represents the leading edge of development. This code stream has many more
features than the 2.3 code, but is not be as well tested in production. Reasonable
configuration compatibility has been retained with 2.3.2.</p>
- <p>Apache James Server 3.1.0 required Java 1.8. A migration guide for
- users willing to upgrade from 2.3 to 3.3.0 is <a href="upgrade-2.3.html">available</a>. If relying on Guice
+ <p>Apache James Server 3.1.0 and following versions require Java 1.8. A migration guide for
+ users willing to upgrade from 2.3 to 3.4.0 is <a href="upgrade-2.3.html">available</a>. If relying on Guice
wiring, you can use some additional components (Cassandra, ElasticSearch, ...).</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 14/18: 3.4.0 Release: Homepage should refer James
3.4.0
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 578e075f66a232cb352b230f5d87045912c23422
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Sep 5 15:20:52 2019 +0200
3.4.0 Release: Homepage should refer James 3.4.0
---
src/homepage/index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/homepage/index.html b/src/homepage/index.html
index 16acc3a..1fdd6cc 100644
--- a/src/homepage/index.html
+++ b/src/homepage/index.html
@@ -105,14 +105,14 @@ layout: default
<ul class="james-ul no-padding">
<li class="post-template"><span class="long-arrow-right">→</span><span><b>
WHAT WILL YOU TRY:</b><br>
- <span>Here you will try James server v 3.3.0 thanks to an image.This James image has a default configuration
+ <span>Here you will try James server v 3.4.0 thanks to an image. This James image has a default configuration
using JPA (hsqldb) and Lucene. It also includes a default domain named james.local and three default users:
user01, user02, user03, with their default password being <i>1234</i>.<br>
<i>Note: this James server will respond to IMAP port 143 and SMTP port 25.</i></span></span>
</li>
<li class="post-template"><span class="long-arrow-right">→</span><span><b>STEPS YOU HAVE TO FOLLOW:</b><br>
Pull and run the James image with the following single command:<br><br>
- <code class="highlighter-rouge">docker run -p "25:25" -p "143:143" linagora/james-jpa-sample:3.3.0</code>
+ <code class="highlighter-rouge">docker run -p "25:25" -p "143:143" linagora/james-jpa-sample:3.4.0</code>
<br><br>
Then, connect this image with for instance, Thunderbird.<br>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 07/18: JAMES-2813 serialize FullReindexing task
additional informations 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 5b4a0195d664f72931fc270ca97f0ac7592de7a5
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Thu Sep 19 14:21:19 2019 +0200
JAMES-2813 serialize FullReindexing task additional informations tests
---
.../FullReindexingTaskSerializationTest.java | 41 ++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
index 9c3a418..18659da 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
@@ -24,23 +24,50 @@ import static org.mockito.Mockito.mock;
import java.io.IOException;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
+import org.apache.james.mailbox.model.TestId;
+import org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
import org.apache.james.server.task.json.JsonTaskSerializer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.collect.ImmutableList;
class FullReindexingTaskSerializationTest {
private ReIndexerPerformer reIndexerPerformer;
private JsonTaskSerializer taskSerializer;
+ private JsonTaskAdditionalInformationsSerializer jsonAdditionalInformationSerializer;
+
+ private final TestId mailboxId2 = TestId.of(2L);
+ private final MessageUid messageUid2 = MessageUid.of(20L);
+ private final TestId mailboxId = TestId.of(1L);
+ private final MessageUid messageUid = MessageUid.of(10L);
+
+ private final int successfullyReprocessedMailCount = 42;
+ private final int failedReprocessedMailCount = 2;
+ private ReIndexingExecutionFailures reIndexingExecutionFailures;
+
private final String serializedFullReindexingTask = "{\"type\": \"FullReIndexing\"}";
+ private final String SERIALIZED_ADDITIONAL_INFORMATION = "{\"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}]}";
@BeforeEach
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
FullReindexingTask.Factory factory = new FullReindexingTask.Factory(reIndexerPerformer);
taskSerializer = new JsonTaskSerializer(FullReindexingTask.MODULE.apply(factory));
+
+ jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationsSerializer(
+ ReprocessingContextInformationDTO
+ .SERIALIZATION_MODULE
+ .apply(FullReindexingTask.FULL_RE_INDEXING)
+ .apply(new TestId.Factory()));
+
+ reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of(
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid),
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2)));
}
@Test
@@ -58,5 +85,19 @@ class FullReindexingTaskSerializationTest {
assertThat(taskSerializer.deserialize(serializedFullReindexingTask))
.isEqualToComparingOnlyGivenFields(task, "reIndexerPerformer");
}
+
+ @Test
+ void additionalInformationShouldBeSerializable() throws JsonProcessingException {
+ ReprocessingContextInformation details = new ReprocessingContextInformation(successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_ADDITIONAL_INFORMATION);
+ }
+
+ @Test
+ void additonalInformationShouldBeDeserializable() throws IOException {
+ ReprocessingContextInformation details = new ReprocessingContextInformation(successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThat(jsonAdditionalInformationSerializer.deserialize("FullReIndexing", SERIALIZED_ADDITIONAL_INFORMATION))
+ .isEqualToComparingFieldByField(details);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 10/18: JAMES-2813 extract UserReindexingTaskDTO
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 a93aca8184de1b1b762e6d01af25c77d003706a7
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Fri Sep 20 17:34:31 2019 +0200
JAMES-2813 extract UserReindexingTaskDTO
---
.../mailbox/tools/indexer/UserReindexingTask.java | 44 ++--------------
.../tools/indexer/UserReindexingTaskDTO.java | 61 ++++++++++++++++++++++
.../UserReindexingTaskSerializationTest.java | 2 +-
3 files changed, 66 insertions(+), 41 deletions(-)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
index 53d9275..7b69928 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
@@ -20,60 +20,20 @@
package org.apache.mailbox.tools.indexer;
import java.util.Optional;
-import java.util.function.Function;
import javax.inject.Inject;
import org.apache.james.core.User;
-import org.apache.james.json.DTOModule;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
-import org.apache.james.server.task.json.dto.TaskDTO;
-import org.apache.james.server.task.json.dto.TaskDTOModule;
import org.apache.james.task.Task;
import org.apache.james.task.TaskExecutionDetails;
import org.apache.james.task.TaskType;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
public class UserReindexingTask implements Task {
public static final TaskType USER_RE_INDEXING = TaskType.of("userReIndexing");
- public static final Function<UserReindexingTask.Factory, TaskDTOModule<UserReindexingTask, UserReindexingTask.UserReindexingTaskDTO>> MODULE = (factory) ->
- DTOModule
- .forDomainObject(UserReindexingTask.class)
- .convertToDTO(UserReindexingTask.UserReindexingTaskDTO.class)
- .toDomainObjectConverter(factory::create)
- .toDTOConverter(UserReindexingTask.UserReindexingTaskDTO::of)
- .typeName(USER_RE_INDEXING.asString())
- .withFactory(TaskDTOModule::new);
-
- public static class UserReindexingTaskDTO implements TaskDTO {
-
- public static UserReindexingTaskDTO of(UserReindexingTask task, String type) {
- return new UserReindexingTaskDTO(type, task.user.asString());
- }
-
- private final String type;
- private final String username;
-
- private UserReindexingTaskDTO(@JsonProperty("type") String type, @JsonProperty("username") String username) {
- this.type = type;
- this.username = username;
- }
-
- @Override
- public String getType() {
- return type;
- }
-
- public String getUsername() {
- return username;
- }
-
- }
-
public static class AdditionalInformation extends ReprocessingContextInformation {
private final User user;
@@ -123,6 +83,10 @@ public class UserReindexingTask implements Task {
}
}
+ public User getUser() {
+ return user;
+ }
+
@Override
public TaskType type() {
return USER_RE_INDEXING;
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskDTO.java
new file mode 100644
index 0000000..82e12f5
--- /dev/null
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskDTO.java
@@ -0,0 +1,61 @@
+/****************************************************************
+ * 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.mailbox.tools.indexer;
+
+import java.util.function.Function;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.server.task.json.dto.TaskDTO;
+import org.apache.james.server.task.json.dto.TaskDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class UserReindexingTaskDTO implements TaskDTO {
+
+ public static final Function<UserReindexingTask.Factory, TaskDTOModule<UserReindexingTask, UserReindexingTaskDTO>> MODULE = (factory) ->
+ DTOModule
+ .forDomainObject(UserReindexingTask.class)
+ .convertToDTO(UserReindexingTaskDTO.class)
+ .toDomainObjectConverter(factory::create)
+ .toDTOConverter(UserReindexingTaskDTO::of)
+ .typeName(UserReindexingTask.USER_RE_INDEXING.asString())
+ .withFactory(TaskDTOModule::new);
+
+ public static UserReindexingTaskDTO of(UserReindexingTask task, String type) {
+ return new UserReindexingTaskDTO(type, task.getUser().asString());
+ }
+
+ private final String type;
+ private final String username;
+
+ private UserReindexingTaskDTO(@JsonProperty("type") String type, @JsonProperty("username") String username) {
+ this.type = type;
+ this.username = username;
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+}
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
index c5007af..c586e65 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
@@ -41,7 +41,7 @@ class UserReindexingTaskSerializationTest {
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
UserReindexingTask.Factory factory = new UserReindexingTask.Factory(reIndexerPerformer);
- taskSerializer = new JsonTaskSerializer(UserReindexingTask.MODULE.apply(factory));
+ taskSerializer = new JsonTaskSerializer(UserReindexingTaskDTO.MODULE.apply(factory));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 04/18: JAMES-2813 extract
ErrorRecoveryIndexationTaskDTO
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 e844ff6ca867ea64dade7e2c899e3a35153c43de
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Wed Sep 18 15:17:53 2019 +0200
JAMES-2813 extract ErrorRecoveryIndexationTaskDTO
---
.../tools/indexer/ErrorRecoveryIndexationTask.java | 84 +---------------
.../indexer/ErrorRecoveryIndexationTaskDTO.java | 109 +++++++++++++++++++++
...rorRecoveryIndexationTaskSerializationTest.java | 2 +-
3 files changed, 115 insertions(+), 80 deletions(-)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
index fe08031..b13d49c 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
@@ -19,100 +19,22 @@
package org.apache.mailbox.tools.indexer;
-import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
-import java.util.function.Function;
import javax.inject.Inject;
-import org.apache.james.json.DTOModule;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.server.task.json.dto.TaskDTO;
-import org.apache.james.server.task.json.dto.TaskDTOModule;
import org.apache.james.task.Task;
import org.apache.james.task.TaskExecutionDetails;
import org.apache.james.task.TaskType;
-import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.steveash.guavate.Guavate;
-import com.google.common.collect.Multimap;
public class ErrorRecoveryIndexationTask implements Task {
- private static final TaskType PREVIOUS_FAILURES_INDEXING = TaskType.of("ErrorRecoveryIndexation");
-
- public static final Function<ErrorRecoveryIndexationTask.Factory, TaskDTOModule<ErrorRecoveryIndexationTask, ErrorRecoveryIndexationTaskDTO>> MODULE = (factory) ->
- DTOModule
- .forDomainObject(ErrorRecoveryIndexationTask.class)
- .convertToDTO(ErrorRecoveryIndexationTask.ErrorRecoveryIndexationTaskDTO.class)
- .toDomainObjectConverter(factory::create)
- .toDTOConverter(ErrorRecoveryIndexationTask.ErrorRecoveryIndexationTaskDTO::of)
- .typeName(PREVIOUS_FAILURES_INDEXING.asString())
- .withFactory(TaskDTOModule::new);
-
- public static class ErrorRecoveryIndexationTaskDTO implements TaskDTO {
-
- public static ErrorRecoveryIndexationTaskDTO of(ErrorRecoveryIndexationTask task, String type) {
- Multimap<MailboxId, ReIndexingExecutionFailures.ReIndexingFailure> failuresByMailboxId = task.previousFailures
- .failures()
- .stream()
- .collect(Guavate.toImmutableListMultimap(ReIndexingExecutionFailures.ReIndexingFailure::getMailboxId, Function.identity()));
-
- List<ReindexingFailureDTO> failureDTOs = failuresByMailboxId.asMap()
- .entrySet().stream()
- .map(ErrorRecoveryIndexationTaskDTO::failuresByMailboxToReindexingFailureDTO).collect(Guavate.toImmutableList());
- return new ErrorRecoveryIndexationTaskDTO(type, failureDTOs);
- }
-
- private static ReindexingFailureDTO failuresByMailboxToReindexingFailureDTO(Map.Entry<MailboxId,
- Collection<ReIndexingExecutionFailures.ReIndexingFailure>> entry) {
- List<Long> uids = entry.getValue().stream()
- .map(ReIndexingExecutionFailures.ReIndexingFailure::getUid)
- .map(MessageUid::asLong)
- .collect(Guavate.toImmutableList());
- return new ReindexingFailureDTO(entry.getKey().serialize(), uids);
- }
-
- public static class ReindexingFailureDTO {
-
- private final String mailboxId;
- private final List<Long> uids;
-
- private ReindexingFailureDTO(@JsonProperty("mailboxId") String mailboxId, @JsonProperty("uids") List<Long> uids) {
- this.mailboxId = mailboxId;
- this.uids = uids;
- }
-
- public String getMailboxId() {
- return mailboxId;
- }
-
- public List<Long> getUids() {
- return uids;
- }
- }
-
- private final String type;
- private final List<ReindexingFailureDTO> previousFailures;
-
- private ErrorRecoveryIndexationTaskDTO(@JsonProperty("type") String type, @JsonProperty("previousFailures") List<ReindexingFailureDTO> previousFailures) {
- this.type = type;
- this.previousFailures = previousFailures;
- }
-
- @Override
- public String getType() {
- return type;
- }
-
- public List<ReindexingFailureDTO> getPreviousFailures() {
- return previousFailures;
- }
-
- }
+ public static final TaskType PREVIOUS_FAILURES_INDEXING = TaskType.of("ErrorRecoveryIndexation");
public static class Factory {
@@ -159,6 +81,10 @@ public class ErrorRecoveryIndexationTask implements Task {
return PREVIOUS_FAILURES_INDEXING;
}
+ public ReIndexingExecutionFailures getPreviousFailures() {
+ return previousFailures;
+ }
+
@Override
public Optional<TaskExecutionDetails.AdditionalInformation> details() {
return Optional.of(ReprocessingContextInformation.from(reprocessingContext));
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java
new file mode 100644
index 0000000..55c98de
--- /dev/null
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java
@@ -0,0 +1,109 @@
+/****************************************************************
+ * 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.mailbox.tools.indexer;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.server.task.json.dto.TaskDTO;
+import org.apache.james.server.task.json.dto.TaskDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.Multimap;
+
+public class ErrorRecoveryIndexationTaskDTO implements TaskDTO {
+
+ public static final Function<ErrorRecoveryIndexationTask.Factory, TaskDTOModule<ErrorRecoveryIndexationTask, ErrorRecoveryIndexationTaskDTO>> MODULE = (factory) ->
+ DTOModule
+ .forDomainObject(ErrorRecoveryIndexationTask.class)
+ .convertToDTO(ErrorRecoveryIndexationTaskDTO.class)
+ .toDomainObjectConverter(factory::create)
+ .toDTOConverter(ErrorRecoveryIndexationTaskDTO::of)
+ .typeName(ErrorRecoveryIndexationTask.PREVIOUS_FAILURES_INDEXING.asString())
+ .withFactory(TaskDTOModule::new);
+
+ public static ErrorRecoveryIndexationTaskDTO of(ErrorRecoveryIndexationTask task, String type) {
+ Multimap<MailboxId, ReIndexingExecutionFailures.ReIndexingFailure> failuresByMailboxId = task.getPreviousFailures()
+ .failures()
+ .stream()
+ .collect(Guavate.toImmutableListMultimap(ReIndexingExecutionFailures.ReIndexingFailure::getMailboxId, Function.identity()));
+
+ List<ReindexingFailureDTO> failureDTOs = failuresByMailboxId.asMap()
+ .entrySet()
+ .stream()
+ .map(ErrorRecoveryIndexationTaskDTO::failuresByMailboxToReindexingFailureDTO)
+ .collect(Guavate.toImmutableList());
+ return new ErrorRecoveryIndexationTaskDTO(type, failureDTOs);
+ }
+
+ private static ReindexingFailureDTO failuresByMailboxToReindexingFailureDTO(Map.Entry<MailboxId,
+ Collection<ReIndexingExecutionFailures.ReIndexingFailure>> entry) {
+ List<Long> uids = entry
+ .getValue()
+ .stream()
+ .map(ReIndexingExecutionFailures.ReIndexingFailure::getUid)
+ .map(MessageUid::asLong)
+ .collect(Guavate.toImmutableList());
+ return new ReindexingFailureDTO(entry.getKey().serialize(), uids);
+ }
+
+ public static class ReindexingFailureDTO {
+
+ private final String mailboxId;
+ private final List<Long> uids;
+
+ private ReindexingFailureDTO(@JsonProperty("mailboxId") String mailboxId, @JsonProperty("uids") List<Long> uids) {
+ this.mailboxId = mailboxId;
+ this.uids = uids;
+ }
+
+ public String getMailboxId() {
+ return mailboxId;
+ }
+
+ public List<Long> getUids() {
+ return uids;
+ }
+ }
+
+ private final String type;
+ private final List<ReindexingFailureDTO> previousFailures;
+
+ private ErrorRecoveryIndexationTaskDTO(@JsonProperty("type") String type, @JsonProperty("previousFailures") List<ReindexingFailureDTO> previousFailures) {
+ this.type = type;
+ this.previousFailures = previousFailures;
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ public List<ReindexingFailureDTO> getPreviousFailures() {
+ return previousFailures;
+ }
+
+}
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
index 415db36..2103682 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
@@ -58,7 +58,7 @@ class ErrorRecoveryIndexationTaskSerializationTest {
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
ErrorRecoveryIndexationTask.Factory factory = new ErrorRecoveryIndexationTask.Factory(reIndexerPerformer, new TestId.Factory());
- taskSerializer = new JsonTaskSerializer(ErrorRecoveryIndexationTask.MODULE.apply(factory));
+ taskSerializer = new JsonTaskSerializer(ErrorRecoveryIndexationTaskDTO.MODULE.apply(factory));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 17/18: 3.4.0 release: Download page should refer
3.4.0 and rely more on maven repository
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 a103f57753f2b61f32720b38c938b3e992f0382a
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Sep 5 15:45:07 2019 +0200
3.4.0 release: Download page should refer 3.4.0 and rely more on maven repository
---
src/site/xdoc/download.xml | 106 ++++++++++++++++++++-------------------------
1 file changed, 47 insertions(+), 59 deletions(-)
diff --git a/src/site/xdoc/download.xml b/src/site/xdoc/download.xml
index 021f3fb..4b60f2a 100644
--- a/src/site/xdoc/download.xml
+++ b/src/site/xdoc/download.xml
@@ -139,7 +139,7 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
<section name='Apache James Server'>
- <subsection name="Apache James 3.3.0 is the stable version">
+ <subsection name="Apache James 3.4.0 is the stable version">
<div class="ui-widget">
<div class="ui-priority-secondary ui-corner-all apache-james-crypto-notice">
@@ -159,26 +159,14 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
<ul>
<li>Source code (ZIP Format):
- <a href="https://www.apache.org/dyn/closer.lua/james/server/3.3.0/james-project-3.3.0-src.zip">apache-james-3.3.0-app.zip</a>
- [<a href="https://apache.org/dist/james/server/3.3.0/james-project-3.3.0-src.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/server/3.3.0/james-project-3.3.0-src.zip.asc">PGP</a>]</li>
+ <a href="https://www.apache.org/dyn/closer.lua/james/server/3.4.0/james-project-3.4.0-source-release.zip">james-project-3.4.0-source-release.zip</a>
+ [<a href="https://apache.org/dist/james/server/3.4.0/james-project-3.4.0-source-release.zip.sha512">SHA-512</a>]
+ [<a href="https://apache.org/dist/james/server/3.4.0/james-project-3.4.0-source-release.zip.asc">PGP</a>]</li>
<li>Binary (ZIP Format) for Spring wiring:
- <a href="https://www.apache.org/dyn/closer.lua/james/server/3.3.0/james-server-app-3.3.0-app.zip">apache-james-3.3.0-app.zip</a>
- [<a href="https://apache.org/dist/james/server/3.3.0/james-server-app-3.3.0-app.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/server/3.3.0/james-server-app-3.3.0-app.zip.asc">PGP</a>]
- </li>
-
- <li>Binary (ZIP Format) for JPA guice wiring:
- <a href="https://www.apache.org/dyn/closer.lua/james/server/3.3.0/james-server-jpa-guice-3.3.0.zip">james-jpa-guice-3.3.0.zip</a>
- [<a href="https://apache.org/dist/james/server/3.3.0/james-server-jpa-guice-3.3.0.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/server/3.3.0/james-server-jpa-guice-3.3.0.zip.asc">PGP</a>]
- </li>
-
- <li>Binary (ZIP Format) for JPA SMTP guice wiring:
- <a href="https://www.apache.org/dyn/closer.lua/james/server/3.3.0/james-server-jpa-smtp-guice-3.3.0.zip">james-jpa-smtp-guice-3.3.0.zip</a>
- [<a href="https://apache.org/dist/james/server/3.3.0/james-server-jpa-smtp-guice-3.3.0.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/server/3.3.0/james-server-jpa-smtp-guice-3.3.0.zip.asc">PGP</a>]
+ <a href="https://www.apache.org/dyn/closer.lua/james/server/3.4.0/james-server-app-3.4.0-app.zip">apache-james-3.4.0-app.zip</a>
+ [<a href="https://apache.org/dist/james/server/3.4.0/james-server-app-3.4.0-app.zip.sha512">SHA-512</a>]
+ [<a href="https://apache.org/dist/james/server/3.4.0/james-server-app-3.4.0-app.zip.asc">PGP</a>]
</li>
</ul>
@@ -420,13 +408,13 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
<section name="Apache Mailet">
- <p>Apache Mailet 3.3.0 is the latest stable version. </p>
+ <p>Apache Mailet 3.4.0 is the latest stable version. </p>
<p>Sources:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-api-3.3.0-sources.zip">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-api-3.3.0-sources.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-api-3.3.0-sources.zip.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-api/3.3.0/apache-mailet-api-3.4.0-sources.jar">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-api/3.3.0/apache-mailet-api-3.4.0-sources.jar.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-api/3.3.0/apache-mailet-api-3.4.0-sources.jar.asc">PGP</a>]
</p>
<p>You can use the mailet API using this maven dependency:</p>
@@ -436,27 +424,27 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-mailet-api</artifactId>
- <version>3.3.0</version>
+ <version>3.4.0</version>
</dependency>
</code>
</pre>
<p>Direct download link:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-api-3.3.0.jar">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-api-3.3.0.jar.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-api-3.3.0.jar.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-api/3.4.0/apache-mailet-api-3.4.0.jar.sha1">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-api/3.4.0/apache-mailet-api-3.4.0.jar.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-api/3.4.0/apache-mailet-api-3.4.0.jar.asc">PGP</a>]
</p>
</section>
<section name="Apache Mailet Base">
- <p>Apache Mailet Base 3.3.0 is the latest stable version.</p>
+ <p>Apache Mailet Base 3.4.0 is the latest stable version.</p>
<p>Sources:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-base-3.3.0-sources.zip">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-base-3.3.0-sources.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-base-3.3.0-sources.zip.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-base/3.4.0/apache-mailet-base-3.4.0-sources.zip">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-base/3.4.0/apache-mailet-base-3.4.0-sources.zip.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-base/3.4.0/apache-mailet-base-3.4.0-sources.zip.asc">PGP</a>]
</p>
<p>You can use the mailet Base using this maven dependency:</p>
@@ -466,27 +454,27 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-mailet-base</artifactId>
- <version>3.3.0</version>
+ <version>3.4.0</version>
</dependency>
</code>
</pre>
<p>Direct download link:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-base-3.3.0.jar">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-base-3.3.0.jar.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-base-3.3.0.jar.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-base/3.4.0/apache-mailet-base-3.4.0.jar">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-base/3.4.0/apache-mailet-base-3.4.0.jar.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-base/3.4.0/apache-mailet-base-3.4.0.jar.asc">PGP</a>]
</p>
</section>
<section name="Apache Mailet Standard">
- <p>Apache Mailet Standard 3.3.0 is the latest stable version. </p>
+ <p>Apache Mailet Standard 3.4.0 is the latest stable version. </p>
<p>Sources:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-standard-3.3.0-sources.zip">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-standard-3.3.0-sources.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-standard-3.3.0-sources.zip.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-standard/3.4.0/apache-mailet-standard-3.4.0-sources.zip">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-standard/3.4.0/apache-mailet-standard-3.4.0-sources.zip.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-standard/3.4.0/apache-mailet-standard-3.4.0-sources.zip.asc">PGP</a>]
</p>
<p>You can use mailet Standard content using this maven dependency:</p>
@@ -496,22 +484,22 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-mailet-standard</artifactId>
- <version>3.3.0</version>
+ <version>3.4.0</version>
</dependency>
</code>
</pre>
<p>Direct download link:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-standard-3.3.0.jar">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-standard-3.3.0.jar.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-standard-3.3.0.jar.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-standard/3.4.0/apache-mailet-standard-3.4.0.jar">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-standard/3.4.0/apache-mailet-standard-3.4.0.jar.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-standard/3.4.0/apache-mailet-standard-3.4.0.jar.asc">PGP</a>]
</p>
</section>
<section name="Apache Crypto Mailets">
- <p>Apache Crypto Mailets 3.3.0 is the latest stable version.</p>
+ <p>Apache Crypto Mailets 3.4.0 is the latest stable version.</p>
<div class="ui-widget">
<div class="ui-priority-secondary ui-corner-all apache-james-crypto-notice">
@@ -528,9 +516,9 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
</div>
<p>Sources:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-crypto-3.3.0-sources.zip">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-crypto-3.3.0-sources.zip.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-crypto-3.3.0-sources.zip.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-crypto/3.4.0/apache-mailet-crypto-3.4.0-sources.zip">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-crypto/3.4.0/apache-mailet-crypto-3.4.0-sources.zip.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-crypto/3.4.0/apache-mailet-crypto-3.4.0-sources.zip.asc">PGP</a>]
</p>
<p>You can use Mailet Crypto content using this maven dependency:</p>
@@ -540,32 +528,32 @@ is found <a href='https://www.apache.org/licenses/exports/'>here</a>.
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-mailet-crypto</artifactId>
- <version>3.3.0</version>
+ <version>3.4.0</version>
</dependency>
</code>
</pre>
<p>Direct download link:
- <a href="https://www.apache.org/dyn/closer.lua/james/mailets/3.3.0/apache-mailet-crypto-3.3.0.jar">(Jar)</a>
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-crypto-3.3.0.jar.sha1">SHA-1</a>]
- [<a href="https://apache.org/dist/james/mailets/3.3.0/apache-mailet-crypto-3.3.0.jar.asc">PGP</a>]
+ <a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-crypto/3.4.0/apache-mailet-crypto-3.4.0.jar">(Jar)</a>
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-crypto/3.4.0/apache-mailet-crypto-3.4.0.jar.sha1">SHA-1</a>]
+ [<a href="https://repo1.maven.org/maven2/org/apache/james/apache-mailet-crypto/3.4.0/apache-mailet-crypto-3.4.0.jar.asc">PGP</a>]
</p>
</section>
<section name="Apache James Protocols">
- <p>Apache James Protocols 3.3.0 is the latest stable version.</p>
+ <p>Apache James Protocols 3.4.0 is the latest stable version.</p>
<ul>
You can get the James implementation of various protocols using maven:
- <li><a href="https://mvnrepository.com/artifact/org.apache.james.protocols/protocols-api/3.3.0">API</a></li>
- <li><a href="https://mvnrepository.com/artifact/org.apache.james.protocols/protocols-netty/3.3.0">NETTY</a></li>
- <li><a href="https://mvnrepository.com/artifact/org.apache.james.protocols/protocols-smtp/3.3.0">SMTP</a></li>
- <li><a href="https://mvnrepository.com/artifact/org.apache.james.protocols/protocols-lmtp/3.3.0">LMTP</a></li>
- <li><a href="https://mvnrepository.com/artifact/org.apache.james.protocols/protocols-imap/3.3.0">IMAP</a></li>
- <li><a href="https://mvnrepository.com/artifact/org.apache.james.protocols/protocols-pop3/3.3.0">POP3</a></li>
- <li><a href="https://mvnrepository.com/artifact/org.apache.james.protocols/protocols-managesieve/3.3.0">MANAGESIEVE</a></li>
+ <li><a href="https://repo1.maven.org/maven2/org/apache/james/protocols/protocols-api/3.4.0">API</a></li>
+ <li><a href="https://repo1.maven.org/maven2/org/apache/james/protocols/protocols-netty/3.4.0">NETTY</a></li>
+ <li><a href="https://repo1.maven.org/maven2/org/apache/james/protocols/protocols-smtp/3.4.0">SMTP</a></li>
+ <li><a href="https://repo1.maven.org/maven2/org/apache/james/protocols/protocols-lmtp/3.4.0">LMTP</a></li>
+ <li><a href="https://repo1.maven.org/maven2/org/apache/james/protocols/protocols-imap/3.4.0">IMAP</a></li>
+ <li><a href="https://repo1.maven.org/maven2/org/apache/james/protocols/protocols-pop3/3.4.0">POP3</a></li>
+ <li><a href="https://repo1.maven.org/maven2/org/apache/james/protocols/protocols-managesieve/3.4.0">MANAGESIEVE</a></li>
</ul>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 09/18: JAMES-2813 serialize
additionalInformationDTO for SingleMailboxReindexingTask
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 fca4be5a9a2fe6defebb404f0a533e6b30ad8035
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Fri Sep 20 17:28:49 2019 +0200
JAMES-2813 serialize additionalInformationDTO for SingleMailboxReindexingTask
---
...lboxReindexingTaskAdditionalInformationDTO.java | 76 ++++++++++++++++++++++
...ngleMailboxReindexingTaskSerializationTest.java | 43 ++++++++++++
2 files changed, 119 insertions(+)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..c7b9efc
--- /dev/null
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java
@@ -0,0 +1,76 @@
+/****************************************************************
+ * 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.mailbox.tools.indexer;
+
+import java.util.List;
+import java.util.function.Function;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class SingleMailboxReindexingTaskAdditionalInformationDTO implements AdditionalInformationDTO {
+
+ public static final Function<MailboxId.Factory, AdditionalInformationDTOModule<SingleMailboxReindexingTask.AdditionalInformation, SingleMailboxReindexingTaskAdditionalInformationDTO>> SERIALIZATION_MODULE =
+ factory ->
+ DTOModule.forDomainObject(SingleMailboxReindexingTask.AdditionalInformation.class)
+ .convertToDTO(SingleMailboxReindexingTaskAdditionalInformationDTO.class)
+ .toDomainObjectConverter(dto -> new SingleMailboxReindexingTask.AdditionalInformation(factory.fromString(dto.getMailboxId()),
+ dto.getSuccessfullyReprocessedMailCount(),
+ dto.getFailedReprocessedMailCount(),
+ ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getFailures())))
+ .toDTOConverter((details, type) -> new SingleMailboxReindexingTaskAdditionalInformationDTO(details.getMailboxId(), details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(),
+ ReprocessingContextInformationDTO.serializeFailures(details.failures())))
+ .typeName(SingleMailboxReindexingTask.MAILBOX_RE_INDEXING.asString())
+ .withFactory(AdditionalInformationDTOModule::new);
+
+ private final ReprocessingContextInformationDTO reprocessingContextInformationDTO;
+ private final String mailboxId;
+
+ @JsonCreator
+ private SingleMailboxReindexingTaskAdditionalInformationDTO(@JsonProperty("mailboxId") String mailboxId,
+ @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
+ @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount,
+ @JsonProperty("failures") List<ReprocessingContextInformationDTO.ReindexingFailureDTO> failures) {
+ this.mailboxId = mailboxId;
+ this.reprocessingContextInformationDTO = new ReprocessingContextInformationDTO(
+ successfullyReprocessedMailCount,
+ failedReprocessedMailCount, failures);
+ }
+
+ public String getMailboxId() {
+ return mailboxId;
+ }
+
+ public int getSuccessfullyReprocessedMailCount() {
+ return reprocessingContextInformationDTO.getSuccessfullyReprocessedMailCount();
+ }
+
+ public int getFailedReprocessedMailCount() {
+ return reprocessingContextInformationDTO.getFailedReprocessedMailCount();
+ }
+
+ public List<ReprocessingContextInformationDTO.ReindexingFailureDTO> getFailures() {
+ return reprocessingContextInformationDTO.getFailures();
+ }
+}
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
index 6fa7c3a..4619f62 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
@@ -23,25 +23,55 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import java.io.IOException;
+import java.util.List;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
import org.apache.james.server.task.json.JsonTaskSerializer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.collect.ImmutableList;
class SingleMailboxReindexingTaskSerializationTest {
private ReIndexerPerformer reIndexerPerformer;
private JsonTaskSerializer taskSerializer;
+ private JsonTaskAdditionalInformationsSerializer jsonAdditionalInformationSerializer;
+
+ private final int successfullyReprocessedMailCount = 42;
+ private final int failedReprocessedMailCount = 2;
+ private ReIndexingExecutionFailures reIndexingExecutionFailures;
+
private final String serializedMailboxReindexingTask = "{\"type\": \"mailboxReIndexing\", \"mailboxId\": \"1\"}";
+ private final String SERIALIZED_ADDITIONAL_INFORMATION = "{ \"mailboxId\": \"1\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10, 20]}]}";
+
+ private final TestId mailboxId = TestId.of(1L);
+ private final MessageUid messageUid = MessageUid.of(10L);
+ private final MessageUid messageUid2 = MessageUid.of(20L);
+
+ private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid);
+ private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure2 = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid2);
+ private final List<ReIndexingExecutionFailures.ReIndexingFailure> failures = ImmutableList.of(indexingFailure, indexingFailure2);
+
@BeforeEach
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
SingleMailboxReindexingTask.Factory factory = new SingleMailboxReindexingTask.Factory(reIndexerPerformer, new TestId.Factory());
taskSerializer = new JsonTaskSerializer(SingleMailboxReindexingTaskDTO.MODULE.apply(factory));
+
+ jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationsSerializer(
+ SingleMailboxReindexingTaskAdditionalInformationDTO
+ .SERIALIZATION_MODULE
+ .apply(new TestId.Factory()));
+
+ reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of(
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid),
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid2)));
}
@Test
@@ -61,5 +91,18 @@ class SingleMailboxReindexingTaskSerializationTest {
assertThat(taskSerializer.deserialize(serializedMailboxReindexingTask))
.isEqualToComparingOnlyGivenFields(task, "reIndexerPerformer", "mailboxId");
}
+
+ @Test
+ void additionalInformationShouldBeSerializable() throws JsonProcessingException {
+ SingleMailboxReindexingTask.AdditionalInformation details = new SingleMailboxReindexingTask.AdditionalInformation(mailboxId, successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_ADDITIONAL_INFORMATION);
+ }
+
+ @Test
+ void additonalInformationShouldBeDeserializable() throws IOException {
+ SingleMailboxReindexingTask.AdditionalInformation details = new SingleMailboxReindexingTask.AdditionalInformation(mailboxId, successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThat(jsonAdditionalInformationSerializer.deserialize("mailboxReIndexing", SERIALIZED_ADDITIONAL_INFORMATION))
+ .isEqualToComparingFieldByField(details);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 11/18: JAMES-2813 serialize additional informations
for UserReindexingTask
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 76c2fd98203304efb08d952e4e62b321e5ea3f44
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Fri Sep 20 17:49:57 2019 +0200
JAMES-2813 serialize additional informations for UserReindexingTask
---
...UserReindexingTaskAdditionalInformationDTO.java | 77 ++++++++++++++++++++++
.../UserReindexingTaskSerializationTest.java | 46 +++++++++++++
2 files changed, 123 insertions(+)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..3b82156
--- /dev/null
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java
@@ -0,0 +1,77 @@
+/****************************************************************
+ * 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.mailbox.tools.indexer;
+
+import java.util.List;
+import java.util.function.Function;
+
+import org.apache.james.core.User;
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInformationDTO {
+
+ public static final Function<MailboxId.Factory, AdditionalInformationDTOModule<UserReindexingTask.AdditionalInformation, UserReindexingTaskAdditionalInformationDTO>> SERIALIZATION_MODULE =
+ factory ->
+ DTOModule.forDomainObject(UserReindexingTask.AdditionalInformation.class)
+ .convertToDTO(UserReindexingTaskAdditionalInformationDTO.class)
+ .toDomainObjectConverter(dto -> new UserReindexingTask.AdditionalInformation(User.fromUsername(dto.getUser()),
+ dto.getSuccessfullyReprocessedMailCount(),
+ dto.getFailedReprocessedMailCount(),
+ ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getFailures())))
+ .toDTOConverter((details, type) -> new UserReindexingTaskAdditionalInformationDTO(details.getUser(), details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(),
+ ReprocessingContextInformationDTO.serializeFailures(details.failures())))
+ .typeName(UserReindexingTask.USER_RE_INDEXING.asString())
+ .withFactory(AdditionalInformationDTOModule::new);
+
+ private final ReprocessingContextInformationDTO reprocessingContextInformationDTO;
+ private final String user;
+
+ @JsonCreator
+ private UserReindexingTaskAdditionalInformationDTO(@JsonProperty("user") String user,
+ @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
+ @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount,
+ @JsonProperty("failures") List<ReprocessingContextInformationDTO.ReindexingFailureDTO> failures) {
+ this.user = user;
+ this.reprocessingContextInformationDTO = new ReprocessingContextInformationDTO(
+ successfullyReprocessedMailCount,
+ failedReprocessedMailCount, failures);
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public int getSuccessfullyReprocessedMailCount() {
+ return reprocessingContextInformationDTO.getSuccessfullyReprocessedMailCount();
+ }
+
+ public int getFailedReprocessedMailCount() {
+ return reprocessingContextInformationDTO.getFailedReprocessedMailCount();
+ }
+
+ public List<ReprocessingContextInformationDTO.ReindexingFailureDTO> getFailures() {
+ return reprocessingContextInformationDTO.getFailures();
+ }
+}
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
index c586e65..737f17a 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
@@ -23,25 +23,57 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import java.io.IOException;
+import java.util.List;
import org.apache.james.core.User;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
+import org.apache.james.mailbox.model.TestId;
+import org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
import org.apache.james.server.task.json.JsonTaskSerializer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.collect.ImmutableList;
class UserReindexingTaskSerializationTest {
private ReIndexerPerformer reIndexerPerformer;
private JsonTaskSerializer taskSerializer;
+ private JsonTaskAdditionalInformationsSerializer jsonAdditionalInformationSerializer;
+
+ private final User user = User.fromUsername("foo@apache.org");
+ private final int successfullyReprocessedMailCount = 42;
+ private final int failedReprocessedMailCount = 2;
+ private ReIndexingExecutionFailures reIndexingExecutionFailures;
private final String serializedUserReindexingTask = "{\"type\": \"userReIndexing\", \"username\": \"foo@apache.org\"}";
+ private final String SERIALIZED_ADDITIONAL_INFORMATION = "{ \"user\": \"foo@apache.org\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}]}";
+
+ private final TestId mailboxId = TestId.of(1L);
+ private final MessageUid messageUid = MessageUid.of(10L);
+ private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid);
+
+ private final TestId mailboxId2 = TestId.of(2L);
+ private final MessageUid messageUid2 = MessageUid.of(20L);
+
+ private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure2 = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2);
+ private final List<ReIndexingExecutionFailures.ReIndexingFailure> failures = ImmutableList.of(indexingFailure, indexingFailure2);
+
@BeforeEach
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
UserReindexingTask.Factory factory = new UserReindexingTask.Factory(reIndexerPerformer);
taskSerializer = new JsonTaskSerializer(UserReindexingTaskDTO.MODULE.apply(factory));
+ jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationsSerializer(
+ UserReindexingTaskAdditionalInformationDTO
+ .SERIALIZATION_MODULE
+ .apply(new TestId.Factory()));
+
+ reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of(
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid),
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2)));
}
@Test
@@ -61,5 +93,19 @@ class UserReindexingTaskSerializationTest {
assertThat(taskSerializer.deserialize(serializedUserReindexingTask))
.isEqualToComparingOnlyGivenFields(task, "reIndexerPerformer");
}
+
+
+ @Test
+ void additionalInformationShouldBeSerializable() throws JsonProcessingException {
+ UserReindexingTask.AdditionalInformation details = new UserReindexingTask.AdditionalInformation(user, successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_ADDITIONAL_INFORMATION);
+ }
+
+ @Test
+ void additionalInformationShouldBeDeserializable() throws IOException {
+ UserReindexingTask.AdditionalInformation details = new UserReindexingTask.AdditionalInformation(user, successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThat(jsonAdditionalInformationSerializer.deserialize("userReIndexing", SERIALIZED_ADDITIONAL_INFORMATION))
+ .isEqualToComparingFieldByField(details);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 15/18: 3.4.0 Release: Mail processing howto should
refer James 3.4.0
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 887ca0efcbed63b873de94961c0356790f0d3c77
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Sep 5 15:21:41 2019 +0200
3.4.0 Release: Mail processing howto should refer James 3.4.0
---
src/homepage/howTo/mail-processing.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/homepage/howTo/mail-processing.html b/src/homepage/howTo/mail-processing.html
index 93dd971..ec41f2e 100644
--- a/src/homepage/howTo/mail-processing.html
+++ b/src/homepage/howTo/mail-processing.html
@@ -50,7 +50,7 @@ layout: howTo
Hence, we can arrange James standard components listed <a href="/server/dev-provided-mailets.html">here</a> to achieve basic logic. But what if our goals are more
complex? What if we need our own processing components?</p>
- <p>This page will propose a 'hands on practice' how-to using James 3.3.0. We will implement a custom mailet and a custom matcher,
+ <p>This page will propose a 'hands on practice' how-to using James 3.4.0. We will implement a custom mailet and a custom matcher,
then deploy it in a James server.</p>
<p>We need to choose our use case. We will, when a mail is delayed over one day, write a mail to the original sender
@@ -202,8 +202,8 @@ public void init() throws MessagingException {
<pre><code>docker run -p "25:25" -p "143:143" \
-v "$PWD/src/main/resources/mailetcontainer.xml:/root/conf/mailetcontainer.xml" \
- -v "$PWD/target/custom-mailets-3.3.0-SNAPSHOT.jar:/root/extensions-jars/custom-mailets.jar" \
- linagora/james-jpa-sample:3.3.0</code></pre>
+ -v "$PWD/target/custom-mailets-3.4.0-SNAPSHOT.jar:/root/extensions-jars/custom-mailets.jar" \
+ linagora/james-jpa-sample:3.4.0</code></pre>
</div>
<footer class="major">
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 13/18: 3.4.0 release: Update upgrade instructions
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 b48dccec3fe46c9d116c52bf1366b15856f2e8e9
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Sep 5 15:00:57 2019 +0200
3.4.0 release: Update upgrade instructions
---
upgrade-instructions.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/upgrade-instructions.md b/upgrade-instructions.md
index 426fe4a..c1e38b8 100644
--- a/upgrade-instructions.md
+++ b/upgrade-instructions.md
@@ -12,6 +12,10 @@ software documentation. Do not follow this guide blindly!
Note: this section is in progress. It will be updated during all the development process until the release.
+Changes to apply between 3.4.x and 3.5.x will be reported here.
+
+## 3.4.0 version
+
Changes to apply between 3.3.x and 3.4.x will be reported here.
Change list:
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 06/18: JAMES-2813 add tests to serialize
ErrorRecoveryIndexationTask additionalInformation
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 19204325a8f5d09df00658d2f28d6608c7e39810
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Thu Sep 19 09:37:26 2019 +0200
JAMES-2813 add tests to serialize ErrorRecoveryIndexationTask additionalInformation
---
...rorRecoveryIndexationTaskSerializationTest.java | 34 +++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
index 2103682..e1cca2a 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
@@ -28,6 +28,7 @@ import java.util.List;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
import org.apache.james.server.task.json.JsonTaskSerializer;
import org.apache.james.task.Task;
import org.junit.jupiter.api.BeforeEach;
@@ -38,10 +39,18 @@ import com.google.common.collect.ImmutableList;
class ErrorRecoveryIndexationTaskSerializationTest {
+ private final TestId.Factory mailboxIdFactory = new TestId.Factory();
private ReIndexerPerformer reIndexerPerformer;
private JsonTaskSerializer taskSerializer;
+ private JsonTaskAdditionalInformationsSerializer jsonAdditionalInformationSerializer;
+
+ private final int successfullyReprocessedMailCount = 42;
+ private final int failedReprocessedMailCount = 2;
+ private ReIndexingExecutionFailures reIndexingExecutionFailures;
+
private final String serializedErrorRecoveryReindexingTask = "{\"type\": \"ErrorRecoveryIndexation\"," +
" \"previousFailures\" : [{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}]}";
+ private final String SERIALIZED_ADDITIONAL_INFORMATION = "{\"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}]}";
private final TestId mailboxId = TestId.of(1L);
private final MessageUid messageUid = MessageUid.of(10L);
@@ -57,8 +66,18 @@ class ErrorRecoveryIndexationTaskSerializationTest {
@BeforeEach
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
- ErrorRecoveryIndexationTask.Factory factory = new ErrorRecoveryIndexationTask.Factory(reIndexerPerformer, new TestId.Factory());
+ ErrorRecoveryIndexationTask.Factory factory = new ErrorRecoveryIndexationTask.Factory(reIndexerPerformer, mailboxIdFactory);
taskSerializer = new JsonTaskSerializer(ErrorRecoveryIndexationTaskDTO.MODULE.apply(factory));
+
+ jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationsSerializer(
+ ReprocessingContextInformationDTO
+ .SERIALIZATION_MODULE
+ .apply(ErrorRecoveryIndexationTask.PREVIOUS_FAILURES_INDEXING)
+ .apply(mailboxIdFactory));
+
+ reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of(
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid),
+ new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2)));
}
@Test
@@ -79,5 +98,18 @@ class ErrorRecoveryIndexationTaskSerializationTest {
.isEqualToComparingOnlyGivenFields(task, "reIndexerPerformer", "previousFailures");
}
+ @Test
+ void additionalInformationShouldBeSerializable() throws JsonProcessingException {
+ ReprocessingContextInformation details = new ReprocessingContextInformation(successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_ADDITIONAL_INFORMATION);
+ }
+
+ @Test
+ void additonalInformationShouldBeDeserializable() throws IOException {
+ ReprocessingContextInformation details = new ReprocessingContextInformation(successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures);
+ assertThat(jsonAdditionalInformationSerializer.deserialize("ErrorRecoveryIndexation", SERIALIZED_ADDITIONAL_INFORMATION))
+ .isEqualToComparingFieldByField(details);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 02/18: JAMES-2881 Slightly enhance 'ToHttp' mailets
code quality
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 8c284f7ba3bae5bb38a9596c84827af532d0750c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Sep 24 09:07:25 2019 +0700
JAMES-2881 Slightly enhance 'ToHttp' mailets code quality
---
.../james/transport/mailets/SerialiseToHTTP.java | 4 +-
.../james/transport/mailets/HeadersToHTTPTest.java | 61 ++++++++--------------
2 files changed, 26 insertions(+), 39 deletions(-)
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java
index 88bbca4..ee0be2d 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java
@@ -41,6 +41,8 @@ import org.apache.mailet.base.GenericMailet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Strings;
+
/**
* Serialise the email and pass it to an HTTP call
*
@@ -136,7 +138,7 @@ public class SerialiseToHTTP extends GenericMailet {
String result = httpPost(getNameValuePairs(messageAsString));
if (passThrough) {
- addHeader(mail, (result == null || result.length() == 0), result);
+ addHeader(mail, Strings.isNullOrEmpty(result), result);
} else {
mail.setState(Mail.GHOST);
}
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java
index c6e6f16..9eda16b 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/HeadersToHTTPTest.java
@@ -22,7 +22,6 @@ package org.apache.james.transport.mailets;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -50,7 +49,7 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-public class HeadersToHTTPTest {
+class HeadersToHTTPTest {
private static HttpServer server;
private static UriHttpRequestHandlerMapper mapper;
@@ -59,7 +58,7 @@ public class HeadersToHTTPTest {
private String urlTestPattern;
@BeforeAll
- static void setupServer() throws MessagingException, IOException {
+ static void setupServer() throws Exception {
mapper = new UriHttpRequestHandlerMapper();
SocketConfig socketConfig = SocketConfig.custom().setSoTimeout(50000).build();
@@ -67,7 +66,6 @@ public class HeadersToHTTPTest {
.setExceptionLogger(ExceptionLogger.NO_OP).setHandlerMapper(mapper).create();
server.start();
-
}
@AfterAll
@@ -76,19 +74,18 @@ public class HeadersToHTTPTest {
}
@BeforeEach
- void setup() throws MessagingException, IOException {
+ void setup() throws Exception {
mail = MailUtil.createMockMail2Recipients(MimeMessageUtil.mimeMessageFromStream(
ClassLoader.getSystemResourceAsStream("mime/sendToRemoteHttp.mime")));
}
@AfterEach
- void cleanMapper() throws MessagingException, IOException {
+ void cleanMapper() {
mapper.unregister(urlTestPattern);
}
@Test
void shouldBeFailedWhenServiceNotExists() throws Exception {
-
urlTestPattern = "/path/to/service/failed";
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
@@ -100,16 +97,16 @@ public class HeadersToHTTPTest {
mailet.service(mail);
- assertThat(mail.getMessage().getHeader("X-headerToHTTP")).hasSize(1)
- .allSatisfy((header) -> assertThat(header).isEqualTo("Failed"));
- assertThat(mail.getMessage().getHeader("X-headerToHTTPFailure")).hasSize(1)
- .allSatisfy((header) -> assertThat(header).isNotBlank());
-
+ assertThat(mail.getMessage().getHeader("X-headerToHTTP"))
+ .hasSize(1)
+ .allSatisfy((header) -> assertThat(header).isEqualTo("Failed"));
+ assertThat(mail.getMessage().getHeader("X-headerToHTTPFailure"))
+ .hasSize(1)
+ .allSatisfy((header) -> assertThat(header).isNotBlank());
}
@Test
void shouldBeSucceededWhenServiceResponseIsOk() throws Exception {
-
urlTestPattern = "/path/to/service/succeeded";
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
@@ -118,23 +115,20 @@ public class HeadersToHTTPTest {
+ server.getLocalPort() + urlTestPattern)
.build();
- mapper.register(urlTestPattern, (request, response, context) -> {
- response.setStatusCode(HttpStatus.SC_OK);
- });
+ mapper.register(urlTestPattern, (request, response, context) -> response.setStatusCode(HttpStatus.SC_OK));
Mailet mailet = new HeadersToHTTP();
mailet.init(mailetConfig);
mailet.service(mail);
- assertThat(mail.getMessage().getHeader("X-headerToHTTP")).hasSize(1)
- .allSatisfy((header) -> assertThat(header).isEqualTo("Succeeded"));
-
+ assertThat(mail.getMessage().getHeader("X-headerToHTTP"))
+ .hasSize(1)
+ .allSatisfy((header) -> assertThat(header).isEqualTo("Succeeded"));
}
@Test
void serviceShouldNotModifyHeadersContent() throws Exception {
-
urlTestPattern = "/path/to/service/succeeded";
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
@@ -186,7 +180,6 @@ public class HeadersToHTTPTest {
@Test
void shouldSetTheMailStateWhenPassThroughIsFalse() throws Exception {
-
urlTestPattern = "/path/to/service/PassThroughIsFalse";
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
@@ -196,9 +189,7 @@ public class HeadersToHTTPTest {
+ server.getLocalPort() + urlTestPattern)
.setProperty("passThrough", "false").build();
- mapper.register(urlTestPattern, (request, response, context) -> {
- response.setStatusCode(HttpStatus.SC_OK);
- });
+ mapper.register(urlTestPattern, (request, response, context) -> response.setStatusCode(HttpStatus.SC_OK));
Mailet mailet = new HeadersToHTTP();
mailet.init(mailetConfig);
@@ -211,31 +202,25 @@ public class HeadersToHTTPTest {
}
@Test
- void shouldThrowMessagingExceptionWhenInvalidUrl() throws Exception {
-
+ void shouldThrowMessagingExceptionWhenInvalidUrl() {
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
.setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
.setProperty("url", "qwerty://invalid.url").build();
- assertThatThrownBy(() -> {
- new HeadersToHTTP().init(mailetConfig);
- }).isExactlyInstanceOf(MessagingException.class)
- .hasMessageContaining("Unable to contruct URL object from url");
-
+ assertThatThrownBy(() -> new HeadersToHTTP().init(mailetConfig))
+ .isExactlyInstanceOf(MessagingException.class)
+ .hasMessageContaining("Unable to contruct URL object from url");
}
@Test
- void shouldThrowMessagingExceptionWhenUrlIsNull() throws Exception {
-
+ void shouldThrowMessagingExceptionWhenUrlIsNull() {
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
.setProperty("parameterKey", "pKey").setProperty("parameterValue", "pValue")
.build();
- assertThatThrownBy(() -> {
- new HeadersToHTTP().init(mailetConfig);
- }).isExactlyInstanceOf(MessagingException.class)
- .hasMessageContaining("Please configure a targetUrl (\"url\")");
-
+ assertThatThrownBy(() -> new HeadersToHTTP().init(mailetConfig))
+ .isExactlyInstanceOf(MessagingException.class)
+ .hasMessageContaining("Please configure a targetUrl (\"url\")");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 12/18: 3.4.0 release: Update changelog
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 925b2aef8852aa2c2ffb5797395457669ad8be2c
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Sep 5 14:59:25 2019 +0200
3.4.0 release: Update changelog
---
CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b9000eb..8c951da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
## [Unreleased]
+
+## [3.4.0] - 2019-09-05
### Added
- Add in-memory docker image
- Support of AWS S3 as blobstore
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 18/18: 3.4.0 release: Blog post for 3.4.0 release
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 d3b4084aa7daf7c5de8b83eb8ca1f41664e34055
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Sep 5 15:47:02 2019 +0200
3.4.0 release: Blog post for 3.4.0 release
---
.../_posts/2019-09-05-james-3.4.0.markdown | 35 ++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/src/homepage/_posts/2019-09-05-james-3.4.0.markdown b/src/homepage/_posts/2019-09-05-james-3.4.0.markdown
new file mode 100644
index 0000000..1904db2
--- /dev/null
+++ b/src/homepage/_posts/2019-09-05-james-3.4.0.markdown
@@ -0,0 +1,35 @@
+---
+layout: post
+title: "Apache James Server 3.4.0"
+date: 2019-09-05 15:16:30 +0200
+categories: james update
+---
+
+The Apache James developers are pleased to announce James server 3.4.0 release.
+
+Here are some points we worked on:
+
+### Added
+- Add in-memory docker image
+- Support of AWS S3 as blobstore
+- WebAdmin routes for mapping management (`AddAddressMapping`, `AddRegexMapping`, `ListMappings`), previously only manageable by CLI
+- Metrics for Deleted Message Vault
+- More metrics for BlobStore (new delete & deleteBucket configuration)
+
+### Changed
+- (experimental) New implementation of the deleted message vault on top of an object store, not relying anymore on a
+repository. This avoids exposing messages via webAdmin. Messages previously stored in the vault will be lost.
+- Migration to ElasticSearch 6.3
+- Blob export to LinShare
+- Native DKIM support for outgoing mails. The mailets from james-jdkim have been included in main James project.
+
+### Deprecated
+- Zookeeper component. This will be removed after 3.4 release. If you have development skills, and are willing to maintain this component, please reach us.
+
+### Removed
+- Karaf OSGi implementation. It was not compiled nor tested for a year. We didn't get any feedback about that and we don't have the resources nor the skills to maintain it any more.
+
+Early adopters can [download it][download], any issue can be reported on our issue [tracker][tracker].
+
+[tracker]: https://issues.apache.org/jira/browse/JAMES
+[download]: http://james.apache.org/download.cgi#Apache_James_Server
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 01/18: JAMES-2898 Move
org.apache.james.backend.rabbitmq to org.apache.james.backends.rabbitmq
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 d798b40d2de987aa3aa8f0f88253512f0ff7a55f
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Sep 24 12:01:48 2019 +0200
JAMES-2898 Move org.apache.james.backend.rabbitmq to org.apache.james.backends.rabbitmq
---
.../{backend => backends}/rabbitmq/Constants.java | 2 +-
.../rabbitmq/RabbitMQChannelPool.java | 2 +-
.../rabbitmq/RabbitMQConfiguration.java | 2 +-
.../rabbitmq/RabbitMQConnectionFactory.java | 2 +-
.../rabbitmq/RabbitMQHealthCheck.java | 2 +-
.../rabbitmq/RabbitMQManagementAPI.java | 2 +-
.../rabbitmq/ReactorRabbitMQChannelPool.java | 2 +-
.../rabbitmq/SimpleChannelPool.java | 2 +-
.../rabbitmq/SimpleConnectionPool.java | 2 +-
.../rabbitmq/ChannelPoolContract.java | 2 +-
.../rabbitmq/DockerClusterRabbitMQExtension.java | 2 +-
.../rabbitmq/DockerRabbitMQ.java | 4 +--
.../rabbitmq/DockerRabbitMQSingleton.java | 2 +-
.../rabbitmq/DockerRabbitMQTestRule.java | 4 +--
.../rabbitmq/InMemoryConsumer.java | 2 +-
.../rabbitmq/RabbitMQClusterTest.java | 22 ++++++++--------
.../rabbitmq/RabbitMQConfigurationTest.java | 8 +++---
.../rabbitmq/RabbitMQConnectionFactoryTest.java | 4 +--
.../rabbitmq/RabbitMQExtension.java | 4 +--
.../rabbitmq/RabbitMQFixture.java | 2 +-
.../rabbitmq/RabbitMQHealthCheckTest.java | 2 +-
.../rabbitmq/RabbitMQTest.java | 30 +++++++++++-----------
.../rabbitmq/RabbitMQWaitStrategy.java | 2 +-
.../rabbitmq/ReactorRabbitMQChannelPoolTest.java | 4 +--
.../james/mailbox/events/EventDispatcher.java | 4 +--
.../james/mailbox/events/GroupConsumerRetry.java | 6 ++---
.../james/mailbox/events/GroupRegistration.java | 10 ++++----
.../mailbox/events/KeyRegistrationHandler.java | 8 +++---
.../james/mailbox/events/RabbitMQEventBus.java | 4 +--
.../james/mailbox/events/RoutingKeyConverter.java | 2 +-
.../james/mailbox/events/RabbitMQEventBusTest.java | 22 ++++++++--------
.../rabbitmq/RabbitMQAuthenticatePlainTest.java | 2 +-
.../rabbitmq/RabbitMQAuthenticatedStateTest.java | 2 +-
.../rabbitmq/RabbitMQConcurrentSessionsTest.java | 2 +-
.../rabbitmq/RabbitMQCondstoreTest.java | 2 +-
.../mpt/imapmailbox/rabbitmq/RabbitMQCopyTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQEventsTest.java | 2 +-
.../rabbitmq/RabbitMQFetchBodySectionTest.java | 2 +-
.../rabbitmq/RabbitMQFetchBodyStructureTest.java | 2 +-
.../rabbitmq/RabbitMQFetchHeadersTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQFetchTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQListingTest.java | 2 +-
.../rabbitmq/RabbitMQListingWithSharingTest.java | 2 +-
.../rabbitmq/RabbitMQMailboxAnnotationTest.java | 2 +-
.../RabbitMQMailboxWithLongNameErrorTest.java | 2 +-
.../mpt/imapmailbox/rabbitmq/RabbitMQMoveTest.java | 2 +-
.../RabbitMQNonAuthenticatedStateTest.java | 2 +-
.../rabbitmq/RabbitMQPartialFetchTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQQuotaTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQRenameTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQSearchTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQSecurityTest.java | 2 +-
.../imapmailbox/rabbitmq/RabbitMQSelectTest.java | 2 +-
.../rabbitmq/RabbitMQSelectedInboxTest.java | 2 +-
.../rabbitmq/RabbitMQSelectedStateTest.java | 2 +-
.../rabbitmq/RabbitMQUidSearchTest.java | 2 +-
.../rabbitmq/RabbitMQUserFlagsSupportTest.java | 2 +-
.../rabbitmq/host/RabbitMQEventBusHostSystem.java | 4 +--
.../host/RabbitMQEventBusHostSystemRule.java | 2 +-
.../CassandraRabbitMQAwsS3SmtpTestRuleFactory.java | 2 +-
.../james/CassandraRabbitMQAwsS3JmapTestRule.java | 2 +-
.../james/CassandraRabbitMQSwiftJmapTestRule.java | 2 +-
.../apache/james/modules/DockerRabbitMQRule.java | 8 +++---
.../apache/james/modules/RabbitMQExtension.java | 2 +-
.../apache/james/modules/TestRabbitMQModule.java | 6 ++---
.../james/modules/rabbitmq/RabbitMQModule.java | 8 +++---
.../apache/james/queue/rabbitmq/RabbitClient.java | 12 ++++-----
.../rabbitmq/RabbitMQMailQueueManagement.java | 4 +--
.../RabbitMQMailQueueConfigurationChangeTest.java | 2 +-
.../queue/rabbitmq/RabbitMQMailQueueTest.java | 4 +--
.../rabbitmq/RabbitMqMailQueueFactoryTest.java | 2 +-
.../distributed/RabbitMQTerminationSubscriber.java | 4 +--
.../distributed/RabbitMQWorkQueue.java | 4 +--
.../distributed/RabbitMQWorkQueueSupplier.scala | 3 ++-
.../distributed/DistributedTaskManagerTest.java | 2 +-
.../RabbitMQTerminationSubscriberTest.java | 2 +-
.../distributed/RabbitMQWorkQueueTest.java | 2 +-
77 files changed, 148 insertions(+), 149 deletions(-)
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/Constants.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/Constants.java
similarity index 97%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/Constants.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/Constants.java
index e6cea0f..89455c0 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/Constants.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/Constants.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import com.google.common.collect.ImmutableMap;
import com.rabbitmq.client.AMQP;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQChannelPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQChannelPool.java
similarity index 97%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQChannelPool.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQChannelPool.java
index e8fef49..a544efb 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQChannelPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQChannelPool.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import com.rabbitmq.client.Channel;
import reactor.core.publisher.Flux;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
similarity index 99%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
index 70e3428..8b12e2a 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConfiguration.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConfiguration.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.net.URI;
import java.util.Arrays;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConnectionFactory.java
similarity index 98%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConnectionFactory.java
index d733914..1f4d0fd 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactory.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQConnectionFactory.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.time.Duration;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java
similarity index 98%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java
index a3b02a4..d766a5f 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheck.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import javax.inject.Inject;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQManagementAPI.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQManagementAPI.java
similarity index 99%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQManagementAPI.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQManagementAPI.java
index 15be247..9f688e8 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/RabbitMQManagementAPI.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQManagementAPI.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.util.Date;
import java.util.List;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/ReactorRabbitMQChannelPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/ReactorRabbitMQChannelPool.java
similarity index 99%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/ReactorRabbitMQChannelPool.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/ReactorRabbitMQChannelPool.java
index 814e70a..dfba0ba 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/ReactorRabbitMQChannelPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/ReactorRabbitMQChannelPool.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.time.Duration;
import java.util.Comparator;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleChannelPool.java
similarity index 99%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleChannelPool.java
index 16a8a7f..f99ab43 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleChannelPool.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.io.IOException;
import java.time.Duration;
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleConnectionPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleConnectionPool.java
similarity index 98%
rename from backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleConnectionPool.java
rename to backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleConnectionPool.java
index 5f07719..4ffebfd 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleConnectionPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleConnectionPool.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.io.IOException;
import java.time.Duration;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/ChannelPoolContract.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/ChannelPoolContract.java
similarity index 98%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/ChannelPoolContract.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/ChannelPoolContract.java
index 7543883..1bccee7 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/ChannelPoolContract.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/ChannelPoolContract.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerClusterRabbitMQExtension.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerClusterRabbitMQExtension.java
similarity index 99%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerClusterRabbitMQExtension.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerClusterRabbitMQExtension.java
index 05278ca..a9a172c 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerClusterRabbitMQExtension.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerClusterRabbitMQExtension.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQ.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQ.java
similarity index 98%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQ.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQ.java
index e786d6c..69db7ba 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQ.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQ.java
@@ -16,9 +16,9 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
import java.net.URI;
import java.net.URISyntaxException;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQSingleton.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQSingleton.java
similarity index 97%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQSingleton.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQSingleton.java
index 591b979..022ac52 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQSingleton.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQSingleton.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
public class DockerRabbitMQSingleton {
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/backends/rabbitmq/DockerRabbitMQTestRule.java
similarity index 94%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQTestRule.java
index 1e8a2a5..7b921a7 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/backends/rabbitmq/DockerRabbitMQTestRule.java
@@ -16,9 +16,9 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
import org.junit.rules.ExternalResource;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/InMemoryConsumer.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/InMemoryConsumer.java
similarity index 98%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/InMemoryConsumer.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/InMemoryConsumer.java
index 3cc93ae..8fc8611 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/InMemoryConsumer.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/InMemoryConsumer.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQClusterTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQClusterTest.java
similarity index 94%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQClusterTest.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQClusterTest.java
index b4066a1..1541f52 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQClusterTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQClusterTest.java
@@ -16,16 +16,16 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
-
-import static org.apache.james.backend.rabbitmq.Constants.AUTO_DELETE;
-import static org.apache.james.backend.rabbitmq.Constants.DIRECT_EXCHANGE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
-import static org.apache.james.backend.rabbitmq.Constants.EXCLUSIVE;
-import static org.apache.james.backend.rabbitmq.Constants.NO_PROPERTIES;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.EXCHANGE_NAME;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.ROUTING_KEY;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.awaitAtMostOneMinute;
+package org.apache.james.backends.rabbitmq;
+
+import static org.apache.james.backends.rabbitmq.Constants.AUTO_DELETE;
+import static org.apache.james.backends.rabbitmq.Constants.DIRECT_EXCHANGE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.EXCLUSIVE;
+import static org.apache.james.backends.rabbitmq.Constants.NO_PROPERTIES;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.EXCHANGE_NAME;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.ROUTING_KEY;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.awaitAtMostOneMinute;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
@@ -36,7 +36,7 @@ import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.IntStream;
-import org.apache.james.backend.rabbitmq.DockerClusterRabbitMQExtension.DockerRabbitMQCluster;
+import org.apache.james.backends.rabbitmq.DockerClusterRabbitMQExtension.DockerRabbitMQCluster;
import org.awaitility.Awaitility;
import org.awaitility.Duration;
import org.junit.jupiter.api.AfterAll;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConfigurationTest.java
similarity index 98%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConfigurationTest.java
index 7dfe03e..84bb762 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConfigurationTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConfigurationTest.java
@@ -16,11 +16,11 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_PASSWORD_STRING;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_USER;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_PASSWORD_STRING;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_USER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConnectionFactoryTest.java
similarity index 95%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConnectionFactoryTest.java
index 3dce665..052aa90 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQConnectionFactoryTest.java
@@ -16,9 +16,9 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.net.URI;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQExtension.java
similarity index 97%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQExtension.java
index 1c9f46d..577be12 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQExtension.java
@@ -16,9 +16,9 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
import java.net.URISyntaxException;
import java.util.function.Consumer;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQFixture.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQFixture.java
similarity index 98%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQFixture.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQFixture.java
index e8e63fc..c1d73f5 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQFixture.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQFixture.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
import static org.awaitility.Duration.ONE_MINUTE;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheckTest.java
similarity index 98%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheckTest.java
index 6b811a0..15c22c3 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQHealthCheckTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheckTest.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQTest.java
similarity index 94%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQTest.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQTest.java
index d858258..b673a10 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQTest.java
@@ -16,21 +16,21 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
-
-import static org.apache.james.backend.rabbitmq.Constants.AUTO_ACK;
-import static org.apache.james.backend.rabbitmq.Constants.AUTO_DELETE;
-import static org.apache.james.backend.rabbitmq.Constants.DIRECT_EXCHANGE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
-import static org.apache.james.backend.rabbitmq.Constants.EXCLUSIVE;
-import static org.apache.james.backend.rabbitmq.Constants.MULTIPLE;
-import static org.apache.james.backend.rabbitmq.Constants.NO_LOCAL;
-import static org.apache.james.backend.rabbitmq.Constants.NO_PROPERTIES;
-import static org.apache.james.backend.rabbitmq.Constants.REQUEUE;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.EXCHANGE_NAME;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.ROUTING_KEY;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.WORK_QUEUE;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.awaitAtMostOneMinute;
+package org.apache.james.backends.rabbitmq;
+
+import static org.apache.james.backends.rabbitmq.Constants.AUTO_ACK;
+import static org.apache.james.backends.rabbitmq.Constants.AUTO_DELETE;
+import static org.apache.james.backends.rabbitmq.Constants.DIRECT_EXCHANGE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.EXCLUSIVE;
+import static org.apache.james.backends.rabbitmq.Constants.MULTIPLE;
+import static org.apache.james.backends.rabbitmq.Constants.NO_LOCAL;
+import static org.apache.james.backends.rabbitmq.Constants.NO_PROPERTIES;
+import static org.apache.james.backends.rabbitmq.Constants.REQUEUE;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.EXCHANGE_NAME;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.ROUTING_KEY;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.WORK_QUEUE;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.awaitAtMostOneMinute;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQWaitStrategy.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQWaitStrategy.java
similarity index 98%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQWaitStrategy.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQWaitStrategy.java
index 29b5193..99136f7 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQWaitStrategy.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQWaitStrategy.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import java.io.IOException;
import java.time.Duration;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/ReactorRabbitMQChannelPoolTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/ReactorRabbitMQChannelPoolTest.java
similarity index 96%
rename from backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/ReactorRabbitMQChannelPoolTest.java
rename to backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/ReactorRabbitMQChannelPoolTest.java
index 24146dc..81994c8 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/ReactorRabbitMQChannelPoolTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/ReactorRabbitMQChannelPoolTest.java
@@ -17,7 +17,7 @@
* under the License. *
****************************************************************/
-package org.apache.james.backend.rabbitmq;
+package org.apache.james.backends.rabbitmq;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -28,8 +28,6 @@ import java.util.List;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutionException;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
-import org.apache.james.backend.rabbitmq.ReactorRabbitMQChannelPool;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java
index b9d7884..ebfa205 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java
@@ -19,8 +19,8 @@
package org.apache.james.mailbox.events;
-import static org.apache.james.backend.rabbitmq.Constants.DIRECT_EXCHANGE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.DIRECT_EXCHANGE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
import static org.apache.james.mailbox.events.RabbitMQEventBus.EVENT_BUS_ID;
import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT_EXCHANGE_NAME;
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java
index 54a78ca..991be75 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java
@@ -19,9 +19,9 @@
package org.apache.james.mailbox.events;
-import static org.apache.james.backend.rabbitmq.Constants.DIRECT_EXCHANGE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
-import static org.apache.james.backend.rabbitmq.Constants.EMPTY_ROUTING_KEY;
+import static org.apache.james.backends.rabbitmq.Constants.DIRECT_EXCHANGE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.EMPTY_ROUTING_KEY;
import static org.apache.james.mailbox.events.GroupRegistration.RETRY_COUNT;
import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT;
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
index 8d477e7..79aa6a8 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
@@ -19,11 +19,11 @@
package org.apache.james.mailbox.events;
-import static org.apache.james.backend.rabbitmq.Constants.AUTO_DELETE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
-import static org.apache.james.backend.rabbitmq.Constants.EMPTY_ROUTING_KEY;
-import static org.apache.james.backend.rabbitmq.Constants.EXCLUSIVE;
-import static org.apache.james.backend.rabbitmq.Constants.NO_ARGUMENTS;
+import static org.apache.james.backends.rabbitmq.Constants.AUTO_DELETE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.EMPTY_ROUTING_KEY;
+import static org.apache.james.backends.rabbitmq.Constants.EXCLUSIVE;
+import static org.apache.james.backends.rabbitmq.Constants.NO_ARGUMENTS;
import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT;
import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT_EXCHANGE_NAME;
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
index 5f5d2b3..7910152 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
@@ -19,10 +19,10 @@
package org.apache.james.mailbox.events;
-import static org.apache.james.backend.rabbitmq.Constants.AUTO_DELETE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
-import static org.apache.james.backend.rabbitmq.Constants.EXCLUSIVE;
-import static org.apache.james.backend.rabbitmq.Constants.NO_ARGUMENTS;
+import static org.apache.james.backends.rabbitmq.Constants.AUTO_DELETE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.EXCLUSIVE;
+import static org.apache.james.backends.rabbitmq.Constants.NO_ARGUMENTS;
import static org.apache.james.mailbox.events.RabbitMQEventBus.EVENT_BUS_ID;
import java.nio.charset.StandardCharsets;
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java
index 36795c6..a659062 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RabbitMQEventBus.java
@@ -24,8 +24,8 @@ import java.util.Set;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
-import org.apache.james.backend.rabbitmq.ReactorRabbitMQChannelPool;
-import org.apache.james.backend.rabbitmq.SimpleConnectionPool;
+import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool;
+import org.apache.james.backends.rabbitmq.SimpleConnectionPool;
import org.apache.james.event.json.EventSerializer;
import org.apache.james.lifecycle.api.Startable;
import org.apache.james.metrics.api.MetricFactory;
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RoutingKeyConverter.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RoutingKeyConverter.java
index 7e0edb8..bf84ec1 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RoutingKeyConverter.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/RoutingKeyConverter.java
@@ -19,7 +19,7 @@
package org.apache.james.mailbox.events;
-import static org.apache.james.backend.rabbitmq.Constants.EMPTY_ROUTING_KEY;
+import static org.apache.james.backends.rabbitmq.Constants.EMPTY_ROUTING_KEY;
import java.util.List;
import java.util.Optional;
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 bbb169c..ab6d885 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
@@ -19,12 +19,12 @@
package org.apache.james.mailbox.events;
-import static org.apache.james.backend.rabbitmq.Constants.AUTO_DELETE;
-import static org.apache.james.backend.rabbitmq.Constants.DIRECT_EXCHANGE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
-import static org.apache.james.backend.rabbitmq.Constants.EMPTY_ROUTING_KEY;
-import static org.apache.james.backend.rabbitmq.Constants.EXCLUSIVE;
-import static org.apache.james.backend.rabbitmq.Constants.NO_ARGUMENTS;
+import static org.apache.james.backends.rabbitmq.Constants.AUTO_DELETE;
+import static org.apache.james.backends.rabbitmq.Constants.DIRECT_EXCHANGE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.EMPTY_ROUTING_KEY;
+import static org.apache.james.backends.rabbitmq.Constants.EXCLUSIVE;
+import static org.apache.james.backends.rabbitmq.Constants.NO_ARGUMENTS;
import static org.apache.james.mailbox.events.EventBusConcurrentTestContract.newCountingListener;
import static org.apache.james.mailbox.events.EventBusTestFixture.ALL_GROUPS;
import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT;
@@ -52,11 +52,11 @@ import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension.DockerRestartPolicy;
-import org.apache.james.backend.rabbitmq.RabbitMQFixture;
-import org.apache.james.backend.rabbitmq.RabbitMQManagementAPI;
-import org.apache.james.backend.rabbitmq.SimpleConnectionPool;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension.DockerRestartPolicy;
+import org.apache.james.backends.rabbitmq.RabbitMQFixture;
+import org.apache.james.backends.rabbitmq.RabbitMQManagementAPI;
+import org.apache.james.backends.rabbitmq.SimpleConnectionPool;
import org.apache.james.event.json.EventSerializer;
import org.apache.james.mailbox.events.EventBusTestFixture.GroupA;
import org.apache.james.mailbox.events.EventBusTestFixture.MailboxListenerCountingSuccessfulExecution;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatePlainTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatePlainTest.java
index 71417b6..7884439 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatePlainTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatePlainTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.AuthenticatePlain;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatedStateTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatedStateTest.java
index 0e830e2..12c5feb 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatedStateTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQAuthenticatedStateTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.AuthenticatedState;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQConcurrentSessionsTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQConcurrentSessionsTest.java
index d3a259f..f2fa662 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQConcurrentSessionsTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQConcurrentSessionsTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.ConcurrentSessions;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCondstoreTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCondstoreTest.java
index af8e899..2232338 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCondstoreTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCondstoreTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.host.JamesImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Condstore;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCopyTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCopyTest.java
index dd041b0..bcf7cde 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCopyTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQCopyTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Copy;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQEventsTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQEventsTest.java
index 463789c..9dbd98c 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQEventsTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQEventsTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Events;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodySectionTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodySectionTest.java
index 3e24b2b..f6b8fc1 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodySectionTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodySectionTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.FetchBodySection;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodyStructureTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodyStructureTest.java
index ad54345..c035570 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodyStructureTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchBodyStructureTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.FetchBodyStructure;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchHeadersTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchHeadersTest.java
index 72d7c9e..a021a8d 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchHeadersTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchHeadersTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.FetchHeaders;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchTest.java
index 62a32cb..25749d0 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQFetchTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Fetch;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingTest.java
index 035b7ec..f714173 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Listing;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingWithSharingTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingWithSharingTest.java
index 80f4f99..86288e2 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingWithSharingTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQListingWithSharingTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.ListingWithSharingTest;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxAnnotationTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxAnnotationTest.java
index a5bb24b..d093a37 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxAnnotationTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxAnnotationTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.MailboxAnnotation;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxWithLongNameErrorTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxWithLongNameErrorTest.java
index f7cbb42..15e2936 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxWithLongNameErrorTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMailboxWithLongNameErrorTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.MailboxWithLongNameError;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMoveTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMoveTest.java
index 428f024..5358cf7 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMoveTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQMoveTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Move;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQNonAuthenticatedStateTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQNonAuthenticatedStateTest.java
index 8657056..ba1bbf4 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQNonAuthenticatedStateTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQNonAuthenticatedStateTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.NonAuthenticatedState;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQPartialFetchTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQPartialFetchTest.java
index 75f4ba6..6773d25 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQPartialFetchTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQPartialFetchTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.PartialFetch;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQQuotaTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQQuotaTest.java
index 9d94fd7..dd9b39f 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQQuotaTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQQuotaTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQRenameTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQRenameTest.java
index ea705a8..aa643ef 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQRenameTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQRenameTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Rename;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSearchTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSearchTest.java
index 65132bd..9d0f260 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSearchTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSearchTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Search;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSecurityTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSecurityTest.java
index 519b3b4..db61a4a 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSecurityTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSecurityTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Security;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectTest.java
index 2c68d5c..750b2e1 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.Select;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedInboxTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedInboxTest.java
index cd169a6..67502e1 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedInboxTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedInboxTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.SelectedInbox;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedStateTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedStateTest.java
index 409c2b5..35387aa 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedStateTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQSelectedStateTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.SelectedState;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUidSearchTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUidSearchTest.java
index a263a5f..6c27aa1 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUidSearchTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUidSearchTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.UidSearch;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUserFlagsSupportTest.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUserFlagsSupportTest.java
index e737707..92dfe8f 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUserFlagsSupportTest.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/RabbitMQUserFlagsSupportTest.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.apache.james.mpt.api.ImapHostSystem;
import org.apache.james.mpt.imapmailbox.rabbitmq.host.RabbitMQEventBusHostSystemRule;
import org.apache.james.mpt.imapmailbox.suite.UserFlagsSupport;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
index c21b185..e93ac4f 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
@@ -23,8 +23,8 @@ package org.apache.james.mpt.imapmailbox.rabbitmq.host;
import java.net.URISyntaxException;
import java.util.concurrent.TimeUnit;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
-import org.apache.james.backend.rabbitmq.SimpleConnectionPool;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backends.rabbitmq.SimpleConnectionPool;
import org.apache.james.core.quota.QuotaCount;
import org.apache.james.core.quota.QuotaSize;
import org.apache.james.event.json.EventSerializer;
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystemRule.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystemRule.java
index d449eb0..8fb818b 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystemRule.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystemRule.java
@@ -19,7 +19,7 @@
package org.apache.james.mpt.imapmailbox.rabbitmq.host;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQTestRule;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQTestRule;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
diff --git a/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/java/org/apache/james/mpt/smtp/CassandraRabbitMQAwsS3SmtpTestRuleFactory.java b/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/java/org/apache/james/mpt/smtp/CassandraRabbitMQAwsS3SmtpTestRuleFactory.java
index ed8fd35..5229411 100644
--- a/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/java/org/apache/james/mpt/smtp/CassandraRabbitMQAwsS3SmtpTestRuleFactory.java
+++ b/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/java/org/apache/james/mpt/smtp/CassandraRabbitMQAwsS3SmtpTestRuleFactory.java
@@ -22,7 +22,7 @@ import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
import org.apache.james.CassandraJamesServerMain;
import org.apache.james.CleanupTasksPerformer;
import org.apache.james.GuiceJamesServer;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQSingleton;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQSingleton;
import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
import org.apache.james.dnsservice.api.DNSService;
import org.apache.james.modules.TestAwsS3BlobStoreModule;
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java
index e6c295b..e7fcab7 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java
@@ -21,7 +21,7 @@ package org.apache.james;
import java.io.IOException;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQSingleton;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQSingleton;
import org.apache.james.mailbox.extractor.TextExtractor;
import org.apache.james.mailbox.store.search.PDFTextExtractor;
import org.apache.james.modules.TestDockerESMetricReporterModule;
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQSwiftJmapTestRule.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQSwiftJmapTestRule.java
index f9e7918..e9a78ed 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQSwiftJmapTestRule.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQSwiftJmapTestRule.java
@@ -21,7 +21,7 @@ package org.apache.james;
import java.io.IOException;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQSingleton;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQSingleton;
import org.apache.james.mailbox.extractor.TextExtractor;
import org.apache.james.mailbox.store.search.PDFTextExtractor;
import org.apache.james.modules.TestDockerESMetricReporterModule;
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
index 3e701a6..b107e2c 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
@@ -19,15 +19,15 @@
package org.apache.james.modules;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
import java.net.URISyntaxException;
import org.apache.james.CleanupTasksPerformer;
import org.apache.james.GuiceModuleTestRule;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQSingleton;
-import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQSingleton;
+import org.apache.james.backends.rabbitmq.RabbitMQConfiguration;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java
index 6651549..2677b5a 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java
@@ -20,7 +20,7 @@
package org.apache.james.modules;
import org.apache.james.GuiceModuleTestExtension;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQ;
import org.junit.jupiter.api.extension.ExtensionContext;
import com.google.inject.Module;
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java
index 2118830..e17539b 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java
@@ -19,7 +19,7 @@
package org.apache.james.modules;
-import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+import static org.apache.james.backends.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
import java.net.URISyntaxException;
import java.time.Duration;
@@ -28,8 +28,8 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.james.CleanupTasksPerformer;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
-import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backends.rabbitmq.RabbitMQConfiguration;
import org.apache.james.queue.rabbitmq.RabbitMQMailQueueManagement;
import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfiguration;
diff --git a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
index b01a7bb..09a7bfe 100644
--- a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
+++ b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
@@ -25,11 +25,11 @@ import javax.inject.Singleton;
import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.ex.ConfigurationException;
-import org.apache.james.backend.rabbitmq.RabbitMQChannelPool;
-import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
-import org.apache.james.backend.rabbitmq.RabbitMQHealthCheck;
-import org.apache.james.backend.rabbitmq.SimpleChannelPool;
import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.backends.rabbitmq.RabbitMQChannelPool;
+import org.apache.james.backends.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backends.rabbitmq.RabbitMQHealthCheck;
+import org.apache.james.backends.rabbitmq.SimpleChannelPool;
import org.apache.james.core.healthcheck.HealthCheck;
import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
import org.apache.james.queue.api.MailQueueFactory;
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
index 4a19a8d..779e71e 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
@@ -19,17 +19,17 @@
package org.apache.james.queue.rabbitmq;
-import static org.apache.james.backend.rabbitmq.Constants.AUTO_DELETE;
-import static org.apache.james.backend.rabbitmq.Constants.DURABLE;
-import static org.apache.james.backend.rabbitmq.Constants.EMPTY_ROUTING_KEY;
-import static org.apache.james.backend.rabbitmq.Constants.EXCLUSIVE;
-import static org.apache.james.backend.rabbitmq.Constants.NO_ARGUMENTS;
+import static org.apache.james.backends.rabbitmq.Constants.AUTO_DELETE;
+import static org.apache.james.backends.rabbitmq.Constants.DURABLE;
+import static org.apache.james.backends.rabbitmq.Constants.EMPTY_ROUTING_KEY;
+import static org.apache.james.backends.rabbitmq.Constants.EXCLUSIVE;
+import static org.apache.james.backends.rabbitmq.Constants.NO_ARGUMENTS;
import java.io.IOException;
import javax.inject.Inject;
-import org.apache.james.backend.rabbitmq.RabbitMQChannelPool;
+import org.apache.james.backends.rabbitmq.RabbitMQChannelPool;
import org.apache.james.queue.api.MailQueue;
import com.rabbitmq.client.AMQP;
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueManagement.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueManagement.java
index 4d0c261..c2a634c 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueManagement.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueManagement.java
@@ -23,8 +23,8 @@ import java.util.stream.Stream;
import javax.inject.Inject;
-import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
-import org.apache.james.backend.rabbitmq.RabbitMQManagementAPI;
+import org.apache.james.backends.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backends.rabbitmq.RabbitMQManagementAPI;
import org.apache.james.util.OptionalUtils;
import com.google.common.annotations.VisibleForTesting;
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
index 2e95d87..b17e938 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
@@ -31,7 +31,7 @@ import java.util.function.Function;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index 6e9abdf..703b233 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -30,8 +30,8 @@ import java.util.function.Function;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
index a432c4f..6280d41 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
@@ -29,7 +29,7 @@ import java.time.Duration;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.metrics.api.NoopGaugeRegistry;
diff --git a/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriber.java b/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriber.java
index 89d6e96..fd8317a 100644
--- a/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriber.java
+++ b/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriber.java
@@ -28,8 +28,8 @@ import java.util.UUID;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
-import org.apache.james.backend.rabbitmq.ReactorRabbitMQChannelPool;
-import org.apache.james.backend.rabbitmq.SimpleConnectionPool;
+import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool;
+import org.apache.james.backends.rabbitmq.SimpleConnectionPool;
import org.apache.james.eventsourcing.Event;
import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
import org.apache.james.lifecycle.api.Startable;
diff --git a/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueue.java b/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueue.java
index 7b80e6d..34b3f5b 100644
--- a/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueue.java
+++ b/server/task-distributed/src/main/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueue.java
@@ -26,8 +26,8 @@ import java.util.UUID;
import javax.annotation.PreDestroy;
-import org.apache.james.backend.rabbitmq.ReactorRabbitMQChannelPool;
-import org.apache.james.backend.rabbitmq.SimpleConnectionPool;
+import org.apache.james.backends.rabbitmq.ReactorRabbitMQChannelPool;
+import org.apache.james.backends.rabbitmq.SimpleConnectionPool;
import org.apache.james.lifecycle.api.Startable;
import org.apache.james.server.task.json.JsonTaskSerializer;
import org.apache.james.task.Task;
diff --git a/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala b/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala
index fc5d7e2..5e26147 100644
--- a/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala
+++ b/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueSupplier.scala
@@ -19,7 +19,8 @@
package org.apache.james.task.eventsourcing.distributed
import javax.inject.Inject
-import org.apache.james.backend.rabbitmq.SimpleConnectionPool
+
+import org.apache.james.backends.rabbitmq.SimpleConnectionPool
import org.apache.james.eventsourcing.EventSourcingSystem
import org.apache.james.server.task.json.JsonTaskSerializer
import org.apache.james.task.eventsourcing.{WorkQueueSupplier, WorkerStatusListener}
diff --git a/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java b/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java
index a8e43c5..767d0ff 100644
--- a/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java
+++ b/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java
@@ -27,7 +27,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.tuple.Pair;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
diff --git a/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java b/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java
index ec48a42..9da45e8 100644
--- a/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java
+++ b/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java
@@ -25,7 +25,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import java.util.Set;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension;
import org.apache.james.eventsourcing.Event;
import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
diff --git a/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java b/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java
index 2383695..1615ecc 100644
--- a/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java
+++ b/server/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java
@@ -30,7 +30,7 @@ import static org.mockito.Mockito.when;
import java.util.stream.IntStream;
-import org.apache.james.backend.rabbitmq.RabbitMQExtension;
+import org.apache.james.backends.rabbitmq.RabbitMQExtension;
import org.apache.james.server.task.json.JsonTaskSerializer;
import org.apache.james.server.task.json.TestTask;
import org.apache.james.server.task.json.dto.TestTaskDTOModules;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org