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

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


The following commit(s) were added to refs/heads/main by this push:
     new 81b36e69ae NIFI-10389 Added mime.type to GetShopify and GetHubSpot
81b36e69ae is described below

commit 81b36e69aea0e23e5c839f103f0bc1d4099f6fb1
Author: Lehel Boér <[email protected]>
AuthorDate: Fri Nov 18 15:38:47 2022 +0100

    NIFI-10389 Added mime.type to GetShopify and GetHubSpot
    
    This closes #6682
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../apache/nifi/processors/hubspot/GetHubSpot.java |  4 ++
 .../nifi/processors/hubspot/GetHubSpotTest.java    | 50 ++++++++++++----------
 .../apache/nifi/processors/shopify/GetShopify.java |  4 ++
 .../nifi/processors/shopify/GetShopifyIT.java      |  6 ++-
 4 files changed, 41 insertions(+), 23 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/main/java/org/apache/nifi/processors/hubspot/GetHubSpot.java
 
b/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/main/java/org/apache/nifi/processors/hubspot/GetHubSpot.java
index dc78e02c4b..53567ff212 100644
--- 
a/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/main/java/org/apache/nifi/processors/hubspot/GetHubSpot.java
+++ 
b/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/main/java/org/apache/nifi/processors/hubspot/GetHubSpot.java
@@ -30,6 +30,7 @@ import 
org.apache.nifi.annotation.behavior.InputRequirement.Requirement;
 import org.apache.nifi.annotation.behavior.PrimaryNodeOnly;
 import org.apache.nifi.annotation.behavior.Stateful;
 import org.apache.nifi.annotation.behavior.TriggerSerially;
+import org.apache.nifi.annotation.behavior.WritesAttribute;
 import org.apache.nifi.annotation.configuration.DefaultSchedule;
 import org.apache.nifi.annotation.configuration.DefaultSettings;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
@@ -40,6 +41,7 @@ import org.apache.nifi.components.state.Scope;
 import org.apache.nifi.components.state.StateMap;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.processor.AbstractProcessor;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSession;
@@ -82,6 +84,7 @@ import java.util.stream.Collectors;
         " objects can be set in the 'Result Limit' property.")
 @DefaultSettings(yieldDuration = "10 sec")
 @DefaultSchedule(strategy = SchedulingStrategy.TIMER_DRIVEN, period = "1 min")
