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

pvillard31 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 25c8f625d6f NIFI-16313 Align SegmentContent docs with filename 
attributes (#11640)
25c8f625d6f is described below

commit 25c8f625d6f31c0141557150c4e91c4e4fca4303
Author: Joe Witt <[email protected]>
AuthorDate: Tue Sep 8 01:32:00 2026 -0700

    NIFI-16313 Align SegmentContent docs with filename attributes (#11640)
---
 .../nifi/processors/standard/SegmentContent.java   |  4 +-
 .../processors/standard/TestSegmentContent.java    | 44 +++++++++++++++++++++-
 2 files changed, 43 insertions(+), 5 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/SegmentContent.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/SegmentContent.java
index 21515e730b1..930a1e13736 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/SegmentContent.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/SegmentContent.java
@@ -57,9 +57,7 @@ import java.util.UUID;
     @WritesAttribute(attribute = "fragment.index",
             description = "A one-up number that indicates the ordering of the 
segments that were created from a single parent FlowFile"),
     @WritesAttribute(attribute = "fragment.count", description = "The number 
of segments generated from the parent FlowFile"),
-    @WritesAttribute(attribute = "segment.original.filename ", description = 
"The filename of the parent FlowFile"),
-    @WritesAttribute(attribute = "segment.original.filename ",
-            description = "The filename will be updated to include the 
parent's filename, the segment index, and the segment count")})
+    @WritesAttribute(attribute = "segment.original.filename", description = 
"The filename of the parent FlowFile")})
 @SeeAlso(MergeContent.class)
 public class SegmentContent extends AbstractProcessor {
 
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestSegmentContent.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestSegmentContent.java
index 720d0c65e19..1505fbfe64f 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestSegmentContent.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestSegmentContent.java
@@ -16,17 +16,22 @@
  */
 package org.apache.nifi.processors.standard;
 
+import org.apache.nifi.annotation.behavior.WritesAttribute;
+import org.apache.nifi.annotation.behavior.WritesAttributes;
+import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.util.MockFlowFile;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 public class TestSegmentContent {
 
@@ -35,13 +40,14 @@ public class TestSegmentContent {
         final TestRunner testRunner = TestRunners.newTestRunner(new 
SegmentContent());
         testRunner.setProperty(SegmentContent.SIZE, "4 B");
 
-        testRunner.enqueue(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9});
+        testRunner.enqueue(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9}, 
Map.of(CoreAttributes.FILENAME.key(), "data.bin"));
         testRunner.run();
 
         testRunner.assertTransferCount(SegmentContent.REL_ORIGINAL, 1);
         final MockFlowFile originalFlowFile = 
testRunner.getFlowFilesForRelationship(SegmentContent.REL_ORIGINAL).get(0);
         originalFlowFile.assertAttributeExists(SegmentContent.FRAGMENT_ID);
         originalFlowFile.assertAttributeEquals(SegmentContent.FRAGMENT_COUNT, 
"3");
+        originalFlowFile.assertAttributeEquals(CoreAttributes.FILENAME.key(), 
"data.bin");
 
         final List<MockFlowFile> flowFiles = 
testRunner.getFlowFilesForRelationship(SegmentContent.REL_SEGMENTS);
         assertEquals(3, flowFiles.size());
@@ -53,6 +59,16 @@ public class TestSegmentContent {
         out1.assertContentEquals(new byte[]{1, 2, 3, 4});
         out2.assertContentEquals(new byte[]{5, 6, 7, 8});
         out3.assertContentEquals(new byte[]{9});
+
+        assertSegmentKeepsOriginalFilename(out1, "data.bin");
+        assertSegmentKeepsOriginalFilename(out2, "data.bin");
+        assertSegmentKeepsOriginalFilename(out3, "data.bin");
+        out1.assertAttributeEquals(SegmentContent.FRAGMENT_INDEX, "1");
+        out2.assertAttributeEquals(SegmentContent.FRAGMENT_INDEX, "2");
+        out3.assertAttributeEquals(SegmentContent.FRAGMENT_INDEX, "3");
+        out1.assertAttributeEquals(SegmentContent.FRAGMENT_COUNT, "3");
+        assertEquals(out1.getAttribute(SegmentContent.FRAGMENT_ID), 
out2.getAttribute(SegmentContent.FRAGMENT_ID));
+        assertEquals(out1.getAttribute(SegmentContent.FRAGMENT_ID), 
originalFlowFile.getAttribute(SegmentContent.FRAGMENT_ID));
     }
 
     @Test
@@ -60,17 +76,22 @@ public class TestSegmentContent {
         final TestRunner testRunner = TestRunners.newTestRunner(new 
SegmentContent());
         testRunner.setProperty(SegmentContent.SIZE, "4 KB");
 
-        testRunner.enqueue(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9});
+        testRunner.enqueue(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9}, 
Map.of(CoreAttributes.FILENAME.key(), "small.bin"));
         testRunner.run();
 
         testRunner.assertTransferCount(SegmentContent.REL_ORIGINAL, 1);
         final MockFlowFile originalFlowFile = 
testRunner.getFlowFilesForRelationship(SegmentContent.REL_ORIGINAL).get(0);
         originalFlowFile.assertAttributeExists(SegmentContent.FRAGMENT_ID);
         originalFlowFile.assertAttributeEquals(SegmentContent.FRAGMENT_COUNT, 
"1");
+        originalFlowFile.assertAttributeEquals(CoreAttributes.FILENAME.key(), 
"small.bin");
+        
originalFlowFile.assertAttributeEquals(SegmentContent.SEGMENT_ORIGINAL_FILENAME,
 "small.bin");
 
         testRunner.assertTransferCount(SegmentContent.REL_SEGMENTS, 1);
         final MockFlowFile out1 = 
testRunner.getFlowFilesForRelationship(SegmentContent.REL_SEGMENTS).get(0);
         out1.assertContentEquals(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9});
+        assertSegmentKeepsOriginalFilename(out1, "small.bin");
+        out1.assertAttributeEquals(SegmentContent.FRAGMENT_INDEX, "1");
+        out1.assertAttributeEquals(SegmentContent.FRAGMENT_COUNT, "1");
     }
 
     @Test
@@ -100,4 +121,23 @@ public class TestSegmentContent {
         out2.assertContentEquals(new byte[]{5, 6, 7, 8});
         out3.assertContentEquals(new byte[]{9});
     }
+
+    @Test
+    public void testWritesAttributesDocumentActualFilenameBehavior() {
+        final WritesAttribute[] documented = 
SegmentContent.class.getAnnotation(WritesAttributes.class).value();
+        final List<String> names = 
Arrays.stream(documented).map(WritesAttribute::attribute).toList();
+
+        names.forEach(name -> assertEquals(name, name.strip(), "Documented 
attribute name has surrounding whitespace: '" + name + "'"));
+        assertEquals(1, 
names.stream().filter(SegmentContent.SEGMENT_ORIGINAL_FILENAME::equals).count());
+
+        Arrays.stream(documented)
+                .map(WritesAttribute::description)
+                .forEach(description -> assertFalse(description.contains("will 
be updated"),
+                        "Documentation still claims filename is rewritten: " + 
description));
+    }
+
+    private static void assertSegmentKeepsOriginalFilename(final MockFlowFile 
segment, final String originalFilename) {
+        segment.assertAttributeEquals(CoreAttributes.FILENAME.key(), 
originalFilename);
+        
segment.assertAttributeEquals(SegmentContent.SEGMENT_ORIGINAL_FILENAME, 
originalFilename);
+    }
 }

Reply via email to