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 rc...@apache.org on 2020/06/30 10:52:53 UTC

[james-project] branch master updated (63287bf -> a7fdccb)

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from 63287bf  JAMES-3277 Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
     new d69c7e2  JAMES-3271 Fixing various checkstyle errors in test classes
     new 5c87926  JAMES-3277 Rewrite AbstractMessageIdManagerStorageTest::setInMailboxesShouldIgnoreMessagesBelongingToOtherUsers
     new 36c7e23  JAMES-3277 Add a test about limiting mailboxes reads for StoreMessageIdManager::setInMailboxes
     new 901517e  JAMES-3277 QuotaRootResolver should resolve quotaRoot for a mailbox
     new 08ffc8e  JAMES-3277 Move StoreRightManager::myRights for Mailbox to the API
     new 0f5e381  JAMES-3277 Rework MessageIdMapper APIs
     new a7fdccb  JAMES-3277 Rework StoreMessageIdManager::setInMailboxes to limit mailbox reads

The 7 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:
 .../cassandra/DockerCassandraSingleton.java        |   2 +-
 .../apache/james/backends/cassandra/Scenario.java  |   3 +-
 .../backends/cassandra/utils/PaggingTest.java      |   1 +
 .../james/backends/es/DockerElasticSearch.java     |   2 +
 .../backends/es/ElasticSearchClusterExtension.java |   9 +-
 .../backends/es/ElasticSearchHealthCheckTest.java  |   3 +-
 .../backends/rabbitmq/DockerRabbitMQTestRule.java  |   2 +-
 .../james/backends/rabbitmq/RabbitMQExtension.java |   2 +-
 .../rabbitmq/RabbitMQServerVersionTest.java        |   1 +
 .../org/apache/james/core/MailAddressTest.java     |   2 +-
 .../org/apache/james/dto/FirstDomainObject.java    |   8 +-
 .../java/org/apache/james/dto/FirstNestedType.java |  10 +-
 .../org/apache/james/dto/SecondDomainObject.java   |   8 +-
 .../org/apache/james/dto/SecondNestedType.java     |   8 +-
 .../org/apache/james/mailbox/RightManager.java     |  14 ++
 .../james/mailbox/quota/QuotaRootResolver.java     |   2 +
 .../james/mailbox/fixture/MailboxFixture.java      |   1 +
 .../apache/james/mailbox/model/MailboxACLTest.java |   1 +
 .../mailbox/backup/ZipArchivesLoaderTest.java      |   7 +-
 .../apache/james/mailbox/backup/ZipAssertTest.java |   5 +-
 .../james/mailbox/backup/ZipEntryTypeContract.java |   2 +-
 .../cassandra/mail/CassandraMessageIdMapper.java   |  17 +-
 .../cassandra/CassandraMailboxManagerTest.java     |   2 +-
 .../CassandraMessageIdManagerSideEffectTest.java   |  27 +++
 .../mail/CassandraApplicableFlagDAOTest.java       |   1 +
 .../cassandra/mail/CassandraMessageDAOTest.java    |   2 -
 .../cassandra/mail/CassandraMessageIdDAOTest.java  |   1 +
 .../cassandra/mail/CassandraMessageMapperTest.java |   2 +-
 .../SolveMessageInconsistenciesServiceTest.java    |   1 -
 ...asticSearchListeningMessageSearchIndexTest.java |   2 +-
 .../mailbox/elasticsearch/json/MimePartTest.java   |   3 +-
 .../query/DateResolutionFormatterTest.java         |   2 -
 .../events/delivery/InVmEventDeliveryTest.java     |   1 -
 .../mailbox/events/LocalListenerRegistryTest.java  |  12 +-
 .../james/mailbox/events/RabbitMQEventBusTest.java |   1 +
 .../org/apache/james/event/json/dtos/UserTest.java |   1 -
 .../inmemory/mail/InMemoryMessageIdMapper.java     |   4 +-
 .../InMemoryCombinationManagerTestSystem.java      |   1 -
 .../inmemory/InMemoryMessageManagerTestSystem.java |   1 -
 .../james/vault/metadata/UserPerBucketDAOTest.java |   1 -
 .../james/vault/DeletedMessageZipperTest.java      |   2 +-
 .../blob/BlobStoreDeletedMessageVaultTest.java     |   2 +-
 .../dto/query/QueryElementSerializerTest.java      |   1 +
 .../james/vault/dto/query/QueryTranslatorTest.java |  13 +-
 .../mailbox/quota/model/QuotaThresholdsTest.java   |   1 +
 .../elasticsearch/UserRoutingKeyFactoryTest.java   |   1 -
 .../mailbox/store/MessageMovesWithMailbox.java     | 152 +++++++++++++++++
 .../james/mailbox/store/StoreMailboxManager.java   |   5 +
 .../james/mailbox/store/StoreMessageIdManager.java | 186 +++++++++++++--------
 .../james/mailbox/store/StoreRightManager.java     |   1 +
 .../james/mailbox/store/mail/MessageIdMapper.java  |   8 +-
 .../store/quota/DefaultUserQuotaRootResolver.java  |   5 +
 .../AbstractMessageIdManagerSideEffectTest.java    |  20 +--
 .../store/AbstractMessageIdManagerStorageTest.java |  61 ++++---
 .../mailbox/store/MessageManagerTestSystem.java    |   1 -
 .../store/mail/model/MessageIdMapperTest.java      |  26 +--
 .../ListeningMessageSearchIndexContract.java       |   2 +
 .../tools/indexer/CassandraReIndexerImplTest.java  |   2 +-
 .../RecomputeCurrentQuotasServiceContract.java     |   5 +
 .../transport/mailets/ICALToJsonAttributeTest.java |   3 +-
 .../james/transport/matchers/HasExceptionTest.java |   1 -
 .../transport/matchers/RecipientIsLocalTest.java   |   5 +-
 .../decode/parser/SelectCommandParserTest.java     |   1 -
 .../AbstractMailboxSelectionRequestTest.java       |   2 +-
 .../UnpooledStatusResponseFactoryTest.java         |   1 -
 .../processor/base/SelectedMailboxImplTest.java    |   2 +-
 .../imap/processor/base/UidMsnConverterTest.java   |   3 +-
 .../blob/api/BucketDumbBlobStoreContract.java      |   1 -
 .../blob/api/MetricableBlobStoreContract.java      |   1 -
 .../blob/api/ReadSaveDumbBlobStoreContract.java    |   2 +-
 .../blob/cassandra/CassandraBlobStoreTest.java     |   1 +
 .../blob/cassandra/cache/CachedBlobStoreTest.java  |   2 +-
 .../cache/CassandraBlobStoreCacheTest.java         |   6 +-
 .../cache/CassandraCacheConfigurationTest.java     |  20 +--
 .../blob/cassandra/utils/DataChunkerTest.java      |   4 +-
 .../james/blob/memory/MemoryBlobStoreTest.java     |   1 -
 .../org/apache/james/CassandraNodeConfTest.java    |   1 +
 .../org/apache/james/AggregateJunitExtension.java  |   1 +
 .../org/apache/james/GuiceModuleTestExtension.java |   4 +-
 .../apache/james/MailsShouldBeWellReceived.java    |   2 +-
 .../mailbox/PreDeletionHookLoaderImplTest.java     |   2 -
 .../dlp/api/DLPConfigurationStoreContract.java     |   1 +
 .../apache/james/rrt/lib/CanSendFromContract.java  |   2 +-
 .../apache/james/rrt/lib/DomainRewriterTest.java   |   1 -
 .../apache/james/rrt/lib/MappingSourceTest.java    |   1 -
 .../apache/james/rrt/lib/ReplaceRewriterTest.java  |   1 -
 .../cassandra/CassandraUsersRepositoryTest.java    |   2 +-
 .../api/filtering/FilteringAggregateIdTest.java    |   1 -
 .../rrt/jpa/JPARecipientRewriteTableTest.java      | 101 ++++++-----
 .../java/org/apache/james/rrt/jpa/JPAStepdefs.java |   1 +
 .../james/sieve/jpa/JpaSieveRepositoryTest.java    |   1 -
 .../james/user/jpa/JpaUsersRepositoryTest.java     |   2 +-
 .../user/ldap/ReadOnlyUsersLDAPRepositoryTest.java |   2 +-
 .../apache/james/rrt/memory/InMemoryStepdefs.java  |   1 +
 .../user/memory/MemoryUsersRepositoryTest.java     |   2 +-
 .../apache/james/jdkim/mailets/DKIMSignTest.java   |   8 +-
 .../apache/james/jdkim/mailets/DKIMVerifyTest.java |   1 -
 .../james/mailets/AddDeliveredToHeaderTest.java    |   2 +-
 .../james/mailets/BounceIntegrationTest.java       |   6 +-
 .../mailets/CommonMailetConfigurationTest.java     |   2 +-
 .../apache/james/mailets/DKIMIntegrationTest.java  |   2 +-
 ...ectResolutionRemoteDeliveryIntegrationTest.java |   2 +-
 .../GatewayRemoteDeliveryIntegrationTest.java      |   2 +-
 .../org/apache/james/mailets/MailetErrorsTest.java |   2 +-
 .../mailets/NetworkMatcherIntegrationTest.java     |   2 +-
 .../RecipientRewriteTableIntegrationTest.java      |   2 +-
 .../james/mailets/RemoteDeliveryErrorTest.java     |   2 +-
 .../mailets/SenderIsLocalIntegrationTest.java      |   2 +-
 .../org/apache/james/mailets/SieveDelivery.java    |   2 +-
 .../james/mailets/SmtpAuthIntegrationTest.java     |   2 +-
 .../crypto/SMIMEDecryptIntegrationTest.java        |   2 +-
 .../mailets/crypto/SMIMESignIntegrationTest.java   |   2 +-
 .../james/smtp/SmtpAuthorizedAddressesTest.java    |   2 +-
 .../org/apache/james/smtp/SmtpContentTypeTest.java |   2 +-
 .../org/apache/james/smtp/SmtpNullSenderTest.java  |   2 +-
 .../apache/james/smtp/SmtpRandomStoringTest.java   |   2 +-
 .../james/smtp/extensions/SMTPHeloHooksTest.java   |   2 +-
 .../james/smtp/extensions/StaticInputChecker.java  |   3 +-
 .../james/transport/mailets/AddFooterTest.java     |   2 +-
 .../james/transport/mailets/AliasMappingTest.java  |   2 +-
 .../mailets/AmqpForwardAttachmentTest.java         |   2 +-
 .../transport/mailets/ContactExtractorTest.java    |   2 +-
 .../transport/mailets/DlpIntegrationTest.java      |   2 +-
 .../james/transport/mailets/DomainMappingTest.java |   2 +-
 .../transport/mailets/GroupMappingRelayTest.java   |   2 +-
 .../james/transport/mailets/GroupMappingTest.java  |   2 +-
 .../mailets/ICSAttachmentWorkflowTest.java         |   2 +-
 .../transport/mailets/IsOverQuotaMatcherTest.java  |   2 +-
 .../mailets/NoClassDefFoundErrorMatcher.java       |   1 -
 .../james/transport/mailets/SpamAssassinTest.java  |   2 +-
 .../transport/mailets/StripAttachmentTest.java     |   2 +-
 .../james/transport/mailets/ToRepositoryTest.java  |   2 +-
 .../mailets/ToSenderDomainRepositoryTest.java      |   2 +-
 .../org/apache/james/mock/smtp/server/Fixture.java |   1 +
 .../smtp/server/HTTPConfigurationServerTest.java   |   2 +-
 .../mock/smtp/server/model/ConditionTest.java      |   4 +-
 .../org/apache/james/jmap/MessageAppender.java     |   4 +-
 .../integration/GetMessageListMethodTest.java      |   4 +-
 .../methods/integration/SetMessagesMethodTest.java |   2 +-
 .../methods/integration/SpamAssassinContract.java  |   2 +-
 .../methods/integration/SpamAssassinModule.java    |   1 -
 .../methods/integration/cucumber/MainStepdefs.java |   2 +-
 .../jmap/memory/MemoryVacationIntegrationTest.java |   4 +-
 .../memory/MemoryVacationRelayIntegrationTest.java |   4 +-
 .../RabbitMQSetMailboxesMethodCucumberTest.java    |   1 -
 .../RabbitMQSetMessagesMethodCucumberTest.java     |   1 -
 .../cucumber/awss3/RabbitMQUploadCucumberTest.java |   1 -
 .../methods/GetVacationResponseMethodTest.java     |   2 +-
 .../draft/methods/MIMEMessageConverterTest.java    |   2 -
 .../jmap/draft/methods/RequestHandlerTest.java     |   1 -
 .../jmap/draft/methods/SetMailboxesMethodTest.java |   2 +-
 .../methods/SetVacationResponseMethodTest.java     |   3 +-
 .../draft/model/mailbox/MailboxNamespaceTest.java  |   1 -
 .../jmap/draft/utils/FilterToCriteriaTest.java     |  72 +++++---
 .../jmap/http/JWTAuthenticationStrategyTest.java   |   2 +-
 .../ExtractMDNOriginalJMAPMessageIdTest.java       |   1 -
 .../james/jmap/mailet/VacationMailetTest.java      |   1 +
 .../jmap/mailet/filter/JMAPFilteringTest.java      |   1 -
 ...sandraMappingsSolveInconsistenciesTaskTest.java |   1 +
 .../webadmin/authentication/JwtFilterTest.java     |   4 +-
 .../webadmin/routes/AddressMappingRoutesTest.java  |   2 +-
 .../james/webadmin/routes/UserRoutesTest.java      |   2 +-
 .../WebadminApiQuerySerializationContractTest.java |  54 +++---
 ...erializableReIndexingExecutionFailuresTest.java |   2 +-
 .../routes/MailboxesRoutesNoTasksTest.java         |   3 +-
 .../james/webadmin/routes/MailboxesRoutesTest.java |   2 +-
 .../service/DeleteMailsFromMailQueueTaskTest.java  |   2 +-
 ...mMailQueueTaskAdditionalInformationDTOTest.java |   2 +-
 .../james/queue/api/DelayedMailQueueContract.java  |   1 +
 .../apache/james/queue/api/MailQueueContract.java  |   7 +-
 .../james/queue/api/MailQueueFactoryTest.java      |   2 -
 .../queue/rabbitmq/RabbitMQMailQueueTest.java      |   1 -
 .../rabbitmq/RabbitMqMailQueueFactoryTest.java     |   6 -
 .../CassandraMailQueueViewTestFactory.java         |   1 -
 .../view/cassandra/configuration/DTOTest.java      |   2 +-
 .../james/task/MemoryReferenceWithCounterTask.java |   2 +-
 ...assandraTaskExecutionDetailsProjectionTest.java |   2 +-
 .../RabbitMQWorkQueuePersistenceTest.java          |   8 +-
 .../EventSourcingTaskManagerTest.java              |  13 +-
 .../task/eventsourcing/TaskAggregateTest.java      |   5 +-
 .../TerminationSubscriberContract.java             |   1 -
 .../org/apache/james/linshare/CombinedDecoder.java |   3 +-
 .../james/linshare/LinshareConfigurationTest.java  |   8 +-
 .../org/apache/james/linshare/LinshareFixture.java |   3 +-
 .../org/apache/james/linshare/LinshareTest.java    |   2 +-
 185 files changed, 739 insertions(+), 462 deletions(-)
 create mode 100644 mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageMovesWithMailbox.java


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 05/07: JAMES-3277 Move StoreRightManager::myRights for Mailbox to the API

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 08ffc8e6357e2357bd3e4ad9b23e29727b41952d
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 26 10:28:01 2020 +0700

    JAMES-3277 Move StoreRightManager::myRights for Mailbox to the API
    
    It avoids mailbox reads
---
 .../main/java/org/apache/james/mailbox/RightManager.java   | 14 ++++++++++++++
 .../apache/james/mailbox/store/StoreMailboxManager.java    |  5 +++++
 .../org/apache/james/mailbox/store/StoreRightManager.java  |  1 +
 3 files changed, 20 insertions(+)

diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/RightManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/RightManager.java
index e66934a..4e5c705 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/RightManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/RightManager.java
@@ -22,6 +22,7 @@ package org.apache.james.mailbox;
 import java.util.List;
 
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
 import org.apache.james.mailbox.model.MailboxACL.Right;
