You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2016/03/18 04:15:43 UTC
nifi git commit: NIFI-1562 ExecuteStreamCommand and ExecuteProcess
now support empty command line arguments
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 <ma...@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 <mi...@gmail.com>
Authored: Thu Feb 25 09:01:12 2016 +0100
Committer: Matt Burgess <ma...@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