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

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

commit 7c471f0967a869059f4b28bba2e5c369562cd0b6
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Thu Jan 11 13:25:35 2024 +0100

    JAMES-3961 AssertJ bean introspection
---
 .../apache/james/JsonSerializationVerifier.java    | 22 ++++++++++++++++-
 ...omputeMailboxCountersTaskSerializationTest.java |  4 +++-
 .../SolveMailboxInconsistenciesServiceTest.java    |  5 +++-
 ...essageInconsistenciesTaskSerializationTest.java |  8 +++++--
 mailbox/jpa/pom.xml                                |  6 +++++
 mailbox/memory/pom.xml                             |  6 +++++
 ...rorRecoveryIndexationTaskSerializationTest.java |  7 ++++--
 .../FullReindexingTaskSerializationTest.java       |  7 ++++--
 ...ngleMailboxReindexingTaskSerializationTest.java |  7 ++++--
 .../UserReindexingTaskSerializationTest.java       |  8 ++++---
 .../RecomputeCurrentQuotasServiceContract.java     |  5 +++-
 ...ecomputeCurrentQuotasTaskSerializationTest.java |  7 ++++--
 .../BlobGCTaskAdditionalInformationDTOTest.java    |  4 +++-
 .../deduplication/BlobGCTaskSerializationTest.java |  5 ++--
 .../james/jmap/cassandra/filtering/DTOTest.java    | 28 +++++++++++++++-------
 .../change/StateChangeEventSerializerTest.scala    |  5 ++++
 ...sandraMappingsSolveInconsistenciesTaskTest.java | 15 +++++++++++-
 ...ctionItemsTaskAdditionalInformationDTOTest.java |  5 ++--
 ...stViewProjectionItemsTaskSerializationTest.java |  4 +++-
 ...ctionItemsTaskAdditionalInformationDTOTest.java |  4 +++-
 ...stViewProjectionItemsTaskSerializationTest.java |  4 +++-
 .../service/ReprocessingAllMailsTaskTest.java      | 16 +++++++++----
 .../service/ReprocessingOneMailTaskTest.java       |  8 ++++---
 23 files changed, 147 insertions(+), 43 deletions(-)

diff --git a/json/src/test/java/org/apache/james/JsonSerializationVerifier.java 
b/json/src/test/java/org/apache/james/JsonSerializationVerifier.java
index 09cf2a8934..19c965b4ab 100644
--- a/json/src/test/java/org/apache/james/JsonSerializationVerifier.java
+++ b/json/src/test/java/org/apache/james/JsonSerializationVerifier.java
@@ -23,19 +23,38 @@ import static 
net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.IOException;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.BiConsumer;
+import java.util.function.BiPredicate;
+import java.util.regex.Pattern;
 
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.json.DTO;
 import org.apache.james.json.DTOModule;
 import org.apache.james.json.JsonGenericSerializer;
+import 
org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.collect.ImmutableList;
 
 public class JsonSerializationVerifier<T, U extends DTO> {
+
+    public static final RecursiveComparisonConfiguration 
recursiveComparisonConfiguration = new RecursiveComparisonConfiguration();
+
+    static {
+        
recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingInt(AtomicInteger::get),
 AtomicInteger.class);
+        
recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingLong(AtomicLong::get),
 AtomicLong.class);
