aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authoradheli.tavares <adheli.tavares@est.tech>2021-04-15 10:03:11 +0100
committeradheli.tavares <adheli.tavares@est.tech>2021-04-16 13:15:01 +0100
commitfa4fac726d6c843e038bbeefbccdc0f151a1a9e2 (patch)
tree4370e23f364a9cac69b5081a159d720268425f3f /main/src
parent76943d7778b79f2c341899839d413afb998d93be (diff)
Refactor PapCommandLineArguments class
CMD Args class to extend functionality from Common CMD class. Issue-ID: POLICY-3129 Change-Id: Ia00cf7b0277e779811eaac556eebe11da95ed380 Signed-off-by: adheli.tavares <adheli.tavares@est.tech>
Diffstat (limited to 'main/src')
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/startstop/PapCommandLineArguments.java260
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java2
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java23
3 files changed, 29 insertions, 256 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/startstop/PapCommandLineArguments.java b/main/src/main/java/org/onap/policy/pap/main/startstop/PapCommandLineArguments.java
index 78c2cc70..6020c847 100644
--- a/main/src/main/java/org/onap/policy/pap/main/startstop/PapCommandLineArguments.java
+++ b/main/src/main/java/org/onap/policy/pap/main/startstop/PapCommandLineArguments.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,72 +21,36 @@
package org.onap.policy.pap.main.startstop;
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Arrays;
-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.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.pap.main.PolicyPapException;
+import org.onap.policy.common.utils.cmd.CommandLineArgumentsHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
+import org.onap.policy.common.utils.resources.MessageConstants;
import org.onap.policy.pap.main.PolicyPapRuntimeException;
-
/**
* This class reads and handles command line parameters for the policy pap service.
*
* @author Ram Krishna Verma (ram.krishna.verma@est.tech)
*/
-public class PapCommandLineArguments {
- private static final String FILE_MESSAGE_PREAMBLE = " file \"";
- private static final int HELP_LINE_LENGTH = 120;
-
- private final Options options;
- private String configurationFilePath = null;
- private String propertyFilePath = null;
+public class PapCommandLineArguments extends CommandLineArgumentsHandler {
/**
* Construct the options for the CLI editor.
*/
public PapCommandLineArguments() {
- //@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 policy pap")
- .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 policy pap parameters")
- .hasArg()
- .argName("CONFIG_FILE")
- .required(false)
- .type(String.class)
- .build());
- options.addOption(Option.builder("p")
- .longOpt("property-file")
+ super(Main.class.getName(), MessageConstants.POLICY_PAP, customOption());
+ }
+
+ /**
+ * Builds the extra property-file option to be declared on constructor.
+ *
+ * @return property-file option
+ */
+ private static Option customOption() {
+ return Option.builder("p").longOpt("property-file")
.desc("the full path to the topic property file to use, "
+ "the property file contains the policy pap topic properties")
- .hasArg()
- .argName("PROP_FILE")
- .required(false)
- .type(String.class)
- .build());
- //@formatter:on
+ .hasArg().argName("PROP_FILE").required(false).type(String.class).build();
}
/**
@@ -95,202 +59,12 @@ public class PapCommandLineArguments {
* @param args The command line arguments
*/
public PapCommandLineArguments(final String[] args) {
- // Set up the options with the default constructor
this();
- // Parse the arguments
try {
parse(args);
- } catch (final PolicyPapException e) {
+ } catch (final CommandLineException e) {
throw new PolicyPapRuntimeException("parse error on policy pap parameters", e);
}
}
-
- /**
- * Parse the command line options.
- *
- * @param args The command line arguments
- * @return a string with a message for help and version, or null if there is no message
- * @throws PolicyPapException on command argument errors
- */
- public String parse(final String[] args) throws PolicyPapException {
- // Clear all our arguments
- setConfigurationFilePath(null);
- setPropertyFilePath(null);
-
- CommandLine commandLine = null;
- try {
- commandLine = new DefaultParser().parse(options, args);
- } catch (final ParseException e) {
- throw new PolicyPapException("invalid command line arguments specified : " + e.getMessage());
- }
-
- // Arguments left over after Commons CLI does its stuff
- final String[] remainingArgs = commandLine.getArgs();
-
- if (remainingArgs.length > 0 && commandLine.hasOption('c') || remainingArgs.length > 0) {
- throw new PolicyPapException("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());
- }
-
- if (commandLine.hasOption('v')) {
- return version();
- }
-
- if (commandLine.hasOption('c')) {
- setConfigurationFilePath(commandLine.getOptionValue('c'));
- }
-
- if (commandLine.hasOption('p')) {
- setPropertyFilePath(commandLine.getOptionValue('p'));
- }
-
- return null;
- }
-
- /**
- * Validate the command line options.
- *
- * @throws PolicyPapException on command argument validation errors
- */
- public void validate() throws PolicyPapException {
- validateReadableFile("policy pap configuration", configurationFilePath);
- }
-
- /**
- * Print version information for policy pap.
- *
- * @return the version string
- */
- public String version() {
- return ResourceUtils.getResourceAsString("version.txt");
- }
-
- /**
- * Print help information for policy pap.
- *
- * @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;
- }
-
- /**
- * Gets the full expanded configuration file path.
- *
- * @return the configuration file path
- */
- public String getFullConfigurationFilePath() {
- return ResourceUtils.getFilePath4Resource(getConfigurationFilePath());
- }
-
- /**
- * Sets the configuration file path.
- *
- * @param configurationFilePath the configuration file path
- */
- public void setConfigurationFilePath(final String configurationFilePath) {
- this.configurationFilePath = configurationFilePath;
-
- }
-
- /**
- * Check set configuration file path.
- *
- * @return true, if check set configuration file path
- */
- public boolean checkSetConfigurationFilePath() {
- return configurationFilePath != null && configurationFilePath.length() > 0;
- }
-
- /**
- * Gets the property file path.
- *
- * @return the property file path
- */
- public String getPropertyFilePath() {
- return propertyFilePath;
- }
-
- /**
- * Gets the full expanded property file path.
- *
- * @return the property file path
- */
- public String getFullPropertyFilePath() {
- return ResourceUtils.getFilePath4Resource(getPropertyFilePath());
- }
-
- /**
- * Sets the property file path.
- *
- * @param propertyFilePath the property file path
- */
- public void setPropertyFilePath(final String propertyFilePath) {
- this.propertyFilePath = propertyFilePath;
-
- }
-
- /**
- * Check set property file path.
- *
- * @return true, if check set property file path
- */
- public boolean checkSetPropertyFilePath() {
- return propertyFilePath != null && propertyFilePath.length() > 0;
- }
-
- /**
- * Validate readable file.
- *
- * @param fileTag the file tag
- * @param fileName the file name
- * @throws PolicyPapException on the file name passed as a parameter
- */
- private void validateReadableFile(final String fileTag, final String fileName) throws PolicyPapException {
- if (fileName == null || fileName.length() == 0) {
- throw new PolicyPapException(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 PolicyPapException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
-
- final File theFile = new File(fileUrl.getPath());
- if (!theFile.exists()) {
- throw new PolicyPapException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
- if (!theFile.isFile()) {
- throw new PolicyPapException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is not a normal file");
- }
- if (!theFile.canRead()) {
- throw new PolicyPapException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is ureadable");
- }
- }
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java
index d2dc1955..4a386c9c 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java
@@ -26,11 +26,9 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Test;
diff --git a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java
index b817677b..1761a7d1 100644
--- a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java
+++ b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPapParameterHandler.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property.
- * 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.
@@ -28,6 +28,7 @@ import static org.junit.Assert.assertTrue;
import java.io.FileNotFoundException;
import org.junit.Test;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.pap.main.PolicyPapException;
import org.onap.policy.pap.main.startstop.PapCommandLineArguments;
@@ -40,7 +41,7 @@ import org.onap.policy.pap.main.startstop.PapCommandLineArguments;
public class TestPapParameterHandler {
@Test
- public void testParameterHandlerNoParameterFile() throws PolicyPapException {
+ public void testParameterHandlerNoParameterFile() throws PolicyPapException, CommandLineException {
final String[] noArgumentString = { "-c", "parameters/NoParameterFile.json" };
final PapCommandLineArguments noArguments = new PapCommandLineArguments();
@@ -52,7 +53,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testParameterHandlerEmptyParameters() throws PolicyPapException {
+ public void testParameterHandlerEmptyParameters() throws PolicyPapException, CommandLineException {
final String[] emptyArgumentString = { "-c", "parameters/EmptyParameters.json" };
final PapCommandLineArguments emptyArguments = new PapCommandLineArguments();
@@ -63,7 +64,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testParameterHandlerInvalidParameters() throws PolicyPapException {
+ public void testParameterHandlerInvalidParameters() throws PolicyPapException, CommandLineException {
final String[] invalidArgumentString = { "-c", "parameters/InvalidParameters.json" };
final PapCommandLineArguments invalidArguments = new PapCommandLineArguments();
@@ -75,7 +76,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testParameterHandlerNoParameters() throws PolicyPapException {
+ public void testParameterHandlerNoParameters() throws PolicyPapException, CommandLineException {
final String[] noArgumentString = { "-c", "parameters/NoParameters.json" };
final PapCommandLineArguments noArguments = new PapCommandLineArguments();
@@ -85,7 +86,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testParameterHandlerMinumumParameters() throws PolicyPapException {
+ public void testParameterHandlerMinumumParameters() throws PolicyPapException, CommandLineException {
final String[] minArgumentString = { "-c", "parameters/MinimumParameters.json" };
final PapCommandLineArguments minArguments = new PapCommandLineArguments();
@@ -96,7 +97,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testPapParameterGroup() throws PolicyPapException {
+ public void testPapParameterGroup() throws PolicyPapException, CommandLineException {
final String[] papConfigParameters = { "-c", "parameters/PapConfigParameters.json" };
final PapCommandLineArguments arguments = new PapCommandLineArguments();
@@ -108,7 +109,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testPapParameterGroup_InvalidName() throws PolicyPapException {
+ public void testPapParameterGroup_InvalidName() throws PolicyPapException, CommandLineException {
final String[] papConfigParameters = { "-c", "parameters/PapConfigParameters_InvalidName.json" };
final PapCommandLineArguments arguments = new PapCommandLineArguments();
@@ -120,7 +121,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testPapVersion() throws PolicyPapException {
+ public void testPapVersion() throws PolicyPapException, CommandLineException {
final String[] papConfigParameters = { "-v" };
final PapCommandLineArguments arguments = new PapCommandLineArguments();
final String version = arguments.parse(papConfigParameters);
@@ -128,7 +129,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testPapHelp() throws PolicyPapException {
+ public void testPapHelp() throws PolicyPapException, CommandLineException {
final String[] papConfigParameters = { "-h" };
final PapCommandLineArguments arguments = new PapCommandLineArguments();
final String help = arguments.parse(papConfigParameters);
@@ -136,7 +137,7 @@ public class TestPapParameterHandler {
}
@Test
- public void testPapInvalidOption() throws PolicyPapException {
+ public void testPapInvalidOption() throws PolicyPapException, CommandLineException {
final String[] papConfigParameters = { "-d" };
final PapCommandLineArguments arguments = new PapCommandLineArguments();
assertThatThrownBy(() -> arguments.parse(papConfigParameters))