summaryrefslogtreecommitdiffstats
path: root/auth/cli-editor
diff options
context:
space:
mode:
Diffstat (limited to 'auth/cli-editor')
-rw-r--r--auth/cli-editor/src/main/java/org/onap/policy/apex/auth/clieditor/CommandLineParser.java41
1 files changed, 15 insertions, 26 deletions
diff --git a/auth/cli-editor/src/main/java/org/onap/policy/apex/auth/clieditor/CommandLineParser.java b/auth/cli-editor/src/main/java/org/onap/policy/apex/auth/clieditor/CommandLineParser.java
index 05066adb4..c9316cbd2 100644
--- a/auth/cli-editor/src/main/java/org/onap/policy/apex/auth/clieditor/CommandLineParser.java
+++ b/auth/cli-editor/src/main/java/org/onap/policy/apex/auth/clieditor/CommandLineParser.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * Modifications Copyright (C) 2020 Nordix Foundation.
+ * Modifications Copyright (C) 2020-2021 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -79,7 +79,7 @@ public class CommandLineParser {
private ArrayList<String> mergeQuotes(final ArrayList<String> wordsSplitOnQuotes) {
final ArrayList<String> wordsWithQuotesMerged = new ArrayList<>();
- int loopWordIndex = 0;
+ int loopWordIndex;
for (int wordIndex = 0; wordIndex < wordsSplitOnQuotes.size(); wordIndex = loopWordIndex) {
loopWordIndex = mergeQuote(wordsSplitOnQuotes, wordsWithQuotesMerged, wordIndex);
}
@@ -140,9 +140,7 @@ public class CommandLineParser {
// Split on equals character
final ArrayList<String> splitWords = splitOnChar(word, '=');
- for (final String splitWord : splitWords) {
- wordsSplitOnEquals.add(splitWord);
- }
+ wordsSplitOnEquals.addAll(splitWords);
}
return wordsSplitOnEquals;
@@ -158,7 +156,7 @@ public class CommandLineParser {
private ArrayList<String> mergeEquals(final ArrayList<String> wordsSplitOnEquals) {
final ArrayList<String> wordsWithEqualsMerged = new ArrayList<>();
- int loopWordIndex = 0;
+ int loopWordIndex;
for (int wordIndex = 0; wordIndex < wordsSplitOnEquals.size(); wordIndex = loopWordIndex) {
loopWordIndex = wordIndex;
@@ -315,39 +313,30 @@ public class CommandLineParser {
// The first word must be alphanumeric, that is a command
if (!commandWords.get(0).matches("^[a-zA-Z0-9]*$")) {
throw new CommandLineException(
- "first command word is not alphanumeric or is not a command: " + commandWords.get(0));
+ "first command word is not alphanumeric or is not a command: " + commandWords.get(0));
}
// Now check that we have a sequence of commands at the beginning
int currentWordPos = 0;
- while (currentWordPos < commandWords.size()) {
- if (commandWords.get(currentWordPos).matches("^[a-zA-Z0-9]*$")) {
- currentWordPos++;
- } else {
+ for (; currentWordPos < commandWords.size(); currentWordPos++) {
+ if (!commandWords.get(currentWordPos).matches("^[a-zA-Z0-9]*$")) {
break;
}
}
- while (currentWordPos < commandWords.size()) {
- // From now on we should have a sequence of parameters with arguments delimited by a
- // single '=' character
- if (currentWordPos < commandWords.size() - 1 || logicBlock == null) {
- // No logic block
- if (commandWords.get(currentWordPos).matches("^[a-zA-Z0-9]+=[a-zA-Z0-9/\"].*$")) {
- currentWordPos++;
- } else {
- throw new CommandLineException(
- "command argument is not properly formed: " + commandWords.get(currentWordPos));
- }
- } else {
- // Logic block
+ for (; currentWordPos < commandWords.size(); ++currentWordPos) {
+ if (currentWordPos == commandWords.size() - 1 && logicBlock != null) {
+ // for the last command, if the command ends with = and there is a Logic block
if (commandWords.get(currentWordPos).matches("^[a-zA-Z0-9]+=")) {
commandWords.set(currentWordPos, commandWords.get(currentWordPos) + logicBlock);
- currentWordPos++;
} else {
throw new CommandLineException(
- "command argument is not properly formed: " + commandWords.get(currentWordPos));
+ "command argument is not properly formed: " + commandWords.get(currentWordPos));
}
+ } else if (!commandWords.get(currentWordPos).matches("^[a-zA-Z0-9]+=[a-zA-Z0-9/\"].*$")) {
+ // Not a last command, or the last command, but there is no logic block - wrong pattern
+ throw new CommandLineException(
+ "command argument is not properly formed: " + commandWords.get(currentWordPos));
}
}