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

pvillard 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 4ffe5aeec3 FLOW-14362: Adding not.found relationship to 
ListBoxFileInfo processor
4ffe5aeec3 is described below

commit 4ffe5aeec3bfede6a48821cba9ec6d6664ec17a1
Author: Noah Cover <[email protected]>
AuthorDate: Thu Mar 13 10:09:50 2025 -0700

    FLOW-14362: Adding not.found relationship to ListBoxFileInfo processor
    
    Signed-off-by: Pierre Villard <[email protected]>
    
    This closes #9802.
---
 .../nifi/processors/box/ListBoxFileInfo.java       | 19 +++++++++---
 .../nifi/processors/box/ListBoxFileInfoTest.java   | 36 ++++++++++++++++++++--
 2 files changed, 48 insertions(+), 7 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/main/java/org/apache/nifi/processors/box/ListBoxFileInfo.java
 
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/main/java/org/apache/nifi/processors/box/ListBoxFileInfo.java
index bd2b6a2051..1e61dedd17 100644
--- 
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/main/java/org/apache/nifi/processors/box/ListBoxFileInfo.java
+++ 
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/main/java/org/apache/nifi/processors/box/ListBoxFileInfo.java
@@ -123,9 +123,15 @@ public class ListBoxFileInfo extends AbstractProcessor {
             .description("A FlowFile will be routed here if there is an error 
fetching file metadata from the folder.")
             .build();
 
+    public static final Relationship REL_NOT_FOUND = new Relationship.Builder()
+            .name("not.found")
+            .description("FlowFiles for which the specified Box folder was not 
found will be routed to this relationship.")
+            .build();
+
     public static final Set<Relationship> RELATIONSHIPS = Set.of(
             REL_SUCCESS,
-            REL_FAILURE
+            REL_FAILURE,
+            REL_NOT_FOUND
     );
 
     private static final List<PropertyDescriptor> PROPERTY_DESCRIPTORS = 
List.of(
@@ -233,11 +239,16 @@ public class ListBoxFileInfo extends AbstractProcessor {
             }
 
         } catch (final BoxAPIResponseException e) {
-            getLogger().error("Couldn't fetch files from folder with id [{}]", 
folderId, e);
             flowFile = session.putAttribute(flowFile, ERROR_CODE, 
valueOf(e.getResponseCode()));
             flowFile = session.putAttribute(flowFile, ERROR_MESSAGE, 
e.getMessage());
-            flowFile = session.penalize(flowFile);
-            session.transfer(flowFile, REL_FAILURE);
+            if (e.getResponseCode() == 404) {
+                getLogger().warn("Box folder with ID {} was not found.", 
folderId);
+                session.transfer(flowFile, REL_NOT_FOUND);
+            } else {
+                getLogger().error("Couldn't fetch files from folder with id 
[{}]", folderId, e);
+                flowFile = session.penalize(flowFile);
+                session.transfer(flowFile, REL_FAILURE);
+            }
         }
     }
 
diff --git 
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/test/java/org/apache/nifi/processors/box/ListBoxFileInfoTest.java
 
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/test/java/org/apache/nifi/processors/box/ListBoxFileInfoTest.java
index 25e4d747b9..0059c38211 100644
--- 
a/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/test/java/org/apache/nifi/processors/box/ListBoxFileInfoTest.java
+++ 
b/nifi-extension-bundles/nifi-box-bundle/nifi-box-processors/src/test/java/org/apache/nifi/processors/box/ListBoxFileInfoTest.java
@@ -146,7 +146,7 @@ public class ListBoxFileInfoTest extends 
AbstractBoxFileTest implements FileList
     void testBoxAPIResponseException() {
         testRunner.setProperty(ListBoxFileInfo.FOLDER_ID, TEST_FOLDER_ID);
 
-        final BoxAPIResponseException apiException = new 
BoxAPIResponseException("API Error", 404, "Not Found", null);
+        final BoxAPIResponseException apiException = new 
BoxAPIResponseException("API Error", 500, "Internal Server Error", null);
         doThrow(apiException).when(mockBoxFolder).getChildren(
                 "id",
                 "name",
@@ -161,16 +161,46 @@ public class ListBoxFileInfoTest extends 
AbstractBoxFileTest implements FileList
         final MockFlowFile inputFlowFile = new MockFlowFile(0);
         testRunner.enqueue(inputFlowFile);
         testRunner.run();
-
         testRunner.assertTransferCount(ListBoxFileInfo.REL_FAILURE, 1);
         testRunner.assertTransferCount(ListBoxFileInfo.REL_SUCCESS, 0);
+        testRunner.assertTransferCount(ListBoxFileInfo.REL_NOT_FOUND, 0);
 
         final List<MockFlowFile> failureFiles = 
testRunner.getFlowFilesForRelationship(ListBoxFileInfo.REL_FAILURE);
         final MockFlowFile failureFlowFile = failureFiles.getFirst();
-        failureFlowFile.assertAttributeEquals(BoxFileAttributes.ERROR_CODE, 
"404");
+        failureFlowFile.assertAttributeEquals(BoxFileAttributes.ERROR_CODE, 
"500");
         failureFlowFile.assertAttributeExists(ERROR_MESSAGE);
     }
 
+    @Test
+    void testBoxAPIResponseExceptionNotFound() {
+        testRunner.setProperty(ListBoxFileInfo.FOLDER_ID, TEST_FOLDER_ID);
+
+        final BoxAPIResponseException apiException = new 
BoxAPIResponseException("API Error", 404, "Not Found", null);
+        doThrow(apiException).when(mockBoxFolder).getChildren(
+                "id",
+                "name",
+                "item_status",
+                "size",
+                "created_at",
+                "modified_at",
+                "content_created_at",
+                "content_modified_at",
+                "path_collection");
+
+        final MockFlowFile inputFlowFile = new MockFlowFile(0);
+        testRunner.enqueue(inputFlowFile);
+        testRunner.run();
+
+        testRunner.assertTransferCount(ListBoxFileInfo.REL_FAILURE, 0);
+        testRunner.assertTransferCount(ListBoxFileInfo.REL_SUCCESS, 0);
+        testRunner.assertTransferCount(ListBoxFileInfo.REL_NOT_FOUND, 1);
+
+        final List<MockFlowFile> notFoundFiles = 
testRunner.getFlowFilesForRelationship(ListBoxFileInfo.REL_NOT_FOUND);
+        final MockFlowFile notFoundFlowFile = notFoundFiles.getFirst();
+        notFoundFlowFile.assertAttributeEquals(BoxFileAttributes.ERROR_CODE, 
"404");
+        notFoundFlowFile.assertAttributeExists(ERROR_MESSAGE);
+    }
+
     private void mockMultipleFilesResponse() {
         List<String> pathParts = Arrays.asList("path", "to", "file");
 

Reply via email to