@@ -112,6 +113,19 @@ public interface RightManager {
     Publisher<Rfc4314Rights> myRights(MailboxId mailboxId, MailboxSession session);
 
     /**
+     * Returns the rights applicable to the user who has sent the current
+     * request on the mailbox designated by this mailboxPath.
+     *
+     * @param mailbox The mailbox you want to get your rights on.
+     * @param session The session used to determine the user we should retrieve the rights of.
+     * @return the rights applicable to the user who has sent the request,
+     *         returns {@link MailboxACL#NO_RIGHTS} if
+     *         {@code session.getUser()} is null.
+     * @throws MailboxException in case of unknown mailbox or unsupported right
+     */
+    Rfc4314Rights myRights(Mailbox mailbox, MailboxSession session);
+
+    /**
      * Update the Mailbox ACL of the designated mailbox. We can either ADD REPLACE or REMOVE entries.
      *
      * @param mailboxPath Path of the mailbox you want to apply rights on.
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index ced75f7..cab65d7 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -746,6 +746,11 @@ public class StoreMailboxManager implements MailboxManager {
     }
 
     @Override
+    public Rfc4314Rights myRights(Mailbox mailbox, MailboxSession session) {
+        return storeRightManager.myRights(mailbox, session);
+    }
+
+    @Override
     public List<Rfc4314Rights> listRights(MailboxPath mailboxPath, MailboxACL.EntryKey key, MailboxSession session) throws MailboxException {
         return storeRightManager.listRights(mailboxPath, key, session);
     }
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
index 8dd303e..b9cde36 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
@@ -104,6 +104,7 @@ public class StoreRightManager implements RightManager {
             .map(Throwing.function(mailbox -> myRights(mailbox, session)));
     }
 
+    @Override
     public Rfc4314Rights myRights(Mailbox mailbox, MailboxSession session) {
         Username username = session.getUser();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 03/07: JAMES-3277 Add a test about limiting mailboxes reads for StoreMessageIdManager::setInMailboxes

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 36c7e232bc65c1566178e14842ede43384ada159
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 26 10:19:00 2020 +0700

    JAMES-3277 Add a test about limiting mailboxes reads for StoreMessageIdManager::setInMailboxes
---
 .../CassandraMessageIdManagerSideEffectTest.java   | 29 ++++++++++++++++++++++
 .../AbstractMessageIdManagerSideEffectTest.java    | 20 +++++++--------
 2 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
index db4f8bb..1f60f1c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
@@ -21,15 +21,23 @@ package org.apache.james.mailbox.cassandra;
 
 import java.util.Set;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.StatementRecorder;
 import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.extension.PreDeletionHook;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.AbstractMessageIdManagerSideEffectTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.assertj.core.api.SoftAssertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import com.google.common.collect.ImmutableList;
+
 class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
 
     @RegisterExtension
@@ -39,4 +47,25 @@ class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSi
     protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, EventBus eventBus, Set<PreDeletionHook> preDeletionHooks) {
         return CassandraMessageIdManagerTestSystem.createTestingData(cassandraCluster.getCassandraCluster(), quotaManager, eventBus, preDeletionHooks);
     }
+
+    @Disabled("11 mailbox reads and 10 acl reads")
+    @Test
+    void setInMailboxesShouldLimitMailboxReads(CassandraCluster cassandra) throws Exception {
+        givenUnlimitedQuota();
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
+
+        StatementRecorder statementRecorder = new StatementRecorder();
+        cassandra.getConf().recordStatements(statementRecorder);
+
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
+
+        SoftAssertions.assertSoftly(softly -> {
+            softly.assertThat(statementRecorder.listExecutedStatements(
+                StatementRecorder.Selector.preparedStatement("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;")))
+                .hasSize(3); // an extra read is still performed
+            softly.assertThat(statementRecorder.listExecutedStatements(
+                StatementRecorder.Selector.preparedStatement("SELECT acl,version FROM acl WHERE id=:id;")))
+                .hasSize(2);
+        });
+    }
 }
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 52e7895..e351d9a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -86,18 +86,18 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
         .used(QuotaCountUsage.count(102))
         .computedLimit(QuotaCountLimit.count(100))
         .build();
-    private static final MessageUid messageUid1 = MessageUid.of(111);
-    private static final MessageUid messageUid2 = MessageUid.of(113);
+    protected static final MessageUid messageUid1 = MessageUid.of(111);
+    protected static final MessageUid messageUid2 = MessageUid.of(113);
 
-    private static final Flags FLAGS = new Flags();
+    protected static final Flags FLAGS = new Flags();
 
-    private MessageIdManager messageIdManager;
-    private MailboxSession session;
-    private Mailbox mailbox1;
-    private Mailbox mailbox2;
-    private Mailbox mailbox3;
+    protected MessageIdManager messageIdManager;
+    protected MailboxSession session;
+    protected Mailbox mailbox1;
+    protected Mailbox mailbox2;
+    protected Mailbox mailbox3;
     private QuotaManager quotaManager;
-    private MessageIdManagerTestSystem testingData;
+    protected MessageIdManagerTestSystem testingData;
     private EventCollector eventCollector;
     private EventBus eventBus;
     private PreDeletionHook preDeletionHook1;
@@ -525,7 +525,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
         assertThat(eventCollector.getEvents()).isEmpty();
     }
 
-    private void givenUnlimitedQuota() throws MailboxException {
+    protected void givenUnlimitedQuota() throws MailboxException {
         when(quotaManager.getMessageQuota(any(QuotaRoot.class))).thenReturn(
             Quota.<QuotaCountLimit, QuotaCountUsage>builder().used(QuotaCountUsage.count(2)).computedLimit(QuotaCountLimit.unlimited()).build());
         when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 06/07: JAMES-3277 Rework MessageIdMapper APIs

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 0f5e381fac65f91e45559c25c8259d697be49239
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 26 10:29:50 2020 +0700

    JAMES-3277 Rework MessageIdMapper APIs
    
     - Reactify delete (easy win)
     - Copy in mailboxes should take as an argument the target mailbox so that we don't need to ensure it exists
---
 .../cassandra/mail/CassandraMessageIdMapper.java   | 17 +++++++-------
 .../inmemory/mail/InMemoryMessageIdMapper.java     |  4 ++--
 .../james/mailbox/store/mail/MessageIdMapper.java  |  8 ++++++-
 .../store/mail/model/MessageIdMapperTest.java      | 26 +++++-----------------
 4 files changed, 23 insertions(+), 32 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index 2777ec4..b0293d1 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -35,6 +35,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.UpdatedFlags;
@@ -140,11 +141,10 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
     }
 
     @Override
-    public void copyInMailbox(MailboxMessage mailboxMessage) throws MailboxException {
-        CassandraId mailboxId = (CassandraId) mailboxMessage.getMailboxId();
-        MailboxReactorUtils.block(mailboxMapper.findMailboxById(mailboxId)
-            .switchIfEmpty(Mono.error(() -> new MailboxNotFoundException(mailboxId)))
-            .then(saveMessageMetadata(mailboxMessage, mailboxId)));
+    public void copyInMailbox(MailboxMessage mailboxMessage, Mailbox mailbox) throws MailboxException {
+        CassandraId mailboxId = (CassandraId) mailbox.getMailboxId();
+
+        MailboxReactorUtils.block(saveMessageMetadata(mailboxMessage, mailboxId));
     }
 
     private Mono<Void> saveMessageMetadata(MailboxMessage mailboxMessage, CassandraId mailboxId) {
@@ -172,10 +172,11 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
 
     @Override
     public void delete(MessageId messageId, Collection<MailboxId> mailboxIds) {
-        deleteAsMono(messageId, mailboxIds).block();
+        deleteReactive(messageId, mailboxIds).block();
     }
 
-    public Mono<Void> deleteAsMono(MessageId messageId, Collection<MailboxId> mailboxIds) {
+    @Override
+    public Mono<Void> deleteReactive(MessageId messageId, Collection<MailboxId> mailboxIds) {
         CassandraMessageId cassandraMessageId = (CassandraMessageId) messageId;
         return Flux.fromStream(mailboxIds.stream())
             .flatMap(mailboxId -> retrieveAndDeleteIndices(cassandraMessageId, Optional.of((CassandraId) mailboxId)))
@@ -187,7 +188,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
         Flux.fromIterable(ids.asMap()
             .entrySet())
             .publishOn(Schedulers.elastic())
-            .flatMap(entry -> deleteAsMono(entry.getKey(), entry.getValue()), cassandraConfiguration.getExpungeChunkSize())
+            .flatMap(entry -> deleteReactive(entry.getKey(), entry.getValue()), cassandraConfiguration.getExpungeChunkSize())
             .then()
             .block();
     }
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
index 2fe2bee..c16968b 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
@@ -87,8 +87,8 @@ public class InMemoryMessageIdMapper implements MessageIdMapper {
     }
 
     @Override
-    public void copyInMailbox(MailboxMessage mailboxMessage) throws MailboxException {
-        boolean isAlreadyInMailbox = findMailboxes(mailboxMessage.getMessageId()).contains(mailboxMessage.getMailboxId());
+    public void copyInMailbox(MailboxMessage mailboxMessage, Mailbox mailbox) throws MailboxException {
+        boolean isAlreadyInMailbox = findMailboxes(mailboxMessage.getMessageId()).contains(mailbox.getMailboxId());
         if (!isAlreadyInMailbox) {
             save(mailboxMessage);
         }
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java
index eeecd30..6e422e2 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java
@@ -26,6 +26,7 @@ import javax.mail.Flags;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.UpdatedFlags;
@@ -35,6 +36,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import com.google.common.collect.Multimap;
 
 import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
 
 public interface MessageIdMapper {
 
@@ -48,12 +50,16 @@ public interface MessageIdMapper {
 
     void save(MailboxMessage mailboxMessage) throws MailboxNotFoundException, MailboxException;
 
-    void copyInMailbox(MailboxMessage mailboxMessage) throws MailboxNotFoundException, MailboxException;
+    void copyInMailbox(MailboxMessage mailboxMessage, Mailbox mailbox) throws MailboxException;
 
     void delete(MessageId messageId);
 
     void delete(MessageId messageId, Collection<MailboxId> mailboxIds);
 
+    default Mono<Void> deleteReactive(MessageId messageId, Collection<MailboxId> mailboxIds) {
+        return Mono.fromRunnable(() -> delete(messageId, mailboxIds));
+    }
+
     default void delete(Multimap<MessageId, MailboxId> ids) {
         ids.asMap()
             .forEach(this::delete);
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 944301b..3abb0c9 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -202,22 +202,6 @@ public abstract class MessageIdMapperTest {
     }
 
     @Test
-    void copyInMailboxShouldThrowWhenMailboxDoesntExist() throws Exception {
-        message1.setUid(mapperProvider.generateMessageUid());
-        message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
-        sut.save(message1);
-
-        Mailbox notPersistedMailbox = new Mailbox(MailboxPath.forUser(BENWA, "mybox"), UID_VALIDITY, mapperProvider.generateId());
-
-        SimpleMailboxMessage message1InOtherMailbox = SimpleMailboxMessage.copy(notPersistedMailbox.getMailboxId(), message1);
-        message1InOtherMailbox.setUid(mapperProvider.generateMessageUid());
-        message1InOtherMailbox.setModSeq(mapperProvider.generateModSeq(benwaWorkMailbox));
-
-        assertThatThrownBy(() -> sut.copyInMailbox(message1InOtherMailbox))
-            .isInstanceOf(MailboxNotFoundException.class);
-    }
-
-    @Test
     void copyInMailboxShouldSaveMessageInAnotherMailbox() throws Exception {
         message1.setUid(mapperProvider.generateMessageUid());
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
@@ -226,7 +210,7 @@ public abstract class MessageIdMapperTest {
         SimpleMailboxMessage message1InOtherMailbox = SimpleMailboxMessage.copy(benwaWorkMailbox.getMailboxId(), message1);
         message1InOtherMailbox.setUid(mapperProvider.generateMessageUid());
         message1InOtherMailbox.setModSeq(mapperProvider.generateModSeq(benwaWorkMailbox));
-        sut.copyInMailbox(message1InOtherMailbox);
+        sut.copyInMailbox(message1InOtherMailbox, benwaWorkMailbox);
 
         List<MailboxId> mailboxes = sut.findMailboxes(message1.getMessageId());
         assertThat(mailboxes).containsOnly(benwaInboxMailbox.getMailboxId(), benwaWorkMailbox.getMailboxId());
@@ -241,8 +225,8 @@ public abstract class MessageIdMapperTest {
         copiedMessage.setUid(mapperProvider.generateMessageUid());
         copiedMessage.setModSeq(mapperProvider.generateModSeq(benwaWorkMailbox));
 
-        sut.copyInMailbox(copiedMessage);
-        sut.copyInMailbox(copiedMessage);
+        sut.copyInMailbox(copiedMessage, benwaWorkMailbox);
+        sut.copyInMailbox(copiedMessage, benwaWorkMailbox);
 
         List<MailboxId> mailboxes = sut.findMailboxes(message1.getMessageId());
         assertThat(mailboxes)
@@ -894,7 +878,7 @@ public abstract class MessageIdMapperTest {
         SimpleMailboxMessage copiedMessage = SimpleMailboxMessage.copy(benwaWorkMailbox.getMailboxId(), message1);
         copiedMessage.setUid(mapperProvider.generateMessageUid());
         copiedMessage.setModSeq(mapperProvider.generateModSeq(benwaWorkMailbox));
-        sut.copyInMailbox(copiedMessage);
+        sut.copyInMailbox(copiedMessage, benwaWorkMailbox);
 
         sut.delete(
             ImmutableMultimap.<MessageId, MailboxId>builder()
@@ -919,7 +903,7 @@ public abstract class MessageIdMapperTest {
         SimpleMailboxMessage copiedMessage = SimpleMailboxMessage.copy(benwaWorkMailbox.getMailboxId(), message1);
         copiedMessage.setUid(mapperProvider.generateMessageUid());
         copiedMessage.setModSeq(mapperProvider.generateModSeq(benwaWorkMailbox));
-        sut.copyInMailbox(copiedMessage);
+        sut.copyInMailbox(copiedMessage, benwaWorkMailbox);
 
         sut.delete(
             ImmutableMultimap.<MessageId, MailboxId>builder()


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 04/07: JAMES-3277 QuotaRootResolver should resolve quotaRoot for a mailbox

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 901517ea923a220ecba9fedba13871f1a036c37b
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 26 10:26:50 2020 +0700

    JAMES-3277 QuotaRootResolver should resolve quotaRoot for a mailbox
    
    It avoids an intermediate mailbox read
---
 .../main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java  | 2 ++
 .../james/mailbox/store/quota/DefaultUserQuotaRootResolver.java      | 5 +++++
 2 files changed, 7 insertions(+)

diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java
index a887363..60510f6 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/quota/QuotaRootResolver.java
@@ -39,6 +39,8 @@ public interface QuotaRootResolver extends QuotaRootDeserializer {
 
     QuotaRoot getQuotaRoot(MailboxId mailboxId) throws MailboxException;
 
+    QuotaRoot getQuotaRoot(Mailbox mailbox) throws MailboxException;
+
     Publisher<QuotaRoot> getQuotaRootReactive(MailboxId mailboxId);
 
     Publisher<Mailbox> retrieveAssociatedMailboxes(QuotaRoot quotaRoot, MailboxSession mailboxSession);
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
index 9587c87..b6f2069 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolver.java
@@ -95,6 +95,11 @@ public class DefaultUserQuotaRootResolver implements UserQuotaRootResolver {
     }
 
     @Override
+    public QuotaRoot getQuotaRoot(Mailbox mailbox) throws MailboxException {
+        return getQuotaRoot(mailbox.generateAssociatedPath());
+    }
+
+    @Override
     public QuotaRoot getQuotaRoot(MailboxId mailboxId) throws MailboxException {
         return getQuotaRootReactive(mailboxId).block();
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 01/07: JAMES-3271 Fixing various checkstyle errors in test classes

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit d69c7e26d0fb56df0ec63e2760e791df09e73ed2
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Jun 26 17:54:45 2020 +0700

    JAMES-3271 Fixing various checkstyle errors in test classes
---
 .../cassandra/DockerCassandraSingleton.java        |   2 +-
 .../apache/james/backends/cassandra/Scenario.java  |   3 +-
 .../backends/cassandra/utils/PaggingTest.java      |   1 +
 .../james/backends/es/DockerElasticSearch.java     |   2 +
 .../backends/es/ElasticSearchClusterExtension.java |   9 +-
 .../backends/es/ElasticSearchHealthCheckTest.java  |   3 +-
 .../backends/rabbitmq/DockerRabbitMQTestRule.java  |   2 +-
 .../james/backends/rabbitmq/RabbitMQExtension.java |   2 +-
 .../rabbitmq/RabbitMQServerVersionTest.java        |   1 +
 .../org/apache/james/core/MailAddressTest.java     |   2 +-
 .../org/apache/james/dto/FirstDomainObject.java    |   8 +-
 .../java/org/apache/james/dto/FirstNestedType.java |  10 +-
 .../org/apache/james/dto/SecondDomainObject.java   |   8 +-
 .../org/apache/james/dto/SecondNestedType.java     |   8 +-
 .../apache/james/mailbox/model/MailboxACLTest.java |   1 +
 .../mailbox/backup/ZipArchivesLoaderTest.java      |   7 +-
 .../apache/james/mailbox/backup/ZipAssertTest.java |   5 +-
 .../james/mailbox/backup/ZipEntryTypeContract.java |   2 +-
 .../cassandra/CassandraMailboxManagerTest.java     |   2 +-
 .../mail/CassandraApplicableFlagDAOTest.java       |   1 +
 .../cassandra/mail/CassandraMessageDAOTest.java    |   2 -
 .../cassandra/mail/CassandraMessageIdDAOTest.java  |   1 +
 .../cassandra/mail/CassandraMessageMapperTest.java |   2 +-
 .../SolveMessageInconsistenciesServiceTest.java    |   1 -
 ...asticSearchListeningMessageSearchIndexTest.java |   2 +-
 .../mailbox/elasticsearch/json/MimePartTest.java   |   3 +-
 .../query/DateResolutionFormatterTest.java         |   2 -
 .../events/delivery/InVmEventDeliveryTest.java     |   1 -
 .../mailbox/events/LocalListenerRegistryTest.java  |  12 +--
 .../james/mailbox/events/RabbitMQEventBusTest.java |   1 +
 .../org/apache/james/event/json/dtos/UserTest.java |   1 -
 .../InMemoryCombinationManagerTestSystem.java      |   1 -
 .../inmemory/InMemoryMessageManagerTestSystem.java |   1 -
 .../james/vault/metadata/UserPerBucketDAOTest.java |   1 -
 .../james/vault/DeletedMessageZipperTest.java      |   2 +-
 .../blob/BlobStoreDeletedMessageVaultTest.java     |   2 +-
 .../dto/query/QueryElementSerializerTest.java      |   1 +
 .../james/vault/dto/query/QueryTranslatorTest.java |  13 +--
 .../mailbox/quota/model/QuotaThresholdsTest.java   |   1 +
 .../elasticsearch/UserRoutingKeyFactoryTest.java   |   1 -
 .../mailbox/store/MessageManagerTestSystem.java    |   1 -
 .../ListeningMessageSearchIndexContract.java       |   2 +
 .../tools/indexer/CassandraReIndexerImplTest.java  |   2 +-
 .../RecomputeCurrentQuotasServiceContract.java     |   5 +
 .../transport/mailets/ICALToJsonAttributeTest.java |   3 +-
 .../james/transport/matchers/HasExceptionTest.java |   1 -
 .../transport/matchers/RecipientIsLocalTest.java   |   5 +-
 .../decode/parser/SelectCommandParserTest.java     |   1 -
 .../AbstractMailboxSelectionRequestTest.java       |   2 +-
 .../UnpooledStatusResponseFactoryTest.java         |   1 -
 .../processor/base/SelectedMailboxImplTest.java    |   2 +-
 .../imap/processor/base/UidMsnConverterTest.java   |   3 +-
 .../blob/api/BucketDumbBlobStoreContract.java      |   1 -
 .../blob/api/MetricableBlobStoreContract.java      |   1 -
 .../blob/api/ReadSaveDumbBlobStoreContract.java    |   2 +-
 .../blob/cassandra/CassandraBlobStoreTest.java     |   1 +
 .../blob/cassandra/cache/CachedBlobStoreTest.java  |   2 +-
 .../cache/CassandraBlobStoreCacheTest.java         |   6 +-
 .../cache/CassandraCacheConfigurationTest.java     |  20 ++--
 .../blob/cassandra/utils/DataChunkerTest.java      |   4 +-
 .../james/blob/memory/MemoryBlobStoreTest.java     |   1 -
 .../org/apache/james/CassandraNodeConfTest.java    |   1 +
 .../org/apache/james/AggregateJunitExtension.java  |   1 +
 .../org/apache/james/GuiceModuleTestExtension.java |   4 +-
 .../apache/james/MailsShouldBeWellReceived.java    |   2 +-
 .../mailbox/PreDeletionHookLoaderImplTest.java     |   2 -
 .../dlp/api/DLPConfigurationStoreContract.java     |   1 +
 .../apache/james/rrt/lib/CanSendFromContract.java  |   2 +-
 .../apache/james/rrt/lib/DomainRewriterTest.java   |   1 -
 .../apache/james/rrt/lib/MappingSourceTest.java    |   1 -
 .../apache/james/rrt/lib/ReplaceRewriterTest.java  |   1 -
 .../cassandra/CassandraUsersRepositoryTest.java    |   2 +-
 .../api/filtering/FilteringAggregateIdTest.java    |   1 -
 .../rrt/jpa/JPARecipientRewriteTableTest.java      | 101 ++++++++++-----------
 .../java/org/apache/james/rrt/jpa/JPAStepdefs.java |   1 +
 .../james/sieve/jpa/JpaSieveRepositoryTest.java    |   1 -
 .../james/user/jpa/JpaUsersRepositoryTest.java     |   2 +-
 .../user/ldap/ReadOnlyUsersLDAPRepositoryTest.java |   2 +-
 .../apache/james/rrt/memory/InMemoryStepdefs.java  |   1 +
 .../user/memory/MemoryUsersRepositoryTest.java     |   2 +-
 .../apache/james/jdkim/mailets/DKIMSignTest.java   |   8 +-
 .../apache/james/jdkim/mailets/DKIMVerifyTest.java |   1 -
 .../james/mailets/AddDeliveredToHeaderTest.java    |   2 +-
 .../james/mailets/BounceIntegrationTest.java       |   6 +-
 .../mailets/CommonMailetConfigurationTest.java     |   2 +-
 .../apache/james/mailets/DKIMIntegrationTest.java  |   2 +-
 ...ectResolutionRemoteDeliveryIntegrationTest.java |   2 +-
 .../GatewayRemoteDeliveryIntegrationTest.java      |   2 +-
 .../org/apache/james/mailets/MailetErrorsTest.java |   2 +-
 .../mailets/NetworkMatcherIntegrationTest.java     |   2 +-
 .../RecipientRewriteTableIntegrationTest.java      |   2 +-
 .../james/mailets/RemoteDeliveryErrorTest.java     |   2 +-
 .../mailets/SenderIsLocalIntegrationTest.java      |   2 +-
 .../org/apache/james/mailets/SieveDelivery.java    |   2 +-
 .../james/mailets/SmtpAuthIntegrationTest.java     |   2 +-
 .../crypto/SMIMEDecryptIntegrationTest.java        |   2 +-
 .../mailets/crypto/SMIMESignIntegrationTest.java   |   2 +-
 .../james/smtp/SmtpAuthorizedAddressesTest.java    |   2 +-
 .../org/apache/james/smtp/SmtpContentTypeTest.java |   2 +-
 .../org/apache/james/smtp/SmtpNullSenderTest.java  |   2 +-
 .../apache/james/smtp/SmtpRandomStoringTest.java   |   2 +-
 .../james/smtp/extensions/SMTPHeloHooksTest.java   |   2 +-
 .../james/smtp/extensions/StaticInputChecker.java  |   3 +-
 .../james/transport/mailets/AddFooterTest.java     |   2 +-
 .../james/transport/mailets/AliasMappingTest.java  |   2 +-
 .../mailets/AmqpForwardAttachmentTest.java         |   2 +-
 .../transport/mailets/ContactExtractorTest.java    |   2 +-
 .../transport/mailets/DlpIntegrationTest.java      |   2 +-
 .../james/transport/mailets/DomainMappingTest.java |   2 +-
 .../transport/mailets/GroupMappingRelayTest.java   |   2 +-
 .../james/transport/mailets/GroupMappingTest.java  |   2 +-
 .../mailets/ICSAttachmentWorkflowTest.java         |   2 +-
 .../transport/mailets/IsOverQuotaMatcherTest.java  |   2 +-
 .../mailets/NoClassDefFoundErrorMatcher.java       |   1 -
 .../james/transport/mailets/SpamAssassinTest.java  |   2 +-
 .../transport/mailets/StripAttachmentTest.java     |   2 +-
 .../james/transport/mailets/ToRepositoryTest.java  |   2 +-
 .../mailets/ToSenderDomainRepositoryTest.java      |   2 +-
 .../org/apache/james/mock/smtp/server/Fixture.java |   1 +
 .../smtp/server/HTTPConfigurationServerTest.java   |   2 +-
 .../mock/smtp/server/model/ConditionTest.java      |   4 +-
 .../org/apache/james/jmap/MessageAppender.java     |   4 +-
 .../integration/GetMessageListMethodTest.java      |   4 +-
 .../methods/integration/SetMessagesMethodTest.java |   2 +-
 .../methods/integration/SpamAssassinContract.java  |   2 +-
 .../methods/integration/SpamAssassinModule.java    |   1 -
 .../methods/integration/cucumber/MainStepdefs.java |   2 +-
 .../jmap/memory/MemoryVacationIntegrationTest.java |   4 +-
 .../memory/MemoryVacationRelayIntegrationTest.java |   4 +-
 .../RabbitMQSetMailboxesMethodCucumberTest.java    |   1 -
 .../RabbitMQSetMessagesMethodCucumberTest.java     |   1 -
 .../cucumber/awss3/RabbitMQUploadCucumberTest.java |   1 -
 .../methods/GetVacationResponseMethodTest.java     |   2 +-
 .../draft/methods/MIMEMessageConverterTest.java    |   2 -
 .../jmap/draft/methods/RequestHandlerTest.java     |   1 -
 .../jmap/draft/methods/SetMailboxesMethodTest.java |   2 +-
 .../methods/SetVacationResponseMethodTest.java     |   3 +-
 .../draft/model/mailbox/MailboxNamespaceTest.java  |   1 -
 .../jmap/draft/utils/FilterToCriteriaTest.java     |  72 ++++++++++-----
 .../jmap/http/JWTAuthenticationStrategyTest.java   |   2 +-
 .../ExtractMDNOriginalJMAPMessageIdTest.java       |   1 -
 .../james/jmap/mailet/VacationMailetTest.java      |   1 +
 .../jmap/mailet/filter/JMAPFilteringTest.java      |   1 -
 ...sandraMappingsSolveInconsistenciesTaskTest.java |   1 +
 .../webadmin/authentication/JwtFilterTest.java     |   4 +-
 .../webadmin/routes/AddressMappingRoutesTest.java  |   2 +-
 .../james/webadmin/routes/UserRoutesTest.java      |   2 +-
 .../WebadminApiQuerySerializationContractTest.java |  54 +++++------
 ...erializableReIndexingExecutionFailuresTest.java |   2 +-
 .../routes/MailboxesRoutesNoTasksTest.java         |   3 +-
 .../james/webadmin/routes/MailboxesRoutesTest.java |   2 +-
 .../service/DeleteMailsFromMailQueueTaskTest.java  |   2 +-
 ...mMailQueueTaskAdditionalInformationDTOTest.java |   2 +-
 .../james/queue/api/DelayedMailQueueContract.java  |   1 +
 .../apache/james/queue/api/MailQueueContract.java  |   7 +-
 .../james/queue/api/MailQueueFactoryTest.java      |   2 -
 .../queue/rabbitmq/RabbitMQMailQueueTest.java      |   1 -
 .../rabbitmq/RabbitMqMailQueueFactoryTest.java     |   6 --
 .../CassandraMailQueueViewTestFactory.java         |   1 -
 .../view/cassandra/configuration/DTOTest.java      |   2 +-
 .../james/task/MemoryReferenceWithCounterTask.java |   2 +-
 ...assandraTaskExecutionDetailsProjectionTest.java |   2 +-
 .../RabbitMQWorkQueuePersistenceTest.java          |   8 +-
 .../EventSourcingTaskManagerTest.java              |  13 +--
 .../task/eventsourcing/TaskAggregateTest.java      |   5 +-
 .../TerminationSubscriberContract.java             |   1 -
 .../org/apache/james/linshare/CombinedDecoder.java |   3 +-
 .../james/linshare/LinshareConfigurationTest.java  |   8 +-
 .../org/apache/james/linshare/LinshareFixture.java |   3 +-
 .../org/apache/james/linshare/LinshareTest.java    |   2 +-
 170 files changed, 347 insertions(+), 325 deletions(-)

diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
index 038915e..26f61f8 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
@@ -56,7 +56,7 @@ public class DockerCassandraSingleton {
 
     // Call this method to ensure that cassandra is restarted every MAX_TEST_PLAYED tests
     public static void restartAfterMaxTestsPlayed() throws Exception {
-        restartAfterMaxTestsPlayed(() -> {}, () -> {});
+        restartAfterMaxTestsPlayed(() -> { }, () -> { });
     }
 
     private static void restart() {
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java
index da3758d..9acabc2 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java
@@ -23,14 +23,13 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Stream;
 
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
-
 import com.datastax.driver.core.BoundStatement;
 import com.datastax.driver.core.RegularStatement;
 import com.datastax.driver.core.ResultSetFuture;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.Statement;
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 
 public class Scenario {
     public static class InjectedFailureException extends RuntimeException {
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
index 4188195..8d08f9d 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
@@ -35,6 +35,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 import com.datastax.driver.core.DataType;
 import com.datastax.driver.core.utils.UUIDs;
+
 import reactor.core.publisher.Flux;
 
 class PaggingTest {
diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/DockerElasticSearch.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/DockerElasticSearch.java
index 03fda7f..71e2635 100644
--- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/DockerElasticSearch.java
+++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/DockerElasticSearch.java
@@ -69,8 +69,10 @@ public interface DockerElasticSearch {
                     public X509Certificate[] getAcceptedIssuers() {
                         return new X509Certificate[0];
                     }
+
                     public void checkClientTrusted(X509Certificate[] certs, String authType) {
                     }
+
                     public void checkServerTrusted(X509Certificate[] certs, String authType) {
                     }
                 }
diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchClusterExtension.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchClusterExtension.java
index d0d3a5d..2a2dde3 100644
--- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchClusterExtension.java
+++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchClusterExtension.java
@@ -31,7 +31,8 @@ import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.ParameterResolver;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
+
+import com.google.common.collect.ImmutableList;
 
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -56,11 +57,13 @@ class ElasticSearchClusterExtension implements AfterAllCallback, BeforeAllCallba
             doInParallel(() -> {
                     if (es1.isRunning()) {
                         es1.cleanUpData();
-                }},
+                    }
+                },
                 () -> {
                     if (es2.isRunning()) {
                         es2.cleanUpData();
-                }});
+                    }
+                });
         }
 
         void stop() {
diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchHealthCheckTest.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchHealthCheckTest.java
index 2c381d4..2c2b786 100644
--- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchHealthCheckTest.java
+++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchHealthCheckTest.java
@@ -29,7 +29,8 @@ import org.elasticsearch.cluster.node.DiscoveryNodes;
 import org.elasticsearch.cluster.routing.RoutingTable;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableSet;
+
+import com.google.common.collect.ImmutableSet;
 
 class ElasticSearchHealthCheckTest {
     private ElasticSearchHealthCheck healthCheck;
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQTestRule.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQTestRule.java
index 7b921a7..23d99c0 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQTestRule.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/DockerRabbitMQTestRule.java
@@ -49,7 +49,7 @@ public class DockerRabbitMQTestRule extends ExternalResource {
     private void performQuietly(ThrowingRunnable runnable) {
         try {
             runnable.run();
-        } catch (Exception e){
+        } catch (Exception e) {
             // ignore
         }
     }
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQExtension.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQExtension.java
index 2dc8d31..ded5dd8 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQExtension.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQExtension.java
@@ -36,7 +36,7 @@ import reactor.rabbitmq.Sender;
 
 public class RabbitMQExtension implements BeforeAllCallback, BeforeEachCallback, AfterAllCallback, AfterEachCallback, ParameterResolver {
 
-    private static final Consumer<DockerRabbitMQ> DO_NOTHING = dockerRabbitMQ -> {};
+    private static final Consumer<DockerRabbitMQ> DO_NOTHING = dockerRabbitMQ -> { };
 
     public enum DockerRestartPolicy {
         PER_TEST(DockerRabbitMQ::start, DockerRabbitMQ::start, DockerRabbitMQ::stop, DockerRabbitMQ::stop),
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQServerVersionTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQServerVersionTest.java
index a90c9c9..fe27f9c 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQServerVersionTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQServerVersionTest.java
@@ -27,6 +27,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
+
 import com.fasterxml.jackson.core.Version;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
diff --git a/core/src/test/java/org/apache/james/core/MailAddressTest.java b/core/src/test/java/org/apache/james/core/MailAddressTest.java
index fb27066..6ab51bd 100644
--- a/core/src/test/java/org/apache/james/core/MailAddressTest.java
+++ b/core/src/test/java/org/apache/james/core/MailAddressTest.java
@@ -54,7 +54,7 @@ class MailAddressTest {
                 "\\.server-dev@james.apache.org",
                 "server-dev\\.@james.apache.org")
             .map(Arguments::of);
-    };
+    }
 
     private static Stream<Arguments> badAddresses() {
         return Stream.of(
diff --git a/json/src/test/java/org/apache/james/dto/FirstDomainObject.java b/json/src/test/java/org/apache/james/dto/FirstDomainObject.java
index e4db6f1..4998634 100644
--- a/json/src/test/java/org/apache/james/dto/FirstDomainObject.java
+++ b/json/src/test/java/org/apache/james/dto/FirstDomainObject.java
@@ -54,8 +54,12 @@ public class FirstDomainObject implements BaseType {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
         FirstDomainObject that = (FirstDomainObject) o;
         return Objects.equals(id, that.id) &&
                 Objects.equals(time, that.time) &&
diff --git a/json/src/test/java/org/apache/james/dto/FirstNestedType.java b/json/src/test/java/org/apache/james/dto/FirstNestedType.java
index a4aa447..f2416b5 100644
--- a/json/src/test/java/org/apache/james/dto/FirstNestedType.java
+++ b/json/src/test/java/org/apache/james/dto/FirstNestedType.java
@@ -21,7 +21,7 @@ package org.apache.james.dto;
 
 import java.util.Objects;
 
-public class FirstNestedType implements NestedType{
+public class FirstNestedType implements NestedType {
     final int foo;
 
     public FirstNestedType(int foo) {
@@ -34,8 +34,12 @@ public class FirstNestedType implements NestedType{
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
         FirstNestedType that = (FirstNestedType) o;
         return foo == that.foo;
     }
diff --git a/json/src/test/java/org/apache/james/dto/SecondDomainObject.java b/json/src/test/java/org/apache/james/dto/SecondDomainObject.java
index 69fdd08..c59adc8 100644
--- a/json/src/test/java/org/apache/james/dto/SecondDomainObject.java
+++ b/json/src/test/java/org/apache/james/dto/SecondDomainObject.java
@@ -48,8 +48,12 @@ public class SecondDomainObject implements BaseType {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
         SecondDomainObject that = (SecondDomainObject) o;
         return Objects.equals(id, that.id) &&
                 Objects.equals(child, that.child) &&
diff --git a/json/src/test/java/org/apache/james/dto/SecondNestedType.java b/json/src/test/java/org/apache/james/dto/SecondNestedType.java
index 913e2fe..b2d9720 100644
--- a/json/src/test/java/org/apache/james/dto/SecondNestedType.java
+++ b/json/src/test/java/org/apache/james/dto/SecondNestedType.java
@@ -34,8 +34,12 @@ public class SecondNestedType implements NestedType {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
         SecondNestedType that = (SecondNestedType) o;
         return Objects.equals(bar, that.bar);
     }
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
index f53fad2..5785404 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
@@ -37,6 +37,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import com.google.common.collect.ImmutableMap;
+
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 class MailboxACLTest {
diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipArchivesLoaderTest.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipArchivesLoaderTest.java
index 13b7f74..36653bb 100644
--- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipArchivesLoaderTest.java
+++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipArchivesLoaderTest.java
@@ -61,15 +61,12 @@ class ZipArchivesLoaderTest implements MailboxMessageFixture {
     private void createMailBoxWithMessage(MailboxPath mailboxPath, MailboxMessage... messages) throws Exception {
         MailboxSession session = mailboxManager.createSystemSession(mailboxPath.getUser());
         MailboxId mailboxId = mailboxManager.createMailbox(mailboxPath, session).get();
-        Arrays.stream(messages).forEach(Throwing.consumer(message ->
-            {
+        Arrays.stream(messages).forEach(Throwing.consumer(message -> {
                 MessageManager.AppendCommand appendCommand = MessageManager.AppendCommand.builder()
                     .withFlags(message.createFlags())
                     .build(message.getFullContent());
                 mailboxManager.getMailbox(mailboxId, session).appendMessage(appendCommand, session);
-            }
-            )
-        );
+            }));
     }
 
     @Test
diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssertTest.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssertTest.java
index 2bfc54c..36278b8 100644
--- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssertTest.java
+++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssertTest.java
@@ -118,8 +118,8 @@ class ZipAssertTest {
         try (ZipArchiveOutputStream archiveOutputStream = new ZipArchiveOutputStream(destination)) {
             for (ZipEntryWithContent entry : entries) {
                 ZipArchiveEntry archiveEntry = (ZipArchiveEntry) archiveOutputStream.createArchiveEntry(new File(UUID.randomUUID().toString()), entry.name);
-                entry.extraFields.
-                    forEach(archiveEntry::addExtraField);
+                entry.extraFields
+                    .forEach(archiveEntry::addExtraField);
                 archiveOutputStream.putArchiveEntry(archiveEntry);
                 IOUtils.copy(entry.content, archiveOutputStream);
                 archiveOutputStream.closeArchiveEntry();
@@ -287,6 +287,7 @@ class ZipAssertTest {
                 .isInstanceOf(AssertionError.class);
         }
     }
+
     @Test
     void containsExactlyEntriesMatchingShouldNotThrowWhenRightOrder() throws Exception {
         try (ZipFile zipFile = buildZipFile(ENTRY, ENTRY_2)) {
diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipEntryTypeContract.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipEntryTypeContract.java
index 72eae0d..2411f32 100644
--- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipEntryTypeContract.java
+++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipEntryTypeContract.java
@@ -26,7 +26,7 @@ import org.junit.jupiter.api.Test;
 class ZipEntryTypeContract {
 
     private void assertZipEntryTypeDeserializedFromValue(int value, ZipEntryType expectedType) {
-        assertThat(ZipEntryType.zipEntryType( value)).contains(expectedType);
+        assertThat(ZipEntryType.zipEntryType(value)).contains(expectedType);
     }
 
     @Test
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index 9b14082..f57f28e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -75,9 +75,9 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.github.fge.lambdas.Throwing;
+import com.google.common.collect.ImmutableList;
 
 public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMailboxManager> {
     public static final Username BOB = Username.of("Bob");
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
index 60bbbf9..91bb910 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
@@ -82,6 +82,7 @@ class CassandraApplicableFlagDAOTest {
         assertThat(testee.retrieveApplicableFlag(CASSANDRA_ID).blockOptional())
             .isEmpty();
     }
+
     @Test
     void deleteShouldNotThrowWhenEmpty() {
         assertThatCode(() -> testee.delete(CASSANDRA_ID).block())
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
index 7ac448b..06223e0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -42,8 +42,6 @@ import org.apache.james.mailbox.ModSeq;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
-import org.apache.james.mailbox.model.AttachmentId;
-import org.apache.james.mailbox.model.AttachmentMetadata;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
 import org.apache.james.mailbox.model.MessageAttachmentMetadata;
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
index 8f53020..e76637e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
@@ -459,6 +459,7 @@ class CassandraMessageIdDAOTest {
         assertThat(testee.retrieveMessages(mailboxId, MessageRange.from(messageUid2), Limit.unlimited()).toIterable())
             .containsOnly(composedMessageIdWithMetaData, composedMessageIdWithMetaData2);
     }
+
     @Test
     void retrieveMessagesShouldAppluLimitWhenRangeFrom() {
         CassandraMessageId messageId = messageIdFactory.generate();
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index 3ace7df..0e17312 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -46,9 +46,9 @@ import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.github.fge.lambdas.Throwing;
+import com.google.common.collect.ImmutableList;
 
 class CassandraMessageMapperTest extends MessageMapperTest {
     @RegisterExtension
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
index c1fbb05..4282efa 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
@@ -49,7 +49,6 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import reactor.core.publisher.Mono;
 import reactor.core.scheduler.Schedulers;
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index 1908052..3275897 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -83,8 +83,8 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
 class ElasticSearchListeningMessageSearchIndexTest {
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MimePartTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MimePartTest.java
index 19fde86..4dc663b 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MimePartTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MimePartTest.java
@@ -23,7 +23,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.io.ByteArrayInputStream;
 import java.nio.charset.StandardCharsets;
 
-import org.apache.james.mailbox.model.ContentType;
 import org.apache.james.mailbox.model.ContentType.MediaType;
 import org.apache.james.mailbox.model.ContentType.SubType;
 import org.junit.jupiter.api.Test;
@@ -47,7 +46,7 @@ class MimePartTest {
             .addMediaType(MediaType.of("text"))
             .addSubType(SubType.of("plain"))
             .build();
-        
+
         assertThat(mimePart.getTextualBody()).contains(body);
     }
 }
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/query/DateResolutionFormatterTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/query/DateResolutionFormatterTest.java
index 3487439..cde579c 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/query/DateResolutionFormatterTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/query/DateResolutionFormatterTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.elasticsearch.query;
 
-import static java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.ZonedDateTime;
@@ -27,7 +26,6 @@ import java.time.ZonedDateTime;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.junit.jupiter.api.Test;
 
-
 class DateResolutionFormatterTest {
 
     final ZonedDateTime date = ZonedDateTime.parse("2014-01-02T15:15:15Z");
diff --git a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
index 526ab02..dd210a9 100644
--- a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
+++ b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
@@ -40,7 +40,6 @@ import org.apache.james.mailbox.events.delivery.EventDelivery.PermanentFailureHa
 import org.apache.james.mailbox.events.delivery.EventDelivery.Retryer.BackoffRetryer;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.assertj.core.api.SoftAssertions;
-import org.awaitility.Awaitility;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
diff --git a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/LocalListenerRegistryTest.java b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/LocalListenerRegistryTest.java
index 517d12d..10ee4d8 100644
--- a/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/LocalListenerRegistryTest.java
+++ b/mailbox/event/event-rabbitmq/src/test/java/org/apache/james/mailbox/events/LocalListenerRegistryTest.java
@@ -124,7 +124,7 @@ class LocalListenerRegistryTest {
 
     @Nested
     class ConcurrentTest {
-        private final Duration ONE_SECOND = Duration.ofSeconds(1);
+        private final Duration oneSecond = Duration.ofSeconds(1);
 
         @Test
         void getLocalMailboxListenersShouldReturnPreviousAddedListener() throws Exception {
@@ -134,7 +134,7 @@ class LocalListenerRegistryTest {
                 .operation((threadNumber, operationNumber) -> testee.addListener(KEY_1, listener))
                 .threadCount(10)
                 .operationCount(10)
-                .runSuccessfullyWithin(ONE_SECOND);
+                .runSuccessfullyWithin(oneSecond);
 
             assertThat(testee.getLocalMailboxListeners(KEY_1).collectList().block())
                 .containsOnly(wrapReactive(listener));
@@ -153,7 +153,7 @@ class LocalListenerRegistryTest {
                     (threadNumber, operationNumber) -> testee.addListener(KEY_1, listener3))
                 .threadCount(6)
                 .operationCount(10)
-                .runSuccessfullyWithin(ONE_SECOND);
+                .runSuccessfullyWithin(oneSecond);
 
             assertThat(testee.getLocalMailboxListeners(KEY_1).collectList().block())
                 .containsOnly(wrapReactive(listener1), wrapReactive(listener2), wrapReactive(listener3));
@@ -169,7 +169,7 @@ class LocalListenerRegistryTest {
                 .operation(((threadNumber, operationNumber) -> registration.unregister()))
                 .threadCount(10)
                 .operationCount(10)
-                .runSuccessfullyWithin(ONE_SECOND);
+                .runSuccessfullyWithin(oneSecond);
 
             assertThat(testee.getLocalMailboxListeners(KEY_1).collectList().block())
                 .isEmpty();
@@ -204,7 +204,7 @@ class LocalListenerRegistryTest {
                     })
                 .threadCount(6)
                 .operationCount(10)
-                .runSuccessfullyWithin(ONE_SECOND);
+                .runSuccessfullyWithin(oneSecond);
 
             assertThat(firstListenerCount.get()).isEqualTo(1);
         }
@@ -223,7 +223,7 @@ class LocalListenerRegistryTest {
                 }))
                 .threadCount(10)
                 .operationCount(10)
-                .runSuccessfullyWithin(ONE_SECOND);
+                .runSuccessfullyWithin(oneSecond);
 
             assertThat(lastListenerRemoved.get()).isEqualTo(1);
         }
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 bfbae43..9641df3 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
@@ -196,6 +196,7 @@ class RabbitMQEventBusTest implements GroupContract.SingleEventBusGroupContract,
         public EnvironmentSpeedProfile getSpeedProfile() {
             return EnvironmentSpeedProfile.SLOW;
         }
+
         @Test
         void rabbitMQEventBusShouldHandleBulksGracefully() throws Exception {
             EventBusTestFixture.MailboxListenerCountingSuccessfulExecution countingListener1 = newCountingListener();
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/UserTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/UserTest.java
index 55347ad..57c0016 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/UserTest.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/dtos/UserTest.java
@@ -24,7 +24,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.apache.james.core.Username;
-
 import org.junit.jupiter.api.Test;
 
 import play.api.libs.json.JsError;
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
index be0c9d5..358cede 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
@@ -25,7 +25,6 @@ import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.UidValidity;
 import org.apache.james.mailbox.store.CombinationManagerTestSystem;
 
 public class InMemoryCombinationManagerTestSystem extends CombinationManagerTestSystem {
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
index 89db34d..f2f100a 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
@@ -24,7 +24,6 @@ import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.UidValidity;
 import org.apache.james.mailbox.store.MessageManagerTestSystem;
 
 public class InMemoryMessageManagerTestSystem extends MessageManagerTestSystem {
diff --git a/mailbox/plugin/deleted-messages-vault-cassandra/src/test/java/org/apache/james/vault/metadata/UserPerBucketDAOTest.java b/mailbox/plugin/deleted-messages-vault-cassandra/src/test/java/org/apache/james/vault/metadata/UserPerBucketDAOTest.java
index 673fdd2..337b7c6 100644
--- a/mailbox/plugin/deleted-messages-vault-cassandra/src/test/java/org/apache/james/vault/metadata/UserPerBucketDAOTest.java
+++ b/mailbox/plugin/deleted-messages-vault-cassandra/src/test/java/org/apache/james/vault/metadata/UserPerBucketDAOTest.java
@@ -27,7 +27,6 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.blob.api.BucketName;
 import org.apache.james.core.Username;
-
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageZipperTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageZipperTest.java
index 07f7b7c..91bd2cd 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageZipperTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageZipperTest.java
@@ -51,9 +51,9 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Stream;
 
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
+import org.apache.james.mailbox.backup.ZipAssert;
 import org.apache.james.mailbox.backup.zip.MessageIdExtraField;
 import org.apache.james.mailbox.backup.zip.SizeExtraField;
-import org.apache.james.mailbox.backup.ZipAssert;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java
index 6c03f4f..c499529 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreDeletedMessageVaultTest.java
@@ -27,9 +27,9 @@ import static org.apache.james.vault.DeletedMessageFixture.NOW;
 import static org.apache.james.vault.DeletedMessageFixture.OLD_DELETED_MESSAGE;
 import static org.apache.james.vault.DeletedMessageFixture.USERNAME;
 import static org.apache.james.vault.blob.BlobStoreDeletedMessageVault.APPEND_METRIC_NAME;
+import static org.apache.james.vault.blob.BlobStoreDeletedMessageVault.DELETE_EXPIRED_MESSAGES_METRIC_NAME;
 import static org.apache.james.vault.blob.BlobStoreDeletedMessageVault.DELETE_METRIC_NAME;
 import static org.apache.james.vault.blob.BlobStoreDeletedMessageVault.LOAD_MIME_MESSAGE_METRIC_NAME;
-import static org.apache.james.vault.blob.BlobStoreDeletedMessageVault.DELETE_EXPIRED_MESSAGES_METRIC_NAME;
 import static org.apache.james.vault.blob.BlobStoreDeletedMessageVault.SEARCH_METRIC_NAME;
 import static org.apache.james.vault.search.Query.ALL;
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryElementSerializerTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryElementSerializerTest.java
index 105de89..cc983fd 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryElementSerializerTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryElementSerializerTest.java
@@ -28,6 +28,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+
 import net.javacrumbs.jsonunit.assertj.JsonAssertions;
 
 class QueryElementSerializerTest {
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryTranslatorTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryTranslatorTest.java
index 7360bd8..301d720 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryTranslatorTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/dto/query/QueryTranslatorTest.java
@@ -80,7 +80,7 @@ class QueryTranslatorTest {
     }
 
     @Test
-    void toDTOShouldConvertQueryWithDeletionDateBeforeOrEquals() throws Exception{
+    void toDTOShouldConvertQueryWithDeletionDateBeforeOrEquals() throws Exception {
         String serializedDate = "2007-12-03T10:15:30+01:00[Europe/Paris]";
         Query query = Query.of(
             CriterionFactory.deletionDate().beforeOrEquals(ZonedDateTime.parse(serializedDate))
@@ -91,7 +91,7 @@ class QueryTranslatorTest {
     }
 
     @Test
-    void toDTOShouldConvertQueryWithDeletionDateAfterOrEquals() throws Exception{
+    void toDTOShouldConvertQueryWithDeletionDateAfterOrEquals() throws Exception {
         String serializedDate = "2007-12-03T10:15:30+01:00[Europe/Paris]";
         Query query = Query.of(
             CriterionFactory.deletionDate().afterOrEquals(ZonedDateTime.parse(serializedDate))
@@ -100,8 +100,9 @@ class QueryTranslatorTest {
             new CriterionDTO(FieldName.DELETION_DATE.getValue(), Operator.AFTER_OR_EQUALS.getValue(), serializedDate)
         ));
     }
+
     @Test
-    void toDTOShouldConvertQueryWithDeliveryDateBeforeOrEquals() throws Exception{
+    void toDTOShouldConvertQueryWithDeliveryDateBeforeOrEquals() throws Exception {
         String serializedDate = "2007-12-03T10:15:30+01:00[Europe/Paris]";
         Query query = Query.of(
             CriterionFactory.deliveryDate().beforeOrEquals(ZonedDateTime.parse(serializedDate))
@@ -112,7 +113,7 @@ class QueryTranslatorTest {
     }
 
     @Test
-    void toDTOShouldConvertQueryWithDeliveryDateAfterOrEquals() throws Exception{
+    void toDTOShouldConvertQueryWithDeliveryDateAfterOrEquals() throws Exception {
         String serializedDate = "2007-12-03T10:15:30+01:00[Europe/Paris]";
         Query query = Query.of(
             CriterionFactory.deliveryDate().afterOrEquals(ZonedDateTime.parse(serializedDate))
@@ -123,7 +124,7 @@ class QueryTranslatorTest {
     }
 
     @Test
-    void toDTOShouldConvertQueryWithRecipientsContains() throws Exception{
+    void toDTOShouldConvertQueryWithRecipientsContains() throws Exception {
         Query query = Query.of(
             CriterionFactory.containsRecipient(new MailAddress("user@james.org"))
         );
@@ -133,7 +134,7 @@ class QueryTranslatorTest {
     }
 
     @Test
-    void toDTOShouldConvertQueryWithSenderEquals() throws Exception{
+    void toDTOShouldConvertQueryWithSenderEquals() throws Exception {
         Query query = Query.of(
             CriterionFactory.hasSender(new MailAddress("user@james.org"))
         );
diff --git a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/model/QuotaThresholdsTest.java b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/model/QuotaThresholdsTest.java
index c2a07bb..724c024 100644
--- a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/model/QuotaThresholdsTest.java
+++ b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/model/QuotaThresholdsTest.java
@@ -32,6 +32,7 @@ import org.apache.james.mailbox.quota.QuotaFixture.Sizes;
 import org.junit.jupiter.api.Test;
 
 import com.google.common.collect.ImmutableList;
+
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 public class QuotaThresholdsTest {
diff --git a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/UserRoutingKeyFactoryTest.java b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/UserRoutingKeyFactoryTest.java
index ede4cb5..eaf26af 100644
--- a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/UserRoutingKeyFactoryTest.java
+++ b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/UserRoutingKeyFactoryTest.java
@@ -23,7 +23,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.backends.es.RoutingKey;
 import org.apache.james.core.Username;
-
 import org.junit.jupiter.api.Test;
 
 class UserRoutingKeyFactoryTest {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java
index 5b655ec..b18d42d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java
@@ -23,7 +23,6 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Mailbox;
-import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 
 public abstract class MessageManagerTestSystem {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndexContract.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndexContract.java
index 98b0b19..f9ab723 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndexContract.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndexContract.java
@@ -56,7 +56,9 @@ public interface ListeningMessageSearchIndexContract {
         .modseq(MOD_SEQ);
     
     ListeningMessageSearchIndex testee();
+
     MailboxSession session();
+
     Mailbox mailbox();
     
     @Test
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
index bdd950e..3d83ee1 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
@@ -59,9 +59,9 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableList;
 
 import reactor.core.publisher.Mono;
 
diff --git a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java
index 95c2fc3..567b2d9 100644
--- a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java
+++ b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasServiceContract.java
@@ -54,10 +54,15 @@ public interface RecomputeCurrentQuotasServiceContract {
     CurrentQuotas EXPECTED_QUOTAS = new CurrentQuotas(QuotaCountUsage.count(1L), QuotaSizeUsage.size(103L));
 
     UsersRepository usersRepository();
+
     SessionProvider sessionProvider();
+
     MailboxManager mailboxManager();
+
     CurrentQuotaManager currentQuotaManager();
+
     UserQuotaRootResolver userQuotaRootResolver();
+
     RecomputeCurrentQuotasService testee();
 
     @Test
diff --git a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
index 35666d2..1bd7780 100644
--- a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
+++ b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/ICALToJsonAttributeTest.java
@@ -51,6 +51,7 @@ import org.junit.jupiter.params.provider.MethodSource;
 
 import com.fasterxml.jackson.core.util.BufferRecyclers;
 import com.google.common.collect.ImmutableMap;
+
 import net.fortuna.ical4j.data.CalendarBuilder;
 import net.fortuna.ical4j.model.Calendar;
 
@@ -332,7 +333,7 @@ public class ICALToJsonAttributeTest {
                 "\"Bob\"\n      <" + address + ">",
                 " =?UTF-8?Q?Beno=c3=aet_TELLIER?= <" + address + ">")
             .map(Arguments::of);
-    };
+    }
 
     @Test
     void serviceShouldAttachJsonWithTheSenderAsReplyToAttributeValueWhenReplyToIsInvalid() throws Exception {
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasExceptionTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasExceptionTest.java
index ff30cd4..e4b4c68 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasExceptionTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasExceptionTest.java
@@ -33,7 +33,6 @@ import org.apache.mailet.Matcher;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMatcherConfig;
 import org.apache.mailet.base.test.MailUtil;
-
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java
index d00e5cb..9d21a03 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/RecipientIsLocalTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.transport.matchers;
 
-import static  org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -31,7 +31,8 @@ import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMatcherConfig;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
+
+import com.google.common.collect.ImmutableList;
 
 public class RecipientIsLocalTest {
 
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/SelectCommandParserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/SelectCommandParserTest.java
index 6d73240..920cf46 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/SelectCommandParserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/SelectCommandParserTest.java
@@ -30,7 +30,6 @@ import org.apache.james.imap.api.Tag;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.decode.ImapRequestStreamLineReader;
-import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest;
 import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest.ClientSpecifiedUidValidity;
 import org.apache.james.imap.message.request.SelectRequest;
 import org.apache.james.mailbox.model.UidValidity;
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequestTest.java b/protocols/imap/src/test/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequestTest.java
index 8e50036..d817d88 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequestTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequestTest.java
@@ -24,8 +24,8 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest.ClientSpecifiedUidValidity;
 import org.apache.james.mailbox.model.UidValidity;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/message/response/UnpooledStatusResponseFactoryTest.java b/protocols/imap/src/test/java/org/apache/james/imap/message/response/UnpooledStatusResponseFactoryTest.java
index 6447354..101d6af 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/message/response/UnpooledStatusResponseFactoryTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/message/response/UnpooledStatusResponseFactoryTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.imap.message.response;
 
-import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.message.response.AbstractStatusResponseFactoryTest;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index b62b654..eb07d08 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -204,7 +204,7 @@ public class SelectedMailboxImplTest {
                     LOGGER.error("Error while processing event on a concurrent thread", e);
                 }
             });
-            return Mono.just(() -> {});
+            return Mono.just(() -> { });
         };
     }
 
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java
index 7976841..438db40 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java
@@ -24,9 +24,8 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.time.Duration;
 import java.util.Map;
 
-import org.apache.james.mailbox.MessageSequenceNumber;
-import org.apache.james.mailbox.NullableMessageSequenceNumber;
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.NullableMessageSequenceNumber;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/server/blob/blob-api/src/test/java/org/apache/james/blob/api/BucketDumbBlobStoreContract.java b/server/blob/blob-api/src/test/java/org/apache/james/blob/api/BucketDumbBlobStoreContract.java
index 8695118..d70425e 100644
--- a/server/blob/blob-api/src/test/java/org/apache/james/blob/api/BucketDumbBlobStoreContract.java
+++ b/server/blob/blob-api/src/test/java/org/apache/james/blob/api/BucketDumbBlobStoreContract.java
@@ -20,7 +20,6 @@
 package org.apache.james.blob.api;
 
 import static org.apache.james.blob.api.DumbBlobStoreFixture.CUSTOM_BUCKET_NAME;
-import static org.apache.james.blob.api.DumbBlobStoreFixture.ELEVEN_KILOBYTES;
 import static org.apache.james.blob.api.DumbBlobStoreFixture.OTHER_TEST_BLOB_ID;
 import static org.apache.james.blob.api.DumbBlobStoreFixture.SHORT_BYTEARRAY;
 import static org.apache.james.blob.api.DumbBlobStoreFixture.SHORT_STRING;
diff --git a/server/blob/blob-api/src/test/java/org/apache/james/blob/api/MetricableBlobStoreContract.java b/server/blob/blob-api/src/test/java/org/apache/james/blob/api/MetricableBlobStoreContract.java
index ca346db..e722519 100644
--- a/server/blob/blob-api/src/test/java/org/apache/james/blob/api/MetricableBlobStoreContract.java
+++ b/server/blob/blob-api/src/test/java/org/apache/james/blob/api/MetricableBlobStoreContract.java
@@ -34,7 +34,6 @@ import java.nio.charset.StandardCharsets;
 
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.awaitility.Duration;
-import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
diff --git a/server/blob/blob-api/src/test/java/org/apache/james/blob/api/ReadSaveDumbBlobStoreContract.java b/server/blob/blob-api/src/test/java/org/apache/james/blob/api/ReadSaveDumbBlobStoreContract.java
index dae10f6..294a67a 100644
--- a/server/blob/blob-api/src/test/java/org/apache/james/blob/api/ReadSaveDumbBlobStoreContract.java
+++ b/server/blob/blob-api/src/test/java/org/apache/james/blob/api/ReadSaveDumbBlobStoreContract.java
@@ -380,7 +380,7 @@ public interface ReadSaveDumbBlobStoreContract {
             public int read(byte[] b, int off, int len) throws IOException {
                 int remaining = b.length - off;
                 int toRead = Math.min(remaining, len);
-                for (int i = 0; i < toRead; i ++) {
+                for (int i = 0; i < toRead; i++) {
                     int value = read();
                     if (value != -1) {
                         b[off] = (byte) value;
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java
index cba4df7..f924cfe 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobStoreTest.java
@@ -48,6 +48,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 import com.google.common.base.Strings;
 import com.google.common.hash.Hashing;
 import com.google.common.hash.HashingInputStream;
+
 import reactor.core.publisher.Mono;
 
 public class CassandraBlobStoreTest implements MetricableBlobStoreContract {
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
index c8c66a0..c96175c 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CachedBlobStoreTest.java
@@ -61,7 +61,7 @@ public class CachedBlobStoreTest implements BlobStoreContract {
 
     private static final BucketName DEFAULT_BUCKETNAME = DEFAULT;
     private static final BucketName TEST_BUCKETNAME = BucketName.of("test");
-    byte[] APPROXIMATELY_FIVE_KILOBYTES = Strings.repeat("0123456789\n", 500).getBytes(StandardCharsets.UTF_8);
+    private static final byte[] APPROXIMATELY_FIVE_KILOBYTES = Strings.repeat("0123456789\n", 500).getBytes(StandardCharsets.UTF_8);
 
     @RegisterExtension
     static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCacheTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCacheTest.java
index 9841853..1a0b655 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCacheTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraBlobStoreCacheTest.java
@@ -38,9 +38,9 @@ public class CassandraBlobStoreCacheTest implements BlobStoreCacheContract {
     @RegisterExtension
     static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraBlobCacheModule.MODULE);
 
-    private final Duration DEFAULT_READ_TIMEOUT = Duration.ofSeconds(50);
-    private final int DEFAULT_THRESHOLD_IN_BYTES = EIGHT_KILOBYTES.length;
-    private final Duration _2_SEC_TTL = Duration.ofSeconds(2);
+    private static final Duration DEFAULT_READ_TIMEOUT = Duration.ofSeconds(50);
+    private static final int DEFAULT_THRESHOLD_IN_BYTES = EIGHT_KILOBYTES.length;
+    private static final Duration _2_SEC_TTL = Duration.ofSeconds(2);
 
     private BlobStoreCache testee;
     private HashBlobId.Factory blobIdFactory;
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraCacheConfigurationTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraCacheConfigurationTest.java
index 99f6ea6..5721b9c 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraCacheConfigurationTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/cache/CassandraCacheConfigurationTest.java
@@ -33,16 +33,16 @@ import com.google.common.base.Strings;
 
 public class CassandraCacheConfigurationTest {
 
-    byte[] EIGHT_KILOBYTES = Strings.repeat("01234567\n", 1000).getBytes(StandardCharsets.UTF_8);
-    private final Duration DEFAULT_TIME_OUT = Duration.ofSeconds(50);
-    private final int DEFAULT_THRESHOLD_SIZE_IN_BYTES = EIGHT_KILOBYTES.length;
-    private final Duration _1_SEC_TTL = Duration.ofSeconds(1);
-    private final Duration TOO_BIG_TTL = Duration.ofSeconds(Integer.MAX_VALUE + 1L);
-
-    private final Duration NEGATIVE_TIME_OUT = Duration.ofSeconds(-50);
-    private final Duration _2_HOURS_TIME_OUT = Duration.ofHours(2);
-    private final int NEGATIVE_THRESHOLD_SIZE_IN_BYTES = -1 * EIGHT_KILOBYTES.length;
-    private final Duration NEGATIVE_TTL = Duration.ofSeconds(-1);
+    private static final byte[] EIGHT_KILOBYTES = Strings.repeat("01234567\n", 1000).getBytes(StandardCharsets.UTF_8);
+    private static final Duration DEFAULT_TIME_OUT = Duration.ofSeconds(50);
+    private static final int DEFAULT_THRESHOLD_SIZE_IN_BYTES = EIGHT_KILOBYTES.length;
+    private static final Duration _1_SEC_TTL = Duration.ofSeconds(1);
+    private static final Duration TOO_BIG_TTL = Duration.ofSeconds(Integer.MAX_VALUE + 1L);
+
+    private static final Duration NEGATIVE_TIME_OUT = Duration.ofSeconds(-50);
+    private static final Duration _2_HOURS_TIME_OUT = Duration.ofHours(2);
+    private static final int NEGATIVE_THRESHOLD_SIZE_IN_BYTES = -1 * EIGHT_KILOBYTES.length;
+    private static final Duration NEGATIVE_TTL = Duration.ofSeconds(-1);
 
     @Test
     void shouldReturnTheCorrectConfigured() {
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/utils/DataChunkerTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/utils/DataChunkerTest.java
index a645b0b..f40d6ec 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/utils/DataChunkerTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/utils/DataChunkerTest.java
@@ -25,16 +25,14 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import java.io.ByteArrayInputStream;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
-import java.util.stream.Stream;
 
-import org.apache.commons.lang3.tuple.Pair;
 import org.assertj.core.api.Assumptions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Bytes;
+
 import reactor.core.publisher.Flux;
 
 public class DataChunkerTest {
diff --git a/server/blob/blob-memory/src/test/java/org/apache/james/blob/memory/MemoryBlobStoreTest.java b/server/blob/blob-memory/src/test/java/org/apache/james/blob/memory/MemoryBlobStoreTest.java
index f482139..9d7f052 100644
--- a/server/blob/blob-memory/src/test/java/org/apache/james/blob/memory/MemoryBlobStoreTest.java
+++ b/server/blob/blob-memory/src/test/java/org/apache/james/blob/memory/MemoryBlobStoreTest.java
@@ -21,7 +21,6 @@ package org.apache.james.blob.memory;
 
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.BlobStore;
-import org.apache.james.blob.api.DumbBlobStore;
 import org.apache.james.blob.api.HashBlobId;
 import org.apache.james.blob.api.MetricableBlobStore;
 import org.apache.james.blob.api.MetricableBlobStoreContract;
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
index d6460af..a44e56c 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
@@ -40,6 +40,7 @@ import org.testcontainers.DockerClientFactory;
 
 class CassandraNodeConfTest {
     private static final int CASSANDRA_PORT = 9042;
+
     private static JamesServerBuilder extensionBuilder() {
         return new JamesServerBuilder<>(JamesServerBuilder.defaultConfigurationProvider())
             .extension(new DockerElasticSearchExtension())
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/AggregateJunitExtension.java b/server/container/guice/guice-common/src/test/java/org/apache/james/AggregateJunitExtension.java
index 8cf131c..d71ab69 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/AggregateJunitExtension.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/AggregateJunitExtension.java
@@ -29,6 +29,7 @@ import org.junit.jupiter.api.extension.ParameterResolutionException;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.collect.Lists;
+
 import reactor.core.publisher.Flux;
 
 public class AggregateJunitExtension implements RegistrableExtension {
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/GuiceModuleTestExtension.java b/server/container/guice/guice-common/src/test/java/org/apache/james/GuiceModuleTestExtension.java
index 581ca1c..2309d74 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/GuiceModuleTestExtension.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/GuiceModuleTestExtension.java
@@ -33,7 +33,9 @@ public interface GuiceModuleTestExtension extends RegistrableExtension {
         return binder -> { };
     }
 
-    default void await() {}
+    default void await() {
+
+    }
 
     default Optional<Class<?>> supportedParameterClass() {
         return Optional.empty();
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
index 1bd32e2..89a891b 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
@@ -41,9 +41,9 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.util.MimeMessageUtil;
 import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.SpoolerProbe;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.awaitility.Awaitility;
 import org.awaitility.Duration;
diff --git a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java
index d8adc15..9ee9f19 100644
--- a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java
+++ b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHookLoaderImplTest.java
@@ -33,8 +33,6 @@ import org.apache.james.utils.GuiceGenericLoader;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import com.google.inject.Guice;
-
 class PreDeletionHookLoaderImplTest {
     private PreDeletionHookLoaderImpl testee;
 
diff --git a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java
index 9f3b9d6..0113c49 100644
--- a/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java
+++ b/server/data/data-api/src/test/java/org/apache/james/dlp/api/DLPConfigurationStoreContract.java
@@ -30,6 +30,7 @@ import org.apache.james.core.Domain;
 import org.junit.jupiter.api.Test;
 
 import com.google.common.collect.ImmutableList;
+
 import reactor.core.publisher.Mono;
 
 public interface DLPConfigurationStoreContract {
diff --git a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
index 91398cb..3262131 100644
--- a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
+++ b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
@@ -61,7 +61,7 @@ public interface CanSendFromContract {
 
         default void asAlias() throws Exception {
             withType(Mapping.Type.DomainAlias);
-        };
+        }
 
         default void asMapping() throws Exception {
             withType(Mapping.Type.Domain);
diff --git a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/DomainRewriterTest.java b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/DomainRewriterTest.java
index d0a5215..7c97a9d 100644
--- a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/DomainRewriterTest.java
+++ b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/DomainRewriterTest.java
@@ -22,7 +22,6 @@ package org.apache.james.rrt.lib;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.core.Username;
-
 import org.junit.jupiter.api.Test;
 
 public class DomainRewriterTest {
diff --git a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/MappingSourceTest.java b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/MappingSourceTest.java
index a56839c..7a982a7 100644
--- a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/MappingSourceTest.java
+++ b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/MappingSourceTest.java
@@ -24,7 +24,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import org.apache.james.core.Domain;
 import org.apache.james.core.MailAddress;
 import org.apache.james.core.Username;
-
 import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
diff --git a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ReplaceRewriterTest.java b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ReplaceRewriterTest.java
index d2ce54d..7d54258 100644
--- a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ReplaceRewriterTest.java
+++ b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ReplaceRewriterTest.java
@@ -22,7 +22,6 @@ package org.apache.james.rrt.lib;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.core.Username;
-
 import org.junit.jupiter.api.Test;
 
 public class ReplaceRewriterTest {
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
index bb17ed4..45d5185 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
@@ -22,8 +22,8 @@ package org.apache.james.user.cassandra;
 import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.domainlist.api.DomainList;
-import org.apache.james.user.lib.UsersRepositoryImpl;
 import org.apache.james.user.lib.UsersRepositoryContract;
+import org.apache.james.user.lib.UsersRepositoryImpl;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.extension.RegisterExtension;
diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/FilteringAggregateIdTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/FilteringAggregateIdTest.java
index f6da805..ebcedc5 100644
--- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/FilteringAggregateIdTest.java
+++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/FilteringAggregateIdTest.java
@@ -22,7 +22,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.apache.james.core.Username;
-
 import org.apache.james.jmap.api.filtering.impl.FilteringAggregateId;
 import org.junit.jupiter.api.Test;
 
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java
index 5f50ab9..7a54550 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java
@@ -1,51 +1,50 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.james.rrt.jpa;
-
-import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
-import org.apache.james.backends.jpa.JpaTestCluster;
-import org.apache.james.rrt.jpa.model.JPARecipientRewrite;
-import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
-import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
-import org.junit.After;
-import org.junit.Before;
-
-public class JPARecipientRewriteTableTest extends AbstractRecipientRewriteTableTest {
-
-    private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPARecipientRewrite.class);
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    @Override
-    protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
-        JPARecipientRewriteTable localVirtualUserTable = new JPARecipientRewriteTable();
-        localVirtualUserTable.setEntityManagerFactory(JPA_TEST_CLUSTER.getEntityManagerFactory());
-        return localVirtualUserTable;
-    }
-}
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.rrt.jpa;
+
+import org.apache.james.backends.jpa.JpaTestCluster;
+import org.apache.james.rrt.jpa.model.JPARecipientRewrite;
+import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
+import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
+import org.junit.After;
+import org.junit.Before;
+
+public class JPARecipientRewriteTableTest extends AbstractRecipientRewriteTableTest {
+
+    private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPARecipientRewrite.class);
+
+    @Override
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @Override
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    @Override
+    protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
+        JPARecipientRewriteTable localVirtualUserTable = new JPARecipientRewriteTable();
+        localVirtualUserTable.setEntityManagerFactory(JPA_TEST_CLUSTER.getEntityManagerFactory());
+        return localVirtualUserTable;
+    }
+}
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
index 249b0b2..20b24e5 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
@@ -25,6 +25,7 @@ import org.apache.james.rrt.lib.RecipientRewriteTableFixture;
 import org.apache.james.rrt.lib.RewriteTablesStepdefs;
 
 import com.github.fge.lambdas.Throwing;
+
 import cucumber.api.java.After;
 import cucumber.api.java.Before;
 
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/sieve/jpa/JpaSieveRepositoryTest.java b/server/data/data-jpa/src/test/java/org/apache/james/sieve/jpa/JpaSieveRepositoryTest.java
index 660515c..e79de07 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/sieve/jpa/JpaSieveRepositoryTest.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/sieve/jpa/JpaSieveRepositoryTest.java
@@ -24,7 +24,6 @@ import org.apache.james.sieve.jpa.model.JPASieveQuota;
 import org.apache.james.sieve.jpa.model.JPASieveScript;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.sieverepository.lib.AbstractSieveRepositoryTest;
-
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java b/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
index a883627..9ef1078 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
@@ -22,8 +22,8 @@ import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
 import org.apache.james.backends.jpa.JpaTestCluster;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.user.jpa.model.JPAUser;
-import org.apache.james.user.lib.UsersRepositoryImpl;
 import org.apache.james.user.lib.UsersRepositoryContract;
+import org.apache.james.user.lib.UsersRepositoryImpl;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
diff --git a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index 083d0b3..7ae78e4 100644
--- a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++ b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory;
 class ReadOnlyUsersLDAPRepositoryTest {
 
     static final Logger LOGGER = LoggerFactory.getLogger(ReadOnlyUsersLDAPRepositoryTest.class);
-    static final Username JAMES_USER_MAIL = Username.of(JAMES_USER.getLocalPart()+ "@" + DOMAIN);
+    static final Username JAMES_USER_MAIL = Username.of(JAMES_USER.getLocalPart() + "@" + DOMAIN);
     static final Username UNKNOWN = Username.of("unknown");
     static final String BAD_PASSWORD = "badpassword";
     public static final String SUPPORTS_VIRTUAL_HOSTING = "supportsVirtualHosting";
diff --git a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java
index a2c36da..edac008 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java
@@ -24,6 +24,7 @@ import org.apache.james.rrt.lib.RecipientRewriteTableFixture;
 import org.apache.james.rrt.lib.RewriteTablesStepdefs;
 
 import com.github.fge.lambdas.Throwing;
+
 import cucumber.api.java.Before;
 
 public class InMemoryStepdefs {
diff --git a/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java b/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java
index 4e6d037..9bbf92c 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java
@@ -27,8 +27,8 @@ import org.apache.james.core.Username;
 import org.apache.james.dnsservice.api.InMemoryDNSService;
 import org.apache.james.domainlist.memory.MemoryDomainList;
 import org.apache.james.user.api.UsersRepositoryException;
-import org.apache.james.user.lib.UsersRepositoryImpl;
 import org.apache.james.user.lib.UsersRepositoryContract;
+import org.apache.james.user.lib.UsersRepositoryImpl;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
diff --git a/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java b/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java
index bd9fac9..590b9a0 100644
--- a/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java
+++ b/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java
@@ -210,7 +210,7 @@ class DKIMSignTest {
                 .getDefaultInstance(new Properties()));
         mm.addFrom(new Address[]{new InternetAddress("io@bago.org")});
         mm.addRecipient(RecipientType.TO, new InternetAddress("io@bago.org"));
-        mm.setText("An 8bit encoded body with \u20ACuro symbol.", "ISO-8859-15");
+        mm.setText("An 8bit encoded body with €uro symbol.", "ISO-8859-15");
 
         Mailet mailet = new DKIMSign();
 
@@ -255,7 +255,7 @@ class DKIMSignTest {
                 .getDefaultInstance(new Properties()));
         mm.addFrom(new Address[]{new InternetAddress("io@bago.org")});
         mm.addRecipient(RecipientType.TO, new InternetAddress("io@bago.org"));
-        mm.setContent("An 8bit encoded body with \u20ACuro symbol.",
+        mm.setContent("An 8bit encoded body with €uro symbol.",
                 "text/plain; charset=iso-8859-15");
         mm.setHeader("Content-Transfer-Encoding", "8bit");
         mm.saveChanges();
@@ -304,7 +304,7 @@ class DKIMSignTest {
                 .getDefaultInstance(new Properties()));
         mm.addFrom(new Address[]{new InternetAddress("io@bago.org")});
         mm.addRecipient(RecipientType.TO, new InternetAddress("io@bago.org"));
-        mm.setContent("An 8bit encoded body with \u20ACuro symbol.",
+        mm.setContent("An 8bit encoded body with €uro symbol.",
                 "text/plain; charset=iso-8859-15");
         mm.setHeader("Content-Transfer-Encoding", "8bit");
         mm.saveChanges();
@@ -346,7 +346,7 @@ class DKIMSignTest {
             verify(rawMessage, mockPublicKeyRecordRetriever);
             fail("Expected PermFail");
         } catch (PermFailException e) {
-
+            // do nothing
         }
     }
 
diff --git a/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMVerifyTest.java b/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMVerifyTest.java
index 1b6754c..a88bee2 100644
--- a/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMVerifyTest.java
+++ b/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMVerifyTest.java
@@ -35,7 +35,6 @@ import org.apache.mailet.Mailet;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
-
 import org.junit.jupiter.api.Test;
 
 public class DKIMVerifyTest {
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
index 4c7015c..4591e31 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
@@ -32,8 +32,8 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.AddDeliveredToHeader;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
index 254247c..aea61c4 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
@@ -26,10 +26,10 @@ import static org.apache.james.mailets.configuration.Constants.RECIPIENT;
 import static org.apache.james.mailets.configuration.Constants.awaitAtMostOneMinute;
 import static org.assertj.core.api.Assertions.assertThat;
 
-import javax.mail.internet.MimeMessage;
-
 import java.util.Arrays;
 
+import javax.mail.internet.MimeMessage;
+
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.MemoryJamesServerMain;
 import org.apache.james.mailets.configuration.MailetConfiguration;
@@ -49,8 +49,8 @@ import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.RecipientIs;
 import org.apache.james.util.MimeMessageUtil;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.Mailet;
 import org.junit.After;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
index 4f8143a..a2694a9 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
@@ -32,8 +32,8 @@ import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
index 25715b7..0b2dc92 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
@@ -44,8 +44,8 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.ExtractAttributeStub;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
index 87c0e9d..cdd54c2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
@@ -44,8 +44,8 @@ import org.apache.james.transport.mailets.AddDeliveredToHeader;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.FakeSmtp;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.ClassRule;
 import org.junit.Ignore;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index a67e36e..b2ad4d9 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -40,8 +40,8 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.FakeSmtp;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java
index 594c4b7..f14aa8b 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java
@@ -32,9 +32,9 @@ import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
-import org.apache.james.transport.mailets.NoClassDefFoundErrorMailet;
 import org.apache.james.transport.mailets.ErrorMailet;
 import org.apache.james.transport.mailets.ErrorMatcher;
+import org.apache.james.transport.mailets.NoClassDefFoundErrorMailet;
 import org.apache.james.transport.mailets.NoClassDefFoundErrorMatcher;
 import org.apache.james.transport.mailets.NoopMailet;
 import org.apache.james.transport.mailets.Null;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
index 69976fb..e808404 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
@@ -39,9 +39,9 @@ import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.RemoteAddrInNetwork;
 import org.apache.james.transport.matchers.RemoteAddrNotInNetwork;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Rule;
 import org.junit.Test;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
index 04cd522..2546309 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
@@ -30,8 +30,8 @@ import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.ForwardRoutes;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
index 05e027b..20afca4 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
@@ -54,8 +54,8 @@ import org.apache.james.util.Host;
 import org.apache.james.util.MimeMessageUtil;
 import org.apache.james.util.docker.DockerContainer;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
index f878d1a..8230865 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
@@ -37,9 +37,9 @@ import org.apache.james.transport.mailets.ToRepository;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.SenderIsLocal;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.AliasRoutes;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
index 0e150c0..3406c55 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
@@ -33,8 +33,8 @@ import org.apache.james.modules.protocols.SieveProbeImpl;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
index e9580b4..dc9a41d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
@@ -39,9 +39,9 @@ import org.apache.james.transport.mailets.ToRepository;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.transport.matchers.SMTPAuthSuccessful;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
index ca5ca31..e8fa1fe 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
@@ -40,8 +40,8 @@ import org.apache.james.transport.matchers.All;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.james.util.date.ZonedDateTimeProvider;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
index ba5f6e4..90c9709 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
@@ -43,8 +43,8 @@ import org.apache.james.transport.matchers.HasMailAttribute;
 import org.apache.james.transport.matchers.SenderIsLocal;
 import org.apache.james.util.date.ZonedDateTimeProvider;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
index a736851..e74ca1e 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
@@ -40,10 +40,10 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.matchers.SMTPIsAuthNetwork;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.FakeSmtp;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.SMTPSendingException;
 import org.apache.james.utils.SmtpSendingStep;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.ClassRule;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
index 6274b01..6e75bd1 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
@@ -44,8 +44,8 @@ import org.apache.james.server.core.MailImpl;
 import org.apache.james.transport.matchers.SMTPIsAuthNetwork;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.FakeSmtp;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.Mail;
 import org.junit.After;
 import org.junit.ClassRule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java
index 39a83cb..34618ac 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java
@@ -29,8 +29,8 @@ import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
index 5c131a2..ef7b734 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
@@ -50,8 +50,8 @@ import org.apache.james.server.core.MailImpl;
 import org.apache.james.transport.mailets.RandomStoring;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.Mail;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
index 377b238..753475f 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
@@ -41,9 +41,9 @@ import org.apache.james.smtp.extensions.hooks.DenySoftHeloHook;
 import org.apache.james.smtp.extensions.hooks.OkHeloHook;
 import org.apache.james.smtp.extensions.hooks.RecordingHeloHook;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.SMTPSendingException;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Rule;
 import org.junit.Test;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/StaticInputChecker.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/StaticInputChecker.java
index 60f1809..4b57559 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/StaticInputChecker.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/StaticInputChecker.java
@@ -24,7 +24,8 @@ import java.util.ArrayList;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.protocols.smtp.hook.Hook;
 import org.junit.rules.ExternalResource;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
+
+import com.google.common.collect.ImmutableList;
 
 public class StaticInputChecker extends ExternalResource {
     private static final ArrayList<Pair<Class<? extends Hook>, ?>> results = new ArrayList<>();
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
index e3e69a4..d70c86a 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
@@ -38,8 +38,8 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.After;
 import org.junit.Before;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
index efa15ff..c1ee465 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
@@ -39,9 +39,9 @@ import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.AliasRoutes;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index 0b4dbd2..a173679 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -43,8 +43,8 @@ import org.apache.james.util.docker.DockerContainer;
 import org.apache.james.util.docker.Images;
 import org.apache.james.util.docker.RateLimiters;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.After;
 import org.junit.Before;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
index 610c3bf..85cf9f3 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
@@ -43,8 +43,8 @@ import org.apache.james.util.docker.DockerContainer;
 import org.apache.james.util.docker.Images;
 import org.apache.james.util.docker.RateLimiters;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.After;
 import org.junit.Before;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
index 2628219..65a17de 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
@@ -41,8 +41,8 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.transport.matchers.dlp.Dlp;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.mailet.base.test.FakeMail;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
index 18c9d9b..6824150 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
@@ -39,9 +39,9 @@ import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.mailet.base.test.FakeMail;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
index c48d6e2..26b224a 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
@@ -37,8 +37,8 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.FakeSmtp;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.GroupsRoutes;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
index 690f696..0776f93 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
@@ -40,9 +40,9 @@ import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.GroupsRoutes;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index 3ff99ba..8c97801 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -48,8 +48,8 @@ import org.apache.james.util.docker.DockerContainer;
 import org.apache.james.util.docker.Images;
 import org.apache.james.util.docker.RateLimiters;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.After;
 import org.junit.Before;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
index 63326f5..9a5c45d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
@@ -38,8 +38,8 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.matchers.IsOverQuota;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.junit.After;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/NoClassDefFoundErrorMatcher.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/NoClassDefFoundErrorMatcher.java
index c03d8ca..8062bec 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/NoClassDefFoundErrorMatcher.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/NoClassDefFoundErrorMatcher.java
@@ -25,7 +25,6 @@ import javax.mail.MessagingException;
 
 import org.apache.james.core.MailAddress;
 import org.apache.mailet.Mail;
-import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.base.GenericMatcher;
 
 public class NoClassDefFoundErrorMatcher extends GenericMatcher {
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
index fb019cc..179548d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
@@ -44,8 +44,8 @@ import org.apache.james.util.docker.DockerContainer;
 import org.apache.james.util.docker.Images;
 import org.apache.james.util.docker.RateLimiters;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.After;
 import org.junit.Before;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 0f62d8b..a80f1e0 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -39,8 +39,8 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.After;
 import org.junit.Before;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
index 7ac3f96..698a155 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
@@ -36,9 +36,9 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.MailRepositoriesRoutes;
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
index 62ebdd1..76f6b62 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
@@ -33,9 +33,9 @@ import org.apache.james.mailrepository.api.MailRepositoryUrl;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.transport.matchers.All;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.junit.After;
 import org.junit.Rule;
 import org.junit.Test;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
index c984794..1646bea 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/Fixture.java
@@ -39,6 +39,7 @@ public interface Fixture {
     class MailsFixutre {
         static Mail MAIL_1;
         static Mail MAIL_2;
+
         static {
             try {
                 MAIL_1 = new Mail(
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
index 962f1c8..4bb0edd 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
@@ -19,13 +19,13 @@
 
 package org.apache.james.mock.smtp.server;
 
+import static io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.when;
 import static io.restassured.RestAssured.with;
 import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
 import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
-import static io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT;
 import static org.apache.james.mock.smtp.server.Fixture.JSON_BEHAVIORS;
 import static org.apache.james.mock.smtp.server.Fixture.JSON_MAIL;
 import static org.apache.james.mock.smtp.server.Fixture.JSON_MAILS_LIST;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ConditionTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ConditionTest.java
index 693a5c3..2c164d9 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ConditionTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/model/ConditionTest.java
@@ -139,7 +139,7 @@ class ConditionTest {
         }
 
         @Test
-        void jacksonShouldThrowWhenDeserializeMatchAllConditionWithMatchingValue(){
+        void jacksonShouldThrowWhenDeserializeMatchAllConditionWithMatchingValue() {
             String json = "{\"operator\":\"matchAll\", \"matchingValue\":\"matchme\"}";
 
             assertThatThrownBy(() -> OBJECT_MAPPER.readValue(json, Condition.class))
@@ -148,7 +148,7 @@ class ConditionTest {
         }
 
         @Test
-        void jacksonShouldThrowWhenDeserializeContainsConditionWithoutMatchingValue(){
+        void jacksonShouldThrowWhenDeserializeContainsConditionWithoutMatchingValue() {
             String json = "{\"operator\":\"contains\"}";
 
             assertThatThrownBy(() -> OBJECT_MAPPER.readValue(json, Condition.class))
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/MessageAppender.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/MessageAppender.java
index cde8940..2d1d262 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/MessageAppender.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/MessageAppender.java
@@ -36,7 +36,9 @@ import com.google.common.collect.ImmutableList;
 
 public class MessageAppender {
 
-    private MessageAppender() {}
+    private MessageAppender() {
+
+    }
 
     public static List<ComposedMessageId> fillMailbox(MailboxProbe mailboxProbe, String user, String mailbox) {
         ImmutableList.Builder<ComposedMessageId> insertedMessages = ImmutableList.builder();
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
index 4dd633f..a99d108 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
@@ -653,7 +653,7 @@ public abstract class GetMessageListMethodTest {
 
         given()
             .header("Authorization", aliceAccessToken.asString())
-            .body("[[\"getMessageList\", {\"filter\": {\"inMailboxes\": [\""+ mailboxId.serialize() +"\"], \"isUnread\":\"true\"}}, \"#0\"]]")
+            .body("[[\"getMessageList\", {\"filter\": {\"inMailboxes\": [\"" + mailboxId.serialize() + "\"], \"isUnread\":\"true\"}}, \"#0\"]]")
 
         .when()
             .post("/jmap")
@@ -693,7 +693,7 @@ public abstract class GetMessageListMethodTest {
 
         given()
             .header("Authorization", aliceAccessToken.asString())
-                .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"AND\",\"conditions\":[{\"inMailboxes\": [\""+ mailboxId.serialize() +"\"]},{\"isUnread\":\"true\"}]}}, \"#0\"]]")
+                .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"AND\",\"conditions\":[{\"inMailboxes\": [\"" + mailboxId.serialize() + "\"]},{\"isUnread\":\"true\"}]}}, \"#0\"]]")
                 .when()
             .post("/jmap")
         .then()
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
index 38c9e99..ae72726 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
@@ -115,8 +115,8 @@ import org.apache.james.util.MimeMessageUtil;
 import org.apache.james.util.Port;
 import org.apache.james.util.io.ZeroedInputStream;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.FakeMail;
 import org.awaitility.Duration;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
index 0d77a9a..fe4b73a 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
@@ -45,8 +45,8 @@ import org.apache.james.mailbox.Role;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.spamassassin.SpamAssassinExtension;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.utils.TestIMAPClient;
 import org.apache.james.utils.SpoolerProbe;
+import org.apache.james.utils.TestIMAPClient;
 import org.awaitility.Duration;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java
index 469eebd..801e804 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java
@@ -23,7 +23,6 @@ import java.util.Optional;
 import javax.inject.Singleton;
 
 import org.apache.commons.configuration2.BaseConfiguration;
-import org.apache.james.mailbox.events.MailboxListener;
 import org.apache.james.mailbox.spamassassin.SpamAssassinConfiguration;
 import org.apache.james.mailbox.spamassassin.SpamAssassinListener;
 import org.apache.james.mailetcontainer.impl.MailetConfigImpl;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java
index fed3895..9504ced 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/MainStepdefs.java
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.stream.Stream;
 
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.jmap.draft.MessageIdProbe;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
@@ -32,7 +33,6 @@ import org.apache.james.modules.ACLProbeImpl;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.MessageIdProbe;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Joiner;
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationIntegrationTest.java
index a804662..33146de 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationIntegrationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationIntegrationTest.java
@@ -37,5 +37,7 @@ public class MemoryVacationIntegrationTest extends VacationIntegrationTest {
     }
 
     @Override
-    protected void await() {}
+    protected void await() {
+
+    }
 }
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java
index fc62c2e..1f57192 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryVacationRelayIntegrationTest.java
@@ -36,7 +36,9 @@ public class MemoryVacationRelayIntegrationTest extends VacationRelayIntegration
     private final InMemoryDNSService inMemoryDNSService = new InMemoryDNSService();
 
     @Override
-    protected void await() {}
+    protected void await() {
+
+    }
 
     @Override
     protected GuiceJamesServer getJmapServer() throws IOException {
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
index dd5e83a..8afa80b 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
@@ -20,7 +20,6 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
-
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
index 8fcccca..481f1b8 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
@@ -20,7 +20,6 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
-
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
index 602d761..8324ef4 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
@@ -20,7 +20,6 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
-
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethodTest.java
index 242bc8c..22ad61d 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethodTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethodTest.java
@@ -31,10 +31,10 @@ import org.apache.james.core.Username;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.Vacation;
 import org.apache.james.jmap.api.vacation.VacationRepository;
-import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.GetMailboxesRequest;
 import org.apache.james.jmap.draft.model.GetVacationRequest;
 import org.apache.james.jmap.draft.model.GetVacationResponse;
+import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.SetMailboxesRequest;
 import org.apache.james.jmap.draft.model.VacationResponse;
 import org.apache.james.mailbox.MailboxSession;
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java
index 5f297b0..d55399f 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java
@@ -34,7 +34,6 @@ import java.time.ZonedDateTime;
 
 import org.apache.james.core.Username;
 import org.apache.james.jmap.draft.methods.ValueWithId.MessageWithId;
-import org.apache.james.jmap.draft.model.Attachment;
 import org.apache.james.jmap.draft.model.CreationMessage;
 import org.apache.james.jmap.draft.model.CreationMessage.DraftEmailer;
 import org.apache.james.jmap.draft.model.CreationMessageId;
@@ -53,7 +52,6 @@ import org.apache.james.mime4j.dom.Multipart;
 import org.apache.james.mime4j.dom.TextBody;
 import org.apache.james.mime4j.dom.address.Mailbox;
 import org.apache.james.mime4j.dom.field.ContentTypeField;
-import org.apache.james.mime4j.field.Fields;
 import org.apache.james.mime4j.message.BasicBodyFactory;
 import org.apache.james.mime4j.stream.Field;
 import org.assertj.core.data.Index;
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/RequestHandlerTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/RequestHandlerTest.java
index 2934f62..12c9713 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/RequestHandlerTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/RequestHandlerTest.java
@@ -23,7 +23,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.tuple;
 
 import java.util.List;
-import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import javax.inject.Inject;
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMailboxesMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMailboxesMethodTest.java
index cb8be95..ea0ce18 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMailboxesMethodTest.java
@@ -26,9 +26,9 @@ import static org.mockito.Mockito.when;
 
 import java.util.stream.Stream;
 
-import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.GetMailboxesRequest;
 import org.apache.james.jmap.draft.model.MailboxCreationId;
+import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.SetMailboxesRequest;
 import org.apache.james.jmap.draft.model.SetMailboxesResponse;
 import org.apache.james.jmap.draft.model.mailbox.Mailbox;
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethodTest.java
index 50695c3..f8c9c20 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethodTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethodTest.java
@@ -35,8 +35,8 @@ import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.NotificationRegistry;
 import org.apache.james.jmap.api.vacation.Vacation;
 import org.apache.james.jmap.api.vacation.VacationRepository;
-import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.GetMailboxesRequest;
+import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.SetError;
 import org.apache.james.jmap.draft.model.SetMailboxesRequest;
 import org.apache.james.jmap.draft.model.SetVacationRequest;
@@ -48,6 +48,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableMap;
+
 import reactor.core.publisher.Mono;
 
 public class SetVacationResponseMethodTest {
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/mailbox/MailboxNamespaceTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/mailbox/MailboxNamespaceTest.java
index bf13b32..6af421d 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/mailbox/MailboxNamespaceTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/mailbox/MailboxNamespaceTest.java
@@ -23,7 +23,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.apache.james.core.Username;
-
 import org.junit.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/FilterToCriteriaTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/FilterToCriteriaTest.java
index 30d73ee..c03cbac 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/FilterToCriteriaTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/utils/FilterToCriteriaTest.java
@@ -60,7 +60,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenFrom() {
-        String from = "sender@james.org";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String from = "sender@james.org";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .from(from)
                 .build());
 
@@ -69,7 +70,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenTo() {
-        String to = "recipient@james.org";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String to = "recipient@james.org";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .to(to)
                 .build());
 
@@ -78,7 +80,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenCc() {
-        String cc = "copy@james.org";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String cc = "copy@james.org";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .cc(cc)
                 .build());
 
@@ -86,7 +89,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenHasAttachment() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenHasAttachment() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
             .hasAttachment(true)
             .build());
 
@@ -94,7 +98,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenHasNoAttachment() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenHasNoAttachment() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
             .hasAttachment(false)
             .build());
 
@@ -103,7 +108,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenBcc() {
-        String bcc = "blindcopy@james.org";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String bcc = "blindcopy@james.org";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .bcc(bcc)
                 .build());
 
@@ -112,7 +118,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenSubject() {
-        String subject = "subject";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String subject = "subject";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .subject(subject)
                 .build());
 
@@ -121,7 +128,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenBody() {
-        String body = "body";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String body = "body";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .body(body)
                 .build());
 
@@ -130,7 +138,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenAttachments() {
-        String attachments = "attachments";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String attachments = "attachments";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .attachments(attachments)
                 .build());
 
@@ -139,7 +148,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenText() {
-        String text = "text";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String text = "text";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .text(text)
                 .build());
 
@@ -156,7 +166,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenAfter() {
-        ZonedDateTime after = ZonedDateTime.now();Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        ZonedDateTime after = ZonedDateTime.now();
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .after(after)
                 .build());
 
@@ -165,7 +176,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenBefore() {
-        ZonedDateTime before = ZonedDateTime.now();Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        ZonedDateTime before = ZonedDateTime.now();
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .before(before)
                 .build());
 
@@ -173,7 +185,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenIsAnswered() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsAnswered() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .isAnswered(true)
                 .build());
 
@@ -181,7 +194,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenIsDraft() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsDraft() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .isDraft(true)
                 .build());
 
@@ -189,7 +203,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenIsFlagged() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsFlagged() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .isFlagged(true)
                 .build());
 
@@ -197,7 +212,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenIsUnread() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsUnread() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .isUnread(true)
                 .build());
 
@@ -206,7 +222,8 @@ public class FilterToCriteriaTest {
 
 
     @Test
-    public void filterConditionShouldMapWhenIsNotAnswered() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsNotAnswered() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
             .isAnswered(false)
             .build());
 
@@ -214,7 +231,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenIsNotDraft() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsNotDraft() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
             .isDraft(false)
             .build());
 
@@ -222,7 +240,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenIsNotFlagged() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsNotFlagged() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
             .isFlagged(false)
             .build());
 
@@ -230,7 +249,8 @@ public class FilterToCriteriaTest {
     }
 
     @Test
-    public void filterConditionShouldMapWhenIsRead() {Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+    public void filterConditionShouldMapWhenIsRead() {
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
             .isUnread(false)
             .build());
 
@@ -239,7 +259,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenMaxSize() {
-        int maxSize = 123;Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        int maxSize = 123;
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .maxSize(maxSize)
                 .build());
 
@@ -248,7 +269,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenMinSize() {
-        int minSize = 4;Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        int minSize = 4;
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .minSize(minSize)
                 .build());
 
@@ -257,7 +279,8 @@ public class FilterToCriteriaTest {
 
     @Test
     public void filterConditionShouldMapWhenHeaderWithOneElement() {
-        String headerName = "name";Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
+        String headerName = "name";
+        Stream<SearchQuery.Criterion> criteria = new FilterToCriteria().convert(FilterCondition.builder()
                 .header(Header.from(ImmutableList.of(headerName)))
                 .build());
 
@@ -279,7 +302,8 @@ public class FilterToCriteriaTest {
     @Test
     public void filterConditionShouldMapTwoConditions() {
         String from = "sender@james.org";
-        String to = "recipient@james.org";Filter filter = FilterOperator.and(
+        String to = "recipient@james.org";
+        Filter filter = FilterOperator.and(
                 FilterCondition.builder()
                     .from(from)
                     .build(),
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/JWTAuthenticationStrategyTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/JWTAuthenticationStrategyTest.java
index ac5169d..5c8b3dd 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/JWTAuthenticationStrategyTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/JWTAuthenticationStrategyTest.java
@@ -103,7 +103,7 @@ public class JWTAuthenticationStrategyTest {
     }
 
     @Test
-    public void createMailboxSessionShouldReturnWhenAuthHeadersAreValid(){
+    public void createMailboxSessionShouldReturnWhenAuthHeadersAreValid() {
         String username = "123456789";
         String validAuthHeader = "valid";
         String fakeAuthHeaderWithPrefix = JWTAuthenticationStrategy.AUTHORIZATION_HEADER_PREFIX + validAuthHeader;
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageIdTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageIdTest.java
index c6d63d7..8243ef0 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageIdTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageIdTest.java
@@ -32,7 +32,6 @@ import org.apache.james.mime4j.message.BodyPartBuilder;
 import org.apache.james.mime4j.message.MultipartBuilder;
 import org.apache.james.mime4j.message.SingleBodyBuilder;
 import org.apache.james.user.api.UsersRepository;
-
 import org.junit.Test;
 
 public class ExtractMDNOriginalJMAPMessageIdTest {
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/VacationMailetTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/VacationMailetTest.java
index 6ba73b7..d03b751 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/VacationMailetTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/VacationMailetTest.java
@@ -48,6 +48,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
+
 import reactor.core.publisher.Mono;
 
 public class VacationMailetTest {
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java
index 27d503a..53a0883 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java
@@ -57,7 +57,6 @@ import java.util.Locale;
 import java.util.Optional;
 import java.util.stream.Stream;
 
-import org.apache.james.core.Username;
 import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.jmap.api.filtering.Rule;
 import org.apache.james.jmap.api.filtering.Rule.Condition.Field;
diff --git a/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java b/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java
index 5faaa81..c70bcb8 100644
--- a/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java
+++ b/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java
@@ -30,6 +30,7 @@ import org.apache.james.server.task.json.JsonTaskSerializer;
 import org.junit.jupiter.api.Test;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
+
 import net.javacrumbs.jsonunit.assertj.JsonAssertions;
 
 class CassandraMappingsSolveInconsistenciesTaskTest {
diff --git a/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/authentication/JwtFilterTest.java b/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/authentication/JwtFilterTest.java
index 1b2e659..05cc9da 100644
--- a/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/authentication/JwtFilterTest.java
+++ b/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/authentication/JwtFilterTest.java
@@ -52,7 +52,9 @@ public class JwtFilterTest {
         }
 
         @Override
-        public void describeTo(Description description) {}
+        public void describeTo(Description description) {
+            
+        }
     };
 
     private JwtTokenVerifier jwtTokenVerifier;
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AddressMappingRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AddressMappingRoutesTest.java
index d677a7a..bebf415 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AddressMappingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/AddressMappingRoutesTest.java
@@ -86,7 +86,7 @@ class AddressMappingRoutesTest {
     @Test
     void addAddressMappingShouldReturnNotFoundWhenOneParameterIsEmpty() {
         when()
-            .post(MAPPING_SOURCE + "/targets/" )
+            .post(MAPPING_SOURCE + "/targets/")
         .then()
             .statusCode(HttpStatus.NOT_FOUND_404);
     }
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java
index 2354290..99bc9f8 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java
@@ -45,9 +45,9 @@ import org.apache.james.rrt.api.CanSendFrom;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
+import org.apache.james.rrt.lib.AliasReverseResolverImpl;
 import org.apache.james.rrt.lib.CanSendFromImpl;
 import org.apache.james.rrt.lib.MappingSource;
-import org.apache.james.rrt.lib.AliasReverseResolverImpl;
 import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java
index ef5b656..7446c16 100644
--- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java
@@ -46,55 +46,55 @@ class WebadminApiQuerySerializationContractTest {
     private static final ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.parse("2007-12-03T10:15:30+01:00[Europe/Paris]");
     private static final String SUBJECT = "James";
 
-    private final static String HAS_ATTACHMENT_FILE = "has_attachment.json";
-    private final static QueryDTO HAS_ATTACHMENT_DTO = new QueryDTO(AND,
+    private static final String HAS_ATTACHMENT_FILE = "has_attachment.json";
+    private static final QueryDTO HAS_ATTACHMENT_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.HAS_ATTACHMENT.getValue(), Operator.EQUALS.getValue(), "true")));
 
-    private final static String HAS_NO_ATTACHMENT_FILE = "has_no_attachment.json";
-    private final static QueryDTO HAS_NO_ATTACHMENT_DTO = new QueryDTO(AND,
+    private static final String HAS_NO_ATTACHMENT_FILE = "has_no_attachment.json";
+    private static final QueryDTO HAS_NO_ATTACHMENT_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.HAS_ATTACHMENT.getValue(), Operator.EQUALS.getValue(), "false")));
 
-    private final static String HAS_SENDER_FILE = "has_sender.json";
-    private final static QueryDTO HAS_SENDER_DTO = new QueryDTO(AND,
+    private static final String HAS_SENDER_FILE = "has_sender.json";
+    private static final QueryDTO HAS_SENDER_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.SENDER.getValue(), Operator.EQUALS.getValue(), USER_JAMES)));
 
-    private final static String CONTAINS_RECIPIENT_FILE = "contains_recipient.json";
-    private final static QueryDTO CONTAINS_RECIPIENT_DTO = new QueryDTO(AND,
+    private static final String CONTAINS_RECIPIENT_FILE = "contains_recipient.json";
+    private static final QueryDTO CONTAINS_RECIPIENT_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.RECIPIENTS.getValue(), Operator.CONTAINS.getValue(), USER_JAMES)));
 
-    private final static String CONTAINS_ORIGIN_MAILBOX_FILE = "contains_origin_mailbox.json";
-    private final static QueryDTO CONTAINS_ORIGIN_MAILBOX_DTO = new QueryDTO(AND,
+    private static final String CONTAINS_ORIGIN_MAILBOX_FILE = "contains_origin_mailbox.json";
+    private static final QueryDTO CONTAINS_ORIGIN_MAILBOX_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.ORIGIN_MAILBOXES.getValue(), Operator.CONTAINS.getValue(), MAILBOX_1_ID.serialize())));
 
-    private final static String DELIVERY_BEFORE_FILE = "zoned_date_time_before_or_equals.json";
-    private final static QueryDTO DELIVERY_BEFORE_DTO = new QueryDTO(AND,
+    private static final String DELIVERY_BEFORE_FILE = "zoned_date_time_before_or_equals.json";
+    private static final QueryDTO DELIVERY_BEFORE_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.DELIVERY_DATE.getValue(), Operator.BEFORE_OR_EQUALS.getValue(), ZONED_DATE_TIME.toString())));
 
-    private final static String DELETED_AFTER_FILE = "zoned_date_time_after_or_equals.json";
-    private final static QueryDTO DELETED_AFTER_DTO = new QueryDTO(AND,
+    private static final String DELETED_AFTER_FILE = "zoned_date_time_after_or_equals.json";
+    private static final QueryDTO DELETED_AFTER_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.DELETION_DATE.getValue(), Operator.AFTER_OR_EQUALS.getValue(), ZONED_DATE_TIME.toString())));
 
-    private final static String SUBJECT_CONTAINS_FILE = "string_contains.json";
-    private final static QueryDTO SUBJECT_CONTAINS_DTO = new QueryDTO(AND,
+    private static final String SUBJECT_CONTAINS_FILE = "string_contains.json";
+    private static final QueryDTO SUBJECT_CONTAINS_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.SUBJECT.getValue(), Operator.CONTAINS.getValue(), SUBJECT)));
 
-    private final static String SUBJECT_CONTAINS_IGNORE_CASE_FILE = "string_contains_ignore_case.json";
-    private final static QueryDTO SUBJECT_CONTAINS_IGNORE_CASE_DTO = new QueryDTO(AND,
+    private static final String SUBJECT_CONTAINS_IGNORE_CASE_FILE = "string_contains_ignore_case.json";
+    private static final QueryDTO SUBJECT_CONTAINS_IGNORE_CASE_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.SUBJECT.getValue(), Operator.CONTAINS_IGNORE_CASE.getValue(), SUBJECT)));
 
-    private final static String SUBJECT_EQUALS_FILE = "string_equals.json";
-    private final static QueryDTO SUBJECT_EQUALS_DTO = new QueryDTO(AND,
+    private static final String SUBJECT_EQUALS_FILE = "string_equals.json";
+    private static final QueryDTO SUBJECT_EQUALS_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.SUBJECT.getValue(), Operator.EQUALS.getValue(), SUBJECT)));
 
-    private final static String SUBJECT_EQUALS_IGNORE_CASE_FILE = "string_equals_ignore_case.json";
-    private final static QueryDTO SUBJECT_EQUALS_IGNORE_CASE_DTO = new QueryDTO(AND,
+    private static final String SUBJECT_EQUALS_IGNORE_CASE_FILE = "string_equals_ignore_case.json";
+    private static final QueryDTO SUBJECT_EQUALS_IGNORE_CASE_DTO = new QueryDTO(AND,
         ImmutableList.of(new CriterionDTO(FieldName.SUBJECT.getValue(), Operator.EQUALS_IGNORE_CASE.getValue(), SUBJECT)));
 
-    private final static TestId.Factory mailboxIdFactory = new TestId.Factory();
-    private final static QueryTranslator queryTranslator = new QueryTranslator(mailboxIdFactory);
-    private final static RestoreService restoreService = Mockito.mock(RestoreService.class);
-    private final static DeletedMessagesVaultRestoreTaskDTO.Factory factory = new DeletedMessagesVaultRestoreTaskDTO.Factory(restoreService, queryTranslator);
-    private final static JsonTaskSerializer taskSerializer = JsonTaskSerializer.of(DeletedMessagesVaultRestoreTaskDTO.module(factory));
+    private static final TestId.Factory mailboxIdFactory = new TestId.Factory();
+    private static final QueryTranslator queryTranslator = new QueryTranslator(mailboxIdFactory);
+    private static final RestoreService restoreService = Mockito.mock(RestoreService.class);
+    private static final DeletedMessagesVaultRestoreTaskDTO.Factory factory = new DeletedMessagesVaultRestoreTaskDTO.Factory(restoreService, queryTranslator);
+    private static final JsonTaskSerializer taskSerializer = JsonTaskSerializer.of(DeletedMessagesVaultRestoreTaskDTO.module(factory));
 
     /**
      * Enforce that the format of the query serialized in json in the body of the request to the webadmin is stable.
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/SerializableReIndexingExecutionFailuresTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/SerializableReIndexingExecutionFailuresTest.java
index e9ad633..79cd0e9 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/SerializableReIndexingExecutionFailuresTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/SerializableReIndexingExecutionFailuresTest.java
@@ -26,10 +26,10 @@ import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.datatype.guava.GuavaModule;
+import com.google.common.collect.ImmutableList;
 
 import net.javacrumbs.jsonunit.core.Option;
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesNoTasksTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesNoTasksTest.java
index 915454f..f68ef07 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesNoTasksTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesNoTasksTest.java
@@ -34,7 +34,8 @@ import org.hamcrest.Matchers;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableSet;
+
+import com.google.common.collect.ImmutableSet;
 
 import io.restassured.RestAssured;
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
index f84804a..a15fd6c 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
@@ -103,9 +103,9 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.mockito.ArgumentCaptor;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableSet;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 
 import io.restassured.RestAssured;
 import reactor.core.publisher.Mono;
diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java
index ca68379..296778c 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java
+++ b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java
@@ -43,7 +43,7 @@ class DeleteMailsFromMailQueueTaskTest {
 
     private MailQueueFactory<ManageableMailQueue> mailQueueFactory;
     private ManageableMailQueue mockedQueue;
-    private final static MailQueueName queueName = MailQueueName.of("anyQueue");
+    private static final MailQueueName queueName = MailQueueName.of("anyQueue");
 
     @BeforeEach
     void setUp() {
diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/WebAdminDeleteMailsFromMailQueueTaskAdditionalInformationDTOTest.java b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/WebAdminDeleteMailsFromMailQueueTaskAdditionalInformationDTOTest.java
index 09ea48c..06845cf 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/WebAdminDeleteMailsFromMailQueueTaskAdditionalInformationDTOTest.java
+++ b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/WebAdminDeleteMailsFromMailQueueTaskAdditionalInformationDTOTest.java
@@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test;
 class WebAdminDeleteMailsFromMailQueueTaskAdditionalInformationDTOTest {
     private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z");
 
-    private final static MailQueueName queueName = MailQueueName.of("anyQueue");
+    private static final MailQueueName queueName = MailQueueName.of("anyQueue");
 
     @Test
     void additionalInformationShouldBeSerializable() throws Exception {
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/DelayedMailQueueContract.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/DelayedMailQueueContract.java
index e0b51a0..dde1079 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/DelayedMailQueueContract.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/DelayedMailQueueContract.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
 import org.junit.jupiter.api.Test;
 
 import com.google.common.base.Stopwatch;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 import reactor.core.scheduler.Schedulers;
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
index 1b21737..9252f62 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
@@ -56,6 +56,7 @@ import org.junit.jupiter.api.Test;
 import com.github.fge.lambdas.Throwing;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Strings;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 import reactor.core.scheduler.Schedulers;
@@ -514,8 +515,8 @@ public interface MailQueueContract {
     @Test
     default void dequeueShouldBeConcurrent() {
         MailQueue testee = getMailQueue();
-        int NB_MAILS = 1000;
-        IntStream.range(0, NB_MAILS)
+        int nbMails = 1000;
+        IntStream.range(0, nbMails)
             .forEach(Throwing.intConsumer(i -> testee.enQueue(defaultMail()
                 .name("name" + i)
                 .build())));
@@ -539,7 +540,7 @@ public interface MailQueueContract {
 
         Awaitility.await()
             .atMost(org.awaitility.Duration.ONE_MINUTE)
-            .until(() -> dequeuedMails.size() >= NB_MAILS);
+            .until(() -> dequeuedMails.size() >= nbMails);
 
     }
 
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryTest.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryTest.java
index c565603..f68193e 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryTest.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryTest.java
@@ -1,7 +1,5 @@
 package org.apache.james.queue.api;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 import org.assertj.core.api.Assertions;
 import org.junit.jupiter.api.Test;
 
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 4228122..d34a953 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
@@ -23,7 +23,6 @@ import static java.time.temporal.ChronoUnit.HOURS;
 import static org.apache.james.queue.api.Mails.defaultMail;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.awaitility.Awaitility.await;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
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 5651d02..c40fb11 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
@@ -19,15 +19,11 @@
 
 package org.apache.james.queue.rabbitmq;
 
-import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.time.Clock;
-import java.time.Duration;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.james.backends.rabbitmq.RabbitMQExtension;
 import org.apache.james.blob.api.HashBlobId;
@@ -39,10 +35,8 @@ import org.apache.james.queue.api.MailQueueFactoryContract;
 import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
 import org.apache.james.queue.rabbitmq.view.RabbitMQMailQueueConfiguration;
 import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
-import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQMailQueue> {
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
index d7e9f04..1caf7aa 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
@@ -37,7 +37,6 @@ import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMai
 import org.apache.james.queue.rabbitmq.view.cassandra.configuration.EventsourcingConfigurationManagement;
 
 import com.datastax.driver.core.Session;
-import reactor.core.publisher.Mono;
 
 public class CassandraMailQueueViewTestFactory {
 
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/DTOTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/DTOTest.java
index be2c32a..1bb06e8 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/DTOTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/DTOTest.java
@@ -26,12 +26,12 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.Duration;
 
-import com.fasterxml.jackson.databind.jsontype.NamedType;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.jsontype.NamedType;
 import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 
diff --git a/server/task/task-api/src/test/java/org/apache/james/task/MemoryReferenceWithCounterTask.java b/server/task/task-api/src/test/java/org/apache/james/task/MemoryReferenceWithCounterTask.java
index c8e9953..e11a29a 100644
--- a/server/task/task-api/src/test/java/org/apache/james/task/MemoryReferenceWithCounterTask.java
+++ b/server/task/task-api/src/test/java/org/apache/james/task/MemoryReferenceWithCounterTask.java
@@ -62,7 +62,7 @@ public class MemoryReferenceWithCounterTask implements Task {
 
         @Override
         public boolean equals(Object that) {
-            if(that instanceof MemoryReferenceWithCounterTask.AdditionalInformation) {
+            if (that instanceof MemoryReferenceWithCounterTask.AdditionalInformation) {
                 return Objects.equals(this.count, ((AdditionalInformation) that).getCount()) &&
                     Objects.equals(this.timestamp, ((AdditionalInformation) that).timestamp);
             }
diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
index 75492b8..3bb2478 100644
--- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
+++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java
@@ -1,4 +1,4 @@
- /***************************************************************
+/***************************************************************
  * 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        *
diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueuePersistenceTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueuePersistenceTest.java
index da91395..1a3df6b 100644
--- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueuePersistenceTest.java
+++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueuePersistenceTest.java
@@ -70,10 +70,10 @@ class RabbitMQWorkQueuePersistenceTest {
      */
     @Test
     void submittedMessageShouldSurviveRabbitMQRestart() throws Exception {
-        Task TASK = new MemoryReferenceTask(() -> Task.Result.COMPLETED);
-        TaskWithId TASK_WITH_ID = new TaskWithId(TASK_ID, TASK);
+        Task task = new MemoryReferenceTask(() -> Task.Result.COMPLETED);
+        TaskWithId taskWithId = new TaskWithId(TASK_ID, task);
 
-        testee.submit(TASK_WITH_ID);
+        testee.submit(taskWithId);
 
         //wait for submit to be effective
         Thread.sleep(500);
@@ -85,7 +85,7 @@ class RabbitMQWorkQueuePersistenceTest {
 
         await().atMost(Duration.ONE_MINUTE).until(() -> !worker.results.isEmpty());
 
-        assertThat(worker.tasks).containsExactly(TASK_WITH_ID);
+        assertThat(worker.tasks).containsExactly(taskWithId);
         assertThat(worker.results).containsExactly(Task.Result.COMPLETED);
     }
 
diff --git a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/EventSourcingTaskManagerTest.java b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/EventSourcingTaskManagerTest.java
index 852551c..fb6f30f 100644
--- a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/EventSourcingTaskManagerTest.java
+++ b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/EventSourcingTaskManagerTest.java
@@ -20,7 +20,6 @@
 package org.apache.james.task.eventsourcing;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
 
 import org.apache.james.eventsourcing.eventstore.EventStore;
 import org.apache.james.eventsourcing.eventstore.memory.InMemoryEventStore;
@@ -34,8 +33,6 @@ import org.apache.james.task.TaskId;
 import org.apache.james.task.TaskManager;
 import org.apache.james.task.TaskManagerContract;
 import org.apache.james.task.TaskManagerWorker;
-import org.awaitility.Awaitility;
-import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -45,12 +42,6 @@ import reactor.core.publisher.Mono;
 
 @ExtendWith(CountDownLatchExtension.class)
 class EventSourcingTaskManagerTest implements TaskManagerContract {
-    ConditionFactory CALMLY_AWAIT = Awaitility
-        .with().pollInterval(ONE_HUNDRED_MILLISECONDS)
-        .and().pollDelay(ONE_HUNDRED_MILLISECONDS)
-        .await();
-
-
     private static final Hostname HOSTNAME = new Hostname("foo");
     private EventSourcingTaskManager taskManager;
     private EventStore eventStore;
@@ -92,7 +83,7 @@ class EventSourcingTaskManagerTest implements TaskManagerContract {
         TaskId taskId = taskManager.submit(new MemoryReferenceTask(() -> Task.Result.COMPLETED));
         TaskAggregateId aggregateId = new TaskAggregateId(taskId);
 
-        CALMLY_AWAIT.untilAsserted(() ->
+        calmlyAwait.untilAsserted(() ->
             assertThat(Mono.from(eventStore.getEventsOfAggregate(aggregateId)).block().getEventsJava())
                 .filteredOn(event -> event instanceof Started)
                 .extracting("hostname")
@@ -108,7 +99,7 @@ class EventSourcingTaskManagerTest implements TaskManagerContract {
         taskManager.cancel(taskId);
 
         TaskAggregateId aggregateId = new TaskAggregateId(taskId);
-        CALMLY_AWAIT.untilAsserted(() ->
+        calmlyAwait.untilAsserted(() ->
             assertThat(Mono.from(eventStore.getEventsOfAggregate(aggregateId)).block().getEventsJava())
                 .filteredOn(event -> event instanceof CancelRequested)
                 .extracting("hostname")
diff --git a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TaskAggregateTest.java b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TaskAggregateTest.java
index 3e702a5..7a0b822 100644
--- a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TaskAggregateTest.java
+++ b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TaskAggregateTest.java
@@ -37,6 +37,7 @@ import org.junit.jupiter.api.Test;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.collect.Streams;
+
 import scala.Option;
 import scala.jdk.javaapi.CollectionConverters;
 
@@ -56,13 +57,13 @@ class TaskAggregateTest {
     }
 
     @Test
-    void TaskAggregateShouldThrowWhenHistoryDoesntStartWithCreatedEvent() {
+    void taskAggregateShouldThrowWhenHistoryDoesntStartWithCreatedEvent() {
         assertThatThrownBy(() -> TaskAggregate.fromHistory(ID, buildHistory(eventId -> Started.apply(ID, eventId, HOSTNAME))))
             .isInstanceOf(IllegalArgumentException.class);
     }
 
     @Test
-    void TaskAggregateShouldThrowWhenEmptyHistory() {
+    void taskAggregateShouldThrowWhenEmptyHistory() {
         assertThatThrownBy(() -> TaskAggregate.fromHistory(ID, History.empty())).isInstanceOf(IllegalArgumentException.class);
     }
 
diff --git a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java
index 4fdda8b..45fe4a1 100644
--- a/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java
+++ b/server/task/task-memory/src/test/java/org/apache/james/task/eventsourcing/TerminationSubscriberContract.java
@@ -29,7 +29,6 @@ import java.util.List;
 
 import org.apache.james.eventsourcing.Event;
 import org.apache.james.eventsourcing.EventId;
-
 import org.apache.james.task.Hostname;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskId;
diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/CombinedDecoder.java b/third-party/linshare/src/test/java/org/apache/james/linshare/CombinedDecoder.java
index d6c96e6..0799782 100644
--- a/third-party/linshare/src/test/java/org/apache/james/linshare/CombinedDecoder.java
+++ b/third-party/linshare/src/test/java/org/apache/james/linshare/CombinedDecoder.java
@@ -22,9 +22,8 @@ package org.apache.james.linshare;
 import java.io.IOException;
 import java.lang.reflect.Type;
 
-import org.testcontainers.shaded.com.google.common.collect.ImmutableMap;
-
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableMap;
 
 import feign.FeignException;
 import feign.Response;
diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareConfigurationTest.java b/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareConfigurationTest.java
index 093bceb..aabbd61 100644
--- a/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareConfigurationTest.java
+++ b/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareConfigurationTest.java
@@ -33,10 +33,10 @@ import nl.jqno.equalsverifier.EqualsVerifier;
 
 class LinshareConfigurationTest {
 
-    private final static String EMPTY_STRING = "";
-    private final static String SOME_RANDOM_STRING = "laksdhfdksd";
-    private final String DEFAULT_URL = "http://127.0.0.1:8080";
-    private final static String DEFAULT_UUID = UUID.randomUUID().toString();
+    private static final String EMPTY_STRING = "";
+    private static final String SOME_RANDOM_STRING = "laksdhfdksd";
+    private static final String DEFAULT_URL = "http://127.0.0.1:8080";
+    private static final String DEFAULT_UUID = UUID.randomUUID().toString();
 
     @Test
     void shouldMatchBeanContract() {
diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareFixture.java b/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareFixture.java
index 1ee6217..6d5f0b9 100644
--- a/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareFixture.java
+++ b/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareFixture.java
@@ -23,11 +23,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
 
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
-
 import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 
 public interface LinshareFixture {
 
diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareTest.java b/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareTest.java
index 0e9fd3a..7a40b58 100644
--- a/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareTest.java
+++ b/third-party/linshare/src/test/java/org/apache/james/linshare/LinshareTest.java
@@ -21,12 +21,12 @@ package org.apache.james.linshare;
 import static io.restassured.RestAssured.given;
 import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
+import static org.apache.james.linshare.LinshareExtension.LinshareAPIForAdminTesting;
 import static org.apache.james.linshare.LinshareFixture.ACCOUNT_ENABLED;
 import static org.apache.james.linshare.LinshareFixture.ADMIN_ACCOUNT;
 import static org.apache.james.linshare.LinshareFixture.TECHNICAL_ACCOUNT;
 import static org.apache.james.linshare.LinshareFixture.TECHNICAL_PERMISSIONS;
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.apache.james.linshare.LinshareExtension.LinshareAPIForAdminTesting;
 
 import java.nio.charset.StandardCharsets;
 import java.util.List;


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 07/07: JAMES-3277 Rework StoreMessageIdManager::setInMailboxes to limit mailbox reads

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit a7fdccbec2cb992bec6a27fd2a6250672264282f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 26 10:32:35 2020 +0700

    JAMES-3277 Rework StoreMessageIdManager::setInMailboxes to limit mailbox reads
    
    Only read mailboxes once, and carry them over.
    
    Centralize right resolution
---
 .../CassandraMessageIdManagerSideEffectTest.java   |   2 -
 .../mailbox/store/MessageMovesWithMailbox.java     | 152 +++++++++++++++++
 .../james/mailbox/store/StoreMessageIdManager.java | 186 +++++++++++++--------
 3 files changed, 264 insertions(+), 76 deletions(-)

diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
index 1f60f1c..082ee2a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
@@ -32,7 +32,6 @@ import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.AbstractMessageIdManagerSideEffectTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.assertj.core.api.SoftAssertions;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -48,7 +47,6 @@ class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSi
         return CassandraMessageIdManagerTestSystem.createTestingData(cassandraCluster.getCassandraCluster(), quotaManager, eventBus, preDeletionHooks);
     }
 
-    @Disabled("11 mailbox reads and 10 acl reads")
     @Test
     void setInMailboxesShouldLimitMailboxReads(CassandraCluster cassandra) throws Exception {
         givenUnlimitedQuota();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageMovesWithMailbox.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageMovesWithMailbox.java
new file mode 100644
index 0000000..ebc8fc6
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageMovesWithMailbox.java
@@ -0,0 +1,152 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.mailbox.store;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Objects;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
+
+import org.apache.james.mailbox.model.Mailbox;
+import org.apache.james.mailbox.model.MessageMoves;
+
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+
+public class MessageMovesWithMailbox {
+    public static class Builder {
+        private final ImmutableSet.Builder<Mailbox> previousMailboxes;
+        private final ImmutableSet.Builder<Mailbox> targetMailboxes;
+
+        private Builder() {
+            previousMailboxes = ImmutableSet.builder();
+            targetMailboxes = ImmutableSet.builder();
+        }
+
+        public Builder previousMailboxes(Iterable<Mailbox> mailboxes) {
+            previousMailboxes.addAll(mailboxes);
+            return this;
+        }
+
+        public Builder previousMailboxes(Mailbox... mailboxes) {
+            previousMailboxes.addAll(Arrays.asList(mailboxes));
+            return this;
+        }
+
+        public Builder targetMailboxes(Iterable<Mailbox> mailboxes) {
+            targetMailboxes.addAll(mailboxes);
+            return this;
+        }
+
+        public Builder targetMailboxes(Mailbox... mailboxes) {
+            targetMailboxes.addAll(Arrays.asList(mailboxes));
+            return this;
+        }
+
+        public MessageMovesWithMailbox build() {
+            return new MessageMovesWithMailbox(previousMailboxes.build(), targetMailboxes.build());
+        }
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    private final ImmutableSet<Mailbox> previousMailboxes;
+    private final ImmutableSet<Mailbox> targetMailboxes;
+
+    private MessageMovesWithMailbox(Collection<Mailbox> previousMailboxes, Collection<Mailbox> targetMailboxes) {
+        this.previousMailboxes = ImmutableSet.copyOf(previousMailboxes);
+        this.targetMailboxes = ImmutableSet.copyOf(targetMailboxes);
+    }
+
+    public boolean isChange() {
+        return !previousMailboxes.equals(targetMailboxes);
+    }
+
+    public Set<Mailbox> addedMailboxes() {
+        return Sets.difference(targetMailboxes, previousMailboxes);
+    }
+
+    public Set<Mailbox> removedMailboxes() {
+        return Sets.difference(previousMailboxes, targetMailboxes);
+    }
+
+    public ImmutableSet<Mailbox> getPreviousMailboxes() {
+        return previousMailboxes;
+    }
+
+    public ImmutableSet<Mailbox> getTargetMailboxes() {
+        return targetMailboxes;
+    }
+
+    public Stream<Mailbox> impactedMailboxes() {
+        return Stream.concat(
+            addedMailboxes().stream(),
+            removedMailboxes().stream());
+    }
+
+    public MessageMovesWithMailbox filterPrevious(Predicate<Mailbox> predicate) {
+        return builder()
+            .targetMailboxes(targetMailboxes)
+            .previousMailboxes(previousMailboxes.stream()
+                .filter(predicate)
+                .collect(Guavate.toImmutableSet()))
+            .build();
+    }
+
+    public MessageMovesWithMailbox filterTargets(Predicate<Mailbox> predicate) {
+        return builder()
+            .previousMailboxes(previousMailboxes)
+            .targetMailboxes(targetMailboxes.stream()
+                .filter(predicate)
+                .collect(Guavate.toImmutableSet()))
+            .build();
+    }
+
+    public MessageMoves asMessageMoves() {
+        return MessageMoves.builder()
+            .previousMailboxIds(previousMailboxes.stream()
+                .map(Mailbox::getMailboxId)
+                .collect(Guavate.toImmutableSet()))
+            .targetMailboxIds(targetMailboxes.stream()
+                .map(Mailbox::getMailboxId)
+                .collect(Guavate.toImmutableSet()))
+            .build();
+    }
+
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof MessageMovesWithMailbox) {
+            MessageMovesWithMailbox that = (MessageMovesWithMailbox) o;
+
+            return Objects.equals(this.previousMailboxes, that.previousMailboxes)
+                && Objects.equals(this.targetMailboxes, that.targetMailboxes);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(previousMailboxes, targetMailboxes);
+    }
+}
\ No newline at end of file
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 994daad..d934faf 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.mailbox.store;
 
-import static org.apache.james.mailbox.store.MailboxReactorUtils.block;
-
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -47,6 +45,7 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.extension.PreDeletionHook;
 import org.apache.james.mailbox.model.DeleteResult;
 import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.Right;
 import org.apache.james.mailbox.model.MailboxId;
@@ -118,7 +117,7 @@ public class StoreMessageIdManager implements MessageIdManager {
     public void setFlags(Flags newState, MessageManager.FlagsUpdateMode replace, MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
         MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
 
-        MailboxReactorUtils.block(assertRightsOnMailboxes(mailboxIds, mailboxSession, Right.Write));
+        MailboxReactorUtils.block(assertRightsOnMailboxIds(mailboxIds, mailboxSession, Right.Write));
 
         Multimap<MailboxId, UpdatedFlags> updatedFlags = messageIdMapper.setFlags(messageId, mailboxIds, newState, replace);
         for (Map.Entry<MailboxId, Collection<UpdatedFlags>> entry : updatedFlags.asMap().entrySet()) {
@@ -170,7 +169,7 @@ public class StoreMessageIdManager implements MessageIdManager {
     public DeleteResult delete(MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
         MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
 
-        MailboxReactorUtils.block(assertRightsOnMailboxes(mailboxIds, mailboxSession, Right.DeleteMessages));
+        MailboxReactorUtils.block(assertRightsOnMailboxIds(mailboxIds, mailboxSession, Right.DeleteMessages));
 
         List<MailboxMessage> messageList = messageIdMapper
             .find(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata)
@@ -243,92 +242,100 @@ public class StoreMessageIdManager implements MessageIdManager {
 
     @Override
     public void setInMailboxes(MessageId messageId, Collection<MailboxId> targetMailboxIds, MailboxSession mailboxSession) throws MailboxException {
-        MailboxReactorUtils.block(assertRightsOnMailboxes(targetMailboxIds, mailboxSession, Right.Read));
-
         List<MailboxMessage> currentMailboxMessages = findRelatedMailboxMessages(messageId, mailboxSession);
 
-        if (currentMailboxMessages.isEmpty()) {
-            LOGGER.info("Tried to access {} not accessible for {}", messageId, mailboxSession.getUser().asString());
-            return;
-        }
-
-        MessageMoves messageMoves = MessageMoves.builder()
+        MailboxReactorUtils.block(messageMovesWithMailbox(MessageMoves.builder()
             .targetMailboxIds(targetMailboxIds)
             .previousMailboxIds(toMailboxIds(currentMailboxMessages))
-            .build();
-
-        if (messageMoves.isChange()) {
-            applyMessageMoves(mailboxSession, currentMailboxMessages, messageMoves);
-        }
+            .build(), mailboxSession)
+            .flatMap(Throwing.<MessageMovesWithMailbox, Mono<Void>>function(messageMove -> {
+                MessageMovesWithMailbox refined = messageMove.filterPrevious(hasRightsOnMailbox(mailboxSession, Right.Read));
+
+                if (messageMove.getPreviousMailboxes().isEmpty()) {
+                    LOGGER.info("Tried to access {} not accessible for {}", messageId, mailboxSession.getUser().asString());
+                    return Mono.empty();
+                }
+                if (refined.isChange()) {
+                    return applyMessageMoves(mailboxSession, currentMailboxMessages, refined);
+                }
+                return Mono.empty();
+            }).sneakyThrow())
+            .subscribeOn(Schedulers.elastic()));
     }
 
     public void setInMailboxesNoCheck(MessageId messageId, MailboxId targetMailboxId, MailboxSession mailboxSession) throws MailboxException {
         MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
         List<MailboxMessage> currentMailboxMessages = messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata);
 
-        MessageMoves messageMoves = MessageMoves.builder()
-            .previousMailboxIds(toMailboxIds(currentMailboxMessages))
-            .targetMailboxIds(targetMailboxId)
-            .build();
 
-        if (messageMoves.isChange()) {
-            applyMessageMoveNoMailboxChecks(mailboxSession, currentMailboxMessages, messageMoves);
-        }
+        MailboxReactorUtils.block(messageMovesWithMailbox(MessageMoves.builder()
+            .targetMailboxIds(targetMailboxId)
+            .previousMailboxIds(toMailboxIds(currentMailboxMessages))
+            .build(), mailboxSession)
+            .flatMap(messageMove -> {
+                if (messageMove.isChange()) {
+                    return applyMessageMoveNoMailboxChecks(mailboxSession, currentMailboxMessages, messageMove);
+                }
+                return Mono.empty();
+            })
+            .subscribeOn(Schedulers.elastic()));
     }
 
     private List<MailboxMessage> findRelatedMailboxMessages(MessageId messageId, MailboxSession mailboxSession) throws MailboxException {
         MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
 
         return MailboxReactorUtils.block(messageIdMapper.findReactive(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata)
-            .filterWhen(hasRightsOn(mailboxSession, Right.Read))
             .collect(Guavate.toImmutableList()));
     }
 
-    private void applyMessageMoves(MailboxSession mailboxSession, List<MailboxMessage> currentMailboxMessages, MessageMoves messageMoves) throws MailboxException {
-        MailboxReactorUtils.block(assertRightsOnMailboxes(messageMoves.addedMailboxIds(), mailboxSession, Right.Insert));
-        MailboxReactorUtils.block(assertRightsOnMailboxes(messageMoves.removedMailboxIds(), mailboxSession, Right.DeleteMessages));
+    private Mono<Void> applyMessageMoves(MailboxSession mailboxSession, List<MailboxMessage> currentMailboxMessages, MessageMovesWithMailbox messageMoves) throws MailboxNotFoundException {
+        assertRightsOnMailboxes(messageMoves.addedMailboxes(), mailboxSession, Right.Insert);
+        assertRightsOnMailboxes(messageMoves.removedMailboxes(), mailboxSession, Right.DeleteMessages);
+        assertRightsOnMailboxes(messageMoves.getTargetMailboxes(), mailboxSession, Right.Read);
 
-        applyMessageMoveNoMailboxChecks(mailboxSession, currentMailboxMessages, messageMoves);
+        return applyMessageMoveNoMailboxChecks(mailboxSession, currentMailboxMessages, messageMoves);
     }
 
-    private void applyMessageMoveNoMailboxChecks(MailboxSession mailboxSession, List<MailboxMessage> currentMailboxMessages, MessageMoves messageMoves) throws MailboxException {
-        MailboxMessage mailboxMessage = currentMailboxMessages.stream().findAny().orElseThrow(() -> new MailboxNotFoundException("can't load message"));
-
-        validateQuota(messageMoves, mailboxMessage);
+    private Mono<Void> applyMessageMoveNoMailboxChecks(MailboxSession mailboxSession, List<MailboxMessage> currentMailboxMessages, MessageMovesWithMailbox messageMoves) {
+        Optional<MailboxMessage> mailboxMessage = currentMailboxMessages.stream().findAny();
 
-        addMessageToMailboxes(mailboxMessage, messageMoves.addedMailboxIds(), mailboxSession);
-        removeMessageFromMailboxes(mailboxMessage, messageMoves.removedMailboxIds(), mailboxSession);
+        if (mailboxMessage.isEmpty()) {
+            return Mono.error(new MailboxNotFoundException("can't load message"));
+        }
 
-        eventBus.dispatch(EventFactory.moved()
-            .session(mailboxSession)
-            .messageMoves(messageMoves)
-            .messageId(mailboxMessage.getMessageId())
-            .build(),
-            messageMoves.impactedMailboxIds()
-                .map(MailboxIdRegistrationKey::new)
-                .collect(Guavate.toImmutableSet()))
-            .subscribeOn(Schedulers.elastic())
-            .block();
+        return Mono.fromRunnable(Throwing.runnable(() -> validateQuota(messageMoves, mailboxMessage.get())).sneakyThrow())
+            .then(Mono.fromRunnable(Throwing.runnable(() ->
+                addMessageToMailboxes(mailboxMessage.get(), messageMoves.addedMailboxes(), mailboxSession)).sneakyThrow()))
+            .then(removeMessageFromMailboxes(mailboxMessage.get(), messageMoves.removedMailboxes(), mailboxSession))
+            .then(eventBus.dispatch(EventFactory.moved()
+                    .session(mailboxSession)
+                    .messageMoves(messageMoves.asMessageMoves())
+                    .messageId(mailboxMessage.get().getMessageId())
+                    .build(),
+                messageMoves.impactedMailboxes()
+                    .map(Mailbox::getMailboxId)
+                    .map(MailboxIdRegistrationKey::new)
+                    .collect(Guavate.toImmutableSet())));
     }
 
-    private void removeMessageFromMailboxes(MailboxMessage message, Set<MailboxId> mailboxesToRemove, MailboxSession mailboxSession) throws MailboxException {
+    private Mono<Void> removeMessageFromMailboxes(MailboxMessage message, Set<Mailbox> mailboxesToRemove, MailboxSession mailboxSession) {
         MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
-        MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
         MessageMetaData eventPayload = message.metaData();
 
-        for (MailboxId mailboxId: mailboxesToRemove) {
-            messageIdMapper.delete(message.getMessageId(), mailboxesToRemove);
-            mailboxMapper.findMailboxById(mailboxId)
+        ImmutableSet<MailboxId> mailboxIds = mailboxesToRemove.stream()
+            .map(Mailbox::getMailboxId)
+            .collect(Guavate.toImmutableSet());
+
+        return Mono.from(messageIdMapper.deleteReactive(message.getMessageId(), mailboxIds))
+            .then(Flux.fromIterable(mailboxesToRemove)
                 .flatMap(mailbox -> eventBus.dispatch(EventFactory.expunged()
                         .randomEventId()
                         .mailboxSession(mailboxSession)
                         .mailbox(mailbox)
                         .addMetaData(eventPayload)
                         .build(),
-                    new MailboxIdRegistrationKey(mailboxId)))
-            .subscribeOn(Schedulers.elastic())
-            .block();
-        }
+                    new MailboxIdRegistrationKey(mailbox.getMailboxId())))
+                .then());
     }
     
     private void dispatchFlagsChange(MailboxSession mailboxSession, MailboxId mailboxId, ImmutableList<UpdatedFlags> updatedFlags) throws MailboxException {
@@ -346,7 +353,7 @@ public class StoreMessageIdManager implements MessageIdManager {
         }
     }
 
-    private void validateQuota(MessageMoves messageMoves, MailboxMessage mailboxMessage) throws MailboxException {
+    private void validateQuota(MessageMovesWithMailbox messageMoves, MailboxMessage mailboxMessage) throws MailboxException {
         Map<QuotaRoot, Integer> messageCountByQuotaRoot = buildMapQuotaRoot(messageMoves);
         for (Map.Entry<QuotaRoot, Integer> entry : messageCountByQuotaRoot.entrySet()) {
             Integer additionalCopyCount = entry.getValue();
@@ -358,16 +365,16 @@ public class StoreMessageIdManager implements MessageIdManager {
         }
     }
 
-    private Map<QuotaRoot, Integer> buildMapQuotaRoot(MessageMoves messageMoves) throws MailboxException {
+    private Map<QuotaRoot, Integer> buildMapQuotaRoot(MessageMovesWithMailbox messageMoves) throws MailboxException {
         Map<QuotaRoot, Integer> messageCountByQuotaRoot = new HashMap<>();
-        for (MailboxId mailboxId : messageMoves.addedMailboxIds()) {
-            QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxId);
+        for (Mailbox mailbox : messageMoves.addedMailboxes()) {
+            QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailbox);
             int currentCount = Optional.ofNullable(messageCountByQuotaRoot.get(quotaRoot))
                 .orElse(0);
             messageCountByQuotaRoot.put(quotaRoot, currentCount + 1);
         }
-        for (MailboxId mailboxId : messageMoves.removedMailboxIds()) {
-            QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailboxId);
+        for (Mailbox mailbox : messageMoves.removedMailboxes()) {
+            QuotaRoot quotaRoot = quotaRootResolver.getQuotaRoot(mailbox);
             int currentCount = Optional.ofNullable(messageCountByQuotaRoot.get(quotaRoot))
                 .orElse(0);
             messageCountByQuotaRoot.put(quotaRoot, currentCount - 1);
@@ -375,16 +382,15 @@ public class StoreMessageIdManager implements MessageIdManager {
         return messageCountByQuotaRoot;
     }
 
-    private void addMessageToMailboxes(MailboxMessage mailboxMessage, Set<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
+    private void addMessageToMailboxes(MailboxMessage mailboxMessage, Set<Mailbox> mailboxes, MailboxSession mailboxSession) throws MailboxException {
         MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
-        MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
 
-        for (MailboxId mailboxId : mailboxIds) {
-            MailboxACL.Rfc4314Rights myRights = block(Mono.from(rightManager.myRights(mailboxId, mailboxSession)));
+        for (Mailbox mailbox : mailboxes) {
+            MailboxACL.Rfc4314Rights myRights = rightManager.myRights(mailbox, mailboxSession);
             boolean shouldPreserveFlags = myRights.contains(Right.Write);
             SimpleMailboxMessage copy =
                 SimpleMailboxMessage.from(mailboxMessage)
-                    .mailboxId(mailboxId)
+                    .mailboxId(mailbox.getMailboxId())
                     .flags(
                         FlagsFactory
                             .builder()
@@ -396,26 +402,25 @@ public class StoreMessageIdManager implements MessageIdManager {
                                     .build())
                             .build())
                     .build();
-            save(messageIdMapper, copy);
+            save(messageIdMapper, copy, mailbox);
 
-            mailboxMapper.findMailboxById(mailboxId)
-                .flatMap(mailbox -> eventBus.dispatch(EventFactory.added()
+            eventBus.dispatch(EventFactory.added()
                     .randomEventId()
                     .mailboxSession(mailboxSession)
                     .mailbox(mailbox)
                     .addMetaData(copy.metaData())
                     .build(),
-                    new MailboxIdRegistrationKey(mailboxId)))
+                    new MailboxIdRegistrationKey(mailbox.getMailboxId()))
                 .block();
         }
     }
 
-    private void save(MessageIdMapper messageIdMapper, MailboxMessage mailboxMessage) throws MailboxException {
-        ModSeq modSeq = mailboxSessionMapperFactory.getModSeqProvider().nextModSeq(mailboxMessage.getMailboxId());
-        MessageUid uid = mailboxSessionMapperFactory.getUidProvider().nextUid(mailboxMessage.getMailboxId());
+    private void save(MessageIdMapper messageIdMapper, MailboxMessage mailboxMessage, Mailbox mailbox) throws MailboxException {
+        ModSeq modSeq = mailboxSessionMapperFactory.getModSeqProvider().nextModSeq(mailbox.getMailboxId());
+        MessageUid uid = mailboxSessionMapperFactory.getUidProvider().nextUid(mailbox.getMailboxId());
         mailboxMessage.setModSeq(modSeq);
         mailboxMessage.setUid(uid);
-        messageIdMapper.copyInMailbox(mailboxMessage);
+        messageIdMapper.copyInMailbox(mailboxMessage, mailbox);
     }
 
     private ThrowingFunction<MailboxMessage, MessageResult> messageResultConverter(FetchGroup fetchGroup) {
@@ -436,7 +441,11 @@ public class StoreMessageIdManager implements MessageIdManager {
             .onErrorResume(any -> Mono.just(false));
     }
 
-    private Mono<Void> assertRightsOnMailboxes(Collection<MailboxId> mailboxIds, MailboxSession mailboxSession, Right... rights) throws MailboxNotFoundException {
+    private Predicate<Mailbox> hasRightsOnMailbox(MailboxSession session, Right... rights) {
+        return mailbox -> rightManager.myRights(mailbox, session).contains(rights);
+    }
+
+    private Mono<Void> assertRightsOnMailboxIds(Collection<MailboxId> mailboxIds, MailboxSession mailboxSession, Right... rights) {
         return Flux.fromIterable(mailboxIds)
             .filterWhen(hasRightsOnMailboxReactive(mailboxSession, rights).andThen(result -> result.map(b -> !b)))
             .next()
@@ -446,4 +455,33 @@ public class StoreMessageIdManager implements MessageIdManager {
             })
             .then();
     }
+
+    private void assertRightsOnMailboxes(Collection<Mailbox> mailboxes, MailboxSession mailboxSession, Right... rights) throws MailboxNotFoundException {
+        Optional<Mailbox> firstForbiddenMailbox = mailboxes.stream()
+            .filter(Predicate.not(hasRightsOnMailbox(mailboxSession, rights)))
+            .findFirst();
+
+        if (firstForbiddenMailbox.isPresent()) {
+            MailboxId mailboxId = firstForbiddenMailbox.get().getMailboxId();
+            LOGGER.info("Mailbox with Id {} does not belong to {}", mailboxId, mailboxSession.getUser().asString());
+            throw new MailboxNotFoundException(firstForbiddenMailbox.get().generateAssociatedPath());
+        }
+    }
+
+    private Mono<MessageMovesWithMailbox> messageMovesWithMailbox(MessageMoves messageMoves, MailboxSession session) {
+        MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(session);
+
+        Mono<List<Mailbox>> target = Flux.fromIterable(messageMoves.getTargetMailboxIds())
+            .flatMap(mailboxMapper::findMailboxById)
+            .collect(Guavate.toImmutableList());
+        Mono<List<Mailbox>> previous = Flux.fromIterable(messageMoves.getPreviousMailboxIds())
+            .flatMap(mailboxMapper::findMailboxById)
+            .collect(Guavate.toImmutableList());
+
+        return target.zipWith(previous)
+            .map(tuple -> MessageMovesWithMailbox.builder()
+                .targetMailboxes(tuple.getT1())
+                .previousMailboxes(tuple.getT2())
+                .build());
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 02/07: JAMES-3277 Rewrite AbstractMessageIdManagerStorageTest::setInMailboxesShouldIgnoreMessagesBelongingToOtherUsers

Posted by rc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5c87926f3bd8ed13b7d23bd8a91e8dde4fab3648
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Jun 29 08:55:07 2020 +0700

    JAMES-3277 Rewrite AbstractMessageIdManagerStorageTest::setInMailboxesShouldIgnoreMessagesBelongingToOtherUsers
    
    The intent of this test was to show, that when a message is delegated only in some mailboxes, then the sharee cannot alter the setInMailboxes the message in the mailboes that were not delegated to him.
---
 .../james/mailbox/fixture/MailboxFixture.java      |  1 +
 .../store/AbstractMessageIdManagerStorageTest.java | 61 ++++++++++++++--------
 2 files changed, 41 insertions(+), 21 deletions(-)

diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
index 07274f0..fb020b1 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
@@ -31,4 +31,5 @@ public interface MailboxFixture {
     MailboxPath OUTBOX_ALICE = MailboxPath.forUser(ALICE, "OUTBOX");
     MailboxPath SENT_ALICE = MailboxPath.forUser(ALICE, "SENT");
     MailboxPath INBOX_BOB = MailboxPath.inbox(BOB);
+    MailboxPath BOB_2 = MailboxPath.forUser(BOB, "box2");
 }
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index 25fe936..4c7f73a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.store;
 
+import static org.apache.james.mailbox.fixture.MailboxFixture.BOB;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
@@ -68,6 +69,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     private Mailbox aliceMailbox2;
     private Mailbox aliceMailbox3;
     private Mailbox bobMailbox1;
+    private Mailbox bobMailbox2;
     private MailboxSession aliceSession;
     private MailboxSession bobSession;
     private MailboxSession systemSession;
@@ -77,7 +79,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @BeforeEach
     void setUp() throws Exception {
         aliceSession = MailboxSessionUtil.create(MailboxFixture.ALICE);
-        bobSession = MailboxSessionUtil.create(MailboxFixture.BOB);
+        bobSession = MailboxSessionUtil.create(BOB);
         systemSession = MailboxSessionUtil.create(Username.of("systemuser"));
         testingData = createTestingData();
         messageIdManager = testingData.getMessageIdManager();
@@ -86,6 +88,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         aliceMailbox2 = testingData.createMailbox(MailboxFixture.OUTBOX_ALICE, aliceSession);
         aliceMailbox3 = testingData.createMailbox(MailboxFixture.SENT_ALICE, aliceSession);
         bobMailbox1 = testingData.createMailbox(MailboxFixture.INBOX_BOB, bobSession);
+        bobMailbox2 = testingData.createMailbox(MailboxFixture.BOB_2, bobSession);
     }
 
     @Test
@@ -268,11 +271,27 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     void setInMailboxesShouldIgnoreMessagesBelongingToOtherUsers() throws Exception {
-        MessageId messageId = testingData.persist(bobMailbox1.getMailboxId(), messageUid1, FLAGS, bobSession);
+        MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, bobSession);
 
-        messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox2.getMailboxId()), aliceSession);
 
-        assertThat(messageIdManager.getMessage(messageId, FetchGroup.MINIMAL, aliceSession)).isEmpty();
+        testingData.getMailboxManager().setRights(aliceMailbox1.getMailboxId(),
+            MailboxACL.EMPTY.apply(MailboxACL.command()
+                .forUser(BOB)
+                .rights(MailboxACL.FULL_RIGHTS)
+                .asAddition()),
+            aliceSession);
+
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(bobMailbox1.getMailboxId(), bobMailbox2.getMailboxId()), bobSession);
+
+        // Bob couldn't alter the message in the mailbox he could not access
+        assertThat(messageIdManager.getMessage(messageId, FetchGroup.MINIMAL, aliceSession))
+            .extracting(MessageResult::getMailboxId)
+            .containsOnly(aliceMailbox2.getMailboxId());
+        // Bob succeeded to copy the message in his mailboxes
+        assertThat(messageIdManager.getMessage(messageId, FetchGroup.MINIMAL, bobSession))
+            .extracting(MessageResult::getMailboxId)
+            .containsOnly(bobMailbox1.getMailboxId(), bobMailbox2.getMailboxId());
     }
 
     @Test
@@ -582,7 +601,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Read))
                     .asAddition()),
             aliceSession);
@@ -601,7 +620,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(Rfc4314Rights.allExcept(Right.Read))
                     .asAddition()),
             aliceSession);
@@ -618,7 +637,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Write))
                     .asAddition()),
             aliceSession);
@@ -639,7 +658,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(Rfc4314Rights.allExcept(Right.Write))
                     .asAddition()),
             aliceSession);
@@ -662,7 +681,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Read))
                     .asAddition()),
             aliceSession);
@@ -687,7 +706,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(Rfc4314Rights.allExcept(Right.Read))
                     .asAddition()),
             aliceSession);
@@ -712,7 +731,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Insert, Right.Read))
                     .asAddition()),
             aliceSession);
@@ -737,7 +756,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(Rfc4314Rights.allExcept(Right.Insert))
                     .asAddition()),
             aliceSession);
@@ -766,7 +785,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Lookup, Right.Read, Right.DeleteMessages))
                     .asAddition()),
             aliceSession);
