MAILBOX-277 append message return a ComposedMessageId

It starts the transition to a MessageId based API.


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

Branch: refs/heads/master
Commit: 9e90756098f7c86d58003b5fd4ac29758d29138e
Parents: 3e06733
Author: Matthieu Baechler <matthieu.baech...@linagora.com>
Authored: Tue Oct 18 15:14:43 2016 +0200
Committer: Matthieu Baechler <matthieu.baech...@linagora.com>
Committed: Tue Oct 25 09:50:45 2016 +0200

----------------------------------------------------------------------
 .../apache/james/mailbox/MessageManager.java    |  3 +-
 .../james/mailbox/model/ComposedMessageId.java  | 48 +++++++++++++++++
 .../apache/james/mailbox/model/MessageId.java   | 24 +++++++++
 .../james/mailbox/MailboxManagerStressTest.java |  7 +--
 .../mailbox/manager/ManagerTestResources.java   |  2 +-
 .../mailbox/hbase/mail/HBaseMailboxMessage.java |  2 +-
 .../jcr/mail/model/JCRMailboxMessage.java       |  2 +-
 .../openjpa/AbstractJPAMailboxMessage.java      |  2 +-
 .../maildir/mail/model/MaildirMessage.java      |  2 +-
 .../mailbox/store/StoreMessageManager.java      | 14 +++--
 .../store/mail/model/DefaultMessageId.java      |  1 +
 .../james/mailbox/store/mail/model/Message.java |  1 +
 .../mailbox/store/mail/model/MessageId.java     | 23 --------
 .../store/mail/model/impl/SimpleMessage.java    |  2 +-
 .../search/AbstractMessageSearchIndexTest.java  | 18 +++----
 .../james/imap/processor/AppendProcessor.java   |  8 +--
 .../base/MailboxEventAnalyserTest.java          |  3 +-
 .../methods/SetMessagesCreationProcessor.java   |  8 +--
 .../jmap/methods/GetMessagesMethodTest.java     | 55 ++++++++++----------
 .../SetMessagesCreationProcessorTest.java       |  8 ++-
 20 files changed, 148 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
