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 2019/02/13 12:55:17 UTC

[nifi] branch master updated: NIFI-4886: Add EL support for Webhook URL in PutSlack

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

pvillard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/master by this push:
     new b74d71b  NIFI-4886: Add EL support for Webhook URL in PutSlack
b74d71b is described below

commit b74d71b64738545c9e02e601b028de19c137af3b
Author: Matthew Burgess <ma...@apache.org>
AuthorDate: Tue Feb 12 12:33:15 2019 -0500

    NIFI-4886: Add EL support for Webhook URL in PutSlack
    
    Signed-off-by: Pierre Villard <pi...@gmail.com>
    
    This closes #3303.
---
 .../java/org/apache/nifi/processors/slack/PutSlack.java   |  5 +++--
 .../org/apache/nifi/processors/slack/PutSlackTest.java    | 15 +++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/PutSlack.java b/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/PutSlack.java
index fd4a302..6951ad5 100644
--- a/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/PutSlack.java
+++ b/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/PutSlack.java
@@ -74,6 +74,7 @@ public class PutSlack extends AbstractProcessor {
             .required(true)
             .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
             .addValidator(StandardValidators.URL_VALIDATOR)
+            .expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .sensitive(true)
             .build();
 
@@ -254,7 +255,7 @@ public class PutSlack extends AbstractProcessor {
             jsonWriter.writeObject(jsonObject);
             jsonWriter.close();
 
-            URL url = new URL(context.getProperty(WEBHOOK_URL).getValue());
+            URL url = new URL(context.getProperty(WEBHOOK_URL).evaluateAttributeExpressions(flowFile).getValue());
             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
             conn.setRequestMethod("POST");
             conn.setDoOutput(true);
@@ -267,7 +268,7 @@ public class PutSlack extends AbstractProcessor {
             if (responseCode >= 200 && responseCode < 300) {
                 getLogger().info("Successfully posted message to Slack");
                 session.transfer(flowFile, REL_SUCCESS);
-                session.getProvenanceReporter().send(flowFile, context.getProperty(WEBHOOK_URL).getValue());
+                session.getProvenanceReporter().send(flowFile, url.toString());
             } else {
                 getLogger().error("Failed to post message to Slack with response code {}", new Object[]{responseCode});
                 flowFile = session.penalize(flowFile);
diff --git a/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/test/java/org/apache/nifi/processors/slack/PutSlackTest.java b/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/test/java/org/apache/nifi/processors/slack/PutSlackTest.java
index f6b09dc..7e98c50 100644
--- a/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/test/java/org/apache/nifi/processors/slack/PutSlackTest.java
+++ b/nifi-nar-bundles/nifi-slack-bundle/nifi-slack-processors/src/test/java/org/apache/nifi/processors/slack/PutSlackTest.java
@@ -241,4 +241,19 @@ public class PutSlackTest {
             + "integration-test-webhook%22%2C%22icon_url%22%3A%22http%3A%2F%2Florempixel.com%2F48%2F48%2F%22%7D";
         assertTrue(Arrays.equals(expected.getBytes(), servlet.getLastPost()));
     }
+
+    @Test
+    public void testSimplePutWithEL() {
+        testRunner.setProperty(PutSlack.WEBHOOK_URL, "${slack.url}");
+        testRunner.setProperty(PutSlack.WEBHOOK_TEXT, PutSlackTest.WEBHOOK_TEST_TEXT);
+
+        testRunner.enqueue(new byte[0], new HashMap<String,String>(){{
+            put("slack.url", server.getUrl());
+        }});
+        testRunner.run(1);
+        testRunner.assertAllFlowFilesTransferred(PutSlack.REL_SUCCESS, 1);
+
+        byte[] expected = "payload=%7B%22text%22%3A%22Hello+From+Apache+NiFi%22%7D".getBytes();
+        assertTrue(Arrays.equals(expected, servlet.getLastPost()));
+    }
 }