NIFI-3403 - Fix NPE in InvokeHTTP Signed-off-by: Mike Moser <mose...@apache.org>
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/de8d0134 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/de8d0134 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/de8d0134 Branch: refs/heads/support/nifi-0.7.x Commit: de8d01349e80965de0fba989888c6951217270ad Parents: 97d064f Author: Pierre Villard <pierre.villard...@gmail.com> Authored: Thu Feb 9 20:10:33 2017 +0100 Committer: Mike Moser <mose...@apache.org> Committed: Fri Feb 10 17:20:42 2017 -0500 ---------------------------------------------------------------------- .../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/de8d0134/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 6befbf4..a3b23f8 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 @@ -855,7 +855,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/de8d0134/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 a0dade1..27eda3b 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());