aboutsummaryrefslogtreecommitdiffstats
path: root/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeCommandLineArguments.java
diff options
context:
space:
mode:
Diffstat (limited to 'tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeCommandLineArguments.java')
-rw-r--r--tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeCommandLineArguments.java136
1 files changed, 32 insertions, 104 deletions
diff --git a/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeCommandLineArguments.java b/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeCommandLineArguments.java
index fa25b6ddb..f36bb858b 100644
--- a/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeCommandLineArguments.java
+++ b/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeCommandLineArguments.java
@@ -26,55 +26,58 @@ import java.io.StringWriter;
import java.net.URL;
import java.util.Arrays;
import javax.ws.rs.core.Response;
+import lombok.Getter;
+import lombok.Setter;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
+import org.apache.commons.lang3.StringUtils;
import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
+import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
+import org.onap.policy.clamp.controlloop.common.startstop.CommonCommandLineArguments;
import org.onap.policy.common.utils.resources.ResourceUtils;
-
/**
* This class reads and handles command line parameters for the control loop runtime service.
- *
*/
public class ClRuntimeCommandLineArguments {
private static final String FILE_MESSAGE_PREAMBLE = " file \"";
private static final int HELP_LINE_LENGTH = 120;
private final Options options;
+ private final CommonCommandLineArguments commonCommandLineArguments;
+
+ @Getter()
+ @Setter()
private String configurationFilePath = null;
/**
* Construct the options for the control loop runtime component.
*/
public ClRuntimeCommandLineArguments() {
- //@formatter:off
options = new Options();
- options.addOption(Option.builder("h")
- .longOpt("help")
- .desc("outputs the usage of this command")
- .required(false)
- .type(Boolean.class)
- .build());
- options.addOption(Option.builder("v")
- .longOpt("version")
- .desc("outputs the version of control loop runtime")
- .required(false)
- .type(Boolean.class)
- .build());
- options.addOption(Option.builder("c")
- .longOpt("config-file")
- .desc("the full path to the configuration file to use, "
- + "the configuration file must be a Json file containing the control loop runtime parameters")
- .hasArg()
- .argName("CONFIG_FILE")
- .required(false)
- .type(String.class)
- .build());
- //@formatter:on
+ commonCommandLineArguments = new CommonCommandLineArguments(options);
+ }
+
+ /**
+ * Construct the options for the CLI editor and parse in the given arguments.
+ *
+ * @param args The command line arguments
+ */
+ public ClRuntimeCommandLineArguments(final String[] args) {
+ // Set up the options with the default constructor
+ this();
+
+ // Parse the arguments
+ try {
+ parse(args);
+ } catch (final ControlLoopException e) {
+ throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE,
+ "parse error on control loop runtime parameters", e);
+ }
}
/**
@@ -87,13 +90,12 @@ public class ClRuntimeCommandLineArguments {
public String parse(final String[] args) throws ControlLoopException {
// Clear all our arguments
setConfigurationFilePath(null);
-
CommandLine commandLine = null;
try {
commandLine = new DefaultParser().parse(options, args);
} catch (final ParseException e) {
throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
- "invalid command line arguments specified", e);
+ "invalid command line arguments specified : " + e.getMessage());
}
// Arguments left over after Commons CLI does its stuff
@@ -104,16 +106,12 @@ public class ClRuntimeCommandLineArguments {
"too many command line arguments specified : " + Arrays.toString(args));
}
- if (remainingArgs.length == 1) {
- configurationFilePath = remainingArgs[0];
- }
-
if (commandLine.hasOption('h')) {
- return help(Main.class.getName());
+ return commonCommandLineArguments.help(Main.class.getName(), options);
}
if (commandLine.hasOption('v')) {
- return version();
+ return commonCommandLineArguments.version();
}
if (commandLine.hasOption('c')) {
@@ -129,42 +127,7 @@ public class ClRuntimeCommandLineArguments {
* @throws ControlLoopException on command argument validation errors
*/
public void validate() throws ControlLoopException {
- validateReadableFile("control loop runtime configuration", configurationFilePath);
- }
-
- /**
- * Print version information for control loop runtime.
- *
- * @return the version string
- */
- public String version() {
- return ResourceUtils.getResourceAsString("version.txt");
- }
-
- /**
- * Print help information for control loop runtime.
- *
- * @param mainClassName the main class name
- * @return the help string
- */
- public String help(final String mainClassName) {
- final HelpFormatter helpFormatter = new HelpFormatter();
- final StringWriter stringWriter = new StringWriter();
- final PrintWriter printWriter = new PrintWriter(stringWriter);
-
- helpFormatter.printHelp(printWriter, HELP_LINE_LENGTH, mainClassName + " [options...]", "options", options, 0,
- 0, "");
-
- return stringWriter.toString();
- }
-
- /**
- * Gets the configuration file path.
- *
- * @return the configuration file path
- */
- public String getConfigurationFilePath() {
- return configurationFilePath;
+ commonCommandLineArguments.validate(configurationFilePath);
}
/**
@@ -185,39 +148,4 @@ public class ClRuntimeCommandLineArguments {
this.configurationFilePath = configurationFilePath;
}
-
- /**
- * Validate readable file.
- *
- * @param fileTag the file tag
- * @param fileName the file name
- * @throws ControlLoopException on the file name passed as a parameter
- */
- private void validateReadableFile(final String fileTag, final String fileName) throws ControlLoopException {
- if (fileName == null || fileName.length() == 0) {
- throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
- fileTag + " file was not specified as an argument");
- }
-
- // The file name refers to a resource on the local file system
- final URL fileUrl = ResourceUtils.getUrl4Resource(fileName);
- if (fileUrl == null) {
- throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
- fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
-
- final File theFile = new File(fileUrl.getPath());
- if (!theFile.exists()) {
- throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
- fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
- if (!theFile.isFile()) {
- throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
- fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is not a normal file");
- }
- if (!theFile.canRead()) {
- throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
- fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is ureadable");
- }
- }
}