NIFI-12561 Fixed MergeContent DELIMITER_STRATEGY_NONE Handling

This closes #8222

Signed-off-by: David Handermann <exceptionfactory@apache.org>
This commit is contained in:
EndzeitBegins 2024-01-08 23:22:49 +01:00 committed by exceptionfactory
parent f95dde1630
commit 4efabdcf51
No known key found for this signature in database
GPG Key ID: 29B6A52D2AAE8DBA
2 changed files with 32 additions and 1 deletions

View File

@ -726,8 +726,10 @@ public class MergeContent extends BinFiles {
final String delimiterStrategyValue = context.getProperty(DELIMITER_STRATEGY).getValue();
if (DELIMITER_STRATEGY_FILENAME.getValue().equals(delimiterStrategyValue)) {
return getDelimiterFileContent(context, wrappers, descriptor);
} else {
} else if (DELIMITER_STRATEGY_TEXT.getValue().equals(delimiterStrategyValue)) {
return getDelimiterTextContent(context, wrappers, descriptor);
} else {
return null;
}
}

View File

@ -590,6 +590,35 @@ public class TestMergeContent {
bundle.assertAttributeEquals(CoreAttributes.MIME_TYPE.key(), "application/plain-text");
}
@Test
void testSimpleBinaryConcatNoDelimiters() {
final TestRunner runner = TestRunners.newTestRunner(new MergeContent());
runner.setProperty(MergeContent.MAX_BIN_AGE, "1 sec");
runner.setProperty(MergeContent.MERGE_FORMAT, MergeContent.MERGE_FORMAT_CONCAT);
runner.setProperty(MergeContent.DELIMITER_STRATEGY, MergeContent.DELIMITER_STRATEGY_NONE);
// set dependent values to ensure they're not used; see NIFI-12561
runner.setProperty(MergeContent.HEADER, "aHeader");
runner.setProperty(MergeContent.DEMARCATOR, "; ");
runner.setProperty(MergeContent.FOOTER, "aFooter");
final Map<String, String> attributes = new HashMap<>();
attributes.put(CoreAttributes.MIME_TYPE.key(), "application/plain-text");
runner.enqueue("First", attributes);
runner.enqueue("Second", attributes);
runner.enqueue("Third", attributes);
runner.run(2);
runner.assertQueueEmpty();
runner.assertTransferCount(MergeContent.REL_MERGED, 1);
runner.assertTransferCount(MergeContent.REL_FAILURE, 0);
runner.assertTransferCount(MergeContent.REL_ORIGINAL, 3);
final MockFlowFile bundle = runner.getFlowFilesForRelationship(MergeContent.REL_MERGED).getFirst();
bundle.assertContentEquals("FirstSecondThird");
bundle.assertAttributeEquals(CoreAttributes.MIME_TYPE.key(), "application/plain-text");
}
@Test
public void testTextDelimitersValidation() {
final TestRunner runner = TestRunners.newTestRunner(new MergeContent());