+@WritesAttribute(attribute = "mime.type", description = "Sets the MIME type to 
application/json")
 public class GetHubSpot extends AbstractProcessor {
 
     static final PropertyDescriptor OBJECT_TYPE = new 
PropertyDescriptor.Builder()
@@ -234,6 +237,7 @@ public class GetHubSpot extends AbstractProcessor {
             FlowFile flowFile = session.create();
             flowFile = session.write(flowFile, parseHttpResponse(response, 
total, stateMap));
             if (total.get() > 0) {
+                flowFile = session.putAttribute(flowFile, 
CoreAttributes.MIME_TYPE.key(), "application/json");
                 session.transfer(flowFile, REL_SUCCESS);
             } else {
                 getLogger().debug("Empty response when requested HubSpot 
endpoint: [{}]", endpoint);
diff --git 
a/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/test/java/org/apache/nifi/processors/hubspot/GetHubSpotTest.java
 
b/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/test/java/org/apache/nifi/processors/hubspot/GetHubSpotTest.java
index d18b49d316..fd8ed18fed 100644
--- 
a/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/test/java/org/apache/nifi/processors/hubspot/GetHubSpotTest.java
+++ 
b/nifi-nar-bundles/nifi-hubspot-bundle/nifi-hubspot-processors/src/test/java/org/apache/nifi/processors/hubspot/GetHubSpotTest.java
@@ -16,16 +16,34 @@
  */
 package org.apache.nifi.processors.hubspot;
 
+import static org.apache.nifi.processors.hubspot.GetHubSpot.CURSOR_KEY;
+import static 
org.apache.nifi.processors.hubspot.GetHubSpot.END_INCREMENTAL_KEY;
+import static 
org.apache.nifi.processors.hubspot.GetHubSpot.START_INCREMENTAL_KEY;
+import static org.apache.nifi.processors.hubspot.HubSpotObjectType.COMPANIES;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import okhttp3.HttpUrl;
 import okhttp3.mockwebserver.MockResponse;
 import okhttp3.mockwebserver.MockWebServer;
 import org.apache.commons.io.IOUtils;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.components.state.Scope;
+import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.reporting.InitializationException;
 import org.apache.nifi.util.MockFlowFile;
@@ -37,24 +55,6 @@ import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.io.IOException;
-import java.net.URI;
-import java.nio.charset.StandardCharsets;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import static org.apache.nifi.processors.hubspot.GetHubSpot.CURSOR_KEY;
-import static 
org.apache.nifi.processors.hubspot.GetHubSpot.END_INCREMENTAL_KEY;
-import static 
org.apache.nifi.processors.hubspot.GetHubSpot.START_INCREMENTAL_KEY;
-import static org.apache.nifi.processors.hubspot.HubSpotObjectType.COMPANIES;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
 class GetHubSpotTest {
 
     private static final long TEST_EPOCH_TIME = 1662665787;
@@ -70,7 +70,8 @@ class GetHubSpotTest {
         server.start();
         baseUrl = server.url(BASE_URL);
 
-        final StandardWebClientServiceProvider 
standardWebClientServiceProvider = new StandardWebClientServiceProvider();
+        final StandardWebClientServiceProvider 
standardWebClientServiceProvider =
+                new StandardWebClientServiceProvider();
         final MockGetHubSpot mockGetHubSpot = new 
MockGetHubSpot(TEST_EPOCH_TIME);
 
         runner = TestRunners.newTestRunner(mockGetHubSpot);
@@ -99,11 +100,14 @@ class GetHubSpotTest {
         runner.run(1);
 
         final List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(GetHubSpot.REL_SUCCESS);
+        final MockFlowFile flowFile = flowFiles.get(0);
+
         final String expectedFlowFileContent = 
getResourceAsString("expected_flowfile_content.json");
 
         final JsonNode expectedJsonNode = 
OBJECT_MAPPER.readTree(expectedFlowFileContent);
-        final JsonNode actualJsonNode = 
OBJECT_MAPPER.readTree(flowFiles.get(0).getContent());
+        final JsonNode actualJsonNode = 
OBJECT_MAPPER.readTree(flowFile.getContent());
 
+        flowFile.assertAttributeEquals(CoreAttributes.MIME_TYPE.key(), 
"application/json");
         assertEquals(expectedJsonNode, actualJsonNode);
     }
 
@@ -242,13 +246,15 @@ class GetHubSpotTest {
         }
 
         @Override
-        public void onPropertyModified(final PropertyDescriptor descriptor, 
final String oldValue, final String newValue) {
+        public void onPropertyModified(final PropertyDescriptor descriptor, 
final String oldValue,
+                final String newValue) {
         }
     }
 
     private String getResourceAsString(final String resourceName) throws 
IOException {
         return IOUtils.toString(
-                
Objects.requireNonNull(this.getClass().getClassLoader().getResourceAsStream(resourceName),
 resourceName),
+                
Objects.requireNonNull(this.getClass().getClassLoader().getResourceAsStream(resourceName),
+                        resourceName),
                 StandardCharsets.UTF_8
         );
     }
diff --git 
a/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
 
b/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
index 2c425ef3f3..9994ab999a 100644
--- 
a/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
+++ 
b/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/main/java/org/apache/nifi/processors/shopify/GetShopify.java
@@ -27,6 +27,7 @@ import 
org.apache.nifi.annotation.behavior.InputRequirement.Requirement;
 import org.apache.nifi.annotation.behavior.PrimaryNodeOnly;
 import org.apache.nifi.annotation.behavior.Stateful;
 import org.apache.nifi.annotation.behavior.TriggerSerially;
+import org.apache.nifi.annotation.behavior.WritesAttribute;
 import org.apache.nifi.annotation.configuration.DefaultSchedule;
 import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
@@ -36,6 +37,7 @@ import org.apache.nifi.components.state.Scope;
 import org.apache.nifi.components.state.StateMap;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.processor.AbstractProcessor;
 import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSession;
@@ -78,6 +80,7 @@ import java.util.stream.Collectors;
         " The list of the resources with the supported parameters can be found 
in the additional details.")
 @CapabilityDescription("Retrieves objects from a custom Shopify store. The 
processor yield time must be set to the account's rate limit accordingly.")
 @DefaultSchedule(strategy = SchedulingStrategy.TIMER_DRIVEN, period = "1 min")
+@WritesAttribute(attribute = "mime.type", description = "Sets the MIME type to 
application/json")
 public class GetShopify extends AbstractProcessor {
 
     static final PropertyDescriptor STORE_DOMAIN = new 
PropertyDescriptor.Builder()
@@ -322,6 +325,7 @@ public class GetShopify extends AbstractProcessor {
                         updateState(session, updatedStateMap);
                     }
                     if (objectCountHolder.get() > 0) {
+                        flowFile = session.putAttribute(flowFile, 
CoreAttributes.MIME_TYPE.key(), "application/json");
                         session.transfer(flowFile, REL_SUCCESS);
                     } else {
                         getLogger().debug("Empty response when requested 
Shopify resource: [{}]", resourceName);
diff --git 
a/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/test/java/org/apache/nifi/processors/shopify/GetShopifyIT.java
 
b/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/test/java/org/apache/nifi/processors/shopify/GetShopifyIT.java
index a964c58580..73ed2a916b 100644
--- 
a/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/test/java/org/apache/nifi/processors/shopify/GetShopifyIT.java
+++ 
b/nifi-nar-bundles/nifi-shopify-bundle/nifi-shopify-processors/src/test/java/org/apache/nifi/processors/shopify/GetShopifyIT.java
@@ -20,6 +20,7 @@ import okhttp3.HttpUrl;
 import okhttp3.mockwebserver.MockResponse;
 import okhttp3.mockwebserver.MockWebServer;
 import org.apache.commons.io.IOUtils;
+import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.processors.shopify.model.IncrementalLoadingParameter;
 import org.apache.nifi.processors.shopify.model.ResourceType;
 import org.apache.nifi.processors.shopify.rest.ShopifyRestService;
@@ -71,7 +72,6 @@ class GetShopifyIT {
 
     @Test
     void testStateIsUpdatedIfIncrementalAndNotPaging() throws 
InitializationException, IOException {
-        final String lastExecutionTimeKey = "last_execution_time";
 
         final MockResponse mockResponse = new MockResponse()
                 .setResponseCode(200)
@@ -97,6 +97,10 @@ class GetShopifyIT {
         runner.run(1);
 
         verify(customGetShopify).updateState(any(), any());
+
+        List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(GetShopify.REL_SUCCESS);
+
+        flowFiles.get(0).assertAttributeEquals(CoreAttributes.MIME_TYPE.key(), 
"application/json");
     }
 
     @Test

Reply via email to