Repository: nifi
Updated Branches:
  refs/heads/master e7a254f78 -> e12e7a55b


NIFI-1562 ExecuteStreamCommand and ExecuteProcess now support empty command 
line arguments

This closes #247

Signed-off-by: Matt Burgess <mattyb...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/e12e7a55
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/e12e7a55
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/e12e7a55

Branch: refs/heads/master
Commit: e12e7a55b75f5e358bdbcea79be9baba77532f94
Parents: e7a254f
Author: Michal Klempa <michal.kle...@gmail.com>
Authored: Thu Feb 25 09:01:12 2016 +0100
Committer: Matt Burgess <mattyb...@apache.org>
Committed: Thu Mar 17 23:15:12 2016 -0400

----------------------------------------------------------------------
 .../processors/standard/util/ArgumentUtils.java | 17 +++------
 .../processors/standard/TestExecuteProcess.java | 38 ++++++++++++++------
 2 files changed, 32 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/e12e7a55/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/ArgumentUtils.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/ArgumentUtils.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/ArgumentUtils.java
index dff6ac7..556aaf1 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/ArgumentUtils.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/ArgumentUtils.java
@@ -38,21 +38,18 @@ public class ArgumentUtils {
 
         final List<String> args = new ArrayList<>();
 
-        final String trimmed = input.trim();
         boolean inQuotes = false;
         final StringBuilder sb = new StringBuilder();
 
-        for (int i = 0; i < trimmed.length(); i++) {
-            final char c = trimmed.charAt(i);
+        for (int i = 0; i < input.length(); i++) {
+            final char c = input.charAt(i);
 
             if (DELIMITING_CHARACTERS.contains(c) || c == definedDelimiter) {
                 if (inQuotes) {
                     sb.append(c);
                 } else {
-                    final String arg = sb.toString().trim();
-                    if (!arg.isEmpty()) {
-                        args.add(arg);
-                    }
+                    final String arg = sb.toString();
+                    args.add(arg);
                     sb.setLength(0);
                 }
                 continue;
@@ -66,11 +63,7 @@ public class ArgumentUtils {
             sb.append(c);
         }
 
-        final String finalArg = sb.toString().trim();
-
-        if (!finalArg.isEmpty()) {
-            args.add(finalArg);
-        }
+        args.add(sb.toString());
 
         return args;
     }

http://git-wip-us.apache.org/repos/asf/nifi/blob/e12e7a55/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
index 22feef9..c91d24d 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteProcess.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.processors.standard;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -41,25 +42,40 @@ public class TestExecuteProcess {
 
         final List<String> zeroArgs = ArgumentUtils.splitArgs("  ", ' ');
         assertNotNull(zeroArgs);
-        assertTrue(zeroArgs.isEmpty());
+        assertEquals(3, zeroArgs.size());
+        String[] expectedArray = {"","",""};
+        assertArrayEquals(expectedArray, zeroArgs.toArray(new String[0]));
 
-        final List<String> singleArg = ArgumentUtils.splitArgs("    hello   ", 
' ');
+        final List<String> singleArg = ArgumentUtils.splitArgs("    hello   ", 
';');
         assertEquals(1, singleArg.size());
-        assertEquals("hello", singleArg.get(0));
+        assertEquals("    hello   ", singleArg.get(0));
 
-        final List<String> twoArg = ArgumentUtils.splitArgs("   hello    
good-bye   ", ' ');
+        final List<String> twoArg = ArgumentUtils.splitArgs("   hello ;   
good-bye   ", ';');
         assertEquals(2, twoArg.size());
-        assertEquals("hello", twoArg.get(0));
-        assertEquals("good-bye", twoArg.get(1));
+        assertEquals("   hello ", twoArg.get(0));
+        assertEquals("   good-bye   ", twoArg.get(1));
 
-        final List<String> singleQuotedArg = ArgumentUtils.splitArgs("  
\"hello\" ", ' ');
-        assertEquals(1, singleQuotedArg.size());
-        assertEquals("hello", singleQuotedArg.get(0));
+        final List<String> oneUnnecessarilyQuotedArg = 
ArgumentUtils.splitArgs("  \"hello\" ", ';');
+        assertEquals(1, oneUnnecessarilyQuotedArg.size());
+        assertEquals("  hello ", oneUnnecessarilyQuotedArg.get(0));
 
-        final List<String> twoQuotedArg = ArgumentUtils.splitArgs("   hello 
\"good   bye\"", ' ');
+        final List<String> twoQuotedArg = ArgumentUtils.splitArgs("\"   
hello\" \"good   bye\"", ' ');
         assertEquals(2, twoQuotedArg.size());
-        assertEquals("hello", twoQuotedArg.get(0));
+        assertEquals("   hello", twoQuotedArg.get(0));
         assertEquals("good   bye", twoQuotedArg.get(1));
+
+        final List<String> twoArgOneQuotedPerDelimiterArg = 
ArgumentUtils.splitArgs("one;two;three\";\"and\";\"half\"", ';');
+        assertEquals(3, twoArgOneQuotedPerDelimiterArg.size());
+        assertEquals("one", twoArgOneQuotedPerDelimiterArg.get(0));
+        assertEquals("two", twoArgOneQuotedPerDelimiterArg.get(1));
+        assertEquals("three;and;half", twoArgOneQuotedPerDelimiterArg.get(2));
+
+        final List<String> twoArgOneWholeQuotedArgOneEmptyArg = 
ArgumentUtils.splitArgs("one;two;\"three;and;half\";", ';');
+        assertEquals(4, twoArgOneWholeQuotedArgOneEmptyArg.size());
+        assertEquals("one", twoArgOneWholeQuotedArgOneEmptyArg.get(0));
+        assertEquals("two", twoArgOneWholeQuotedArgOneEmptyArg.get(1));
+        assertEquals("three;and;half", 
twoArgOneWholeQuotedArgOneEmptyArg.get(2));
+        assertEquals("", twoArgOneWholeQuotedArgOneEmptyArg.get(3));
     }
 
     @Ignore   // won't run under Windows

Reply via email to