http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMessageAssertTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMessageAssertTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMessageAssertTest.java
index c5056f0..a2937eb 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMessageAssertTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMessageAssertTest.java
@@ -26,6 +26,7 @@ import javax.mail.Flags;
 import javax.mail.util.SharedByteArrayInputStream;
 
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.TestId;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
@@ -36,16 +37,17 @@ public class MailboxMessageAssertTest {
 
     public static final TestId MAILBOX_ID = TestId.of(42L);
     public static final MessageUid UID = MessageUid.of(24);
+    public static final MessageId MESSAGE_ID = new DefaultMessageId();
 
     @Test
     public void messageAssertShouldSucceedWithTwoEqualsMessages() throws 
IOException {
         String headerString = "name: headerName\n\n";
         String bodyString = "body\n.\n";
         Date date = new Date();
-        SimpleMailboxMessage message1 = new SimpleMailboxMessage(date, 
headerString.length() + bodyString.length(),
+        SimpleMailboxMessage message1 = new SimpleMailboxMessage(MESSAGE_ID, 
date, headerString.length() + bodyString.length(),
             headerString.length(), new 
SharedByteArrayInputStream((headerString + bodyString).getBytes()), new 
Flags(), new PropertyBuilder(), MAILBOX_ID);
         message1.setUid(UID);
-        SimpleMailboxMessage message2 = new SimpleMailboxMessage(date, 
headerString.length() + bodyString.length(),
+        SimpleMailboxMessage message2 = new SimpleMailboxMessage(MESSAGE_ID, 
date, headerString.length() + bodyString.length(),
             headerString.length(), new 
SharedByteArrayInputStream((headerString + bodyString).getBytes()), new 
Flags(), new PropertyBuilder(), MAILBOX_ID);
         message2.setUid(UID);
         MessageAssert.assertThat(message1).isEqualTo(message2, 
MessageMapper.FetchType.Full);
@@ -56,11 +58,11 @@ public class MailboxMessageAssertTest {
         String headerString = "name: headerName\n\n";
         String bodyString = "body\n.\n";
         Date date = new Date();
-        SimpleMailboxMessage message1 = new SimpleMailboxMessage(date, 
headerString.length() + bodyString.length(),
+        SimpleMailboxMessage message1 = new SimpleMailboxMessage(MESSAGE_ID, 
date, headerString.length() + bodyString.length(),
             headerString.length(), new 
SharedByteArrayInputStream((headerString + bodyString).getBytes()), new 
Flags(), new PropertyBuilder(), MAILBOX_ID);
         message1.setUid(UID);
         bodyString = "work\n.\n";
-        SimpleMailboxMessage message2 = new SimpleMailboxMessage(date, 
headerString.length() + bodyString.length(),
+        SimpleMailboxMessage message2 = new SimpleMailboxMessage(MESSAGE_ID, 
date, headerString.length() + bodyString.length(),
             headerString.length(), new 
SharedByteArrayInputStream((headerString + bodyString).getBytes()), new 
Flags(), new PropertyBuilder(), MAILBOX_ID);
         message2.setUid(UID);
         MessageAssert.assertThat(message1).isEqualTo(message2, 
MessageMapper.FetchType.Headers);
@@ -71,11 +73,11 @@ public class MailboxMessageAssertTest {
         String headerString = "name: headerName\n\n";
         String bodyString = "body\n.\n";
         Date date = new Date();
-        SimpleMailboxMessage message1 = new SimpleMailboxMessage(date, 
headerString.length() + bodyString.length(),
+        SimpleMailboxMessage message1 = new SimpleMailboxMessage(MESSAGE_ID, 
date, headerString.length() + bodyString.length(),
             headerString.length(), new 
SharedByteArrayInputStream((headerString + bodyString).getBytes()), new 
Flags(), new PropertyBuilder(), MAILBOX_ID);
         message1.setUid(UID);
         bodyString = "work\n.\n";
-        SimpleMailboxMessage message2 = new SimpleMailboxMessage(date, 
headerString.length() + bodyString.length(),
+        SimpleMailboxMessage message2 = new SimpleMailboxMessage(MESSAGE_ID, 
date, headerString.length() + bodyString.length(),
             headerString.length(), new 
SharedByteArrayInputStream((headerString + bodyString).getBytes()), new 
Flags(), new PropertyBuilder(), MAILBOX_ID);
         message2.setUid(UID);
         MessageAssert.assertThat(message1).isEqualTo(message2, 
MessageMapper.FetchType.Body);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
index 7105d74..d2e4333 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.store.mail.model;
 
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
@@ -42,4 +43,6 @@ public interface MapperProvider {
     void ensureMapperPrepared() throws MailboxException;
 
     boolean supportPartialAttachmentFetch();
+    
+    MessageId generateMessageId();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 5b2a016..909fe37 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.model.Cid;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.UpdatedFlags;
@@ -103,12 +104,12 @@ public class MessageMapperTest<T extends MapperProvider> {
         benwaWorkMailbox = createMailbox( new MailboxPath("#private", "benwa", 
"INBOX"+DELIMITER+"work"));
         attachmentsMailbox = createMailbox( new MailboxPath("#private", 
"benwa", "Attachments"));
 
-        message1 = createMessage(benwaInboxMailbox, "Subject: Test1 
\n\nBody1\n.\n", BODY_START, new PropertyBuilder());
-        message2 = createMessage(benwaInboxMailbox, "Subject: Test2 
\n\nBody2\n.\n", BODY_START, new PropertyBuilder());
-        message3 = createMessage(benwaInboxMailbox, "Subject: Test3 
\n\nBody3\n.\n", BODY_START, new PropertyBuilder());
-        message4 = createMessage(benwaInboxMailbox, "Subject: Test4 
\n\nBody4\n.\n", BODY_START, new PropertyBuilder());
-        message5 = createMessage(benwaInboxMailbox, "Subject: Test5 
\n\nBody5\n.\n", BODY_START, new PropertyBuilder());
-        message6 = createMessage(benwaWorkMailbox, "Subject: Test6 
\n\nBody6\n.\n", BODY_START, new PropertyBuilder());
+        message1 = createMessage(benwaInboxMailbox, 
mapperProvider.generateMessageId(), "Subject: Test1 \n\nBody1\n.\n", 
BODY_START, new PropertyBuilder());
+        message2 = createMessage(benwaInboxMailbox, 
mapperProvider.generateMessageId(), "Subject: Test2 \n\nBody2\n.\n", 
BODY_START, new PropertyBuilder());
+        message3 = createMessage(benwaInboxMailbox, 
mapperProvider.generateMessageId(), "Subject: Test3 \n\nBody3\n.\n", 
BODY_START, new PropertyBuilder());
+        message4 = createMessage(benwaInboxMailbox, 
mapperProvider.generateMessageId(), "Subject: Test4 \n\nBody4\n.\n", 
BODY_START, new PropertyBuilder());
+        message5 = createMessage(benwaInboxMailbox, 
mapperProvider.generateMessageId(), "Subject: Test5 \n\nBody5\n.\n", 
BODY_START, new PropertyBuilder());
+        message6 = createMessage(benwaWorkMailbox, 
mapperProvider.generateMessageId(), "Subject: Test6 \n\nBody6\n.\n", 
BODY_START, new PropertyBuilder());
 
         Attachment attachment = Attachment.builder()
                 .attachmentId(AttachmentId.from("123"))
@@ -122,13 +123,13 @@ public class MessageMapperTest<T extends MapperProvider> {
                 .type("content")
                 .build();
         attachmentMapper.storeAttachment(attachment2);
-        message7With1Attachment = createMessage(attachmentsMailbox, "Subject: 
Test7 \n\nBody7\n.\n", BODY_START, new PropertyBuilder(), 
+        message7With1Attachment = createMessage(attachmentsMailbox, 
mapperProvider.generateMessageId(), "Subject: Test7 \n\nBody7\n.\n", 
BODY_START, new PropertyBuilder(), 
                 ImmutableList.of(MessageAttachment.builder()
                         .attachment(attachment)
                         .cid(Cid.from("cid"))
                         .isInline(true)
                         .build()));
-        message8With2Attachments = createMessage(attachmentsMailbox, "Subject: 
Test8 \n\nBody8\n.\n", BODY_START, new PropertyBuilder(), 
+        message8With2Attachments = createMessage(attachmentsMailbox, 
mapperProvider.generateMessageId(), "Subject: Test8 \n\nBody8\n.\n", 
BODY_START, new PropertyBuilder(), 
                 ImmutableList.of(
                         MessageAttachment.builder()
                             .attachment(attachment)
@@ -661,7 +662,7 @@ public class MessageMapperTest<T extends MapperProvider> {
         propBuilder.setProperty(StandardNames.NAMESPACE_RFC_2045, 
StandardNames.MIME_CONTENT_TRANSFER_ENCODING_NAME, "7bit");
         
propBuilder.setProperty(StandardNames.MIME_CONTENT_TYPE_PARAMETER_SPACE, 
StandardNames.MIME_CONTENT_TYPE_PARAMETER_CHARSET_NAME, "US-ASCII");
 
-        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, "Subject: messagePropertiesShouldBeStored 
\n\nBody\n.\n", BODY_START, propBuilder);
+        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, mapperProvider.generateMessageId(), "Subject: 
messagePropertiesShouldBeStored \n\nBody\n.\n", BODY_START, propBuilder);
         MessageMetaData messageMetaData = messageMapper.add(benwaInboxMailbox, 
messageWithProperties);
         MailboxMessage message = 
messageMapper.findInMailbox(benwaInboxMailbox, 
MessageRange.one(messageMetaData.getUid()), FetchType.Body, 1).next();
         
assertThat(message.getProperties()).containsOnlyElementsOf(propBuilder.toProperties());
@@ -673,7 +674,7 @@ public class MessageMapperTest<T extends MapperProvider> {
         propBuilder.setProperty(StandardNames.MIME_CONTENT_LANGUAGE_SPACE, 
StandardNames.MIME_CONTENT_LANGUAGE_NAME, "us");
         propBuilder.setProperty(StandardNames.MIME_CONTENT_LANGUAGE_SPACE, 
StandardNames.MIME_CONTENT_LANGUAGE_NAME, "fr");
 
-        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
+        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, mapperProvider.generateMessageId(), "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
         MessageMetaData messageMetaData = messageMapper.add(benwaInboxMailbox, 
messageWithProperties);
         MailboxMessage message = 
messageMapper.findInMailbox(benwaInboxMailbox, 
MessageRange.one(messageMetaData.getUid()), FetchType.Body, 1).next();
         
assertThat(message.getProperties()).containsOnlyElementsOf(propBuilder.toProperties());
@@ -681,7 +682,7 @@ public class MessageMapperTest<T extends MapperProvider> {
 
     @ContractTest
     public void messagePropertiesShouldBeStoredWhenNoProperty() throws 
Exception {
-        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, "Subject: 
messagePropertiesShouldBeStoredWhenNoProperty \n\nBody\n.\n", BODY_START, new 
PropertyBuilder());
+        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, mapperProvider.generateMessageId(), "Subject: 
messagePropertiesShouldBeStoredWhenNoProperty \n\nBody\n.\n", BODY_START, new 
PropertyBuilder());
         MessageMetaData messageMetaData = messageMapper.add(benwaInboxMailbox, 
messageWithProperties);
         MailboxMessage message = 
messageMapper.findInMailbox(benwaInboxMailbox, 
MessageRange.one(messageMetaData.getUid()), FetchType.Body, 1).next();
         assertThat(message.getProperties()).isEmpty();
@@ -693,7 +694,7 @@ public class MessageMapperTest<T extends MapperProvider> {
         PropertyBuilder propBuilder = new PropertyBuilder();
         propBuilder.setTextualLineCount(textualLineCount);
 
-        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
+        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, mapperProvider.generateMessageId(), "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
         MessageMetaData messageMetaData = messageMapper.add(benwaInboxMailbox, 
messageWithProperties);
         MailboxMessage message = 
messageMapper.findInMailbox(benwaInboxMailbox, 
MessageRange.one(messageMetaData.getUid()), FetchType.Body, 1).next();
         assertThat(message.getTextualLineCount()).isEqualTo(textualLineCount);
@@ -705,7 +706,7 @@ public class MessageMapperTest<T extends MapperProvider> {
         PropertyBuilder propBuilder = new PropertyBuilder();
         propBuilder.setMediaType(mediaType);
 
-        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
+        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, mapperProvider.generateMessageId(), "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
         MessageMetaData messageMetaData = messageMapper.add(benwaInboxMailbox, 
messageWithProperties);
         MailboxMessage message = 
messageMapper.findInMailbox(benwaInboxMailbox, 
MessageRange.one(messageMetaData.getUid()), FetchType.Body, 1).next();
         assertThat(message.getMediaType()).isEqualTo(mediaType);
@@ -717,7 +718,7 @@ public class MessageMapperTest<T extends MapperProvider> {
         PropertyBuilder propBuilder = new PropertyBuilder();
         propBuilder.setSubType(subType);
 
-        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
+        SimpleMailboxMessage messageWithProperties = 
createMessage(benwaWorkMailbox, mapperProvider.generateMessageId(), "Subject: 
messagePropertiesShouldBeStoredWhenDuplicateEntries \n\nBody\n.\n", BODY_START, 
propBuilder);
         MessageMetaData messageMetaData = messageMapper.add(benwaInboxMailbox, 
messageWithProperties);
         MailboxMessage message = 
messageMapper.findInMailbox(benwaInboxMailbox, 
MessageRange.one(messageMetaData.getUid()), FetchType.Body, 1).next();
         assertThat(message.getSubType()).isEqualTo(subType);
@@ -781,11 +782,11 @@ public class MessageMapperTest<T extends MapperProvider> {
         return messageMapper.findInMailbox(benwaInboxMailbox, 
MessageRange.one(message.getUid()), MessageMapper.FetchType.Metadata, 
LIMIT).next();
     }
     
-    private SimpleMailboxMessage createMessage(Mailbox mailbox, String 
content, int bodyStart, PropertyBuilder propertyBuilder, 
List<MessageAttachment> attachments) {
-        return new SimpleMailboxMessage(new Date(), content.length(), 
bodyStart, new SharedByteArrayInputStream(content.getBytes()), new Flags(), 
propertyBuilder, mailbox.getMailboxId(), attachments);
+    private SimpleMailboxMessage createMessage(Mailbox mailbox, MessageId 
messageId, String content, int bodyStart, PropertyBuilder propertyBuilder, 
List<MessageAttachment> attachments) {
+        return new SimpleMailboxMessage(messageId, new Date(), 
content.length(), bodyStart, new 
SharedByteArrayInputStream(content.getBytes()), new Flags(), propertyBuilder, 
mailbox.getMailboxId(), attachments);
     }
     
-    private SimpleMailboxMessage createMessage(Mailbox mailbox, String 
content, int bodyStart, PropertyBuilder propertyBuilder) {
-        return new SimpleMailboxMessage(new Date(), content.length(), 
bodyStart, new SharedByteArrayInputStream(content.getBytes()), new Flags(), 
propertyBuilder, mailbox.getMailboxId());
+    private SimpleMailboxMessage createMessage(Mailbox mailbox, MessageId 
messageId, String content, int bodyStart, PropertyBuilder propertyBuilder) {
+        return new SimpleMailboxMessage(messageId, new Date(), 
content.length(), bodyStart, new 
SharedByteArrayInputStream(content.getBytes()), new Flags(), propertyBuilder, 
mailbox.getMailboxId());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
index add58ea..ae588c8 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
@@ -29,6 +29,7 @@ import javax.mail.util.SharedByteArrayInputStream;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -72,7 +73,7 @@ public class MessageMoveTest<T extends MapperProvider> {
 
         benwaInboxMailbox = createMailbox(new MailboxPath("#private", "benwa", 
"INBOX"));
         benwaWorkMailbox = createMailbox( new MailboxPath("#private", "benwa", 
"INBOX"+DELIMITER+"work"));
-        message1 = createMessage(benwaInboxMailbox, "Subject: Test1 
\n\nBody1\n.\n", BODY_START, new PropertyBuilder());
+        message1 = createMessage(benwaInboxMailbox, 
mapperProvider.generateMessageId(), "Subject: Test1 \n\nBody1\n.\n", 
BODY_START, new PropertyBuilder());
     }
 
     @After
@@ -149,7 +150,7 @@ public class MessageMoveTest<T extends MapperProvider> {
         return messageMapper.findInMailbox(mailbox, 
MessageRange.one(message.getUid()), FetchType.Metadata, LIMIT).next();
     }
     
-    private SimpleMailboxMessage createMessage(Mailbox mailbox, String 
content, int bodyStart, PropertyBuilder propertyBuilder) {
-        return new SimpleMailboxMessage(new Date(), content.length(), 
bodyStart, new SharedByteArrayInputStream(content.getBytes()), new Flags(), 
propertyBuilder, mailbox.getMailboxId());
+    private SimpleMailboxMessage createMessage(Mailbox mailbox, MessageId 
messageId, String content, int bodyStart, PropertyBuilder propertyBuilder) {
+        return new SimpleMailboxMessage(messageId, new Date(), 
content.length(), bodyStart, new 
SharedByteArrayInputStream(content.getBytes()), new Flags(), propertyBuilder, 
mailbox.getMailboxId());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
index 0887e0a..e693efb 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
@@ -27,6 +27,7 @@ import javax.mail.Flags;
 import javax.mail.util.SharedByteArrayInputStream;
 
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.store.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.TestId;
@@ -38,6 +39,7 @@ import org.junit.Test;
 public class MetadataMapAssertTest {
 
     private static final MessageUid UID = MessageUid.of(18);
+    private static final MessageId MESSAGE_ID = new DefaultMessageId();
     private static final Long MODSEQ = 24L;
     private static final Date DATE = new Date();
     private static final String HEADER_STRING = "name: headerName\n\n";
@@ -48,7 +50,7 @@ public class MetadataMapAssertTest {
 
     @Before
     public void setUp() {
-        message1 = new SimpleMailboxMessage(DATE, HEADER_STRING.length() + 
BODY_STRING.length(),
+        message1 = new SimpleMailboxMessage(MESSAGE_ID, DATE, 
HEADER_STRING.length() + BODY_STRING.length(),
             HEADER_STRING.length(), new 
SharedByteArrayInputStream((HEADER_STRING + BODY_STRING).getBytes()), new 
Flags(), new PropertyBuilder(), MAILBOX_ID);
         message1.setUid(UID);
         message1.setModSeq(MODSEQ);
@@ -57,14 +59,14 @@ public class MetadataMapAssertTest {
     @Test
     public void metadataMapAssertShouldSucceedWhenContainingRightMetadata() {
         Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<MessageUid, 
MessageMetaData>();
-        metaDataMap.put(UID, new SimpleMessageMetaData(UID, MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE));
+        metaDataMap.put(UID, new SimpleMessageMetaData(UID, MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID));
         
MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
     }
 
     @Test(expected = AssertionError.class)
     public void metadataMapAssertShouldFailWhenUidMismatch() {
         Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<MessageUid, 
MessageMetaData>();
-        metaDataMap.put(UID, new SimpleMessageMetaData(UID.next(), MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE));
+        metaDataMap.put(UID, new SimpleMessageMetaData(UID.next(), MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID));
         
MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
     }
 
@@ -73,14 +75,14 @@ public class MetadataMapAssertTest {
         Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<MessageUid, 
MessageMetaData>();
         Date date = new Date();
         date.setTime(DATE.getTime() + 100L);
-        metaDataMap.put(UID, new SimpleMessageMetaData(UID, MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length(), date));
+        metaDataMap.put(UID, new SimpleMessageMetaData(UID, MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length(), date, MESSAGE_ID));
         
MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
     }
 
     @Test(expected = AssertionError.class)
     public void metadataMapAssertShouldFailWhenSizeMismatch() {
         Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<MessageUid, 
MessageMetaData>();
-        metaDataMap.put(UID, new SimpleMessageMetaData(UID , MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length() + 1, DATE));
+        metaDataMap.put(UID, new SimpleMessageMetaData(UID , MODSEQ, new 
Flags(), HEADER_STRING.length() + BODY_STRING.length() + 1, DATE, MESSAGE_ID));
         
MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
index f836c7e..8657615 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
@@ -33,6 +33,7 @@ import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.TestId;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.assertj.core.internal.FieldByFieldComparator;
 import org.junit.Before;
 import org.junit.Test;
@@ -102,7 +103,7 @@ public class SimpleMailboxMessageTest {
         propertyBuilder.setTextualLineCount(textualLineCount);
         propertyBuilder.setMediaType(text);
         propertyBuilder.setSubType(plain);
-        SimpleMailboxMessage original = new SimpleMailboxMessage(new Date(),
+        SimpleMailboxMessage original = new SimpleMailboxMessage(new 
DefaultMessageId(), new Date(),
             MESSAGE_CONTENT.length(),
             BODY_START_OCTET,
             new 
SharedByteArrayInputStream(MESSAGE_CONTENT.getBytes(MESSAGE_CHARSET)),
@@ -121,7 +122,7 @@ public class SimpleMailboxMessageTest {
     }
 
     private static SimpleMailboxMessage buildMessage(String content) {
-        return new SimpleMailboxMessage(Calendar.getInstance().getTime(),
+        return new SimpleMailboxMessage(new DefaultMessageId(), 
Calendar.getInstance().getTime(),
             content.length(), BODY_START_OCTET, new SharedByteArrayInputStream(
                     content.getBytes(MESSAGE_CHARSET)), new Flags(),
             new PropertyBuilder(), TEST_ID);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
index 3d5b4fd..054a275 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.SimpleMessageMetaData;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -61,8 +62,8 @@ public class ListeningCurrentQuotaUpdaterTest {
     @Test
     public void addedEventShouldIncreaseCurrentQuotaValues() throws Exception {
         MailboxListener.Added added = mock(MailboxListener.Added.class);
-        when(added.getMetaData(MessageUid.of(36))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date()));
-        when(added.getMetaData(MessageUid.of(38))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date()));
+        when(added.getMetaData(MessageUid.of(36))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date(), new 
DefaultMessageId()));
+        when(added.getMetaData(MessageUid.of(38))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date(), new 
DefaultMessageId()));
         when(added.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), 
MessageUid.of(38)));
         when(added.getMailboxPath()).thenReturn(MAILBOX_PATH);
         
when(mockedQuotaRootResolver.getQuotaRoot(MAILBOX_PATH)).thenReturn(QUOTA_ROOT);
@@ -73,8 +74,8 @@ public class ListeningCurrentQuotaUpdaterTest {
     @Test
     public void expungedEventShouldDecreaseCurrentQuotaValues() throws 
Exception {
         MailboxListener.Expunged expunged = 
mock(MailboxListener.Expunged.class);
-        when(expunged.getMetaData(MessageUid.of(36))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date()));
-        when(expunged.getMetaData(MessageUid.of(38))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date()));
+        when(expunged.getMetaData(MessageUid.of(36))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date(), new 
DefaultMessageId()));
+        when(expunged.getMetaData(MessageUid.of(38))).thenReturn(new 
SimpleMessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date(), new 
DefaultMessageId()));
         
when(expunged.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), 
MessageUid.of(38)));
         when(expunged.getMailboxPath()).thenReturn(MAILBOX_PATH);
         
when(mockedQuotaRootResolver.getQuotaRoot(MAILBOX_PATH)).thenReturn(QUOTA_ROOT);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
 
b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
index c4590d3..0727e9a 100644
--- 
a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
+++ 
b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.mock.MockMailboxManager;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.junit.Before;
 import org.junit.Test;
@@ -166,7 +167,8 @@ public class MailboxCopierTest {
             },
             aclResolver,
             groupMembershipResolver,
-            messageParser
+            messageParser,
+            new DefaultMessageId.Factory()
             );
     
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
 
b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
index 19f165c..4db7021 100644
--- 
a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
+++ 
b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.event.EventFactory;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.Before;
 import org.junit.Test;
@@ -70,7 +71,7 @@ public class MailboxRegistrationTest {
     @Test
     public void AddedEventsShouldNotBeReported() {
         TreeMap<MessageUid, MessageMetaData> treeMap = new TreeMap<MessageUid, 
MessageMetaData>();
-        treeMap.put(UID, new SimpleMessageMetaData(UID, MOD_SEQ, new Flags(), 
SIZE, new Date()));
+        treeMap.put(UID, new SimpleMessageMetaData(UID, MOD_SEQ, new Flags(), 
SIZE, new Date(), new DefaultMessageId()));
         MailboxListener.Event event = eventFactory.added(SESSION, treeMap, 
MAILBOX);
         mailboxRegistration.event(event);
         assertThat(mailboxRegistration.getImpactingEvents(UID)).isEmpty();
@@ -79,7 +80,7 @@ public class MailboxRegistrationTest {
     @Test
     public void ExpungedEventsShouldBeReported() {
         TreeMap<MessageUid, MessageMetaData> treeMap = new TreeMap<MessageUid, 
MessageMetaData>();
-        treeMap.put(UID, new SimpleMessageMetaData(UID, MOD_SEQ, new Flags(), 
SIZE, new Date()));
+        treeMap.put(UID, new SimpleMessageMetaData(UID, MOD_SEQ, new Flags(), 
SIZE, new Date(), new DefaultMessageId()));
         MailboxListener.Event event = eventFactory.expunged(SESSION, treeMap, 
MAILBOX);
         mailboxRegistration.event(event);
         
assertThat(mailboxRegistration.getImpactingEvents(UID)).containsExactly(new 
MessageDeletedEvent(INBOX, UID));

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
 
b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index 33bfdcf..115c442 100644
--- 
a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -36,17 +36,18 @@ import 
org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
 import 
org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
 import 
org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.FakeAuthenticator;
+import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
@@ -86,9 +87,10 @@ public class CassandraHostSystem extends JamesImapHostSystem 
{
         CassandraModSeqProvider modSeqProvider = new 
CassandraModSeqProvider(session);
         CassandraUidProvider uidProvider = new CassandraUidProvider(session);
 
-        CassandraMailboxSessionMapperFactory mapperFactory = new 
CassandraMailboxSessionMapperFactory(uidProvider, modSeqProvider, session, new 
CassandraTypesProvider(mailboxModule, session));
+        CassandraMailboxSessionMapperFactory mapperFactory = new 
CassandraMailboxSessionMapperFactory(uidProvider, modSeqProvider, 
+                session, new CassandraTypesProvider(mailboxModule, session), 
new DefaultMessageId.Factory());
         
-        mailboxManager = new CassandraMailboxManager(mapperFactory, 
userManager, new JVMMailboxPathLocker(), new MessageParser());
+        mailboxManager = new CassandraMailboxManager(mapperFactory, 
userManager, new JVMMailboxPathLocker(), new MessageParser(), new 
DefaultMessageId.Factory()); 
         QuotaRootResolver quotaRootResolver = new 
DefaultQuotaRootResolver(mapperFactory);
 
         CassandraPerUserMaxQuotaManager perUserMaxQuotaManager = new 
CassandraPerUserMaxQuotaManager(session);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
 
b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
index 94c3106..a985dc3 100644
--- 
a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
@@ -51,6 +51,7 @@ import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
@@ -113,7 +114,7 @@ public class ElasticSearchHostSystem extends 
JamesImapHostSystem {
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
-        mailboxManager = new StoreMailboxManager(factory, userManager, 
aclResolver, groupMembershipResolver, messageParser);
+        mailboxManager = new StoreMailboxManager(factory, userManager, 
aclResolver, groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory());
         mailboxManager.setMessageSearchIndex(searchIndex);
 
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
 
b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
index 4792a67..7cd3876 100644
--- 
a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
@@ -42,6 +42,7 @@ import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
@@ -93,14 +94,15 @@ public class HBaseHostSystem extends JamesImapHostSystem {
 
         final HBaseModSeqProvider modSeqProvider = new 
HBaseModSeqProvider(conf);
         final HBaseUidProvider uidProvider = new HBaseUidProvider(conf);
-
+        DefaultMessageId.Factory messageIdFactory = new 
DefaultMessageId.Factory();
         final HBaseMailboxSessionMapperFactory mapperFactory = new 
HBaseMailboxSessionMapperFactory(
-                conf, uidProvider, modSeqProvider);
+                conf, uidProvider, modSeqProvider, messageIdFactory);
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
         
-        mailboxManager = new HBaseMailboxManager(mapperFactory, userManager, 
aclResolver, groupMembershipResolver, messageParser);
+        mailboxManager = new HBaseMailboxManager(mapperFactory, userManager, 
aclResolver, groupMembershipResolver, 
+                messageParser, messageIdFactory);
         mailboxManager.init();
 
         SubscriptionManager subscriptionManager = new 
StoreSubscriptionManager(mapperFactory);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java
 
b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java
index 7f71bd4..aa62f7e 100644
--- 
a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryEventAsynchronousHostSystem.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.event.AsynchronousEventDelivery;
 import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
@@ -80,7 +81,7 @@ public class InMemoryEventAsynchronousHostSystem extends 
JamesImapHostSystem {
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
-        mailboxManager = new StoreMailboxManager(factory, userManager, 
aclResolver, groupMembershipResolver, messageParser);
+        mailboxManager = new StoreMailboxManager(factory, userManager, 
aclResolver, groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory());
         QuotaRootResolver quotaRootResolver = new 
DefaultQuotaRootResolver(factory);
 
         InMemoryPerUserMaxQuotaManager perUserMaxQuotaManager = new 
InMemoryPerUserMaxQuotaManager();

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
 
b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
index 4de9ee9..6b6a54e 100644
--- 
a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
@@ -33,10 +33,12 @@ import 
org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager;
 import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
@@ -83,7 +85,9 @@ public class InMemoryHostSystem extends JamesImapHostSystem {
         MessageParser messageParser = new MessageParser();
 
         InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
-        mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, userManager, new 
JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser);
+        MessageId.Factory messageIdFactory = new DefaultMessageId.Factory();
+        mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, userManager, new 
JVMMailboxPathLocker(), 
+                aclResolver, groupMembershipResolver, messageParser, 
messageIdFactory);
         QuotaRootResolver quotaRootResolver = new 
DefaultQuotaRootResolver(mailboxManager.getMapperFactory());
 
         InMemoryPerUserMaxQuotaManager perUserMaxQuotaManager = new 
InMemoryPerUserMaxQuotaManager();

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
 
b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
index 5536540..5841715 100644
--- 
a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
@@ -40,8 +40,9 @@ import org.apache.james.mailbox.jcr.JCRUtils;
 import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider;
 import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.FakeAuthenticator;
+import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
@@ -93,7 +94,8 @@ public class JCRHostSystem extends JamesImapHostSystem{
             GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
             MessageParser messageParser = new MessageParser();
 
-            mailboxManager = new JCRMailboxManager(mf, userManager, locker, 
aclResolver, groupMembershipResolver, messageParser);
+            mailboxManager = new JCRMailboxManager(mf, userManager, locker, 
aclResolver, groupMembershipResolver, messageParser,
+                    new DefaultMessageId.Factory());
             mailboxManager.init();
 
             final ImapProcessor defaultImapProcessorFactory = 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
 
b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
index f03df7e..b22b8ac 100644
--- 
a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
@@ -47,8 +47,9 @@ import 
org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMailboxMessage;
 import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.apache.james.mailbox.jpa.user.model.JPASubscription;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.FakeAuthenticator;
+import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
@@ -123,7 +124,7 @@ public class JPAHostSystem extends JamesImapHostSystem {
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
-        mailboxManager = new OpenJPAMailboxManager(mf, userManager, locker, 
false, aclResolver, groupMembershipResolver, messageParser);
+        mailboxManager = new OpenJPAMailboxManager(mf, userManager, locker, 
false, aclResolver, groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory());
         mailboxManager.init();
 
         SubscriptionManager subscriptionManager = new 
JPASubscriptionManager(mf);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
 
b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
index 73f132c..c1db7f2 100644
--- 
a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
@@ -33,10 +33,11 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory;
 import org.apache.james.mailbox.maildir.MaildirStore;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.FakeAuthenticator;
+import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
@@ -70,7 +71,8 @@ public class MaildirHostSystem extends JamesImapHostSystem {
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
-        mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, 
userManager, locker, aclResolver, groupMembershipResolver, messageParser);
+        mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, 
userManager, locker, aclResolver, 
+                groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory());
         mailboxManager.init();
 
         final ImapProcessor defaultImapProcessorFactory = 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/protocols/imap/src/test/java/org/apache/james/imap/processor/base/FakeMailboxListenerAdded.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/FakeMailboxListenerAdded.java
 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/FakeMailboxListenerAdded.java
index 6f0a15a..fae3525 100644
--- 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/FakeMailboxListenerAdded.java
+++ 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/FakeMailboxListenerAdded.java
@@ -28,6 +28,7 @@ import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageMetaData;
 
 public class FakeMailboxListenerAdded extends MailboxListener.Added {
@@ -48,30 +49,35 @@ public class FakeMailboxListenerAdded extends 
MailboxListener.Added {
     public MessageMetaData getMetaData(MessageUid uid) {
         return new MessageMetaData() {
             
+            @Override
             public MessageUid getUid() {
-                // TODO Auto-generated method stub
                 return null;
             }
             
+            @Override
             public long getSize() {
-                // TODO Auto-generated method stub
                 return 0;
             }
             
+            @Override
             public Date getInternalDate() {
-                // TODO Auto-generated method stub
                 return null;
             }
             
+            @Override
             public Flags getFlags() {
-                // TODO Auto-generated method stub
                 return null;
             }
 
+            @Override
             public long getModSeq() {
-                // TODO Auto-generated method stub
                 return 0;
             }
+            
+            @Override
+            public MessageId getMessageId() {
+                return null;
+            }
         };
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/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 0dddfe1..7a5928b 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
@@ -64,9 +64,11 @@ import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MailboxQuery;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResult.FetchGroup;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.model.MessageResultIterator;
 import org.apache.james.mailbox.model.MimeDescriptor;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
@@ -234,6 +236,10 @@ public class MailboxEventAnalyserTest {
                                     return MessageUid.of(1);
                                 }
 
+                                @Override
+                                public MessageId getMessageId() {
+                                    return new DefaultMessageId();
+                                };
                                 
                                 public long getModSeq() {
                                     return 0;

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
 
b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index 7d358f3..7ddf12a 100644
--- 
a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ 
b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -33,6 +33,7 @@ import 
org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
@@ -41,6 +42,7 @@ import 
org.apache.james.mailbox.store.mail.MailboxMapperFactory;
 import org.apache.james.mailbox.store.mail.MessageMapperFactory;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
 import org.apache.james.mailbox.store.mail.UidProvider;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.modules.Names;
 import org.apache.james.utils.MailboxManagerDefinition;
 
@@ -63,6 +65,7 @@ public class CassandraMailboxModule extends AbstractModule {
         bind(CassandraUidProvider.class).in(Scopes.SINGLETON);
         bind(UserRepositoryAuthenticator.class).in(Scopes.SINGLETON);
         bind(CassandraId.Factory.class).in(Scopes.SINGLETON);
+        bind(DefaultMessageId.Factory.class).in(Scopes.SINGLETON);
 
         
bind(MessageMapperFactory.class).to(CassandraMailboxSessionMapperFactory.class);
         
bind(MailboxMapperFactory.class).to(CassandraMailboxSessionMapperFactory.class);
@@ -76,6 +79,7 @@ public class CassandraMailboxModule extends AbstractModule {
         bind(Authenticator.class).to(UserRepositoryAuthenticator.class);
         bind(MailboxManager.class).to(CassandraMailboxManager.class);
         bind(MailboxId.Factory.class).to(CassandraId.Factory.class);
+        bind(MessageId.Factory.class).to(DefaultMessageId.Factory.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = 
Multibinder.newSetBinder(binder(), CassandraModule.class);
         
cassandraDataDefinitions.addBinding().to(org.apache.james.mailbox.cassandra.modules.CassandraAclModule.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
index 726fef9..f15f39c 100644
--- 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
+++ 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.inmemory.JsoupTextExtractor;
 import org.apache.james.mailbox.inmemory.mail.InMemoryModSeqProvider;
 import org.apache.james.mailbox.inmemory.mail.InMemoryUidProvider;
 import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
@@ -47,6 +48,7 @@ import 
org.apache.james.mailbox.store.mail.MailboxMapperFactory;
 import org.apache.james.mailbox.store.mail.MessageMapperFactory;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
 import org.apache.james.mailbox.store.mail.UidProvider;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
 import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
 import org.apache.james.mailbox.store.user.SubscriptionMapperFactory;
@@ -69,6 +71,7 @@ public class MemoryMailboxModule extends AbstractModule {
         bind(ModSeqProvider.class).to(InMemoryModSeqProvider.class);
         bind(UidProvider.class).to(InMemoryUidProvider.class);
         bind(MailboxId.Factory.class).to(InMemoryId.Factory.class);
+        bind(MessageId.Factory.class).to(DefaultMessageId.Factory.class);
 
         bind(SubscriptionManager.class).to(StoreSubscriptionManager.class);
         
bind(SubscriptionMapperFactory.class).to(InMemoryMailboxSessionMapperFactory.class);
@@ -91,6 +94,7 @@ public class MemoryMailboxModule extends AbstractModule {
         bind(InMemoryMailboxManager.class).in(Scopes.SINGLETON);
         bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON);
         bind(SimpleGroupMembershipResolver.class).in(Scopes.SINGLETON);
+        bind(DefaultMessageId.Factory.class).in(Scopes.SINGLETON);
     }
 
     @Provides @Named(Names.MAILBOXMANAGER_NAME) @Singleton

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
 
b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index 49dabd6..f4c7c5f 100644
--- 
a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ 
b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+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.impl.MessageParser;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
@@ -57,7 +58,8 @@ public class MailboxManagementTest {
             new JVMMailboxPathLocker(),
             new UnionMailboxACLResolver(),
             new SimpleGroupMembershipResolver(),
-            new MessageParser());
+            new MessageParser(),
+            new DefaultMessageId.Factory());
         mailboxManager.init();
         mailboxManagerManagement = new MailboxManagerManagement();
         mailboxManagerManagement.setMailboxManager(mailboxManager);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
index 686b881..ec12e59 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
@@ -41,7 +41,6 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Cid;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageAttachment;
-import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mime4j.dom.address.AddressList;
 import org.apache.james.mime4j.dom.address.Mailbox;
@@ -198,7 +197,7 @@ public class MessageFactory {
                     .build();
     }
 
-    public static class MetaDataWithContent implements MessageMetaData {
+    public static class MetaDataWithContent {
         public static Builder builder() {
             return new Builder();
         }
@@ -320,27 +319,22 @@ public class MessageFactory {
             this.messageId = messageId;
         }
 
-        @Override
         public MessageUid getUid() {
             return uid;
         }
 
-        @Override
         public long getModSeq() {
             return modSeq;
         }
 
-        @Override
         public Flags getFlags() {
             return flags;
         }
 
-        @Override
         public long getSize() {
             return size;
         }
 
-        @Override
         public Date getInternalDate() {
             return internalDate;
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/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 12346d7..afb274c 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
@@ -132,9 +132,8 @@ public class SetMessagesCreationProcessorTest {
         when(outbox.getId()).thenReturn(OUTBOX_ID);
         when(outbox.getMailboxPath()).thenReturn(new MailboxPath(NAMESPACE, 
USER, OUTBOX));
         
-        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));
+            .thenReturn(new ComposedMessageId(OUTBOX_ID, new 
DefaultMessageId(), MessageUid.of(1)));
 
         drafts = mock(MessageManager.class);
         when(drafts.getId()).thenReturn(DRAFTS_ID);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
 
b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
index 580a9a6..337e4af 100644
--- 
a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
+++ 
b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
@@ -51,6 +51,7 @@ import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.pop3server.netty.POP3Server;
 import org.apache.james.protocols.lib.POP3BeforeSMTPHelper;
@@ -725,7 +726,7 @@ public class POP3ServerTest {
                     return false;
                 }
             }
-        }, aclResolver, groupMembershipResolver, messageParser);
+        }, aclResolver, groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory());
         mailboxManager.init();
 
         protocolHandlerChain.put("mailboxmanager", MailboxManager.class, 
mailboxManager);

http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
 
b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index 78198b3..e6ccc33 100644
--- 
a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ 
b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -42,8 +42,10 @@ import 
org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MailboxQuery;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.SimpleMailboxMetaData;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.webadmin.WebAdminServer;
@@ -96,12 +98,14 @@ public class UserMailboxesRoutesTest {
 
         @Before
         public void setUp() throws Exception {
+            MessageId.Factory messageIdFactory = new 
DefaultMessageId.Factory();
             InMemoryMailboxManager mailboxManager = new 
InMemoryMailboxManager(new InMemoryMailboxSessionMapperFactory(),
                 (userid, passwd) -> true,
                 new JVMMailboxPathLocker(),
                 new UnionMailboxACLResolver(),
                 new SimpleGroupMembershipResolver(),
-                new MessageParser());
+                new MessageParser(),
+                messageIdFactory);
             mailboxManager.init();
 
             createServer(mailboxManager);


---------------------------------------------------------------------
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