+        recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> 
o.get() == o2.get(), AtomicInteger.class);
+        recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> 
o.get() == o2.get(), AtomicLong.class);
+        recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> 
o.get() == o2.get(), AtomicBoolean.class);
+        recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> 
o.toString().equalsIgnoreCase(o2.toString()), Pattern.class);
+    }
+
     @FunctionalInterface
     public interface RequireJson<T, U extends DTO> {
         JsonSerializationVerifier<T, U> json(String json);
@@ -61,7 +80,8 @@ public class JsonSerializationVerifier<T, U extends DTO> {
     private static <T> EqualityTester<T> defaultEqualityTester() {
         return (a, b) -> assertThat(a)
             .describedAs("Deserialization test [" + b + "]")
-            .isEqualToComparingFieldByFieldRecursively(b);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(b);
     }
 
     private final List<Pair<String, T>> testValues;
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java
index 948471073e..948ad9bf86 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersTaskSerializationTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.cassandra.mail.task;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -79,7 +80,8 @@ class RecomputeMailboxCountersTaskSerializationTest {
             .deserialize(SERIALIZED_TASK_OLD);
 
         assertThat(domainObject)
-            .isEqualToComparingFieldByFieldRecursively(TASK_UNTRUSTED);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(TASK_UNTRUSTED);
     }
 
     @Test
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
index cfa11c9c19..a67737b9f6 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.cassandra.mail.task;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -167,7 +168,9 @@ class SolveMailboxInconsistenciesServiceTest {
 
         testee.fixMailboxInconsistencies(context).block();
 
-        
assertThat(context.snapshot()).isEqualToComparingFieldByFieldRecursively(new 
Context().snapshot());
+        assertThat(context.snapshot())
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(new Context().snapshot());
     }
 
     @Test
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java
index d450a52d86..cdd2f37013 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesTaskSerializationTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.cassandra.mail.task;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -80,8 +81,10 @@ public class 
SolveMessageInconsistenciesTaskSerializationTest {
 
         SolveMessageInconsistenciesTask expected = new 
SolveMessageInconsistenciesTask(service, RunningOptions.DEFAULT);
 
+
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 
     @Test
@@ -111,6 +114,7 @@ public class 
SolveMessageInconsistenciesTaskSerializationTest {
             );
 
         assertThat(legacyDetails)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
diff --git a/mailbox/jpa/pom.xml b/mailbox/jpa/pom.xml
index 3ed2a82e83..9125639b59 100644
--- a/mailbox/jpa/pom.xml
+++ b/mailbox/jpa/pom.xml
@@ -84,6 +84,12 @@
             <artifactId>event-bus-in-vm</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-json</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-data-jpa</artifactId>
diff --git a/mailbox/memory/pom.xml b/mailbox/memory/pom.xml
index abd0cc006e..ca61c4c5bc 100644
--- a/mailbox/memory/pom.xml
+++ b/mailbox/memory/pom.xml
@@ -69,6 +69,12 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-json</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-data-memory</artifactId>
diff --git 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
index a964c03bee..00137794ed 100644
--- 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
+++ 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.mailbox.tools.indexer;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -85,7 +86,8 @@ class ErrorRecoveryIndexationTaskSerializationTest {
         ErrorRecoveryIndexationTask expected = new 
ErrorRecoveryIndexationTask(reIndexerPerformer, new 
ReIndexingExecutionFailures(failures, ImmutableList.of()), 
RunningOptions.DEFAULT);
 
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 
     @Test
@@ -124,7 +126,8 @@ class ErrorRecoveryIndexationTaskSerializationTest {
         );
 
         assertThat(legacyAdditionalInformation)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
 
diff --git 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
index a540f48bf2..a8fbd04dee 100644
--- 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
+++ 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.mailbox.tools.indexer;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -83,7 +84,8 @@ class FullReindexingTaskSerializationTest {
         FullReindexingTask expected = new 
FullReindexingTask(reIndexerPerformer, RunningOptions.DEFAULT);
 
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 
     @Test
@@ -116,7 +118,8 @@ class FullReindexingTaskSerializationTest {
         );
 
         assertThat(legacyAdditionalInformation)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
 
diff --git 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
index dc1eaf6d56..6754de267d 100644
--- 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
+++ 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.mailbox.tools.indexer;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -81,7 +82,8 @@ class SingleMailboxReindexingTaskSerializationTest {
         SingleMailboxReindexingTask expected = new 
SingleMailboxReindexingTask(reIndexerPerformer, mailboxId, 
RunningOptions.DEFAULT);
 
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 
     @Test
@@ -116,7 +118,8 @@ class SingleMailboxReindexingTaskSerializationTest {
         );
 
         assertThat(legacyAdditionalInformation)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
 
diff --git 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
index d1a281cc0c..c9bcd457a0 100644
--- 
a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
+++ 
b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.mailbox.tools.indexer;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -81,9 +82,9 @@ class UserReindexingTaskSerializationTest {
             .deserialize(legacySerializedUserReindexingTask);
 
         UserReindexingTask expected = new 
UserReindexingTask(reIndexerPerformer, USERNAME, RunningOptions.DEFAULT);
-
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison()
+            .isEqualTo(expected);
     }
 
     @Test
@@ -117,7 +118,8 @@ class UserReindexingTaskSerializationTest {
         );
 
         assertThat(legacyAdditionalInformation)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
 
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 e0c048df85..48e6d63fb7 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
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.quota.task;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.when;
 
@@ -198,7 +199,9 @@ public interface RecomputeCurrentQuotasServiceContract {
         Context context = new Context();
         testee().recomputeCurrentQuotas(context, 
RunningOptions.DEFAULT).block();
 
-        
assertThat(context.snapshot()).isEqualToComparingFieldByFieldRecursively(new 
Context().snapshot());
+        assertThat(context.snapshot())
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(new Context().snapshot());
     }
 
     @Test
diff --git 
a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java
 
b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java
index ac37d2837b..a85387d7a9 100644
--- 
a/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java
+++ 
b/mailbox/tools/quota-recompute/src/test/java/org/apache/james/mailbox/quota/task/RecomputeCurrentQuotasTaskSerializationTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.quota.task;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -89,7 +90,8 @@ class RecomputeCurrentQuotasTaskSerializationTest {
             .deserialize(SERIALIZED_TASK_LEGACY);
 
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(TASK_DEFAULT);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(TASK_DEFAULT);
     }
 
     @Test
@@ -99,6 +101,7 @@ class RecomputeCurrentQuotasTaskSerializationTest {
             .deserialize(SERIALIZED_ADDITIONAL_INFORMATION_LEGACY);
 
         assertThat(legacyDetails)
-            .isEqualToComparingFieldByFieldRecursively(DETAILS_DEFAULT);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(DETAILS_DEFAULT);
     }
 }
diff --git 
a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java
 
b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java
index 34ed5a086f..c27e2a7c2d 100644
--- 
a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java
+++ 
b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskAdditionalInformationDTOTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.server.blob.deduplication;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.Instant;
@@ -54,7 +55,8 @@ class BlobGCTaskAdditionalInformationDTOTest {
             
.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/blobGC-legacy.additionalInformation.json"));
 
         assertThat(gcTask)
-            .isEqualToComparingFieldByFieldRecursively(new 
BlobGCTask.AdditionalInformation(
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(new BlobGCTask.AdditionalInformation(
                 1,
                 2,
                 3,
diff --git 
a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java
 
b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java
index eb26542b85..3be209cd76 100644
--- 
a/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java
+++ 
b/server/blob/blob-storage-strategy/src/test/java/org/apache/james/server/blob/deduplication/BlobGCTaskSerializationTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.server.blob.deduplication;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -89,9 +90,9 @@ class BlobGCTaskSerializationTest {
                 clock))
             .withoutNestedType()
             
.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/blobGC-legacy.task.json"));
-
         assertThat(gcTask)
-            .isEqualToComparingFieldByFieldRecursively(new BlobGCTask(
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(new BlobGCTask(
                 blobStoreDAO,
                 generationAwareBlobIdFactory,
                 generationAwareBlobIdConfiguration,
diff --git 
a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java
 
b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java
index b8e76fb621..0111474af1 100644
--- 
a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java
+++ 
b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/DTOTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.jmap.cassandra.filtering;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.apache.james.jmap.api.filtering.RuleFixture.RULE_1;
 import static org.apache.james.jmap.api.filtering.RuleFixture.RULE_2;
 import static org.apache.james.jmap.api.filtering.RuleFixture.RULE_4;
@@ -113,8 +114,10 @@ class DTOTest {
             .withoutNestedType();
 
         SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
-            
softly.assertThat(serializer.deserialize(EVENT_JSON_3)).isEqualToComparingFieldByFieldRecursively(SIMPLE_RULE);
-            
softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_3)).isEqualToComparingFieldByFieldRecursively(COMPLEX_RULE);
+            
softly.assertThat(serializer.deserialize(EVENT_JSON_3)).usingRecursiveComparison(recursiveComparisonConfiguration)
+                .isEqualTo(SIMPLE_RULE);
+            
softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_3)).usingRecursiveComparison(recursiveComparisonConfiguration)
+                .isEqualTo(COMPLEX_RULE);
         }));
     }
 
@@ -125,8 +128,10 @@ class DTOTest {
             .withoutNestedType();
 
         SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
-            
softly.assertThat(serializer.deserialize(EVENT_JSON_2)).isEqualToComparingFieldByFieldRecursively(SIMPLE_RULE);
-            
softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_2)).isEqualToComparingFieldByFieldRecursively(COMPLEX_RULE);
+            
softly.assertThat(serializer.deserialize(EVENT_JSON_2)).usingRecursiveComparison(recursiveComparisonConfiguration)
+                .isEqualTo(SIMPLE_RULE);
+            
softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON_2)).usingRecursiveComparison(recursiveComparisonConfiguration)
+                .isEqualTo(COMPLEX_RULE);
         }));
     }
 
