Repository: nifi
Updated Branches:
  refs/heads/master 4e4d14f86 -> 2e1b87fa4


NIFI-3403 - Fix NPE in InvokeHTTP

Signed-off-by: Mike Moser <[email protected]>

This closes #1494


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

Branch: refs/heads/master
Commit: 2e1b87fa43e8af05ae9f08970b5d78c60e58c1c8
Parents: 4e4d14f
Author: Pierre Villard <[email protected]>
Authored: Thu Feb 9 20:10:33 2017 +0100
Committer: Mike Moser <[email protected]>
Committed: Fri Feb 10 20:59:18 2017 +0000

----------------------------------------------------------------------
 .../nifi/processors/standard/InvokeHTTP.java    |  2 +-
 .../standard/util/TestInvokeHttpCommon.java     | 29 ++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/2e1b87fa/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
index c95b639..66f7561 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/InvokeHTTP.java
@@ -863,7 +863,7 @@ public final class InvokeHTTP extends AbstractProcessor {
         // iterate through the flowfile attributes, adding any attribute that
         // matches the attributes-to-send pattern. if the pattern is not set
         // (it's an optional property), ignore that attribute entirely
-        if (regexAttributesToSend != null) {
+        if (regexAttributesToSend != null && requestFlowFile != null) {
             Map<String, String> attributes = requestFlowFile.getAttributes();
             Matcher m = regexAttributesToSend.matcher("");
             for (Map.Entry<String, String> entry : attributes.entrySet()) {

http://git-wip-us.apache.org/repos/asf/nifi/blob/2e1b87fa/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/util/TestInvokeHttpCommon.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/util/TestInvokeHttpCommon.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/util/TestInvokeHttpCommon.java
index 5b63243..5b1e404 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/util/TestInvokeHttpCommon.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/util/TestInvokeHttpCommon.java
@@ -449,6 +449,35 @@ public abstract class TestInvokeHttpCommon {
     }
 
     @Test
+    public void testNoInputWithAttributes() throws Exception {
+        addHandler(new GetOrHeadHandler());
+
+        runner.setProperty(InvokeHTTP.PROP_URL, url + "/status/200");
+        runner.setProperty(InvokeHTTP.PROP_METHOD, "GET");
+        runner.setProperty(InvokeHTTP.PROP_ATTRIBUTES_TO_SEND, "myAttribute");
+        runner.setIncomingConnection(false);
+        runner.setNonLoopConnection(false);
+
+        runner.run();
+
+        runner.assertTransferCount(InvokeHTTP.REL_SUCCESS_REQ, 0);
+        runner.assertTransferCount(InvokeHTTP.REL_RESPONSE, 1);
+        runner.assertTransferCount(InvokeHTTP.REL_RETRY, 0);
+        runner.assertTransferCount(InvokeHTTP.REL_NO_RETRY, 0);
+        runner.assertTransferCount(InvokeHTTP.REL_FAILURE, 0);
+        runner.assertPenalizeCount(0);
+
+        // expected in response
+        // status code, status message, all headers from server response --> 
ff attributes
+        // server response message body into payload of ff
+        final MockFlowFile bundle1 = 
runner.getFlowFilesForRelationship(InvokeHTTP.REL_RESPONSE).get(0);
+        bundle1.assertContentEquals("/status/200".getBytes("UTF-8"));
+        bundle1.assertAttributeEquals(InvokeHTTP.STATUS_CODE, "200");
+        bundle1.assertAttributeEquals(InvokeHTTP.STATUS_MESSAGE, "OK");
+        bundle1.assertAttributeEquals("Content-Type", 
"text/plain;charset=iso-8859-1");
+    }
+
+    @Test
     public void testNoInputFail() throws Exception {
         addHandler(new GetOrHeadHandler());
 

Reply via email to