index 888c071..1dc4c33 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
@@ -29,6 +29,7 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.UnsupportedCriteriaException;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -146,7 +147,7 @@ public interface MessageManager {
      * @throws MailboxException
      *             when message cannot be appended
      */
-    MessageUid appendMessage(InputStream msgIn, Date internalDate, 
MailboxSession mailboxSession, boolean isRecent, Flags flags) throws 
MailboxException;
+    ComposedMessageId appendMessage(InputStream msgIn, Date internalDate, 
MailboxSession mailboxSession, boolean isRecent, Flags flags) throws 
MailboxException;
 
     /**
      * Gets messages in the given range. The messages may get fetched under

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java
 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java
new file mode 100644
index 0000000..9d6229c
--- /dev/null
+++ 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java
@@ -0,0 +1,48 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.model;
+
+import org.apache.james.mailbox.MessageUid;
+
+public class ComposedMessageId {
+
+    private final MailboxId mailboxId;
+    private final MessageId messageId;
+    private final MessageUid uid;
+
+    public ComposedMessageId(MailboxId mailboxId, MessageId messageId, 
MessageUid uid) {
+        this.mailboxId = mailboxId;
+        this.messageId = messageId;
+        this.uid = uid;
+    }
+
+    public MailboxId getMailboxId() {
+        return mailboxId;
+    }
+
+    public MessageId getMessageId() {
+        return messageId;
+    }
+
+    public MessageUid getUid() {
+        return uid;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java
new file mode 100644
index 0000000..975d44a
--- /dev/null
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java
@@ -0,0 +1,24 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.model;
+
+public interface MessageId {
+    String serialize();
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
index 8c13ad8..9221557 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
@@ -34,6 +34,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.After;
@@ -114,10 +115,10 @@ public class MailboxManagerStressTest<T extends 
MailboxManager> {
 
                         mailboxManager.startProcessingRequest(session);
                         MessageManager m = mailboxManager.getMailbox(path, 
session);
-                        MessageUid uid = m.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), 
session, false, new Flags());
+                        ComposedMessageId messageId = m.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), 
session, false, new Flags());
 
-                        System.out.println("Append message with uid=" + uid);
-                        if (uids.put(uid, new Object()) != null) {
+                        System.out.println("Append message with uid=" + 
messageId.getUid());
+                        if (uids.put(messageId.getUid(), new Object()) != 
null) {
                             fail.set(true);
                         }
                         mailboxManager.endProcessingRequest(session);

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java
index ad51474..8df6b53 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java
@@ -141,7 +141,7 @@ public class ManagerTestResources {
 
     public MessageUid appendMessage(MessageManager messageManager, 
MailboxSession session, Flags flags) throws MailboxException, 
UnsupportedEncodingException {
         return messageManager.appendMessage(new 
ByteArrayInputStream(MockMail.MAIL_TEXT_PLAIN.getBytes("UTF-8")),
-            Calendar.getInstance().getTime(), session, true, flags);
+            Calendar.getInstance().getTime(), session, true, flags).getUid();
     }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java
----------------------------------------------------------------------
diff --git 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java
 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java
index 5c3bec9..842b0c7 100644
--- 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java
+++ 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java
@@ -41,10 +41,10 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.hbase.HBaseId;
 import org.apache.james.mailbox.hbase.io.ChunkInputStream;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.FlagsBuilder;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.apache.james.mailbox.store.mail.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.Property;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.search.comparator.UidComparator;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java
 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java
index 32c0387..4583227 100644
--- 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java
+++ 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java
@@ -45,10 +45,10 @@ import org.apache.james.mailbox.jcr.JCRId;
 import org.apache.james.mailbox.jcr.JCRImapConstants;
 import org.apache.james.mailbox.jcr.Persistent;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.FlagsBuilder;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.apache.james.mailbox.store.mail.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.Property;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.search.comparator.UidComparator;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
index 1efe777..f797157 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java
@@ -49,11 +49,11 @@ import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
 import org.apache.james.mailbox.jpa.mail.model.JPAProperty;
 import org.apache.james.mailbox.jpa.mail.model.JPAUserFlag;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.DelegatingMailboxMessage;
 import org.apache.james.mailbox.store.mail.model.FlagsBuilder;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.apache.james.mailbox.store.mail.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.Property;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.search.comparator.UidComparator;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
----------------------------------------------------------------------
diff --git 
a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
 
b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
index 9b4c7f9..6c1a599 100644
--- 
a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
+++ 
b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
@@ -32,8 +32,8 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.maildir.MaildirMessageName;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.Message;
-import org.apache.james.mailbox.store.mail.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.Property;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.streaming.CountingInputStream;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 171c457..c794073 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -51,6 +51,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.ReadOnlyException;
 import org.apache.james.mailbox.exception.UnsupportedRightException;
 import org.apache.james.mailbox.model.Attachment;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
 import org.apache.james.mailbox.model.MailboxId;
@@ -69,6 +70,7 @@ import 
org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -258,7 +260,7 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
     }
 
     @Override
-    public MessageUid appendMessage(InputStream msgIn, Date internalDate, 
final MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet) 
throws MailboxException {
+    public ComposedMessageId appendMessage(InputStream msgIn, Date 
internalDate, final MailboxSession mailboxSession, boolean isRecent, Flags 
flagsToBeSet) throws MailboxException {
 
         File file = null;
         TeeInputStream tmpMsgIn = null;
@@ -385,16 +387,18 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
 
             new QuotaChecker(quotaManager, quotaRootResolver, 
mailbox).tryAddition(1, size);
 
-            return locker.executeWithLock(mailboxSession, getMailboxPath(), 
new MailboxPathLocker.LockAwareExecution<MessageUid>() {
+            return locker.executeWithLock(mailboxSession, getMailboxPath(), 
new MailboxPathLocker.LockAwareExecution<ComposedMessageId>() {
 
                 @Override
-                public MessageUid execute() throws MailboxException {
+                public ComposedMessageId execute() throws MailboxException {
                     MessageMetaData data = appendMessageToStore(message, 
attachments, mailboxSession);
 
                     SortedMap<MessageUid, MessageMetaData> uids = new 
TreeMap<MessageUid, MessageMetaData>();
-                    uids.put(data.getUid(), data);
+                    MessageUid messageUid = data.getUid();
+                    MailboxId mailboxId = getMailboxEntity().getMailboxId();
+                    uids.put(messageUid, data);
                     dispatcher.added(mailboxSession, uids, getMailboxEntity());
-                    return data.getUid();
+                    return new ComposedMessageId(mailboxId, new 
DefaultMessageId(mailboxId, messageUid), messageUid);
                 }
             }, true);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java
index 93be2f9..45e6087 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java
@@ -20,6 +20,7 @@ package org.apache.james.mailbox.store.mail.model;
 
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageId;
 
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java
index 430f1ec..a6b9cd7 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java
@@ -24,6 +24,7 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 
 public interface Message {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java
deleted file mode 100644
index 3a57130..0000000
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java
+++ /dev/null
@@ -1,23 +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.mailbox.store.mail.model;
-
-public interface MessageId {
-    String serialize();
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java
index e6380e1..b517c26 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java
@@ -26,8 +26,8 @@ import java.util.List;
 import javax.mail.internet.SharedInputStream;
 
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.Message;
-import org.apache.james.mailbox.store.mail.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.Property;
 
 import com.google.common.collect.ImmutableList;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
index 8b36a1c..49acd2a 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
@@ -87,7 +87,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1388617200000L),
             session,
             true,
-            new Flags(Flags.Flag.DELETED));
+            new Flags(Flags.Flag.DELETED)).getUid();
         // sentDate: Thu, 4 Jun 2015 09:23:37 +0000
         // Internal date : 2014/02/02 00:00:00.000
         m2 = inboxMessageManager.appendMessage(
@@ -95,7 +95,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1391295600000L),
             session,
             true,
-            new Flags(Flags.Flag.ANSWERED));
+            new Flags(Flags.Flag.ANSWERED)).getUid();
         // sentDate: Thu, 4 Jun 2015 09:27:37 +0000
         // Internal date : 2014/03/02 00:00:00.000
         m3 = inboxMessageManager.appendMessage(
@@ -103,7 +103,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1393714800000L),
             session,
             true,
-            new Flags(Flags.Flag.DRAFT));
+            new Flags(Flags.Flag.DRAFT)).getUid();
         // sentDate: Tue, 2 Jun 2015 08:16:19 +0000
         // Internal date : 2014/05/02 00:00:00.000
         m4 = inboxMessageManager.appendMessage(
@@ -111,7 +111,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1398981600000L),
             session,
             true,
-            new Flags(Flags.Flag.RECENT));
+            new Flags(Flags.Flag.RECENT)).getUid();
         // sentDate: Fri, 15 May 2015 06:35:59 +0000
         // Internal date : 2014/04/02 00:00:00.000
         m5 = inboxMessageManager.appendMessage(
@@ -119,7 +119,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1396389600000L),
             session,
             true,
-            new Flags(Flags.Flag.FLAGGED));
+            new Flags(Flags.Flag.FLAGGED)).getUid();
         // sentDate: Wed, 03 Jun 2015 19:14:32 +0000
         // Internal date : 2014/06/02 00:00:00.000
         m6 = inboxMessageManager.appendMessage(
@@ -127,7 +127,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1401660000000L),
             session,
             true,
-            new Flags(Flags.Flag.SEEN));
+            new Flags(Flags.Flag.SEEN)).getUid();
         // sentDate: Thu, 04 Jun 2015 07:36:08 +0000
         // Internal date : 2014/07/02 00:00:00.000
         m7 = inboxMessageManager.appendMessage(
@@ -135,7 +135,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1404252000000L),
             session,
             false,
-            new Flags());
+            new Flags()).getUid();
         // sentDate: Thu, 4 Jun 2015 06:08:41 +0200
         // Internal date : 2014/08/02 00:00:00.000
         m8 = inboxMessageManager.appendMessage(
@@ -143,7 +143,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1406930400000L),
             session,
             true,
-            new Flags("Hello"));
+            new Flags("Hello")).getUid();
         // sentDate: Thu, 4 Jun 2015 06:08:41 +0200
         // Internal date : 2014/08/02 00:00:00.000
         myFolderMessageManager.appendMessage(
@@ -159,7 +159,7 @@ public abstract class AbstractMessageSearchIndexTest {
             new Date(1409608800000L),
             session,
             true,
-            new Flags("Hello you"));
+            new Flags("Hello you")).getUid();
         await();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
index 4d85ce2..ec3e187 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
@@ -41,9 +41,9 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageManager.MetaData.FetchGroup;
-import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.slf4j.Logger;
 
@@ -134,9 +134,9 @@ public class AppendProcessor extends 
AbstractMailboxProcessor<AppendRequest> {
             final SelectedMailbox selectedMailbox = session.getSelected();
             final MailboxManager mailboxManager = getMailboxManager();
             final boolean isSelectedMailbox = selectedMailbox != null && 
selectedMailbox.getPath().equals(mailboxPath);
-            final MessageUid uid = mailbox.appendMessage(message, datetime, 
mailboxSession, !isSelectedMailbox, flagsToBeSet);
+            final ComposedMessageId messageId = mailbox.appendMessage(message, 
datetime, mailboxSession, !isSelectedMailbox, flagsToBeSet);
             if (isSelectedMailbox) {
-                selectedMailbox.addRecent(uid);
+                selectedMailbox.addRecent(messageId.getUid());
             }
 
             // get folder UIDVALIDITY
@@ -146,7 +146,7 @@ public class AppendProcessor extends 
AbstractMailboxProcessor<AppendRequest> {
 
             // in case of MULTIAPPEND support we will push more then one UID
             // here
-            okComplete(command, tag, ResponseCode.appendUid(uidValidity, new 
UidRange[] { new UidRange(uid) }), responder);
+            okComplete(command, tag, ResponseCode.appendUid(uidValidity, new 
UidRange[] { new UidRange(messageId.getUid()) }), responder);
         } catch (MailboxNotFoundException e) {
             // Indicates that the mailbox does not exist
             // So TRY CREATE

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index 6b145d4..0dddfe1 100644
--- 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -50,6 +50,7 @@ import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.BadCredentialsException;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.Content;
 import org.apache.james.mailbox.model.Headers;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLCommand;
@@ -204,7 +205,7 @@ public class MailboxEventAnalyserTest {
                 }
 
                 
-                public MessageUid appendMessage(InputStream msgIn, Date 
internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) 
throws MailboxException {
+                public ComposedMessageId appendMessage(InputStream msgIn, Date 
internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) 
throws MailboxException {
                     throw new UnsupportedOperationException("Not implemented");
 
                 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
index 93eaca9..ca44d78 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
@@ -58,12 +58,12 @@ import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.mailbox.AttachmentManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.AttachmentNotFoundException;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.model.Cid;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.mailet.Mail;
 import org.slf4j.Logger;
@@ -282,17 +282,17 @@ public class SetMessagesCreationProcessor implements 
SetMessagesProcessor {
         Date internalDate = 
Date.from(createdEntry.getValue().getDate().toInstant());
         Flags flags = getMessageFlags(createdEntry.getValue());
 
-        MessageUid uid = outbox.appendMessage(content, internalDate, session, 
flags.contains(Flags.Flag.RECENT), flags);
+        ComposedMessageId message = outbox.appendMessage(content, 
internalDate, session, flags.contains(Flags.Flag.RECENT), flags);
 
         return MetaDataWithContent.builder()
-                .uid(uid)
+                .uid(message.getUid())
                 .flags(flags)
                 .size(messageContent.length)
                 .internalDate(internalDate)
                 .sharedContent(content)
                 .attachments(messageAttachments)
                 .mailboxId(outbox.getId())
-                .messageId(new MessageId(session.getUser(), 
outbox.getMailboxPath(), uid))
+                .messageId(new MessageId(session.getUser(), 
outbox.getMailboxPath(), message.getUid()))
                 .build();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
index 4f4b9e4..d80703e 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
@@ -18,13 +18,12 @@
  ****************************************************************/
 package org.apache.james.jmap.methods;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
 import java.io.ByteArrayInputStream;
 import java.util.Date;
 import java.util.List;
@@ -48,11 +47,11 @@ import 
org.apache.james.jmap.model.MessageProperties.MessageProperty;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.assertj.core.api.Condition;
 import org.assertj.core.data.MapEntry;
@@ -156,16 +155,16 @@ public class GetMessagesMethodTest {
         MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
         Date now = new Date();
         ByteArrayInputStream message1Content = new 
ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy 
message".getBytes(Charsets.UTF_8));
-        MessageUid message1Uid = inbox.appendMessage(message1Content, now, 
session, false, null);
+        ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
         ByteArrayInputStream message2Content = new 
ByteArrayInputStream("Subject: message 2 subject\r\n\r\nmy 
message".getBytes(Charsets.UTF_8));
-        MessageUid message2Uid = inbox.appendMessage(message2Content, now, 
session, false, null);
+        ComposedMessageId message2 = inbox.appendMessage(message2Content, now, 
session, false, null);
         ByteArrayInputStream message3Content = new 
ByteArrayInputStream("Great-Header: message 3 subject\r\n\r\nmy 
message".getBytes(Charsets.UTF_8));
-        MessageUid message3Uid = inbox.appendMessage(message3Content, now, 
session, false, null);
+        ComposedMessageId message3 = inbox.appendMessage(message3Content, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1Uid),
-                          new MessageId(ROBERT, inboxPath, message2Uid),
-                          new MessageId(ROBERT, inboxPath, message3Uid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1.getUid()),
+                          new MessageId(ROBERT, inboxPath, message2.getUid()),
+                          new MessageId(ROBERT, inboxPath, message3.getUid())))
                 .build();
 
         List<JmapResponse> result = testee.process(request, clientId, 
session).collect(Collectors.toList());
@@ -177,9 +176,9 @@ public class GetMessagesMethodTest {
             .flatExtracting(GetMessagesResponse::list)
             .extracting(message -> message.getId().getUid(), 
Message::getSubject, Message::getTextBody)
             .containsOnly(
-                    Tuple.tuple(message1Uid, "message 1 subject", 
Optional.of("my message")), 
-                    Tuple.tuple(message2Uid, "message 2 subject", 
Optional.of("my message")),
-                    Tuple.tuple(message3Uid, "", Optional.of("my message")));
+                    Tuple.tuple(message1.getUid(), "message 1 subject", 
Optional.of("my message")), 
+                    Tuple.tuple(message2.getUid(), "message 2 subject", 
Optional.of("my message")),
+                    Tuple.tuple(message3.getUid(), "", Optional.of("my 
message")));
     }
     
     @Test
@@ -190,10 +189,10 @@ public class GetMessagesMethodTest {
                 + "Subject: message 1 subject\r\n"
                 + "\r\n"
                 + "my <b>HTML</b> message").getBytes(Charsets.UTF_8));
-        MessageUid messageUid = inbox.appendMessage(messageContent, now, 
session, false, null);
+        ComposedMessageId messageId = inbox.appendMessage(messageContent, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
messageUid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
messageId.getUid())))
                 .build();
 
         List<JmapResponse> result = testee.process(request, clientId, 
session).collect(Collectors.toList());
@@ -204,7 +203,7 @@ public class GetMessagesMethodTest {
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
             .extracting(message -> message.getId().getUid(), 
Message::getTextBody, Message::getHtmlBody)
-            .containsOnly(Tuple.tuple(messageUid, Optional.empty(), 
Optional.of("my <b>HTML</b> message")));
+            .containsOnly(Tuple.tuple(messageId.getUid(), Optional.empty(), 
Optional.of("my <b>HTML</b> message")));
     }
 
     @Test
@@ -212,10 +211,10 @@ public class GetMessagesMethodTest {
         MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
         Date now = new Date();
         ByteArrayInputStream message1Content = new 
ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy 
message".getBytes(Charsets.UTF_8));
-        MessageUid message1Uid = inbox.appendMessage(message1Content, now, 
session, false, null);
+        ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1Uid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1.getUid())))
                 .properties(ImmutableList.of())
                 .build();
 
