You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/06/26 09:26:59 UTC

[james-project] branch master updated (6a738002df -> 52e30c61c4)

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

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


    from 6a738002df JAMES-2434 IsFromMailingList matcher (#1606)
     new 12071e9eee [CLEAN CODE] Update Deprecated method: AssertJ containsOnlyElementsOf -> containOnly
     new 8a4d2a016f [CLEAN CODE] Update Deprecated in JMAP Module
     new 2fdff661da [CLEAN CODE] Scala code - Fix warning log
     new 093cc807df Scalafix - drop argument: `-Ywarn-unused`
     new 52e30c61c4 Scala maven plugin - ignore warning log (Auto-application to () is deprecated) in Scala 3

The 5 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:
 .../backends/rabbitmq/RabbitMQClusterTest.java     |  21 ++-
 .../james/backends/rabbitmq/RabbitMQTest.java      |  15 +-
 .../cassandra/CassandraEventStoreExtension.scala   |   4 +-
 .../cassandra/JsonEventSerializerTest.scala        |   2 +-
 .../store/mail/model/ListMailboxAssert.java        |   3 +-
 .../store/mail/model/ListMessageAssert.java        |   2 +-
 .../mail/model/ListMessagePropertiesAssert.java    |   2 +-
 pom.xml                                            |   2 +-
 .../james/rrt/lib/RewriteTablesStepdefs.java       |   4 +-
 .../james/transport/util/RecipientsUtilsTest.java  |   5 +-
 .../apache/james/transport/util/TosUtilsTest.java  |   6 +-
 .../mailrepository/MailRepositoryContract.java     |   3 +-
 .../cucumber/GetMessagesMethodStepdefs.java        |   4 +-
 .../jmap/draft/methods/GetMessagesMethodTest.java  |  48 +++---
 .../jmap/http/DefaultMailboxesProvisionerTest.java |   9 +-
 .../rfc8621/contract/CustomMethodContract.scala    |   6 +-
 .../contract/EmailQueryMethodContract.scala        |   5 +-
 .../rfc8621/contract/EmailSetMethodContract.scala  |  27 +--
 .../contract/MailboxQueryMethodContract.scala      |   2 +-
 .../contract/MailboxSetMethodContract.scala        |   5 +-
 .../jmap/rfc8621/contract/WebSocketContract.scala  | 185 +++++----------------
 .../james/jmap/rfc8621/contract/package.scala      |  19 ++-
 .../org/apache/james/jmap/core/Capability.scala    |   2 +-
 .../scala/org/apache/james/jmap/core/Query.scala   |   2 +-
 .../james/jmap/json/DelegationSerializer.scala     |   2 +
 .../james/jmap/json/EmailGetSerializer.scala       |   6 +-
 .../james/jmap/json/EmailQuerySerializer.scala     |   1 +
 .../james/jmap/json/EmailSetSerializer.scala       |   1 +
 .../james/jmap/json/IdentitySerializer.scala       |   1 +
 .../apache/james/jmap/json/MailboxSerializer.scala |   1 +
 .../jmap/json/PushSubscriptionSerializer.scala     |   1 +
 .../apache/james/jmap/json/QuotaSerializer.scala   |   1 +
 .../james/jmap/json/VacationSerializer.scala       |   1 +
 .../scala/org/apache/james/jmap/json/package.scala |   2 +
 .../scala/org/apache/james/jmap/mail/Email.scala   |   1 +
 .../org/apache/james/jmap/mail/EmailHeader.scala   |   4 +-
 .../org/apache/james/jmap/mail/EmailSet.scala      |   4 +-
 .../scala/org/apache/james/jmap/mail/Keyword.scala |   2 +-
 .../org/apache/james/jmap/mail/Keywords.scala      |   4 +-
 .../jmap/method/EmailSetUpdatePerformer.scala      |  12 +-
 .../jmap/method/VacationResponseSetMethod.scala    |   5 +-
 .../james/jmap/routes/EventSourceRoutes.scala      |   1 +
 .../org/apache/james/jmap/routes/JmapApi.scala     |   2 +-
 .../apache/james/jmap/routes/UploadRoutes.scala    |   2 +-
 .../james/jmap/http/MailboxesProvisionerTest.scala |  13 +-
 .../james/queue/pulsar/PulsarMailQueue.scala       |   1 +
 .../task/eventsourcing/DecisionProjection.scala    |   1 +
 .../org/apache/james/linshare/LinshareTest.java    |   2 +-
 48 files changed, 166 insertions(+), 288 deletions(-)
 copy backends-common/opensearch/src/test/java/org/apache/james/backends/opensearch/AliasNameTest.java => server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/package.scala (73%)


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


[james-project] 02/05: [CLEAN CODE] Update Deprecated in JMAP Module

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

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

commit 8a4d2a016fc28d88babcf213bc5efe833fd6cf72
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Sat Jun 24 06:33:43 2023 +0700

    [CLEAN CODE] Update Deprecated in JMAP Module
    
    - Scala Traversable => Iterable
    - Hashing.murmur3_32 -> Hashing.murmur3_32_fixed
    - SFlux reduceWith -> reduce
    ...
---
 .../jmap/rfc8621/contract/EmailQueryMethodContract.scala     |  5 ++---
 .../jmap/rfc8621/contract/MailboxQueryMethodContract.scala   |  2 +-
 .../main/scala/org/apache/james/jmap/core/Capability.scala   |  2 +-
 .../src/main/scala/org/apache/james/jmap/core/Query.scala    |  2 +-
 .../apache/james/jmap/method/EmailSetUpdatePerformer.scala   | 12 ++++++------
 .../apache/james/jmap/method/VacationResponseSetMethod.scala |  5 ++---
 6 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailQueryMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailQueryMethodContract.scala
index c06761c68e..b85a358bcc 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailQueryMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailQueryMethodContract.scala
@@ -7487,9 +7487,8 @@ trait EmailQueryMethodContract {
       .getMessageId
   }
 
-  private def generateQueryState(messages: MessageId*): String = {
-    Hashing.murmur3_32()
+  private def generateQueryState(messages: MessageId*): String =
+    Hashing.murmur3_32_fixed()
       .hashUnencodedChars(messages.toList.map(_.serialize).mkString(" "))
       .toString
-  }
 }
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxQueryMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxQueryMethodContract.scala
index 2b77c2db88..6f25d83715 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxQueryMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxQueryMethodContract.scala
@@ -533,7 +533,7 @@ trait MailboxQueryMethodContract {
   }
 
   private def generateQueryState(ids: MailboxId*): String =
