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/15 14:21:23 UTC
[sling-org-apache-sling-commons-messaging-mail] branch master
updated: SLING-10380 Headers support not working
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
The following commit(s) were added to refs/heads/master by this push:
new b91f7f5 SLING-10380 Headers support not working
b91f7f5 is described below
commit b91f7f5062f52ba34489a50edd2592e7e86d50fe
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Sat May 15 16:21:13 2021 +0200
SLING-10380 Headers support not working
replace InternetHeaders by intermediate Map
---
.../commons/messaging/mail/MessageBuilder.java | 4 +--
.../mail/internal/SimpleMessageBuilder.java | 21 +++++-------
.../mail/internal/SimpleMessageBuilderTest.java | 39 ++++++++++++++++++++++
3 files changed, 50 insertions(+), 14 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 fe80ab5..2d0110c 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
@@ -19,12 +19,12 @@
package org.apache.sling.commons.messaging.mail;
import java.util.Collection;
+import java.util.Map;
import jakarta.mail.Header;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.AddressException;
import jakarta.mail.internet.InternetAddress;
-import jakarta.mail.internet.InternetHeaders;
import jakarta.mail.internet.MimeMessage;
import org.jetbrains.annotations.NotNull;
@@ -36,7 +36,7 @@ public interface MessageBuilder {
@NotNull MessageBuilder header(@NotNull final String name, @Nullable final String value);
- @NotNull MessageBuilder headers(@NotNull final InternetHeaders headers);
+ @NotNull MessageBuilder headers(@NotNull final Map<String, String> headers);
@NotNull MessageBuilder from(@NotNull final InternetAddress from);
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 9723546..1ab9e27 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,8 +25,10 @@ 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;
import jakarta.activation.DataHandler;
import jakarta.activation.DataSource;
@@ -38,7 +40,6 @@ import jakarta.mail.Part;
import jakarta.mail.Session;
import jakarta.mail.internet.AddressException;
import jakarta.mail.internet.InternetAddress;
-import jakarta.mail.internet.InternetHeaders;
import jakarta.mail.internet.MimeBodyPart;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeMultipart;
@@ -52,7 +53,7 @@ public class SimpleMessageBuilder implements MessageBuilder {
private final Session session;
- private final InternetHeaders headers = new InternetHeaders();
+ private final Map<String, String> headers = new HashMap<>();
private InternetAddress from;
@@ -92,16 +93,13 @@ public class SimpleMessageBuilder implements MessageBuilder {
@Override
public @NotNull MessageBuilder header(@NotNull final String name, @Nullable final String value) {
- headers.setHeader(name, value);
+ headers.put(name, value);
return this;
}
@Override
- public @NotNull MessageBuilder headers(@NotNull final InternetHeaders headers) {
- while (headers.getAllHeaders().hasMoreElements()) {
- final Header header = headers.getAllHeaders().nextElement();
- this.headers.setHeader(header.getName(), header.getValue());
- }
+ public @NotNull MessageBuilder headers(@NotNull final Map<String, String> headers) {
+ this.headers.putAll(headers);
return this;
}
@@ -349,7 +347,7 @@ public class SimpleMessageBuilder implements MessageBuilder {
return this;
}
- private InternetHeaders headers() {
+ private Map<String, String> headers() {
return headers;
}
@@ -412,9 +410,8 @@ public class SimpleMessageBuilder implements MessageBuilder {
public @NotNull MimeMessage build() throws MessagingException {
final MimeMessage message = new MimeMessage(session);
- while (headers().getAllHeaders().hasMoreElements()) {
- final Header header = headers.getAllHeaders().nextElement();
- message.setHeader(header.getName(), header.getValue());
+ for (final Map.Entry<String, String> header : headers().entrySet()) {
+ message.setHeader(header.getKey(), header.getValue());
}
message.setFrom(from());
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 268e6fb..06a7eb9 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
@@ -49,6 +49,45 @@ public class SimpleMessageBuilderTest {
addresses.put("e", new InternetAddress("e@example.org", "e"));
}
+ @Test
+ public void testHeader() throws Exception {
+ final Session session = Session.getInstance(properties);
+ final SimpleMessageBuilder builder = new SimpleMessageBuilder(session);
+ builder.header("a", "1");
+ builder.header("b", "2");
+ builder.header("c", "3");
+ final MimeMessage message = builder.build();
+ final String[] a = message.getHeader("a");
+ assertThat(a.length).isEqualTo(1);
+ assertThat(a[0]).isEqualTo("1");
+ final String[] b = message.getHeader("b");
+ assertThat(b.length).isEqualTo(1);
+ assertThat(b[0]).isEqualTo("2");
+ final String[] c = message.getHeader("c");
+ assertThat(c.length).isEqualTo(1);
+ assertThat(c[0]).isEqualTo("3");
+ }
+
+ @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 Session session = Session.getInstance(properties);
+ final SimpleMessageBuilder builder = new SimpleMessageBuilder(session);
+ builder.headers(headers);
+ final MimeMessage message = builder.build();
+ final String[] a = message.getHeader("a");
+ assertThat(a.length).isEqualTo(1);
+ assertThat(a[0]).isEqualTo("1");
+ final String[] b = message.getHeader("b");
+ assertThat(b.length).isEqualTo(1);
+ assertThat(b[0]).isEqualTo("2");
+ final String[] c = message.getHeader("c");
+ assertThat(c.length).isEqualTo(1);
+ assertThat(c[0]).isEqualTo("3");
+ }
@Test
public void testFromInternetAddress() throws Exception {