@@ -137,8 +142,10 @@ class DTOTest {
             .withoutNestedType();
 
         SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
-            
softly.assertThat(serializer.deserialize(EVENT_JSON)).isEqualToComparingFieldByFieldRecursively(SIMPLE_RULE);
-            
softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON)).isEqualToComparingFieldByFieldRecursively(COMPLEX_RULE);
+            
softly.assertThat(serializer.deserialize(EVENT_JSON)).usingRecursiveComparison(recursiveComparisonConfiguration)
+                .isEqualTo(SIMPLE_RULE);
+            
softly.assertThat(serializer.deserialize(EVENT_COMPLEX_JSON)).usingRecursiveComparison(recursiveComparisonConfiguration)
+                .isEqualTo(COMPLEX_RULE);
         }));
     }
 
@@ -156,7 +163,8 @@ class DTOTest {
             .withoutNestedType();
 
         
assertThat(serializer.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/increment-v3.json")))
-            .isEqualToComparingFieldByFieldRecursively(INCREMENT);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(INCREMENT);
     }
 
     @Test
@@ -166,7 +174,8 @@ class DTOTest {
             .withoutNestedType();
 
         
assertThat(serializer.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/increment-v2.json")))
-            .isEqualToComparingFieldByFieldRecursively(INCREMENT);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(INCREMENT);
     }
 
     @Test
@@ -176,6 +185,7 @@ class DTOTest {
             .withoutNestedType();
 
         
assertThat(serializer.deserialize(ClassLoaderUtils.getSystemResourceAsString("json/increment.json")))
-            .isEqualToComparingFieldByFieldRecursively(INCREMENT);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(INCREMENT);
     }
 }
diff --git 
a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala
 
b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala
index cc30918a28..62b6648c3a 100644
--- 
a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/change/StateChangeEventSerializerTest.scala
@@ -94,6 +94,11 @@ class StateChangeEventSerializerTest {
       .withoutNestedType())
       .bean(EVENT)
       .json(EVENT_JSON)
+      .equalityTester((a, b) => {
+        assertThat(a.eventId).isEqualTo(b.eventId)
+        assertThat(a.username).isEqualTo(b.username)
+        assertThat(a.asStateChange).isEqualTo(b.asStateChange)
+      })
       .verify()
 
   @Test
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 c70bcb8a09..53fe03b031 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
@@ -23,10 +23,15 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
 import java.io.IOException;
+import java.util.Comparator;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.james.rrt.cassandra.CassandraMappingsSourcesDAO;
 import org.apache.james.rrt.cassandra.migration.MappingsSourcesMigration;
 import org.apache.james.server.task.json.JsonTaskSerializer;
+import 
org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration;
 import org.junit.jupiter.api.Test;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -48,7 +53,15 @@ class CassandraMappingsSolveInconsistenciesTaskTest {
 
     @Test
     void taskShouldBeDeserializable() throws IOException {
+        RecursiveComparisonConfiguration recursiveComparisonConfiguration = 
new RecursiveComparisonConfiguration();
+        
recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingInt(AtomicInteger::get),
 AtomicInteger.class);
+        
recursiveComparisonConfiguration.registerComparatorForType(Comparator.comparingLong(AtomicLong::get),
 AtomicLong.class);
+        recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> 
o.get() == o2.get(), AtomicInteger.class);
+        recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> 
o.get() == o2.get(), AtomicLong.class);
+        recursiveComparisonConfiguration.registerEqualsForType((o, o2) -> 
o.get() == o2.get(), AtomicBoolean.class);
+
         assertThat(TESTEE.deserialize(SERIALIZED))
