Repository: nifi Updated Branches: refs/heads/master 05ea76dd6 -> 892c74dff
NIFI-2819: Added support for Expresssion Language in ModifyBytes This closes #1130 Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/892c74df Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/892c74df Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/892c74df Branch: refs/heads/master Commit: 892c74dff26c1b56860131489f6ee56018631c9d Parents: 05ea76d Author: Matt Burgess <[email protected]> Authored: Thu Oct 13 09:50:56 2016 -0400 Committer: Oleg Zhurakousky <[email protected]> Committed: Wed Nov 2 13:02:25 2016 -0400 ---------------------------------------------------------------------- .../nifi/processors/standard/ModifyBytes.java | 6 ++-- .../processors/standard/TestModifyBytes.java | 35 ++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/892c74df/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java index 444a172..6d8bee3 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ModifyBytes.java @@ -66,6 +66,7 @@ public class ModifyBytes extends AbstractProcessor { .required(true) .addValidator(StandardValidators.DATA_SIZE_VALIDATOR) .defaultValue("0 B") + .expressionLanguageSupported(true) .build(); public static final PropertyDescriptor END_OFFSET = new PropertyDescriptor.Builder() .name("End Offset") @@ -73,6 +74,7 @@ public class ModifyBytes extends AbstractProcessor { .required(true) .addValidator(StandardValidators.DATA_SIZE_VALIDATOR) .defaultValue("0 B") + .expressionLanguageSupported(true) .build(); public static final PropertyDescriptor REMOVE_ALL = new PropertyDescriptor.Builder() .name("Remove All Content") @@ -114,8 +116,8 @@ public class ModifyBytes extends AbstractProcessor { final ComponentLog logger = getLogger(); - final long startOffset = context.getProperty(START_OFFSET).asDataSize(DataUnit.B).longValue(); - final long endOffset = context.getProperty(END_OFFSET).asDataSize(DataUnit.B).longValue(); + final long startOffset = context.getProperty(START_OFFSET).evaluateAttributeExpressions(ff).asDataSize(DataUnit.B).longValue(); + final long endOffset = context.getProperty(END_OFFSET).evaluateAttributeExpressions(ff).asDataSize(DataUnit.B).longValue(); final boolean removeAll = context.getProperty(REMOVE_ALL).asBoolean(); final long newFileSize = removeAll ? 0L : ff.getSize() - startOffset - endOffset; http://git-wip-us.apache.org/repos/asf/nifi/blob/892c74df/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestModifyBytes.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestModifyBytes.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestModifyBytes.java index 7243be8..91f0853 100644 --- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestModifyBytes.java +++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestModifyBytes.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.HashMap; import org.apache.nifi.util.MockFlowFile; import org.apache.nifi.util.TestRunner; @@ -95,6 +96,24 @@ public class TestModifyBytes { } @Test + public void testRemoveHeaderEL() throws IOException { + final TestRunner runner = TestRunners.newTestRunner(new ModifyBytes()); + runner.setProperty(ModifyBytes.START_OFFSET, "${numBytes}"); //REMOVE - '<<<HEADER>>>' + runner.setProperty(ModifyBytes.END_OFFSET, "0 MB"); + + runner.enqueue(testFilePath, new HashMap<String, String>() {{ + put("numBytes", "12 B"); + }}); + runner.run(); + + runner.assertAllFlowFilesTransferred(ModifyBytes.REL_SUCCESS, 1); + final MockFlowFile out = runner.getFlowFilesForRelationship(ModifyBytes.REL_SUCCESS).get(0); + final String outContent = new String(out.toByteArray(), StandardCharsets.UTF_8); + System.out.println(outContent); + out.assertContentEquals(noHeaderFile); + } + + @Test public void testKeepFooter() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ModifyBytes()); runner.setProperty(ModifyBytes.START_OFFSET, "181 B"); @@ -125,6 +144,22 @@ public class TestModifyBytes { } @Test + public void testKeepHeaderEL() throws IOException { + final TestRunner runner = TestRunners.newTestRunner(new ModifyBytes()); + runner.setProperty(ModifyBytes.START_OFFSET, "0 B"); + runner.setProperty(ModifyBytes.END_OFFSET, "${numBytes}"); + + runner.enqueue(testFilePath, new HashMap<String, String>() {{ + put("numBytes", "181 B"); + }}); + runner.run(); + + runner.assertAllFlowFilesTransferred(ModifyBytes.REL_SUCCESS, 1); + final MockFlowFile out = runner.getFlowFilesForRelationship(ModifyBytes.REL_SUCCESS).get(0); + out.assertContentEquals("<<<HEADER>>>".getBytes("UTF-8")); + } + + @Test public void testRemoveFooter() throws IOException { final TestRunner runner = TestRunners.newTestRunner(new ModifyBytes()); runner.setProperty(ModifyBytes.START_OFFSET, "0 B");