@@ -233,10 +232,10 @@ public class GetMessagesMethodTest {
         MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
         Date now = new Date();
         ByteArrayInputStream message1Content = new 
ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy 
message".getBytes(Charsets.UTF_8));
-        MessageUid message1Uid = inbox.appendMessage(message1Content, now, 
session, false, null);
+        ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1Uid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1.getUid())))
                 .build();
 
         Stream<JmapResponse> result = testee.process(request, clientId, 
session);
@@ -253,10 +252,10 @@ public class GetMessagesMethodTest {
         MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
         Date now = new Date();
         ByteArrayInputStream message1Content = new 
ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy 
message".getBytes(Charsets.UTF_8));
-        MessageUid message1Uid = inbox.appendMessage(message1Content, now, 
session, false, null);
+        ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1Uid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1.getUid())))
                 
.properties(ImmutableList.of(MessageProperty.subject.asFieldName()))
                 .build();
 
@@ -276,10 +275,10 @@ public class GetMessagesMethodTest {
         MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
         Date now = new Date();
         ByteArrayInputStream message1Content = new 
ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy 
message".getBytes(Charsets.UTF_8));
-        MessageUid message1Uid = inbox.appendMessage(message1Content, now, 
session, false, null);
+        ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1Uid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1.getUid())))
                 
.properties(ImmutableList.of(MessageProperty.body.asFieldName()))
                 .build();
 