-            .isEqualToComparingFieldByFieldRecursively(TASK);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(TASK);
     }
 }
diff --git 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
index 0a9412465f..65e6f14a43 100644
--- 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
+++ 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
@@ -19,10 +19,10 @@
 
 package org.apache.james.webadmin.data.jmap;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.Instant;
-
 import org.apache.james.JsonSerializationVerifier;
 import org.apache.james.json.JsonGenericSerializer;
 import org.apache.james.util.ClassLoaderUtils;
@@ -61,6 +61,7 @@ class 
RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest {
             INSTANT);
 
         assertThat(legacyDetails)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
\ No newline at end of file
diff --git 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java
 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java
index a31eea898a..a7a05ee8f2 100644
--- 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java
+++ 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.webadmin.data.jmap;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -55,6 +56,7 @@ class 
RecomputeAllFastViewProjectionItemsTaskSerializationTest {
             RunningOptions.DEFAULT);
 
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
\ No newline at end of file
diff --git 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
index ce0c123fd5..b2c205221e 100644
--- 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
+++ 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.webadmin.data.jmap;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.Instant;
@@ -58,6 +59,7 @@ class 
RecomputeUserFastViewProjectionItemsTaskAdditionalInformationDTOTest {
             INSTANT);
 
         assertThat(legacyDetails)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
