This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.clients-1.1.4 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-clients.git
commit 0ebb167f3a26d1bfc4d5261179dc448b769806da Author: Robert Munteanu <[email protected]> AuthorDate: Thu Jun 15 16:12:33 2017 +0000 SLING-6964 - SlingEmailClient does not allow accessing email headers git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/http/clients@1798852 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/testing/clients/email/EmailMessage.java | 44 ++++++++++++++++++++++ .../testing/clients/email/SlingEmailClient.java | 10 +++++ .../sling/testing/clients/email/package-info.java | 2 +- 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/sling/testing/clients/email/EmailMessage.java b/src/main/java/org/apache/sling/testing/clients/email/EmailMessage.java index e013e51..9ca1164 100644 --- a/src/main/java/org/apache/sling/testing/clients/email/EmailMessage.java +++ b/src/main/java/org/apache/sling/testing/clients/email/EmailMessage.java @@ -18,18 +18,62 @@ */ package org.apache.sling.testing.clients.email; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + /** * Holds information retrieved from the mock SMTP server deployed in Sling * */ public final class EmailMessage { + public static final String HEADER_FROM = "From"; + public static final String HEADER_TO = "To"; + public static final String HEADER_SUBJECT = "Subject"; + + private Map<String, String> headers = new LinkedHashMap<>(); + private String content; public EmailMessage(String content) { this.content = content; } + /** + * Adds a new header to this email message + * + * @param key the header name + * @param value the header value + */ + public void addHeader(String key, String value) { + headers.put(key, value); + } + + /** + * Returns the value of one of the headers of this email + * + * @param key the header name + * @return the value of the header, possibly <code>null</code> + */ + public String getHeader(String key) { + return headers.get(key); + } + + /** + * Returns an unmodifiable view over the email headers + * + * @return the headers + */ + public Map<String, String> getHeaders() { + return Collections.unmodifiableMap(headers); + } + + /** + * Returns the contents of the email + * + * @return the email content + */ public String getContent() { return content; } diff --git a/src/main/java/org/apache/sling/testing/clients/email/SlingEmailClient.java b/src/main/java/org/apache/sling/testing/clients/email/SlingEmailClient.java index 65bdaa1..86c31b9 100644 --- a/src/main/java/org/apache/sling/testing/clients/email/SlingEmailClient.java +++ b/src/main/java/org/apache/sling/testing/clients/email/SlingEmailClient.java @@ -24,6 +24,7 @@ import static org.apache.http.HttpStatus.SC_OK; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; import java.util.List; import org.apache.http.Header; @@ -91,6 +92,15 @@ public final class SlingEmailClient extends SlingClient { JsonNode messages = mapper.readTree(response.getContent()); for ( JsonNode emailNode : messages.get("messages") ) { EmailMessage msg = new EmailMessage(emailNode.get(PN_CONTENT).getTextValue()); + Iterator<String> fieldNames = emailNode.getFieldNames(); + while ( fieldNames.hasNext() ) { + String fieldName = fieldNames.next(); + if ( fieldName.equals(PN_CONTENT) ) { + continue; + } + msg.addHeader(fieldName, emailNode.get(fieldName).getTextValue()); + } + emails.add(msg); } } catch (IOException e) { diff --git a/src/main/java/org/apache/sling/testing/clients/email/package-info.java b/src/main/java/org/apache/sling/testing/clients/email/package-info.java index 373bccc..1789e2c 100644 --- a/src/main/java/org/apache/sling/testing/clients/email/package-info.java +++ b/src/main/java/org/apache/sling/testing/clients/email/package-info.java @@ -17,7 +17,7 @@ * under the License. */ -@Version("1.0.0") +@Version("1.1.0") package org.apache.sling.testing.clients.email; import org.osgi.annotation.versioning.Version; -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
