Repository: nifi
Updated Branches:
  refs/heads/master 92062f9be -> ecb81ec11


NIFI-1362 Set mime.type attribute on response FlowFile based on InvokeHTTP 
response Content-Type

Signed-off-by: Aldrin Piri <ald...@apache.org>


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

Branch: refs/heads/master
Commit: ecb81ec113e20f3850fd3f7080da2360035cabd8
Parents: 92062f9
Author: Jeremy Dyer <jdy...@gmail.com>
Authored: Thu Jan 14 23:16:55 2016 -0500
Committer: Aldrin Piri <ald...@apache.org>
Committed: Fri Jan 15 16:40:36 2016 -0500

----------------------------------------------------------------------
 .../nifi/processors/standard/InvokeHTTP.java    |  8 +++-
 .../standard/util/TestInvokeHttpCommon.java     | 41 ++++++++++++++++++++
 2 files changed, 47 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/ecb81ec1/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 4e5c22d..44f76e5 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
@@ -556,7 +556,7 @@ public final class InvokeHTTP extends AbstractProcessor {
                 throw new IllegalStateException("Status code unknown, 
connection hasn't been attempted.");
             }
 
-            // Create a map of the status attributes that are always written 
to the request and reponse FlowFiles
+            // Create a map of the status attributes that are always written 
to the request and response FlowFiles
             Map<String, String> statusAttributes = new HashMap<>();
             statusAttributes.put(STATUS_CODE, String.valueOf(statusCode));
             statusAttributes.put(STATUS_MESSAGE, statusMessage);
@@ -602,7 +602,7 @@ public final class InvokeHTTP extends AbstractProcessor {
                         responseFlowFile = session.create();
                     }
 
-                    // write the status attributes
+                    // write attributes to response flowfile
                     responseFlowFile = 
session.putAllAttributes(responseFlowFile, statusAttributes);
 
                     // write the response headers as attributes
@@ -612,6 +612,10 @@ public final class InvokeHTTP extends AbstractProcessor {
                     // transfer the message body to the payload
                     // can potentially be null in edge cases
                     if (bodyExists) {
+                        // write content type attribute to response flowfile 
if it is available
+                        if (responseBody.contentType() != null) {
+                             responseFlowFile = 
session.putAttribute(responseFlowFile, CoreAttributes.MIME_TYPE.key(), 
responseBody.contentType().toString());
+                        }
                         if (teeInputStream != null) {
                             responseFlowFile = 
session.importFrom(teeInputStream, responseFlowFile);
                         } else {

http://git-wip-us.apache.org/repos/asf/nifi/blob/ecb81ec1/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 cf14e08..3464f14 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
@@ -226,6 +226,47 @@ public abstract class TestInvokeHttpCommon {
     }
 
     @Test
+    public void testOutputResponseSetMimeTypeToResponseContentType() throws 
Exception {
+        addHandler(new GetOrHeadHandler());
+
+        String statusUrl = "/status/200";
+        runner.setProperty(InvokeHTTP.PROP_URL, url + statusUrl);
+        runner.setProperty(InvokeHTTP.PROP_METHOD, "GET");
+        runner.setProperty(InvokeHTTP.PROP_OUTPUT_RESPONSE_REGARDLESS,"true");
+        
runner.setProperty(InvokeHTTP.PROP_PUT_OUTPUT_IN_ATTRIBUTE,"outputBody");
+
+        createFlowFiles(runner);
+
+        runner.run();
+
+        runner.assertTransferCount(InvokeHTTP.REL_SUCCESS_REQ, 1);
+        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);
+
+        // expected in request status.code and status.message
+        // original flow file (+attributes)
+        final MockFlowFile bundle = 
runner.getFlowFilesForRelationship(InvokeHTTP.REL_SUCCESS_REQ).get(0);
+        bundle.assertContentEquals("Hello".getBytes("UTF-8"));
+        bundle.assertAttributeEquals(InvokeHTTP.STATUS_CODE, "200");
+        bundle.assertAttributeEquals(InvokeHTTP.STATUS_MESSAGE, "OK");
+        bundle.assertAttributeEquals("outputBody", statusUrl);
+        bundle.assertAttributeEquals("Foo", "Bar");
+
+        // 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(statusUrl.getBytes("UTF-8"));
+        bundle1.assertAttributeEquals(InvokeHTTP.STATUS_CODE, "200");
+        bundle1.assertAttributeEquals(InvokeHTTP.STATUS_MESSAGE, "OK");
+        bundle1.assertAttributeEquals("Foo", "Bar");
+        bundle1.assertAttributeEquals("Content-Type", "text/plain; 
charset=ISO-8859-1");
+        bundle1.assertAttributeEquals("mime.type", "text/plain; 
charset=ISO-8859-1");
+    }
+
+    @Test
     public void testOutputResponseRegardlessWithOutputInAttributeLarge() 
throws Exception {
         addHandler(new GetLargeHandler());
 

Reply via email to