\ No newline at end of file
diff --git 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java
 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java
index cb99cb188e..5246a77962 100644
--- 
a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java
+++ 
b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsTaskSerializationTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.webadmin.data.jmap;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 
@@ -58,6 +59,7 @@ class 
RecomputeUserFastViewProjectionItemsTaskSerializationTest {
             Username.of("bob"));
 
         assertThat(legacyTask)
-            .isEqualToComparingFieldByFieldRecursively(expected);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(expected);
     }
 }
\ No newline at end of file
diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java
index 33c38db2c0..8ac24f498d 100644
--- 
a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.webadmin.service;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
@@ -118,11 +119,13 @@ class ReprocessingAllMailsTaskTest {
         JsonTaskSerializer testee = 
JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE));
 
         assertThat(testee.deserialize(OLD_SERIALIZED_TASK))
-            
.isEqualToComparingFieldByFieldRecursively(taskWithTargetProcessor);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(taskWithTargetProcessor);
 
         String serializedTaskWithLimit = 
"{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",
 \"limit\":10}";
         assertThat(testee.deserialize(serializedTaskWithLimit))
-            .isEqualToComparingFieldByFieldRecursively(new 
ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, 
REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, 
SOME_TARGET_PROCESSOR, NO_MAX_RETRIES, CONSUME, Limit.limit(10))));
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(new ReprocessingAllMailsTask(REPROCESSING_SERVICE, 
REPOSITORY_SIZE, REPOSITORY_PATH, new 
ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, 
NO_MAX_RETRIES, CONSUME, Limit.limit(10))));
     }
 
     @Test
