You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2021/05/16 17:13:50 UTC

[sling-org-apache-sling-commons-messaging-mail] 03/05: SLING-10381 Unify Header parameters in API

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

olli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-messaging-mail.git

commit fb80257a49980a23574e917510ddbcfb6aa42095
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Sun May 16 19:08:52 2021 +0200

    SLING-10381 Unify Header parameters in API
    
    replace Header[] and Map<String, String> by Collection<Header>
---
 .../commons/messaging/mail/MessageBuilder.java     |  6 ++---
 .../mail/internal/SimpleMessageBuilder.java        | 30 +++++++++++-----------
 .../mail/internal/SimpleMessageBuilderTest.java    | 11 +++++---
 3 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/src/main/java/org/apache/sling/commons/messaging/mail/MessageBuilder.java b/src/main/java/org/apache/sling/commons/messaging/mail/MessageBuilder.java
index 2d0110c..b69d34e 100644
--- a/src/main/java/org/apache/sling/commons/messaging/mail/MessageBuilder.java
+++ b/src/main/java/org/apache/sling/commons/messaging/mail/MessageBuilder.java
@@ -36,7 +36,7 @@ public interface MessageBuilder {
 
     @NotNull MessageBuilder header(@NotNull final String name, @Nullable final String value);
 
-    @NotNull MessageBuilder headers(@NotNull final Map<String, String> headers);
+    @NotNull MessageBuilder headers(@NotNull final Collection<Header> headers);
 
     @NotNull MessageBuilder from(@NotNull final InternetAddress from);
 
@@ -100,11 +100,11 @@ public interface MessageBuilder {
 
     @NotNull MessageBuilder attachment(final byte @NotNull [] content, @NotNull final String type, @NotNull final String filename);
 
-    @NotNull MessageBuilder attachment(final byte @NotNull [] content, @NotNull final String type, @NotNull final String filename, @Nullable Header[] headers);
+    @NotNull MessageBuilder attachment(final byte @NotNull [] content, @NotNull final String type, @NotNull final String filename, @Nullable final Collection<Header> headers);
 
     @NotNull MessageBuilder inline(final byte @NotNull [] content, @NotNull final String type, @NotNull final String cid);
 
-    @NotNull MessageBuilder inline(final byte @NotNull [] content, @NotNull final String type, @NotNull final String cid, @Nullable Header[] headers);
+    @NotNull MessageBuilder inline(final byte @NotNull [] content, @NotNull final String type, @NotNull final String cid, @Nullable final Collection<Header> headers);
 
     @NotNull MimeMessage build() throws MessagingException;
 
diff --git a/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilder.java b/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilder.java
index 1c4d010..21b637c 100644
--- a/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilder.java
+++ b/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilder.java
@@ -25,7 +25,6 @@ import java.io.UnsupportedEncodingException;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -53,7 +52,7 @@ public class SimpleMessageBuilder implements MessageBuilder {
 
     private final Session session;
 
-    private final Map<String, String> headers = new HashMap<>();
+    private final List<Header> headers = new LinkedList<>();
 
     private InternetAddress from;
 
@@ -93,13 +92,14 @@ public class SimpleMessageBuilder implements MessageBuilder {
 
     @Override
     public @NotNull MessageBuilder header(@NotNull final String name, @Nullable final String value) {
-        headers.put(name, value);
+        final Header header = new Header(name, value);
+        headers.add(header);
         return this;
     }
 
     @Override
-    public @NotNull MessageBuilder headers(@NotNull final Map<String, String> headers) {
-        this.headers.putAll(headers);
+    public @NotNull MessageBuilder headers(@NotNull final Collection<Header> headers) {
+        this.headers.addAll(headers);
         return this;
     }
 
@@ -329,7 +329,7 @@ public class SimpleMessageBuilder implements MessageBuilder {
     }
 
     @Override
-    public @NotNull MessageBuilder attachment(final byte @NotNull [] content, @NotNull final String type, @NotNull final String filename, @Nullable Header[] headers) {
+    public @NotNull MessageBuilder attachment(final byte @NotNull [] content, @NotNull final String type, @NotNull final String filename, @Nullable final Collection<Header> headers) {
         final Attachment attachment = new Attachment(content, type, filename, headers);
         this.attachments.add(attachment);
         return this;
@@ -341,13 +341,13 @@ public class SimpleMessageBuilder implements MessageBuilder {
     }
 
     @Override
-    public @NotNull MessageBuilder inline(final byte @NotNull [] content, @NotNull final String type, @NotNull final String cid, @Nullable Header[] headers) {
+    public @NotNull MessageBuilder inline(final byte @NotNull [] content, @NotNull final String type, @NotNull final String cid, @Nullable final Collection<Header> headers) {
         final Inline inline = new Inline(content, type, cid, headers);
         this.inlines.add(inline);
         return this;
     }
 
-    private Map<String, String> headers() {
+    private List<Header> headers() {
         return headers;
     }
 
@@ -410,8 +410,8 @@ public class SimpleMessageBuilder implements MessageBuilder {
     public @NotNull MimeMessage build() throws MessagingException {
         final MimeMessage message = new MimeMessage(session);
 
-        for (final Map.Entry<String, String> header : headers().entrySet()) {
-            message.setHeader(header.getKey(), header.getValue());
+        for (final Header header : headers()) {
+            message.setHeader(header.getName(), header.getValue());
         }
 
         message.setFrom(from());
@@ -513,7 +513,7 @@ public class SimpleMessageBuilder implements MessageBuilder {
         part.setDataHandler(handler);
     }
 
-    private static void setHeaders(final MimeBodyPart part, final Header[] headers) throws MessagingException {
+    private static void setHeaders(final MimeBodyPart part, final Collection<Header> headers) throws MessagingException {
         for (final Header header : headers) {
             part.setHeader(header.getName(), header.getValue());
         }
@@ -527,9 +527,9 @@ public class SimpleMessageBuilder implements MessageBuilder {
 
         final String filename;
 
-        final Header[] headers;
+        final Collection<Header> headers;
 
-        Attachment(final byte @NotNull [] content, @NotNull final String type, @NotNull final String filename, @Nullable final Header[] headers) {
+        Attachment(final byte @NotNull [] content, @NotNull final String type, @NotNull final String filename, @Nullable final Collection<Header> headers) {
             this.content = content;
             this.type = type;
             this.filename = filename;
@@ -546,9 +546,9 @@ public class SimpleMessageBuilder implements MessageBuilder {
 
         final String cid;
 
-        final Header[] headers;
+        final Collection<Header> headers;
 
-        Inline(final byte @NotNull [] content, @NotNull final String type, @NotNull final String cid, @Nullable final Header[] headers) {
+        Inline(final byte @NotNull [] content, @NotNull final String type, @NotNull final String cid, @Nullable final Collection<Header> headers) {
             this.content = content;
             this.type = type;
             this.cid = cid;
diff --git a/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilderTest.java b/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilderTest.java
index 6b1bc82..a1c1fbb 100644
--- a/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilderTest.java
+++ b/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMessageBuilderTest.java
@@ -18,11 +18,14 @@
  */
 package org.apache.sling.commons.messaging.mail.internal;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
+import jakarta.mail.Header;
 import jakarta.mail.Session;
 import jakarta.mail.internet.InternetAddress;
 import jakarta.mail.internet.MimeMessage;
@@ -70,10 +73,10 @@ public class SimpleMessageBuilderTest {
 
     @Test
     public void testHeaders() throws Exception {
-        final Map<String, String> headers = new HashMap<>();
-        headers.put("a", "1");
-        headers.put("b", "2");
-        headers.put("c", "3");
+        final Collection<Header> headers = new ArrayList<>();
+        headers.add(new Header("a", "1"));
+        headers.add(new Header("b", "2"));
+        headers.add(new Header("c", "3"));
         final Session session = Session.getInstance(properties);
         final SimpleMessageBuilder builder = new SimpleMessageBuilder(session);
         builder.headers(headers);