You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/12/19 11:24:44 UTC

[03/10] james-project git commit: MAILBOX-359 Gathering non related event DTOs into one class

MAILBOX-359 Gathering non related event DTOs into one class


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a8095043
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a8095043
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a8095043

Branch: refs/heads/master
Commit: a809504323cc1a533af873d6782e7f51d9da3a6b
Parents: 9e5b1bf
Author: tran tien duc <dt...@linagora.com>
Authored: Mon Dec 17 15:39:01 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Dec 19 18:05:58 2018 +0700

----------------------------------------------------------------------
 .../org/apache/james/mailbox/FlagsBuilder.java  |   5 -
 .../apache/james/mailbox/MailboxListener.java   |   3 +-
 .../org/apache/james/event/json/DTOs.scala      | 104 +++++++++++++++----
 .../james/event/json/EventSerializer.scala      |  39 ++++---
 .../apache/james/event/json/MetaDataDTO.scala   |  90 ----------------
 .../event/json/AddedSerializationTest.java      |  20 ++--
 6 files changed, 120 insertions(+), 141 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a8095043/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java b/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
index f36189b..7a791ec 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
@@ -61,11 +61,6 @@ public class FlagsBuilder {
         return this;
     }
 
-    public FlagsBuilder merge(FlagsBuilder flagsBuilder) {
-        internalFlags.add(flagsBuilder.internalFlags);
-        return this;
-    }
-
     public Flags build() {
         return new Flags(internalFlags);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a8095043/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
index 60d8aa2..83797ca 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.SortedMap;
 
 import org.apache.james.core.User;
 import org.apache.james.core.quota.QuotaCount;
@@ -451,7 +452,7 @@ public interface MailboxListener {
     class Added extends MetaDataHoldingEvent {
         private final Map<MessageUid, MessageMetaData> added;
 
-        public Added(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId, Map<MessageUid, MessageMetaData> uids) {
+        public Added(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId, SortedMap<MessageUid, MessageMetaData> uids) {
             super(sessionId, user, path, mailboxId);
             this.added = ImmutableMap.copyOf(uids);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a8095043/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala
----------------------------------------------------------------------
diff --git a/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala b/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala
index 3e04d1c..ee4529e 100644
--- a/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala
+++ b/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala
@@ -1,31 +1,38 @@
-/****************************************************************
- * 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.                                           *
- ****************************************************************/
+/** **************************************************************
+  * 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.event.json
 
+import java.time.Instant
+import java.util.Date
+
+import javax.mail.{Flags => JavaMailFlags}
 import org.apache.james.core.quota.QuotaValue
 import org.apache.james.mailbox.acl.{ACLDiff => JavaACLDiff}
-import org.apache.james.mailbox.model.{MailboxACL, MailboxPath => JavaMailboxPath, Quota => JavaQuota}
+import org.apache.james.mailbox.model.{MailboxACL, MessageId, MailboxPath => JavaMailboxPath, MessageMetaData => JavaMessageMetaData,
+  Quota => JavaQuota}
+import org.apache.james.mailbox.{FlagsBuilder, MessageUid}
 
 import scala.collection.JavaConverters._
 
 object DTOs {
+
   object ACLDiff {
     def fromJava(javaACLDiff: JavaACLDiff): ACLDiff = ACLDiff(
       javaACLDiff.getOldACL.getEntries.asScala.toMap,
@@ -63,4 +70,63 @@ object DTOs {
         .limitsByScope(limits.asJava)
         .build()
   }
+
+  object MessageMetaData {
+    def fromJava(javaMessageMetaData: JavaMessageMetaData): MessageMetaData = DTOs.MessageMetaData(
+      javaMessageMetaData.getUid,
+      javaMessageMetaData.getModSeq,
+      javaMessageMetaData.getFlags,
+      javaMessageMetaData.getSize,
+      javaMessageMetaData.getInternalDate.toInstant,
+      javaMessageMetaData.getMessageId)
+  }
+
+  case class MessageMetaData(uid: MessageUid, modSeq: Long, flags: JavaMailFlags, size: Long, internalDate: Instant, messageId: MessageId) {
+    def toJava: JavaMessageMetaData = new JavaMessageMetaData(uid, modSeq, flags, size, Date.from(internalDate), messageId)
+  }
+
+  object Flags {
+    val ANSWERED = "\\Answered"
+    val DELETED = "\\Deleted"
+    val DRAFT = "\\Draft"
+    val FLAGGED = "\\Flagged"
+    val RECENT = "\\Recent"
+    val SEEN = "\\Seen"
+    val ALL_SYSTEM_FLAGS = List(ANSWERED, DELETED, DRAFT, FLAGGED, RECENT, SEEN)
+
+    def toJavaFlags(serializedFlags: Array[String]): JavaMailFlags = {
+      serializedFlags
+        .map(toJavaMailFlag)
+        .foldLeft(new FlagsBuilder)((builder, flag) => builder.add(flag))
+        .build()
+    }
+
+    def toJavaMailFlag(flag: String): JavaMailFlags = ALL_SYSTEM_FLAGS.contains(flag) match {
+      case true => new FlagsBuilder().add(stringToSystemFlag(flag)).build()
+      case false => new FlagsBuilder().add(flag).build()
+    }
+
+    def fromJavaFlags(flags: JavaMailFlags): Array[String] = {
+      flags.getUserFlags ++ flags.getSystemFlags.map(flag => systemFlagToString(flag))
+    }
+
+    private def stringToSystemFlag(serializedFlag: String): JavaMailFlags.Flag = serializedFlag match {
+      case ANSWERED => JavaMailFlags.Flag.ANSWERED
+      case DELETED => JavaMailFlags.Flag.DELETED
+      case DRAFT => JavaMailFlags.Flag.DRAFT
+      case FLAGGED => JavaMailFlags.Flag.FLAGGED
+      case RECENT => JavaMailFlags.Flag.RECENT
+      case SEEN => JavaMailFlags.Flag.SEEN
+      case _ => throw new IllegalArgumentException(serializedFlag + " is not a system flag")
+    }
+
+    private def systemFlagToString(flag: JavaMailFlags.Flag): String = flag match {
+      case JavaMailFlags.Flag.ANSWERED => ANSWERED
+      case JavaMailFlags.Flag.DELETED => DELETED
+      case JavaMailFlags.Flag.DRAFT => DRAFT
+      case JavaMailFlags.Flag.FLAGGED => FLAGGED
+      case JavaMailFlags.Flag.RECENT => RECENT
+      case JavaMailFlags.Flag.SEEN => SEEN
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a8095043/mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala
----------------------------------------------------------------------
diff --git a/mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala b/mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala
index a638165..01cb1b8 100644
--- a/mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala
+++ b/mailbox/event/json/src/main/scala/org/apache/james/event/json/EventSerializer.scala
@@ -20,19 +20,22 @@
 package org.apache.james.event.json
 
 import java.time.Instant
-import java.util.Optional
+import java.util.{Optional, TreeMap => JavaTreeMap}
 
 import javax.mail.{Flags => JavaMailFlags}
 import julienrf.json.derived
 import org.apache.james.core.quota.{QuotaCount, QuotaSize, QuotaValue}
 import org.apache.james.core.{Domain, User}
 import org.apache.james.event.json.DTOs.{ACLDiff, MailboxPath, Quota}
-import org.apache.james.event.json.MetaDataDTO.Flags
 import org.apache.james.mailbox.MailboxListener.{Added => JavaAdded, Expunged => JavaExpunged,
   MailboxACLUpdated => JavaMailboxACLUpdated, MailboxAdded => JavaMailboxAdded, MailboxDeletion => JavaMailboxDeletion,
   MailboxRenamed => JavaMailboxRenamed, QuotaUsageUpdatedEvent => JavaQuotaUsageUpdatedEvent}
 import org.apache.james.mailbox.MailboxSession.SessionId
 import org.apache.james.mailbox.model.{MailboxId, MessageId, QuotaRoot, MailboxACL => JavaMailboxACL, Quota => JavaQuota}
+import org.apache.james.event.json.DTOs.{Flags, MailboxPath, Quota}
+import org.apache.james.mailbox.MailboxListener.{Added => JavaAdded, Expunged => JavaExpunged, MailboxAdded => JavaMailboxAdded, MailboxDeletion => JavaMailboxDeletion, MailboxRenamed => JavaMailboxRenamed, QuotaUsageUpdatedEvent => JavaQuotaUsageUpdatedEvent}
+import org.apache.james.mailbox.MailboxSession.SessionId
+import org.apache.james.mailbox.model.{MailboxId, MessageId, QuotaRoot, MessageMetaData => JavaMessageMetaData, Quota => JavaQuota}
 import org.apache.james.mailbox.{MessageUid, Event => JavaEvent}
 import play.api.libs.json.{JsArray, JsError, JsNull, JsNumber, JsObject, JsResult, JsString, JsSuccess, Json, OFormat, Reads, Writes}
 
@@ -68,23 +71,23 @@ private object DTO {
   }
 
   case class Added(sessionId: SessionId, user: User, path: MailboxPath, mailboxId: MailboxId,
-                   added: Map[MessageUid, MetaDataDTO.MessageMetaData]) extends Event {
+                   added: Map[MessageUid, DTOs.MessageMetaData]) extends Event {
     override def toJava: JavaEvent = new JavaAdded(
       sessionId,
       user,
       path.toJava,
       mailboxId,
-      added.map(entry => entry._1 -> entry._2.toJava).asJava)
+      new JavaTreeMap[MessageUid, JavaMessageMetaData](added.mapValues(_.toJava).asJava))
   }
 
   case class Expunged(sessionId: SessionId, user: User, path: MailboxPath, mailboxId: MailboxId,
-                      expunged: Map[MessageUid, MetaDataDTO.MessageMetaData]) extends Event {
+                      expunged: Map[MessageUid, DTOs.MessageMetaData]) extends Event {
     override def toJava: JavaEvent = new JavaExpunged(
       sessionId,
       user,
       path.toJava,
       mailboxId,
-      expunged.map(entry => entry._1 -> entry._2.toJava).asJava)
+      expunged.mapValues(_.toJava).asJava)
   }
 }
 
@@ -96,6 +99,11 @@ private object ScalaConverter {
     aclDiff = ACLDiff.fromJava(event.getAclDiff),
     mailboxId = event.getMailboxId)
 
+  private def toScala[T <: QuotaValue[T]](java: JavaQuota[T]): DTOs.Quota[T] = DTOs.Quota(
+    used = java.getUsed,
+    limit = java.getLimit,
+    limits = java.getLimitByScope.asScala.toMap)
+
   private def toScala(event: JavaMailboxAdded): DTO.MailboxAdded = DTO.MailboxAdded(
     mailboxPath = MailboxPath.fromJava(event.getMailboxPath),
     mailboxId = event.getMailboxId,
@@ -111,7 +119,6 @@ private object ScalaConverter {
     totalDeletedSize = event.getTotalDeletedSize,
     mailboxId = event.getMailboxId)
 
-
   private def toScala(event: JavaMailboxRenamed): DTO.MailboxRenamed = DTO.MailboxRenamed(
     sessionId = event.getSessionId,
     user = event.getUser,
@@ -131,7 +138,7 @@ private object ScalaConverter {
     user = event.getUser,
     path = MailboxPath.fromJava(event.getMailboxPath),
     mailboxId = event.getMailboxId,
-    added = event.getAdded.asScala.map(entry => entry._1 -> MetaDataDTO.MessageMetaData.fromJava(entry._2)).toMap
+    added = event.getAdded.asScala.mapValues(DTOs.MessageMetaData.fromJava).toMap
   )
 
   private def toScala(event: JavaExpunged): DTO.Expunged = DTO.Expunged(
@@ -139,17 +146,17 @@ private object ScalaConverter {
     user = event.getUser,
     path = MailboxPath.fromJava(event.getMailboxPath),
     mailboxId = event.getMailboxId,
-    expunged = event.getExpunged.asScala.map(entry => entry._1 -> MetaDataDTO.MessageMetaData.fromJava(entry._2)).toMap
+    expunged = event.getExpunged.asScala.mapValues(DTOs.MessageMetaData.fromJava).toMap
   )
 
   def toScala(javaEvent: JavaEvent): Event = javaEvent match {
+    case e: JavaAdded => toScala(e)
+    case e: JavaExpunged => toScala(e)
     case e: JavaMailboxACLUpdated => toScala(e)
     case e: JavaMailboxAdded => toScala(e)
     case e: JavaMailboxDeletion => toScala(e)
     case e: JavaMailboxRenamed => toScala(e)
     case e: JavaQuotaUsageUpdatedEvent => toScala(e)
-    case e: JavaAdded => toScala(e)
-    case e: JavaExpunged => toScala(e)
     case _ => throw new RuntimeException("no Scala conversion known")
   }
 }
@@ -170,7 +177,7 @@ private class JsonSerialize(mailboxIdFactory: MailboxId.Factory, messageIdFactor
   implicit val messageIdWrites: Writes[MessageId] = value => JsString(value.serialize())
   implicit val messageUidWrites: Writes[MessageUid] = value => JsNumber(value.asLong())
   implicit val flagsWrites: Writes[JavaMailFlags] = value => JsArray(Flags.fromJavaFlags(value).map(flag => JsString(flag)))
-  implicit val messageMetaDataWrites: Writes[MetaDataDTO.MessageMetaData] = Json.writes[MetaDataDTO.MessageMetaData]
+  implicit val messageMetaDataWrites: Writes[DTOs.MessageMetaData] = Json.writes[DTOs.MessageMetaData]
 
   implicit val aclEntryKeyReads: Reads[JavaMailboxACL.EntryKey] = {
     case JsString(keyAsString) => JsSuccess(JavaMailboxACL.EntryKey.deserialize(keyAsString))
@@ -255,10 +262,10 @@ private class JsonSerialize(mailboxIdFactory: MailboxId.Factory, messageIdFactor
     }
 
   implicit val aclDiffReads: Reads[ACLDiff] = Json.reads[ACLDiff]
-  implicit val mailboxPathReads: Reads[MailboxPath] = Json.reads[MailboxPath]
-  implicit val quotaCReads: Reads[Quota[QuotaCount]] = Json.reads[Quota[QuotaCount]]
-  implicit val quotaSReads: Reads[Quota[QuotaSize]] = Json.reads[Quota[QuotaSize]]
-  implicit val messageMetaDataReads: Reads[MetaDataDTO.MessageMetaData] = Json.reads[MetaDataDTO.MessageMetaData]
+  implicit val quotaCReads: Reads[DTOs.Quota[QuotaCount]] = Json.reads[DTOs.Quota[QuotaCount]]
+  implicit val quotaSReads: Reads[DTOs.Quota[QuotaSize]] = Json.reads[DTOs.Quota[QuotaSize]]
+  implicit val mailboxPathReads: Reads[DTOs.MailboxPath] = Json.reads[DTOs.MailboxPath]
+  implicit val messageMetaDataReads: Reads[DTOs.MessageMetaData] = Json.reads[DTOs.MessageMetaData]
 
   implicit val eventOFormat: OFormat[Event] = derived.oformat()
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a8095043/mailbox/event/json/src/main/scala/org/apache/james/event/json/MetaDataDTO.scala
----------------------------------------------------------------------
diff --git a/mailbox/event/json/src/main/scala/org/apache/james/event/json/MetaDataDTO.scala b/mailbox/event/json/src/main/scala/org/apache/james/event/json/MetaDataDTO.scala
deleted file mode 100644
index ee314f0..0000000
--- a/mailbox/event/json/src/main/scala/org/apache/james/event/json/MetaDataDTO.scala
+++ /dev/null
@@ -1,90 +0,0 @@
-/** **************************************************************
-  * Licensed to the Apache Software Foundation (ASF) under one   *
-  * or more contributor license agreements.  See the NOTICE file *
-  * distributed with this work for additional information        *
-  * regarding copyright ownership.  The ASF licenses this file   *
-  * to you under the Apache License, Version 2.0 (the            *
-  * "License"); you may not use this file except in compliance   *
-  * with the License.  You may obtain a copy of the License at   *
-  * *
-  * http://www.apache.org/licenses/LICENSE-2.0                 *
-  * *
-  * Unless required by applicable law or agreed to in writing,   *
-  * software distributed under the License is distributed on an  *
-  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
-  * KIND, either express or implied.  See the License for the    *
-  * specific language governing permissions and limitations      *
-  * under the License.                                           *
-  * ***************************************************************/
-
-package org.apache.james.event.json
-
-import java.time.Instant
-import java.util.Date
-
-import javax.mail.{Flags => JavaMailFlags}
-import org.apache.james.mailbox.model.{MessageId, MessageMetaData => JavaMessageMetaData}
-import org.apache.james.mailbox.{FlagsBuilder, MessageUid}
-
-object MetaDataDTO {
-
-  object MessageMetaData {
-    def fromJava(javaMessageMetaData: JavaMessageMetaData): MessageMetaData = MetaDataDTO.MessageMetaData(
-      javaMessageMetaData.getUid,
-      javaMessageMetaData.getModSeq,
-      javaMessageMetaData.getFlags,
-      javaMessageMetaData.getSize,
-      javaMessageMetaData.getInternalDate.toInstant,
-      javaMessageMetaData.getMessageId)
-  }
-
-  object Flags {
-    val ANSWERED = "\\Answered"
-    val DELETED = "\\Deleted"
-    val DRAFT = "\\Draft"
-    val FLAGGED = "\\Flagged"
-    val RECENT = "\\Recent"
-    val SEEN = "\\Seen"
-    val ALL_SYSTEM_FLAGS = List(ANSWERED, DELETED, DRAFT, FLAGGED, RECENT, SEEN)
-
-    def toJavaFlags(serializedFlags: Array[String]): JavaMailFlags = {
-      serializedFlags
-        .map(toFlagBuilder)
-        .reduceOption(_ merge _)
-        .getOrElse(new FlagsBuilder())
-        .build()
-    }
-
-    def toFlagBuilder(flag: String): FlagsBuilder = ALL_SYSTEM_FLAGS.contains(flag) match {
-      case true => new FlagsBuilder().add(stringToSystemFlag(flag))
-      case false => new FlagsBuilder().add(flag)
-    }
-
-    def fromJavaFlags(flags: JavaMailFlags): Array[String] = {
-      flags.getUserFlags ++ flags.getSystemFlags.map(flag => systemFlagToString(flag))
-    }
-
-    private def stringToSystemFlag(serializedFlag: String): JavaMailFlags.Flag = serializedFlag match {
-      case ANSWERED => JavaMailFlags.Flag.ANSWERED
-      case DELETED => JavaMailFlags.Flag.DELETED
-      case DRAFT => JavaMailFlags.Flag.DRAFT
-      case FLAGGED => JavaMailFlags.Flag.FLAGGED
-      case RECENT => JavaMailFlags.Flag.RECENT
-      case SEEN => JavaMailFlags.Flag.SEEN
-      case _ => throw new IllegalArgumentException(serializedFlag + " is not a system flag")
-    }
-
-    private def systemFlagToString(flag: JavaMailFlags.Flag): String = flag match {
-      case JavaMailFlags.Flag.ANSWERED => ANSWERED
-      case JavaMailFlags.Flag.DELETED => DELETED
-      case JavaMailFlags.Flag.DRAFT => DRAFT
-      case JavaMailFlags.Flag.FLAGGED => FLAGGED
-      case JavaMailFlags.Flag.RECENT => RECENT
-      case JavaMailFlags.Flag.SEEN => SEEN
-    }
-  }
-
-  case class MessageMetaData(uid: MessageUid, modSeq: Long, flags: JavaMailFlags, size: Long, internalDate: Instant, messageId: MessageId) {
-    def toJava: JavaMessageMetaData = new JavaMessageMetaData(uid, modSeq, flags, size, Date.from(internalDate), messageId)
-  }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a8095043/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java
index 3ddc475..cbc481a 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java
@@ -27,8 +27,8 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.time.Instant;
 import java.util.Date;
-import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.SortedMap;
 
 import javax.mail.Flags;
 
@@ -46,7 +46,7 @@ import org.apache.james.mailbox.model.TestMessageId;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
-import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSortedMap;
 
 class AddedSerializationTest {
 
@@ -64,7 +64,7 @@ class AddedSerializationTest {
         .add(Flags.Flag.ANSWERED, Flags.Flag.DRAFT)
         .add("User Custom Flag")
         .build();
-    private static final Map<MessageUid, MessageMetaData> ADDED = ImmutableMap.of(
+    private static final SortedMap<MessageUid, MessageMetaData> ADDED = ImmutableSortedMap.of(
         MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), MESSAGE_ID));
 
     private static final MailboxListener.Added DEFAULT_ADDED_EVENT = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID, ADDED);
@@ -109,7 +109,7 @@ class AddedSerializationTest {
     @Nested
     class WithEmptyAddedMap {
 
-        private final MailboxListener.Added emptyAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID, ImmutableMap.of());
+        private final MailboxListener.Added emptyAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID, ImmutableSortedMap.of());
         private final String emptyAddedEventJson =
             "{" +
             "  \"Added\": {" +
@@ -145,7 +145,7 @@ class AddedSerializationTest {
         class WithEmptyFlags {
             private final Flags emptyFlags = new FlagsBuilder().build();
             private final MailboxListener.Added emptyFlagsAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID,
-                ImmutableMap.of(
+                ImmutableSortedMap.of(
                     MESSAGE_UID,
                     new MessageMetaData(MESSAGE_UID, MOD_SEQ, emptyFlags, SIZE, Date.from(INSTANT), MESSAGE_ID)));
 
@@ -192,7 +192,7 @@ class AddedSerializationTest {
                 .add("Custom 1", "Custom 2", "")
                 .build();
             private final MailboxListener.Added onlyUserFlagsAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID,
-                ImmutableMap.of(
+                ImmutableSortedMap.of(
                     MESSAGE_UID,
                     new MessageMetaData(MESSAGE_UID, MOD_SEQ, onlyUserFlags, SIZE, Date.from(INSTANT), MESSAGE_ID)));
 
@@ -240,7 +240,7 @@ class AddedSerializationTest {
                 .add(Flags.Flag.SEEN, Flags.Flag.ANSWERED, Flags.Flag.DELETED)
                 .build();
             private final MailboxListener.Added onlySystemFlagsAddedEvent = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID,
-                ImmutableMap.of(
+                ImmutableSortedMap.of(
                     MESSAGE_UID,
                     new MessageMetaData(MESSAGE_UID, MOD_SEQ, onlySystemFlags, SIZE, Date.from(INSTANT), MESSAGE_ID)));
 
@@ -326,7 +326,7 @@ class AddedSerializationTest {
 
         @Test
         void addedShouldDeserializeWhenInternalDateIsInGoodISOFormat() {
-            Map<MessageUid, MessageMetaData> added = ImmutableMap.of(
+            SortedMap<MessageUid, MessageMetaData> added = ImmutableSortedMap.of(
                 MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(Instant.parse("2018-12-14T09:41:51Z")), MESSAGE_ID));
             MailboxListener.Added eventRoundToMillis = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID, added);
 
@@ -358,7 +358,7 @@ class AddedSerializationTest {
 
         @Test
         void addedShouldDeserializeWhenInternalDateIsMissingMilliSeconds() {
-            Map<MessageUid, MessageMetaData> added = ImmutableMap.of(
+            SortedMap<MessageUid, MessageMetaData> added = ImmutableSortedMap.of(
                 MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(Instant.parse("2018-12-14T09:41:51Z")), MESSAGE_ID));
             MailboxListener.Added eventRoundToMillis = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID, added);
 
@@ -390,7 +390,7 @@ class AddedSerializationTest {
 
         @Test
         void addedShouldDeserializeWhenInternalDateIsMissingSeconds() {
-            Map<MessageUid, MessageMetaData> added = ImmutableMap.of(
+            SortedMap<MessageUid, MessageMetaData> added = ImmutableSortedMap.of(
                 MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(Instant.parse("2018-12-14T09:41:00Z")), MESSAGE_ID));
             MailboxListener.Added eventRoundToMinute = new MailboxListener.Added(SESSION_ID, USER, MAILBOX_PATH, MAILBOX_ID, added);
 


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