You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by pv...@apache.org on 2018/06/18 08:46:13 UTC

nifi git commit: NIFI-5317 - support non-ASCII X-Mailer PutEmail header

Repository: nifi
Updated Branches:
  refs/heads/master 97f71fd6c -> 021ee6faf


NIFI-5317 - support non-ASCII X-Mailer PutEmail header

Signed-off-by: Pierre Villard <pi...@gmail.com>

This closes #2800.


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/021ee6fa
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/021ee6fa
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/021ee6fa

Branch: refs/heads/master
Commit: 021ee6faf21bd553e742640d6cc3a58b8cdc798d
Parents: 97f71fd
Author: Dustin Rodrigues <du...@gmail.com>
Authored: Sat Jun 16 14:01:00 2018 -0400
Committer: Pierre Villard <pi...@gmail.com>
Committed: Mon Jun 18 10:45:56 2018 +0200

----------------------------------------------------------------------
 .../apache/nifi/processors/standard/PutEmail.java  | 17 +++++++++++------
 .../nifi/processors/standard/TestPutEmail.java     |  4 ++--
 2 files changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/021ee6fa/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
index b80f401..8fdcc14 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
@@ -320,6 +320,15 @@ public class PutEmail extends AbstractProcessor {
         this.attributeNamePattern = attributeNameRegex == null ? null : Pattern.compile(attributeNameRegex);
     }
 
+    private void setMessageHeader(final String header, final String value, final Message message) throws MessagingException {
+        final ComponentLog logger = getLogger();
+        try {
+            message.setHeader(header, MimeUtility.encodeText(value));
+        } catch (UnsupportedEncodingException e){
+            logger.warn("Unable to add header {} with value {} due to encoding exception", new Object[]{header, value});
+        }
+    }
+
     @Override
     public void onTrigger(final ProcessContext context, final ProcessSession session) {
         final FlowFile flowFile = session.get();
@@ -343,15 +352,11 @@ public class PutEmail extends AbstractProcessor {
             if (attributeNamePattern != null) {
                 for (final Map.Entry<String, String> entry : flowFile.getAttributes().entrySet()) {
                     if (attributeNamePattern.matcher(entry.getKey()).matches()) {
-                        try {
-                            message.setHeader(entry.getKey(), MimeUtility.encodeText(entry.getValue()));
-                        } catch (UnsupportedEncodingException e){
-                            logger.warn("Unable to add header value {} due to encoding exception", new Object[]{entry.getValue()});
-                        }
+                        this.setMessageHeader(entry.getKey(), entry.getValue(), message);
                     }
                 }
             }
-            message.setHeader("X-Mailer", context.getProperty(HEADER_XMAILER).evaluateAttributeExpressions(flowFile).getValue());
+            this.setMessageHeader("X-Mailer", context.getProperty(HEADER_XMAILER).evaluateAttributeExpressions(flowFile).getValue(), message);
             message.setSubject(context.getProperty(SUBJECT).evaluateAttributeExpressions(flowFile).getValue());
 
             String messageText = getMessage(flowFile, context, session);

http://git-wip-us.apache.org/repos/asf/nifi/blob/021ee6fa/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
index 2509868..7df04ba 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
@@ -137,7 +137,7 @@ public class TestPutEmail {
     public void testOutgoingMessageWithOptionalProperties() throws Exception {
         // verifies that optional attributes are set on the outgoing Message correctly
         runner.setProperty(PutEmail.SMTP_HOSTNAME, "smtp-host");
-        runner.setProperty(PutEmail.HEADER_XMAILER, "TestingNiFi");
+        runner.setProperty(PutEmail.HEADER_XMAILER, "TestingNíFiNonASCII");
         runner.setProperty(PutEmail.FROM, "${from}");
         runner.setProperty(PutEmail.MESSAGE, "${message}");
         runner.setProperty(PutEmail.TO, "${to}");
@@ -164,7 +164,7 @@ public class TestPutEmail {
         assertEquals("Expected a single message to be sent", 1, processor.getMessages().size());
         Message message = processor.getMessages().get(0);
         assertEquals("\"test@apache.org\" <NiFi>", message.getFrom()[0].toString());
-        assertEquals("X-Mailer Header", "TestingNiFi", message.getHeader("X-Mailer")[0]);
+        assertEquals("X-Mailer Header", "TestingNíFiNonASCII", MimeUtility.decodeText(message.getHeader("X-Mailer")[0]));
         assertEquals("the message body", message.getContent());
         assertEquals(1, message.getRecipients(RecipientType.TO).length);
         assertEquals("to@apache.org", message.getRecipients(RecipientType.TO)[0].toString());