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

[james-project] 10/43: [Refactoring] MessageBuilder should return SimpleMailboxMessage

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

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

commit 25fcfb5534cd55681d8b7d884e5f38118667efce
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat Nov 16 11:43:26 2019 +0700

    [Refactoring] MessageBuilder should return SimpleMailboxMessage
---
 .../apache/james/mailbox/store/MessageBuilder.java | 47 +++++++++++++++++++++-
 1 file changed, 45 insertions(+), 2 deletions(-)

diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java
index 3d45777..a100ad6 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java
@@ -18,20 +18,34 @@
  ****************************************************************/
 package org.apache.james.mailbox.store;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
 
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.primitives.Bytes;
 
 public class MessageBuilder {
-    
+    private static final char[] NEW_LINE = { 0x0D, 0x0A };
+    private static final ImmutableList<MessageAttachment> NO_ATTACHMENTS = ImmutableList.of();
+
     public TestId mailboxId = TestId.of(113);
     public MessageUid uid = MessageUid.of(776);
     public Date internalDate = new Date();
@@ -45,7 +59,26 @@ public class MessageBuilder {
     }
 
     public MailboxMessage build(MessageId messageId) throws Exception {
-        return new SimpleMailboxMembership(messageId, mailboxId, uid, -1,  internalDate, size, flags, body, headers);
+        byte[] headerContent = getHeaderContent();
+        SimpleMailboxMessage mailboxMessage = new SimpleMailboxMessage(messageId, internalDate, size, headerContent.length,
+            new SharedByteArrayInputStream(Bytes.concat(headerContent, body)), flags, new PropertyBuilder(), mailboxId, NO_ATTACHMENTS);
+        mailboxMessage.setUid(uid);
+        return mailboxMessage;
+    }
+
+    private byte[] getHeaderContent() throws IOException {
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final Writer writer = new OutputStreamWriter(baos, StandardCharsets.US_ASCII);
+
+        for (Map.Entry<String, String> header : headers.entrySet()) {
+            writer.write(header.getKey());
+            writer.write(": ");
+            writer.write(header.getValue());
+            writer.write(NEW_LINE);
+        }
+        writer.write(NEW_LINE);
+        writer.flush();
+        return baos.toByteArray();
     }
 
     public MessageBuilder size(int size) {
@@ -57,6 +90,11 @@ public class MessageBuilder {
         headers.put(field, value);
     }
 
+    public MessageBuilder headers(Map<String, String> headers) {
+        this.headers.putAll(headers);
+        return this;
+    }
+
     public void setKey(int mailboxId, MessageUid uid) {
         this.uid = uid;
         this.mailboxId = TestId.of(mailboxId);
@@ -83,4 +121,9 @@ public class MessageBuilder {
             flags.add(Flags.Flag.RECENT);
         }
     }
+
+    public MessageBuilder flags(Flags flags) {
+        this.flags = flags;
+        return this;
+    }
 }


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