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");

Reply via email to