-    Hashing.murmur3_32()
+    Hashing.murmur3_32_fixed()
       .hashUnencodedChars(ids.toList.map(_.serialize()).mkString(" "))
       .toString
 }
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala
index b198b92f1c..36508de9da 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala
@@ -116,7 +116,7 @@ case object WebSocketCapabilityFactory extends CapabilityFactory {
   override def id(): CapabilityIdentifier = JMAP_WEBSOCKET
 
   override def create(urlPrefixes: UrlPrefixes): Capability = WebSocketCapability(
-    WebSocketCapabilityProperties(SupportsPush(true), new URI(urlPrefixes.webSocketURLPrefix + "/jmap/ws")))
+    WebSocketCapabilityProperties(SupportsPush(true), new URI(urlPrefixes.webSocketURLPrefix.toString + "/jmap/ws")))
 }
 
 object MaxSizeUpload {
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Query.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Query.scala
index 3e87aed4fa..78fc360523 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Query.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Query.scala
@@ -72,7 +72,7 @@ object QueryState {
     forStrings(ids.map(_.value))
 
   def forStrings(strings: Seq[String]): QueryState = QueryState(
-    Hashing.murmur3_32()
+    Hashing.murmur3_32_fixed()
       .hashUnencodedChars(strings.mkString(" "))
       .toString)
 }
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetUpdatePerformer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetUpdatePerformer.scala
index 97c77c646b..6510dd1bf7 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetUpdatePerformer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailSetUpdatePerformer.scala
@@ -110,7 +110,7 @@ class EmailSetUpdatePerformer @Inject() (serializer: EmailSetSerializer,
   }
 
   private def doUpdate(validUpdates: List[(MessageId, ValidatedEmailSetUpdate)],
-                       metaData: Map[MessageId, Traversable[ComposedMessageIdWithMetaData]],
+                       metaData: Map[MessageId, Iterable[ComposedMessageIdWithMetaData]],
                        session: MailboxSession): SMono[Seq[EmailUpdateResult]] = {
     val sameUpdate: Boolean = validUpdates.map(_._2).distinctBy(_.update).size == 1
     val singleMailbox: Boolean = metaData.values.flatten.map(_.getComposedMessageId.getMailboxId).toSet.size == 1
@@ -134,7 +134,7 @@ class EmailSetUpdatePerformer @Inject() (serializer: EmailSetSerializer,
     }
   }
 
-  private def asRanges(metaData: Map[MessageId, Traversable[ComposedMessageIdWithMetaData]]) =
+  private def asRanges(metaData: Map[MessageId, Iterable[ComposedMessageIdWithMetaData]]) =
     MessageRange.toRanges(metaData.values
       .flatten.map(_.getComposedMessageId.getUid)
       .toList.distinct.asJava)
@@ -143,7 +143,7 @@ class EmailSetUpdatePerformer @Inject() (serializer: EmailSetSerializer,
   private def updateFlagsByRange(mailboxId: MailboxId,
                                  flags: Flags,
                                  ranges: List[MessageRange],
-                                 metaData: Map[MessageId, Traversable[ComposedMessageIdWithMetaData]],
+                                 metaData: Map[MessageId, Iterable[ComposedMessageIdWithMetaData]],
                                  updateMode: FlagsUpdateMode,
                                  session: MailboxSession): SMono[Seq[EmailUpdateResult]] = {
     val mailboxMono: SMono[MessageManager] = SMono(mailboxManager.getMailboxReactive(mailboxId, session))
@@ -156,7 +156,7 @@ class EmailSetUpdatePerformer @Inject() (serializer: EmailSetSerializer,
   private def moveByRange(mailboxId: MailboxId,
                           update: ValidatedEmailSetUpdate,
                           ranges: List[MessageRange],
-                          metaData: Map[MessageId, Traversable[ComposedMessageIdWithMetaData]],
+                          metaData: Map[MessageId, Iterable[ComposedMessageIdWithMetaData]],
                           session: MailboxSession): SMono[Seq[EmailUpdateResult]] = {
     val targetId: MailboxId = update.update.mailboxIds.get.value.headOption.get
 
@@ -165,7 +165,7 @@ class EmailSetUpdatePerformer @Inject() (serializer: EmailSetSerializer,
   }
 
   private def updateByRange(ranges: List[MessageRange],
-                            metaData: Map[MessageId, Traversable[ComposedMessageIdWithMetaData]],
+                            metaData: Map[MessageId, Iterable[ComposedMessageIdWithMetaData]],
                             operation: MessageRange => SMono[Unit]): SMono[Seq[EmailUpdateResult]] =
     SFlux.fromIterable(ranges)
       .concatMap(range => {
@@ -179,7 +179,7 @@ class EmailSetUpdatePerformer @Inject() (serializer: EmailSetSerializer,
       .reduce(Seq[EmailUpdateResult]())( _ ++ _)
 
   private def updateEachMessage(validUpdates: List[(MessageId, ValidatedEmailSetUpdate)],
-                                metaData: Map[MessageId, Traversable[ComposedMessageIdWithMetaData]],
+                                metaData: Map[MessageId, Iterable[ComposedMessageIdWithMetaData]],
                                 session: MailboxSession): SMono[Seq[EmailUpdateResult]] =
     SFlux.fromIterable(validUpdates)
       .concatMap[EmailUpdateResult]({
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/VacationResponseSetMethod.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/VacationResponseSetMethod.scala
index 14ff1eb934..a41e63f40b 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/VacationResponseSetMethod.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/VacationResponseSetMethod.scala
@@ -99,7 +99,7 @@ class VacationResponseSetMethod @Inject()(@Named(InjectionKeys.JMAP) eventBus: E
   override def getRequest(mailboxSession: MailboxSession, invocation: Invocation): Either[IllegalArgumentException, VacationResponseSetRequest] =
     VacationSerializer.deserializeVacationResponseSetRequest(invocation.arguments.value).asEitherRequest
 
-  private def update(mailboxSession: MailboxSession, vacationResponseSetRequest: VacationResponseSetRequest): SMono[VacationResponseUpdateResults] = {
+  private def update(mailboxSession: MailboxSession, vacationResponseSetRequest: VacationResponseSetRequest): SMono[VacationResponseUpdateResults] =
     SFlux.fromIterable(vacationResponseSetRequest.parsePatch()
       .map[SMono[VacationResponseUpdateResult]]({
         case (id, Right(patch)) =>
@@ -111,8 +111,7 @@ class VacationResponseSetMethod @Inject()(@Named(InjectionKeys.JMAP) eventBus: E
       }))
       .flatMap[VacationResponseUpdateResult](updateResultMono => updateResultMono)
       .map(updateResult => updateResult.asVacationResponseUpdateResults)
-      .reduceWith(() => VacationResponseUpdateResults.empty(), VacationResponseUpdateResults.merge)
-  }
+      .reduce[VacationResponseUpdateResults](VacationResponseUpdateResults.empty())(VacationResponseUpdateResults.merge)
 
   private def update(validatedPatch: VacationPatch, mailboxSession: MailboxSession): SMono[VacationResponseUpdateResult] =
     SMono.fromPublisher(


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


[james-project] 03/05: [CLEAN CODE] Scala code - Fix warning log

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

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

commit 2fdff661da9b0073ee63fb2191322db07afe854e
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Sat Jun 24 07:51:04 2023 +0700

    [CLEAN CODE] Scala code - Fix warning log
---
 .../cassandra/CassandraEventStoreExtension.scala   |   4 +-
 .../cassandra/JsonEventSerializerTest.scala        |   2 +-
 .../rfc8621/contract/CustomMethodContract.scala    |   6 +-
 .../rfc8621/contract/EmailSetMethodContract.scala  |  27 +--
 .../contract/MailboxSetMethodContract.scala        |   5 +-
 .../jmap/rfc8621/contract/WebSocketContract.scala  | 185 +++++----------------
 .../james/jmap/rfc8621/contract/package.scala      |  35 ++++
 .../james/jmap/json/DelegationSerializer.scala     |   2 +
 .../james/jmap/json/EmailGetSerializer.scala       |   6 +-
 .../james/jmap/json/EmailQuerySerializer.scala     |   1 +
 .../james/jmap/json/EmailSetSerializer.scala       |   1 +
 .../james/jmap/json/IdentitySerializer.scala       |   1 +
 .../apache/james/jmap/json/MailboxSerializer.scala |   1 +
 .../jmap/json/PushSubscriptionSerializer.scala     |   1 +
 .../apache/james/jmap/json/QuotaSerializer.scala   |   1 +
 .../james/jmap/json/VacationSerializer.scala       |   1 +
 .../scala/org/apache/james/jmap/json/package.scala |   2 +
 .../scala/org/apache/james/jmap/mail/Email.scala   |   1 +
 .../org/apache/james/jmap/mail/EmailHeader.scala   |   4 +-
 .../org/apache/james/jmap/mail/EmailSet.scala      |   4 +-
 .../scala/org/apache/james/jmap/mail/Keyword.scala |   2 +-
 .../org/apache/james/jmap/mail/Keywords.scala      |   4 +-
 .../james/jmap/routes/EventSourceRoutes.scala      |   1 +
 .../org/apache/james/jmap/routes/JmapApi.scala     |   2 +-
 .../apache/james/jmap/routes/UploadRoutes.scala    |   2 +-
 .../james/queue/pulsar/PulsarMailQueue.scala       |   1 +
 .../task/eventsourcing/DecisionProjection.scala    |   1 +
 27 files changed, 112 insertions(+), 191 deletions(-)

diff --git a/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala b/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala
index df5a0514f7..1adc17ff58 100644
--- a/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala
+++ b/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala
@@ -27,9 +27,7 @@ class CassandraEventStoreExtension(var cassandra: CassandraClusterExtension, val
 
   private var eventStoreDao : Option[EventStoreDao] = None
 
-  def this(eventSerializer: JsonEventSerializer) {
-    this(new CassandraClusterExtension(CassandraEventStoreModule.MODULE), eventSerializer)
-  }
+  def this(eventSerializer: JsonEventSerializer) = this(new CassandraClusterExtension(CassandraEventStoreModule.MODULE), eventSerializer)
 
   override def beforeAll(context: ExtensionContext): Unit = cassandra.beforeAll(context)
 
diff --git a/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.scala b/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.scala
index 6961ce55cc..7896527b89 100644
--- a/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.scala
+++ b/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.scala
@@ -43,7 +43,7 @@ class JsonEventSerializerTest {
       .isEqualTo(JsonEventSerializerTest.TEST_EVENT)
 
   @Test
-  def shouldThrowWhenDeserializeUnknownEvent() =
+  def shouldThrowWhenDeserializeUnknownEvent(): Unit =
     assertThatThrownBy(() =>
       JsonEventSerializer
         .forModules()
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/CustomMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/CustomMethodContract.scala
index cf474fe0ce..685ec1711b 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/CustomMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/CustomMethodContract.scala
@@ -307,8 +307,7 @@ trait CustomMethodContract {
             server.getProbe(classOf[JmapEventBusProbe])
               .emitStateChange(stateChangeEvent, accountId)
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -348,8 +347,7 @@ trait CustomMethodContract {
             server.getProbe(classOf[JmapEventBusProbe])
               .emitStateChange(stateChangeEvent, accountId)
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala
index 03ae3905ff..d15444a64d 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala
@@ -56,6 +56,7 @@ import org.apache.james.utils.DataProbeImpl
 import org.assertj.core.api.Assertions.assertThat
 import org.awaitility.Awaitility
 import org.awaitility.Durations.ONE_HUNDRED_MILLISECONDS
+import org.hamcrest.Matchers
 import org.hamcrest.Matchers.{equalTo, not}
 import org.junit.jupiter.api.{BeforeEach, Test}
 import org.junit.jupiter.params.ParameterizedTest
@@ -1511,7 +1512,7 @@ trait EmailSetMethodContract {
          |  ]
          |}""".stripMargin
 
-    val response = `given`
+    `given`
       .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
       .body(request)
     .when
@@ -1519,26 +1520,10 @@ trait EmailSetMethodContract {
     .`then`
       .statusCode(SC_OK)
       .contentType(JSON)
-      .extract
-      .body
-      .asString
-
-    assertThatJson(response)
-      .whenIgnoringPaths("methodResponses[0][1].notCreated.aaaaaa.description")
-      .inPath("methodResponses[0][1].notCreated.aaaaaa")
-      .isEqualTo(
-        s"""{
-           |    "type": "tooLarge"
-           |}""".stripMargin)
-
-    // Message size is date-time and matchine (Message-Id) dependant
-    val description = assertThatJson(response)
-      .withIgnorePlaceholder("@")
-      .inPath("methodResponses[0][1].notCreated.aaaaaa.description")
-      .asString()
-    description.endsWith(" bytes while the maximum allowed is 10485760")
-    description.startsWith("Attempt to create a message of ")
-
+      .body("methodResponses[0][1].notCreated.aaaaaa.type", equalTo("tooLarge"))
+      .body("methodResponses[0][1].notCreated.aaaaaa.description",
+        Matchers.allOf(Matchers.startsWith("Attempt to create a message of "),
+          Matchers.endsWith(" bytes while the maximum allowed is 10485760")))
   }
 
   @Test
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala
index 632c3957da..6d925fb6c4 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxSetMethodContract.scala
@@ -8042,10 +8042,7 @@ trait MailboxSetMethodContract {
                  |    }, "c1"]]
                  |}""".stripMargin))
 
-            List(ws.receive()
-              .map { case t: Text =>
-                t.payload
-              })
+            List(ws.receive().asPayload)
         })
         .send(backend)
         .body
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/WebSocketContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/WebSocketContract.scala
index cd5ea01246..0f04f7c453 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/WebSocketContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/WebSocketContract.scala
@@ -52,8 +52,6 @@ import sttp.client3.okhttp.OkHttpSyncBackend
 import sttp.client3.{Identity, RequestT, SttpBackend, asWebSocket, basicRequest}
 import sttp.model.Uri
 import sttp.monad.MonadError
-import sttp.monad.syntax.MonadErrorOps
-import sttp.ws.WebSocketFrame.Text
 import sttp.ws.{WebSocket, WebSocketFrame}
 
 import scala.jdk.CollectionConverters._
@@ -102,8 +100,7 @@ trait WebSocketContract {
                 |  ]
                 |}""".stripMargin))
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -148,10 +145,7 @@ trait WebSocketContract {
                   |    ]
                   |  ]
                   |}""".stripMargin))
-              ws.receive()
-                .map {
-                  case t: Text => t.payload
-                }
+              ws.receive().asPayload
             }, {
               Thread.sleep(200)
 
@@ -172,10 +166,7 @@ trait WebSocketContract {
                   |  ]
                   |}""".stripMargin))
 
-              ws.receive()
-                .map {
-                  case t: Text => t.payload
-                }
+              ws.receive().asPayload
             })
         })
         .send(backend)
@@ -194,8 +185,7 @@ trait WebSocketContract {
           ws =>
             ws.send(WebSocketFrame.text("The quick brown fox"))
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -219,8 +209,7 @@ trait WebSocketContract {
           ws =>
             ws.send(WebSocketFrame.text("The quick brown fox"))
 
-          ws.receive()
-            .map { case t: Text => t.toString }
+          ws.receive().asPayload
       })
       .send(backend)
       .body)
@@ -250,8 +239,7 @@ trait WebSocketContract {
                 |  ]
                 |}""".stripMargin))
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -290,8 +278,7 @@ trait WebSocketContract {
                 |  ]
                 |}""".stripMargin))
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -330,8 +317,7 @@ trait WebSocketContract {
                 |  ]
                 |}""".stripMargin))
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -370,8 +356,7 @@ trait WebSocketContract {
                 |  ]
                 |}""".stripMargin))
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -408,8 +393,7 @@ trait WebSocketContract {
                 |      "c1"]]
                 |}""".stripMargin))
 
-            ws.receive()
-              .map { case t: Text => t.payload }
+            ws.receive().asPayload
         })
         .send(backend)
         .body
