diff options
author | arkadiusz.adamski <aadamski@est.tech> | 2021-03-24 16:24:22 +0000 |
---|---|---|
committer | Ajith Sreekumar <ajith.sreekumar@bell.ca> | 2021-03-29 17:36:22 +0000 |
commit | fd5a6566d0e12540b4ac49b24603bae26666ab94 (patch) | |
tree | 2c632dc755930aa571b62a9d9a4a6be569836f0f /auth/cli-editor | |
parent | c2f7bba321df740d134da7da1a19d7d38b867799 (diff) |
Fix sonar issues
- reduce methods Cognitive Complexity from 19 to the 15 allowed in CommandLineParser
- iteration replaced with bulk 'Collection.addAll' call
- remove redundant initializers
- replace try with try-with-resources
Issue-ID: POLICY-3093
Signed-off-by: arkadiusz.adamski <aadamski@est.tech>
Change-Id: Ia727b3145ef8f63bcfc07723191c85e1ec8c923c
Diffstat (limited to 'auth/cli-editor')
-rw-r--r-- | auth/cli-editor/src/main/java/org/onap/policy/apex/auth/clieditor/CommandLineParser.java | 41 |
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)); } } |