@@ -131,7 +134,8 @@ class ReprocessingAllMailsTaskTest {
 
         String serializedTaskWithLimit = "{\"type\":\"reprocessing-all\", 
\"maxRetries\":6,\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",
 \"limit\":10}";
         assertThat(testee.deserialize(serializedTaskWithLimit))
-            .isEqualToComparingFieldByFieldRecursively(new 
ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, 
REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, 
SOME_TARGET_PROCESSOR, Optional.of(6), CONSUME, Limit.limit(10))));
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(new ReprocessingAllMailsTask(REPROCESSING_SERVICE, 
REPOSITORY_SIZE, REPOSITORY_PATH, new 
ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, 
Optional.of(6), CONSUME, Limit.limit(10))));
     }
 
     @Test
@@ -142,12 +146,14 @@ class ReprocessingAllMailsTaskTest {
         JsonTaskAdditionalInformationSerializer testee = 
JsonTaskAdditionalInformationSerializer.of(ReprocessingAllMailsTaskAdditionalInformationDTO.module());
 
         
assertThat(testee.deserialize(OLD_SERIALIZED_TASK_ADDITIONAL_INFORMATION))
-            .isEqualToComparingFieldByFieldRecursively(details);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(details);
 
         String serializedTaskAdditionalInformation = 
"{\"type\":\"reprocessing-all\", 
\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"initialCount\":5,\"remainingCount\":3,
 \"timestamp\":\"2018-11-13T12:00:55Z\", \"limit\": 10}";
 
         assertThat(testee.deserialize(serializedTaskAdditionalInformation))
-            .isEqualToComparingFieldByFieldRecursively(new 
ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH,
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(new 
ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH,
                 new ReprocessingService.Configuration(TARGET_QUEUE, 
SOME_TARGET_PROCESSOR, NO_MAX_RETRIES, CONSUME, Limit.limit(10)),
                 REPOSITORY_SIZE, REMAINING_COUNT, TIMESTAMP));
     }
diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java
index 512508f60c..2eaaaaeb51 100644
--- 
a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.webadmin.service;
 
+import static 
org.apache.james.JsonSerializationVerifier.recursiveComparisonConfiguration;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
@@ -55,7 +56,6 @@ class ReprocessingOneMailTaskTest {
     public static final boolean CONSUME = true;
     private static final Optional<Integer> NO_MAX_RETRIES = Optional.empty();
     private static final Optional<String> NO_PROCESSOR = Optional.empty();
-
     @Test
     void taskShouldBeSerializable() throws Exception {
         ReprocessingOneMailTask taskWithTargetProcessor = new 
ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, new 
ReprocessingService.Configuration(TARGET_QUEUE, TARGET_PROCESSOR, 
NO_MAX_RETRIES, CONSUME, Limit.unlimited()), MAIL_KEY, CLOCK);
@@ -105,7 +105,8 @@ class ReprocessingOneMailTaskTest {
         JsonTaskSerializer testee = 
JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, 
REPROCESSING_SERVICE));
 
         assertThat(testee.deserialize(SERIALIZED_TASK_OLD))
-            
.isEqualToComparingFieldByFieldRecursively(taskWithTargetProcessor);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(taskWithTargetProcessor);
     }
 
     @Test
@@ -115,6 +116,7 @@ class ReprocessingOneMailTaskTest {
         JsonTaskAdditionalInformationSerializer testee = 
JsonTaskAdditionalInformationSerializer.of(ReprocessingOneMailTaskAdditionalInformationDTO.module());
 
         
assertThat(testee.deserialize(SERIALIZED_TASK_OLD_ADDITIONAL_INFORMATION))
-            .isEqualToComparingFieldByFieldRecursively(details);
+            .usingRecursiveComparison(recursiveComparisonConfiguration)
+            .isEqualTo(details);
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org


Reply via email to