@@ -463,14 +447,8 @@ trait WebSocketContract {
                  |}""".stripMargin))
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload,
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -516,10 +494,7 @@ trait WebSocketContract {
             sendEmailTo(server, DAVID)
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -561,10 +536,7 @@ trait WebSocketContract {
             sendEmailTo(server, BOB)
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -608,22 +580,10 @@ trait WebSocketContract {
             sendEmailTo(server, BOB)
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload,
+              ws.receive().asPayload,
+              ws.receive().asPayload,
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -686,10 +646,7 @@ trait WebSocketContract {
             createEmail(ws)
 
             List.range(0, 10)
-              .map(i => ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              .map(i => ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -735,14 +692,8 @@ trait WebSocketContract {
                  |}""".stripMargin))
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload,
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -794,14 +745,8 @@ trait WebSocketContract {
                  |}""".stripMargin))
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload,
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -851,10 +796,7 @@ trait WebSocketContract {
                  |    }, "c1"]]
                  |}""".stripMargin))
 
-            val responseAsJson = Json.parse(ws.receive()
-              .map { case t: Text =>
-                t.payload
-              })
+            val responseAsJson = Json.parse(ws.receive().asPayload)
               .\("methodResponses")
               .\(0).\(1)
               .\("created")
@@ -891,15 +833,8 @@ trait WebSocketContract {
                  |    }, "c1"]]
                  |}""".stripMargin))
 
-            val stateChange1 = ws.receive()
-              .map { case t: Text =>
-                t.payload
-              }
-            val response1 =
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                }
+            val stateChange1 = ws.receive().asPayload
+            val response1 = ws.receive().asPayload
 
             Thread.sleep(100)
 
@@ -916,15 +851,8 @@ trait WebSocketContract {
 
             Thread.sleep(100)
 
-            val stateChange2 = ws.receive()
-              .map { case t: Text =>
-                t.payload
-              }
-            val response2 =
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                }
+            val stateChange2 = ws.receive().asPayload
+            val response2 = ws.receive().asPayload
 
             List(response1, response2, stateChange1, stateChange2)
         })
@@ -978,14 +906,8 @@ trait WebSocketContract {
                  |}""".stripMargin))
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload,
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -1025,10 +947,7 @@ trait WebSocketContract {
             sendEmailTo(server, BOB)
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -1075,14 +994,8 @@ trait WebSocketContract {
                  |}""".stripMargin))
 
             List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                },
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+              ws.receive().asPayload,
+              ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -1138,14 +1051,8 @@ trait WebSocketContract {
                  |    }, "c1"]]
                  |}""".stripMargin))
 