@@ -791,7 +810,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(Rfc4314Rights.allExcept(Right.DeleteMessages))
                     .asAddition()),
             aliceSession);
@@ -820,7 +839,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox2.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(MailboxACL.FULL_RIGHTS)
                     .asAddition()),
             aliceSession);
@@ -855,7 +874,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Read, Right.Lookup, Right.DeleteMessages))
                     .asAddition()),
             aliceSession);
@@ -873,7 +892,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(Rfc4314Rights.allExcept(Right.DeleteMessages))
                     .asAddition()),
             aliceSession);
@@ -894,7 +913,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Read, Right.Lookup))
                     .asAddition()),
             aliceSession);
@@ -911,7 +930,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(Rfc4314Rights.allExcept(Right.Read))
                     .asAddition()),
             aliceSession);
@@ -928,7 +947,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Read, Right.Lookup, Right.Insert))
                     .asAddition()),
             aliceSession);
@@ -948,7 +967,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         testingData.setACL(aliceMailbox1.getMailboxId(),
             MailboxACL.EMPTY.apply(
                 MailboxACL.command()
-                    .forUser(MailboxFixture.BOB)
+                    .forUser(BOB)
                     .rights(new Rfc4314Rights(Right.Read, Right.Lookup, Right.Insert, Right.Write))
                     .asAddition()),
             aliceSession);


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org