@@ -302,10 +301,10 @@ public class GetMessagesMethodTest {
                 + "header1: Header1Content\r\n"
                 + "HEADer2: Header2Content\r\n"
                 + "Subject: message 1 subject\r\n\r\nmy 
message").getBytes(Charsets.UTF_8));
-        MessageUid message1Uid = inbox.appendMessage(message1Content, now, 
session, false, null);
+        ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1Uid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1.getUid())))
                 .properties(ImmutableList.of("headers.from", 
"headers.heADER2"))
                 .build();
 
@@ -329,10 +328,10 @@ public class GetMessagesMethodTest {
                 + "header1: Header1Content\r\n"
                 + "HEADer2: Header2Content\r\n"
                 + "Subject: message 1 subject\r\n\r\nmy 
message").getBytes(Charsets.UTF_8));
-        MessageUid message1Uid = inbox.appendMessage(message1Content, now, 
session, false, null);
+        ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
         
         GetMessagesRequest request = GetMessagesRequest.builder()
-                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1Uid)))
+                .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, 
message1.getUid())))
                 .properties(ImmutableList.of("headers.from", 
"headers.heADER2"))
                 .build();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
index 11f500c..12346d7 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
@@ -63,7 +63,9 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.AttachmentId;
+import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.mailet.Mail;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -129,7 +131,11 @@ public class SetMessagesCreationProcessorTest {
         outbox = mock(MessageManager.class);
         when(outbox.getId()).thenReturn(OUTBOX_ID);
         when(outbox.getMailboxPath()).thenReturn(new MailboxPath(NAMESPACE, 
USER, OUTBOX));
-        when(outbox.appendMessage(any(InputStream.class), any(Date.class), 
any(MailboxSession.class), any(Boolean.class), 
any(Flags.class))).thenReturn(MessageUid.of(1));
+        
+        MessageUid messageUid = MessageUid.of(1);
+        when(outbox.appendMessage(any(InputStream.class), any(Date.class), 
any(MailboxSession.class), any(Boolean.class), any(Flags.class)))
+            .thenReturn(new ComposedMessageId(OUTBOX_ID, new 
DefaultMessageId(outbox.getId(), messageUid), messageUid));
+
         drafts = mock(MessageManager.class);
         when(drafts.getId()).thenReturn(DRAFTS_ID);
         when(drafts.getMailboxPath()).thenReturn(new MailboxPath(NAMESPACE, 
USER, DRAFTS));


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

Reply via email to