-            List(ws.receive()
-              .map { case t: Text =>
-                t.payload
-            },
-            ws.receive()
-              .map { case t: Text =>
-                t.payload
-              })
+            List(ws.receive().asPayload,
+            ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -1196,11 +1103,7 @@ trait WebSocketContract {
 
             Thread.sleep(100)
 
-            List(
-              ws.receive()
-                .map { case t: Text =>
-                  t.payload
-                })
+            List(ws.receive().asPayload)
         })
         .send(backend)
         .body
@@ -1266,16 +1169,10 @@ trait WebSocketContract {
                  |    }, "c1"]]
                  |}""".stripMargin))
 
-            val response = ws.receive()
-              .map { case t: Text =>
-                t.payload
-              }
+            val response = ws.receive().asPayload
 
             val maybeNotification: String = Try(SMono.fromCallable(() =>
-            ws.receive()
-              .map { case t: Text =>
-                t.payload
-              })
+            ws.receive().asPayload)
               .subscribeOn(Schedulers.newSingle("test"))
               .block(scala.concurrent.duration.Duration.fromNanos(100000000)))
               .fold(e => "No notification received", s => s)
@@ -1342,11 +1239,7 @@ trait WebSocketContract {
 
             Thread.sleep(100)
 
-            ws.receive()
-              .map { case t: Text =>
-                t.payload
-              }
-        })
+            ws.receive().asPayload})
         .send(backend)
         .body
 
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/package.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/package.scala
new file mode 100644
index 0000000000..4b2a41999a
--- /dev/null
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/package.scala
@@ -0,0 +1,35 @@
+/****************************************************************
+ * 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.jmap.rfc8621
+
+import cats.implicits.toFunctorOps
+import sttp.client3.Identity
+import sttp.ws.WebSocketFrame
+import sttp.ws.WebSocketFrame.Text
+
+package object contract {
+
+  implicit class asPayload(val webSocketFrame: Identity[WebSocketFrame]) {
+    def asPayload: Identity[String] = webSocketFrame.map {
+      case t: Text => t.payload
+      case _ => throw new RuntimeException("Not a text frame")
+    }
+  }
+}
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/DelegationSerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/DelegationSerializer.scala
index dd2e078426..4a19803a28 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/DelegationSerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/DelegationSerializer.scala
@@ -88,6 +88,7 @@ object DelegationSerializer {
               .filter(jsonObject)
           case jsValue => jsValue
         }))
+        case jsValue => JsError(s"expected JsArray, got $jsValue")
       }).get
 
   def serialize(response: DelegatedAccountGetResponse, properties: Properties): JsValue =
@@ -99,5 +100,6 @@ object DelegationSerializer {
               .filter(jsonObject)
           case jsValue => jsValue
         }))
+        case jsValue => JsError(s"expected JsArray, got $jsValue")
       }).get
 }
\ No newline at end of file
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailGetSerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailGetSerializer.scala
index 33e63eb5e1..3da03d5c39 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailGetSerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailGetSerializer.scala
@@ -89,7 +89,6 @@ object EmailGetSerializer {
   private implicit val hasAttachmentWrites: Writes[HasAttachment] = Json.valueWrites[HasAttachment]
   private implicit val headerNameWrites: Writes[EmailHeaderName] = Json.valueWrites[EmailHeaderName]
   private implicit val rawHeaderWrites: Writes[RawHeaderValue] = Json.valueWrites[RawHeaderValue]
-  private implicit val allHeaderWrites: Writes[AllHeaderValues] = Json.valueWrites[AllHeaderValues]
   private implicit val textHeaderWrites: Writes[TextHeaderValue] = Json.valueWrites[TextHeaderValue]
   private implicit val addressesHeaderWrites: Writes[AddressesHeaderValue] = Json.valueWrites[AddressesHeaderValue]
   private implicit val GroupNameWrites: Writes[GroupName] = Json.valueWrites[GroupName]
@@ -103,7 +102,7 @@ object EmailGetSerializer {
   private implicit val headerURLWrites: Writes[HeaderURL] = Json.valueWrites[HeaderURL]
   private implicit val urlsHeaderWrites: Writes[URLsHeaderValue] = Json.valueWrites[URLsHeaderValue]
   private implicit val emailHeaderWrites: Writes[EmailHeaderValue] = {
-    case headerValue: AllHeaderValues => JsArray(headerValue.values.map(h =>  Json.toJson[EmailHeaderValue](h)))
+    case headerValue: AllHeaderValues => JsArray(headerValue.values.map(h =>  Json.toJson[EmailHeaderValue](h)(emailHeaderWrites)))
     case headerValue: RawHeaderValue => Json.toJson[RawHeaderValue](headerValue)
     case headerValue: TextHeaderValue => Json.toJson[TextHeaderValue](headerValue)
     case headerValue: AddressesHeaderValue => Json.toJson[AddressesHeaderValue](headerValue)
@@ -112,6 +111,7 @@ object EmailGetSerializer {
     case headerValue: DateHeaderValue => Json.toJson[DateHeaderValue](headerValue)
     case headerValue: URLsHeaderValue => Json.toJson[URLsHeaderValue](headerValue)
   }
+  private implicit val allHeaderWrites: Writes[AllHeaderValues] = Json.valueWrites[AllHeaderValues]
   private implicit val headersWrites: Writes[EmailHeader] = Json.writes[EmailHeader]
   private implicit val bodyValueWrites: Writes[EmailBodyValue] = Json.writes[EmailBodyValue]
   private implicit val unparsedMessageIdWrites: Writes[UnparsedEmailId] = Json.valueWrites[UnparsedEmailId]
@@ -149,7 +149,7 @@ object EmailGetSerializer {
       (__ \ "cid").writeNullable[Cid] and
       (__ \ "language").writeNullable[Languages] and
       (__ \ "location").writeNullable[Location] and
-      (__ \ "subParts").lazyWriteNullable(implicitly[Writes[List[EmailBodyPartToSerialize]]]) and
+      (__ \ "subParts").lazyWriteNullable(implicitly[Writes[List[EmailBodyPartToSerialize]]](list => new JsArray(list.map(bodyPartWritesToSerializeWrites.writes).toIndexedSeq) )) and
         JsPath.write[Map[String, Option[EmailHeaderValue]]]
     )(unlift(EmailBodyPartToSerialize.unapply))
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailQuerySerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailQuerySerializer.scala
index c41e255daa..02f0a353d0 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailQuerySerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailQuerySerializer.scala
@@ -120,6 +120,7 @@ class EmailQuerySerializer @Inject()(mailboxIdFactory: MailboxId.Factory) {
   }
   private implicit val sortPropertyWrites: Writes[SortProperty] = {
     case ReceivedAtSortProperty => JsString("receivedAt")
+    case _ => throw new NotImplementedError()
   }
 
   private implicit val isAscendingFormat: Format[IsAscending] = Json.valueFormat[IsAscending]
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailSetSerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailSetSerializer.scala
index c11d46bf62..3ec0ea36ed 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailSetSerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/EmailSetSerializer.scala
@@ -251,6 +251,7 @@ class EmailSetSerializer @Inject()(messageIdFactory: MessageId.Factory, mailboxI
       .sequence
       .fold(e => JsError(e),
         ids => JsSuccess(MessageIdsHeaderValue(Some(ids).filter(_.nonEmpty))))
+    case jsValue => JsError(s"expected JsArray, got $jsValue")
   }
 
   private implicit val isTruncatedReads: Reads[IsTruncated] = Json.valueReads[IsTruncated]
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/IdentitySerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/IdentitySerializer.scala
index daad8cc0a6..41139f143a 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/IdentitySerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/IdentitySerializer.scala
@@ -103,6 +103,7 @@ object IdentitySerializer {
         case jsonObject: JsObject => propertiesFiltered(properties, capabilities).filter(jsonObject)
         case jsValue => jsValue
       }))
+      case jsValue => JsError(s"expected JsArray, got $jsValue")
     }).get
 
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/MailboxSerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/MailboxSerializer.scala
index 517e5d37d4..0acf331102 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/MailboxSerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/MailboxSerializer.scala
@@ -180,6 +180,7 @@ class MailboxSerializer @Inject()(mailboxIdFactory: MailboxId.Factory) {
           case jsonObject: JsObject => mailboxTransformation.filter(jsonObject)
           case jsValue => jsValue
         }))
+        case jsValue => JsError(s"expected JsArray, got $jsValue")
       }).get
   }
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/PushSubscriptionSerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/PushSubscriptionSerializer.scala
index aa23892582..db4d497c5a 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/PushSubscriptionSerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/PushSubscriptionSerializer.scala
@@ -116,5 +116,6 @@ class PushSubscriptionSerializer @Inject()(typeStateFactory: TypeStateFactory) {
             properties.filter(jsonObject)
           case jsValue => jsValue
         }))
+        case jsValue => JsError(s"expected JsArray, got $jsValue")
       }).get
 }
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/QuotaSerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/QuotaSerializer.scala
index c9ee5512f2..c6fb5f90f5 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/QuotaSerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/QuotaSerializer.scala
@@ -124,6 +124,7 @@ object QuotaSerializer {
               .filter(jsonObject)
           case jsValue => jsValue
         }))
+        case jsValue => JsError(s"expected JsArray, got $jsValue")
       }).get
 
   def serialize(response: QuotaGetResponse): JsValue = Json.toJson(response)
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/VacationSerializer.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/VacationSerializer.scala
index 5f54cf5397..5862078152 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/VacationSerializer.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/VacationSerializer.scala
@@ -91,6 +91,7 @@ object VacationSerializer {
               .filter(jsonObject)
           case jsValue => jsValue
         }))
+        case jsValue => JsError(s"expected JsArray, got $jsValue")
       }).get
 
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/package.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/package.scala
index 9219314c75..75c0286b95 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/package.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/json/package.scala
@@ -30,6 +30,7 @@ import org.apache.james.jmap.core.{AccountId, Properties, SetError, UTCDate, Uui
 import org.apache.james.jmap.mail.HasMoreChanges
 import play.api.libs.json._
 
+import scala.annotation.nowarn
 import scala.util.{Failure, Success, Try}
 
 package object json {
@@ -44,6 +45,7 @@ package object json {
     case _ => JsError("Expecting mailboxId value to be a boolean")
   }
 
+  @nowarn
   def mapWrites[K, V](keyWriter: K => String, valueWriter: Writes[V]): OWrites[Map[K, V]] =
     (ids: Map[K, V]) => {
       ids.foldLeft(JsObject.empty)((jsObject, kv) => {
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Email.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Email.scala
index d19490a9dc..5037b417cf 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Email.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Email.scala
@@ -174,6 +174,7 @@ object ReadLevel {
       case FastViewWithAttachmentsMetadataReadLevel => FastViewWithAttachmentsMetadataReadLevel
       case _ => FastViewReadLevel
     }
+    case _ => throw new NotImplementedError()
   }
 }
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailHeader.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailHeader.scala
index a1f578c99a..6256d7c283 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailHeader.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailHeader.scala
@@ -88,7 +88,7 @@ object MessageIdsHeaderValue {
         if(body.startsWith("<") && body.endsWith(">") && body.contains("@")) {
           scala.Right(HeaderMessageId.from(body))
         } else {
-          Left()
+          Left((): Unit)
         }
       }.toOption)
       .toList
@@ -113,7 +113,7 @@ object URLsHeaderValue {
           if(url.startsWith("<") && url.endsWith(">")) {
             scala.Right(HeaderURL.from(url))
           } else {
-            Left()
+            Left((): Unit)
           }
         }.toOption))
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailSet.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailSet.scala
index da1e74e9d3..b223121a7a 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailSet.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailSet.scala
@@ -301,8 +301,8 @@ case class EmailCreationRequest(mailboxIds: MailboxIds,
     bodyValues.getOrElse(Map())
       .get(partId)
       .map {
-        case part if part.isTruncated.isDefined && part.isTruncated.get.value.equals(true) => Left(new IllegalArgumentException("Expecting isTruncated to be false"))
-        case part if part.isEncodingProblem.isDefined && part.isEncodingProblem.get.value.equals(true) => Left(new IllegalArgumentException("Expecting isEncodingProblem to be false"))
+        case part if part.isTruncated.isDefined && part.isTruncated.get.value => Left(new IllegalArgumentException("Expecting isTruncated to be false"))
+        case part if part.isEncodingProblem.isDefined && part.isEncodingProblem.get.value => Left(new IllegalArgumentException("Expecting isEncodingProblem to be false"))
         case part => Right(Some(part.value))
       }
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keyword.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keyword.scala
index 002eb0cd4a..b1c23ce234 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keyword.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keyword.scala
@@ -81,7 +81,7 @@ final case class Keyword(flagName: String) extends AnyVal {
   def isForbiddenImapKeyword: Boolean = Keyword.NON_EXPOSED_IMAP_KEYWORDS.contains(this)
 
   def asSystemFlag: Option[Flags.Flag] = Keyword.IMAP_SYSTEM_FLAGS
-    .filter(entry => entry._2.equals(this))
+    .filter(entry => entry._2 == this)
     .keys
     .collectFirst(flag => flag)
 
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keywords.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keywords.scala
index f48aa4d686..9967665b96 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keywords.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/Keywords.scala
@@ -51,11 +51,11 @@ object KeywordsValidator {
     if (exposedKeywords.isEmpty || exposedKeywords.size != keywords.size) {
       Failure(new IllegalArgumentException("Does not allow to update 'Deleted' or 'Recent' flag"))
     } else {
-      Success()
+      Success((): Unit)
     }
   }
 
-  val IGNORE_NON_EXPOSED_IMAP_KEYWORDS: KeywordsValidator = _ => Success()
+  val IGNORE_NON_EXPOSED_IMAP_KEYWORDS: KeywordsValidator = _ => Success((): Unit)
 }
 
 object KeywordFilter {
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala
index 9bc4d1ebc3..fafcc79897 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala
@@ -216,6 +216,7 @@ class EventSourceRoutes@Inject() (@Named(InjectionKeys.RFC_8621) val authenticat
     val event: String = outboundMessage match {
       case _: PingMessage => "ping"
       case _: StateChange => "state"
+      case _ => throw new NotImplementedError()
     }
     s"event: $event\ndata: ${Json.stringify(pushSerializer.serializeSSE(outboundMessage))}\n\n"
   }
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JmapApi.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JmapApi.scala
index d9c0ae4ce6..3e6f9262fc 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JmapApi.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JmapApi.scala
@@ -95,7 +95,7 @@ class JMAPApi (methods: Set[Method], defaultCapabilities: Set[CapabilityIdentifi
     if (missingCapabilities.nonEmpty) {
       Left(MissingCapabilityException(s"Missing capability(ies): ${missingCapabilities.mkString(", ")}"))
     } else {
-      Right()
+      Right((): Unit)
     }
   }
 }
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala
index 2c42f2a62b..fc9a976450 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/UploadRoutes.scala
@@ -85,7 +85,7 @@ class UploadRoutes @Inject()(@Named(InjectionKeys.RFC_8621) val authenticator: A
 
   def post(request: HttpServerRequest, response: HttpServerResponse): Mono[Void] = {
     request.requestHeaders.get(CONTENT_TYPE) match {
-      case contentType => SMono.fromPublisher(
+      case contentType: String if contentType.nonEmpty => SMono.fromPublisher(
           authenticator.authenticate(request))
         .flatMap(session => post(request, response, ContentType.of(contentType), session))
         .onErrorResume {
diff --git a/server/queue/queue-pulsar/src/main/scala/org/apache/james/queue/pulsar/PulsarMailQueue.scala b/server/queue/queue-pulsar/src/main/scala/org/apache/james/queue/pulsar/PulsarMailQueue.scala
index 2d2ddb9af4..8f385b78fd 100644
--- a/server/queue/queue-pulsar/src/main/scala/org/apache/james/queue/pulsar/PulsarMailQueue.scala
+++ b/server/queue/queue-pulsar/src/main/scala/org/apache/james/queue/pulsar/PulsarMailQueue.scala
@@ -259,6 +259,7 @@ class PulsarMailQueue(
             .fromPublisher(readMimeMessage(partsId))
             .collect { case Some(message) => message }
             .map(message => (readMail(metadata, message), partsId, committableMessage))
+        case _ => throw new NotImplementedError()
       }
   }
 
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/DecisionProjection.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/DecisionProjection.scala
index 2d4b274529..602daeeef4 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/DecisionProjection.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/DecisionProjection.scala
@@ -45,6 +45,7 @@ object DecisionProjection {
     taskEvent match {
       case _: Created => DecisionProjection(Status.WAITING, None)
       case updated: AdditionalInformationUpdated => DecisionProjection(Status.IN_PROGRESS, Some(updated.additionalInformation.timestamp))
+      case _ => throw new NotImplementedError()
     }
   }
 }


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


[james-project] 01/05: [CLEAN CODE] Update Deprecated method: AssertJ containsOnlyElementsOf -> containOnly

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

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

commit 12071e9eeea0e54947813178870189d8628ad989
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Sat Jun 24 05:55:15 2023 +0700

    [CLEAN CODE] Update Deprecated method: AssertJ containsOnlyElementsOf -> containOnly
---
 .../backends/rabbitmq/RabbitMQClusterTest.java     | 21 +++++-----
 .../james/backends/rabbitmq/RabbitMQTest.java      | 15 ++++---
 .../store/mail/model/ListMailboxAssert.java        |  3 +-
 .../store/mail/model/ListMessageAssert.java        |  2 +-
 .../mail/model/ListMessagePropertiesAssert.java    |  2 +-
 .../james/rrt/lib/RewriteTablesStepdefs.java       |  4 +-
 .../james/transport/util/RecipientsUtilsTest.java  |  5 +--
 .../apache/james/transport/util/TosUtilsTest.java  |  6 +--
 .../mailrepository/MailRepositoryContract.java     |  3 +-
 .../cucumber/GetMessagesMethodStepdefs.java        |  4 +-
 .../jmap/draft/methods/GetMessagesMethodTest.java  | 48 ++++++++++------------
 .../jmap/http/DefaultMailboxesProvisionerTest.java |  9 ++--
 .../james/jmap/http/MailboxesProvisionerTest.scala | 13 +++---
 .../org/apache/james/linshare/LinshareTest.java    |  2 +-
 14 files changed, 64 insertions(+), 73 deletions(-)

diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQClusterTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQClusterTest.java
index afac128618..1f0da7300e 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQClusterTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQClusterTest.java
@@ -33,7 +33,6 @@ import static org.awaitility.Durations.ONE_SECOND;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
-import java.util.List;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.IntStream;
@@ -136,8 +135,8 @@ class RabbitMQClusterTest {
 
             awaitAtMostOneMinute.until(() -> consumer2.getConsumedMessages().size() == nbMessages);
 
-            List<Integer> expectedResult = IntStream.range(0, nbMessages).boxed().collect(ImmutableList.toImmutableList());
-            assertThat(consumer2.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
+            Integer[] expectedResult = IntStream.range(0, nbMessages).boxed().toArray(Integer[]::new);
+            assertThat(consumer2.getConsumedMessages()).containsOnly(expectedResult);
         }
 
         @Test
@@ -157,8 +156,8 @@ class RabbitMQClusterTest {
 
             awaitAtMostOneMinute.until(() -> consumer2.getConsumedMessages().size() == nbMessages);
 
-            List<Integer> expectedResult = IntStream.range(0, nbMessages).boxed().collect(ImmutableList.toImmutableList());
-            assertThat(consumer2.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
+            Integer[] expectedResult = IntStream.range(0, nbMessages).boxed().toArray(Integer[]::new);
+            assertThat(consumer2.getConsumedMessages()).containsOnly(expectedResult);
         }
 
     }
@@ -214,8 +213,8 @@ class RabbitMQClusterTest {
 
             awaitAtMostOneMinute.until(() -> consumer.getConsumedMessages().size() == nbMessages);
 
-            List<Integer> expectedResult = IntStream.range(0, nbMessages).boxed().collect(ImmutableList.toImmutableList());
-            assertThat(consumer.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
+            Integer[] expectedResult = IntStream.range(0, nbMessages).boxed().toArray(Integer[]::new);
+            assertThat(consumer.getConsumedMessages()).containsOnly(expectedResult);
         }
 
         private void tryPublishWithRetry(byte[] bytes) {
@@ -256,8 +255,8 @@ class RabbitMQClusterTest {
 
                 awaitAtMostOneMinute.until(() -> consumer.getConsumedMessages().size() == nbMessages);
 
-                List<Integer> expectedResult = IntStream.range(0, nbMessages).boxed().collect(ImmutableList.toImmutableList());
-                assertThat(consumer.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
+                Integer[] expectedResult = IntStream.range(0, nbMessages).boxed().toArray(Integer[]::new);
+                assertThat(consumer.getConsumedMessages()).containsOnly(expectedResult);
             }
         }
 
@@ -283,8 +282,8 @@ class RabbitMQClusterTest {
 
             awaitAtMostOneMinute.until(() -> consumer.getConsumedMessages().size() == nbMessages);
 
-            List<Integer> expectedResult = IntStream.range(0, nbMessages).boxed().collect(ImmutableList.toImmutableList());
-            assertThat(consumer.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
+            Integer[] expectedResult = IntStream.range(0, nbMessages).boxed().toArray(Integer[]::new);
+            assertThat(consumer.getConsumedMessages()).containsOnly(expectedResult);
         }
 
         private void stopWhenHalfProcessed(DockerRabbitMQCluster cluster, int nbMessages, AtomicInteger counter) {
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQTest.java
index 0f22ff36a3..8feeaa11fa 100644
--- a/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQTest.java
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backends/rabbitmq/RabbitMQTest.java
@@ -61,7 +61,6 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 import com.github.fge.lambdas.Throwing;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import com.rabbitmq.client.AMQP;
@@ -264,11 +263,11 @@ class RabbitMQTest {
                 awaitAtMostOneMinute.until(
                     () -> countReceivedMessages(consumer2, consumer3, consumer4) == 30);
 
-                ImmutableList<Integer> expectedResult = IntStream.range(0, 10).boxed().collect(ImmutableList.toImmutableList());
-                // Check every subscriber have receive all the messages.
-                assertThat(consumer2.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
-                assertThat(consumer3.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
-                assertThat(consumer4.getConsumedMessages()).containsOnlyElementsOf(expectedResult);
+                Integer[] expectedResult = IntStream.range(0, 10).boxed().toArray(Integer[]::new);
+                // Check every subscriber have received all the messages.
+                assertThat(consumer2.getConsumedMessages()).containsOnly(expectedResult);
+                assertThat(consumer3.getConsumedMessages()).containsOnly(expectedResult);
+                assertThat(consumer4.getConsumedMessages()).containsOnly(expectedResult);
             }
         }
 
@@ -304,14 +303,14 @@ class RabbitMQTest {
                 awaitAtMostOneMinute.until(
                     () -> countReceivedMessages(consumer2, consumer3, consumer4) == nbMessages);
 
-                ImmutableList<Integer> expectedResult = IntStream.range(0, nbMessages).boxed().collect(ImmutableList.toImmutableList());
+                Integer[] expectedResult = IntStream.range(0, nbMessages).boxed().toArray(Integer[]::new);
 
                 assertThat(
                     Iterables.concat(
                         consumer2.getConsumedMessages(),
                         consumer3.getConsumedMessages(),
                         consumer4.getConsumedMessages()))
-                    .containsOnlyElementsOf(expectedResult);
+                    .containsOnly(expectedResult);
             }
 
             @Test
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java
index 3a128f5fa7..be2ca14aa6 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java
@@ -51,7 +51,8 @@ public class ListMailboxAssert {
     }
 
     public void containOnly(Mailbox... expecteds) {
-        assertThat(mailboxtoInnerMailbox(actual)).containsOnlyElementsOf(mailboxtoInnerMailbox(Lists.newArrayList(expecteds)));
+        InnerMailbox[] innerMailboxes = mailboxtoInnerMailbox(Lists.newArrayList(expecteds)).toArray(new InnerMailbox[0]);
+        assertThat(mailboxtoInnerMailbox(actual)).containsOnly(innerMailboxes);
     }
 
     private final class InnerMailbox {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java
index f36b2bfba9..253cbd3154 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java
@@ -62,7 +62,7 @@ public class ListMessageAssert {
     }
 
     public void containOnly(MailboxMessage... expecteds) {
-        assertThat(messageToInnerMessage(actual)).containsOnlyElementsOf(messageToInnerMessage(Lists.newArrayList(expecteds)));
+        assertThat(messageToInnerMessage(actual)).containsOnly(messageToInnerMessage(Lists.newArrayList(expecteds)).toArray(new InnerMessage[0]));
     }
 
     private final class InnerMessage {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java
index 297b7bb230..342e6497e7 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java
@@ -50,7 +50,7 @@ public class ListMessagePropertiesAssert {
     }
 
     public void containsOnly(List<Property> expected) {
-        assertThat(propertiesToInnerProperties(actual)).containsOnlyElementsOf(propertiesToInnerProperties(expected));
+        assertThat(propertiesToInnerProperties(actual)).containsOnly(propertiesToInnerProperties(expected).toArray(new InnerProperty[0]));
     }
     
     private final class InnerProperty {
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
index ade2238da0..f4de1a6023 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
@@ -188,12 +188,12 @@ public class RewriteTablesStepdefs {
 
     @Then("mappings for user \"([^\"]*)\" at domain \"([^\"]*)\" should contain only \"([^\"]*)\"")
     public void assertMappingsForUser(String user, String domain, List<String> mappings) throws Throwable {
-        assertThat(rewriteTable.getResolvedMappings(user, Domain.of(domain)).asStrings()).containsOnlyElementsOf(mappings);
+        assertThat(rewriteTable.getResolvedMappings(user, Domain.of(domain)).asStrings()).containsOnly(mappings.toArray(new String[0]));
     }
 
     @Then("mappings for alias \"([^\"]*)\" at domain \"([^\"]*)\" should contain only \"([^\"]*)\"")
     public void assertMappingsForAlias(String alias, String domain, List<String> mappings) throws Throwable {
-        assertThat(rewriteTable.getResolvedMappings(alias, Domain.of(domain)).asStrings()).containsOnlyElementsOf(mappings);
+        assertThat(rewriteTable.getResolvedMappings(alias, Domain.of(domain)).asStrings()).containsOnly(mappings.toArray(new String[0]));
     }
 
     @Then("a \"([^\"]*)\" exception should have been thrown")
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/RecipientsUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/RecipientsUtilsTest.java
index 384547cd21..2e050b8ee8 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/RecipientsUtilsTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/RecipientsUtilsTest.java
@@ -90,7 +90,7 @@ class RecipientsUtilsTest {
 
         List<MailAddress> recipients = testee.getRecipients(fakeMail);
 
-        assertThat(recipients).containsOnlyElementsOf(expectedRecipients);
+        assertThat(recipients).containsOnly(expectedRecipients.toArray(new MailAddress[0]));
     }
 
     @Test
@@ -113,7 +113,6 @@ class RecipientsUtilsTest {
 
         List<MailAddress> recipients = testee.getRecipients(fakeMail);
 
-        ImmutableList<MailAddress> expectedRecipients = ImmutableList.of(from, to, to2);
-        assertThat(recipients).containsOnlyElementsOf(expectedRecipients);
+        assertThat(recipients).containsOnly(from, to, to2);
     }
 }
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/TosUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/TosUtilsTest.java
index 52bf6925fe..02d2b77572 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/TosUtilsTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/TosUtilsTest.java
@@ -93,8 +93,7 @@ class TosUtilsTest {
 
         List<MailAddress> to = testee.getTo(fakeMail);
 
-        ImmutableList<MailAddress> expectedTo = ImmutableList.of(mailAddress, mailAddress2);
-        assertThat(to).containsOnlyElementsOf(expectedTo);
+        assertThat(to).containsOnly(mailAddress, mailAddress2);
     }
 
     @Test
@@ -115,7 +114,6 @@ class TosUtilsTest {
 
         List<MailAddress> to = testee.getTo(fakeMail);
 
-        ImmutableList<MailAddress> expectedTo = ImmutableList.of(from, toMailAddress, toMailAddress2);
-        assertThat(to).containsOnlyElementsOf(expectedTo);
+        assertThat(to).containsOnly(from, toMailAddress, toMailAddress2);
     }
 }
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index 3eb4f4ba94..bf9d452afe 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -51,6 +51,7 @@ import org.apache.mailet.PerRecipientHeaders;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
 import org.assertj.core.api.SoftAssertions;
+import org.assertj.core.util.IterableUtil;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.Test;
 
@@ -533,7 +534,7 @@ public interface MailRepositoryContract {
 
         assertThat(testee.list())
             .toIterable()
-            .containsOnlyElementsOf(expectedResult);
+            .containsOnly(expectedResult.toArray(new MailKey[0]));
     }
 
     default MailKey computeKey(int keyIndex) {
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/GetMessagesMethodStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index 2bb69a2f1d..262d6a7879 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -712,7 +712,7 @@ public class GetMessagesMethodStepdefs {
     @Then("^the keywords of the message is (.*)$")
     public void assertKeywordsOfMessageShouldDisplay(List<String> keywords) {
         assertThat(httpClient.jsonPath.<Map<String, Boolean>>read(FIRST_MESSAGE + ".keywords").keySet())
-            .containsOnlyElementsOf(keywords);
+            .containsOnly(keywords.toArray(new String[0]));
     }
 
     @Then("^the message has no keyword$")
@@ -726,7 +726,7 @@ public class GetMessagesMethodStepdefs {
         userStepdefs.execWithUser(user, () -> postWithAListOfIds(ImmutableList.of(messageId)));
 
         assertThat(httpClient.jsonPath.<Map<String, Boolean>>read(FIRST_MESSAGE + ".keywords").keySet())
-            .containsOnlyElementsOf(keywords);
+            .containsOnly(keywords.toArray(new String[0]));
     }
 
     @Then("^\"([^\"]*)\" should see message \"([^\"]*)\" without keywords$")
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
index 9a3c73a210..5155d8d69e 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
@@ -669,17 +669,15 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(MessageFullView.class)
             .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getKeywords)
-            .containsOnlyElementsOf(
-                ImmutableList.of(
-                    ImmutableMap.of(
-                        "$Answered", true,
-                        "$Draft", true),
-                    ImmutableMap.of(
-                        "$Answered", true,
-                        "$Draft", true),
-                    ImmutableMap.of(
-                        "$Answered", true,
-                        "$Draft", true)));
+            .containsOnly( ImmutableMap.of(
+                    "$Answered", true,
+                    "$Draft", true),
+                ImmutableMap.of(
+                    "$Answered", true,
+                    "$Draft", true),
+                ImmutableMap.of(
+                    "$Answered", true,
+                    "$Draft", true));
 
     }
 
@@ -728,17 +726,15 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(MessageFullView.class)
             .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getKeywords)
-            .containsOnlyElementsOf(
-                ImmutableList.of(
-                    ImmutableMap.of(
-                        "$Answered", true,
-                        "$Draft", true),
-                    ImmutableMap.of(
-                        "$Answered", true,
-                        "$Draft", true),
-                    ImmutableMap.of(
-                        "$Answered", true,
-                        "$Draft", true)));
+            .containsOnly(ImmutableMap.of(
+                    "$Answered", true,
+                    "$Draft", true),
+                ImmutableMap.of(
+                    "$Answered", true,
+                    "$Draft", true),
+                ImmutableMap.of(
+                    "$Answered", true,
+                    "$Draft", true));
 
     }
 
@@ -770,11 +766,9 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(MessageFullView.class)
             .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getKeywords)
-            .containsOnlyElementsOf(
-                ImmutableList.of(
-                    ImmutableMap.of(
-                        "$Answered", true,
-                        FORWARDED, true)));
+            .containsOnly(ImmutableMap.of(
+                "$Answered", true,
+                FORWARDED, true));
     }
 
 }
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java
index cb18446210..e444f18c25 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java
@@ -37,7 +37,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.github.fge.lambdas.Throwing;
-import com.google.common.collect.ImmutableList;
 
 public class DefaultMailboxesProvisionerTest {
 
@@ -61,10 +60,10 @@ public class DefaultMailboxesProvisionerTest {
         testee.createMailboxesIfNeeded(session).block();
 
         assertThat(mailboxManager.list(session))
-            .containsOnlyElementsOf(DefaultMailboxes.DEFAULT_MAILBOXES
+            .containsOnly(DefaultMailboxes.DEFAULT_MAILBOXES
                 .stream()
                 .map(mailboxName -> MailboxPath.forUser(USERNAME, mailboxName))
-                .collect(ImmutableList.toImmutableList()));
+                .toArray(MailboxPath[]::new));
     }
 
     @Test
@@ -84,7 +83,7 @@ public class DefaultMailboxesProvisionerTest {
         testee.createMailboxesIfNeeded(session).block();
 
         assertThat(subscriptionManager.subscriptions(session))
-            .containsOnlyElementsOf(DefaultMailboxes.defaultMailboxesAsPath(USERNAME));
+            .containsOnly(DefaultMailboxes.defaultMailboxesAsPath(USERNAME).toArray(MailboxPath[]::new));
     }
 
     @Test
@@ -95,7 +94,7 @@ public class DefaultMailboxesProvisionerTest {
             .runSuccessfullyWithin(Duration.ofSeconds(10));
 
         assertThat(mailboxManager.list(session))
-            .containsOnlyElementsOf(DefaultMailboxes.defaultMailboxesAsPath(USERNAME));
+            .containsOnly(DefaultMailboxes.defaultMailboxesAsPath(USERNAME).toArray(MailboxPath[]::new));
     }
 
 }
diff --git a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/http/MailboxesProvisionerTest.scala b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/http/MailboxesProvisionerTest.scala
index cf0454574e..50c0b66e69 100644
--- a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/http/MailboxesProvisionerTest.scala
+++ b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/http/MailboxesProvisionerTest.scala
@@ -23,7 +23,6 @@ import java.time.Duration
 import java.util.function.Predicate
 
 import com.github.fge.lambdas.Throwing
-import com.google.common.collect.ImmutableList
 import org.apache.james.core.Username
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources
@@ -35,6 +34,8 @@ import org.apache.james.util.concurrency.ConcurrentTestRunner
 import org.assertj.core.api.Assertions.assertThat
 import org.junit.jupiter.api.{BeforeEach, Test}
 
+import scala.jdk.CollectionConverters._
+
 object MailboxesProvisionerTest {
   private val USERNAME: Username = Username.of("username")
 }
@@ -60,10 +61,10 @@ class MailboxesProvisionerTest {
     testee.createMailboxesIfNeeded(session).block()
 
     assertThat(mailboxManager.list(session))
-      .containsOnlyElementsOf(DefaultMailboxes.DEFAULT_MAILBOXES
-        .stream
+      .containsOnly(DefaultMailboxes.DEFAULT_MAILBOXES
+        .asScala
         .map((mailboxName: String) => MailboxPath.forUser(USERNAME, mailboxName))
-        .collect(ImmutableList.toImmutableList()))
+        .toArray: _*)
   }
 
   @Test
@@ -84,7 +85,7 @@ class MailboxesProvisionerTest {
     testee.createMailboxesIfNeeded(session).block()
 
     assertThat(subscriptionManager.subscriptions(session))
-      .containsOnlyElementsOf(DefaultMailboxes.defaultMailboxesAsPath(USERNAME))
+      .containsOnly(DefaultMailboxes.defaultMailboxesAsPath(USERNAME).asScala.toArray: _*)
   }
 
   @Test
@@ -95,6 +96,6 @@ class MailboxesProvisionerTest {
       .runSuccessfullyWithin(Duration.ofSeconds(10))
 
     assertThat(mailboxManager.list(session))
-      .containsOnlyElementsOf(DefaultMailboxes.defaultMailboxesAsPath(USERNAME))
+      .containsOnly(DefaultMailboxes.defaultMailboxesAsPath(USERNAME).asScala.toArray: _*)
   }
 }
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 c3f805556a..be6c70d57a 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
@@ -78,7 +78,7 @@ class LinshareTest {
 
         assertThat(technicalAccounts).anySatisfy(account -> SoftAssertions.assertSoftly(softly -> {
             softly.assertThat(account.getName()).isEqualTo(TECHNICAL_ACCOUNT.getUsername());
-            softly.assertThat(account.getPermissions()).containsOnlyElementsOf(TECHNICAL_PERMISSIONS);
+            softly.assertThat(account.getPermissions()).containsOnly(TECHNICAL_PERMISSIONS.toArray(new String[0]));
             softly.assertThat(account.isEnabled()).isEqualTo(ACCOUNT_ENABLED);
         }));
     }


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


[james-project] 05/05: Scala maven plugin - ignore warning log (Auto-application to () is deprecated) in Scala 3

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

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

commit 52e30c61c41ec1b305e5e2ae8df9ed048b10aede
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Sat Jun 24 10:41:57 2023 +0700

    Scala maven plugin - ignore warning log (Auto-application to () is deprecated) in Scala 3
    
    - Currently, James uses Scala 2.13.10. The warning log in Scala 3 makes build code very noise
---
 pom.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pom.xml b/pom.xml
index 094432c283..fc9d32a2a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3063,6 +3063,7 @@
                             <arg>-unchecked</arg>
                             <arg>-deprecation</arg>
                             <arg>-explaintypes</arg>
+                            <arg>-Wconf:msg=Auto-application to \`\(\)\` is deprecated:s</arg>
                         </args>
                         <jvmArgs>
                             <jvmArg>-Xss128m</jvmArg>


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


[james-project] 04/05: Scalafix - drop argument: `-Ywarn-unused`

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

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

commit 093cc807df6995f886e400be829580ad7c131e1c
Author: Tung Tran <vt...@linagora.com>
AuthorDate: Sat Jun 24 10:39:13 2023 +0700

    Scalafix - drop argument: `-Ywarn-unused`
    
    - A lot of implicit val was used but scalafix marks it is un-used. That makes the build log very noisy with an incorrect warning log
---
 pom.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index ec2a265791..094432c283 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3063,7 +3063,6 @@
                             <arg>-unchecked</arg>
                             <arg>-deprecation</arg>
                             <arg>-explaintypes</arg>
-                            <arg>-Ywarn-unused</arg>
                         </args>
                         <jvmArgs>
                             <jvmArg>-Xss128m</jvmArg>


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