summaryrefslogtreecommitdiffstats
path: root/services/services-onappf
diff options
context:
space:
mode:
Diffstat (limited to 'services/services-onappf')
-rw-r--r--services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java255
-rw-r--r--services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java5
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java53
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java6
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java6
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java20
6 files changed, 88 insertions, 257 deletions
diff --git a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java
index cad2ffa72..dfc43e0ac 100644
--- a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java
+++ b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,72 +21,24 @@
package org.onap.policy.apex.services.onappf;
-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.apex.services.onappf.exception.ApexStarterException;
import org.onap.policy.apex.services.onappf.exception.ApexStarterRunTimeException;
-import org.onap.policy.common.utils.resources.ResourceUtils;
+import org.onap.policy.common.utils.cmd.CommandLineArgumentsHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
/**
* This class reads and handles command line parameters for the apex starter.
*
* @author Ajith Sreekumar (ajith.sreekumar@est.tech)
*/
-public class ApexStarterCommandLineArguments {
-
- 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 ApexStarterCommandLineArguments extends CommandLineArgumentsHandler {
+ private static final String APEX_COMPONENT = "policy apex starter";
/**
* Construct the options for the CLI editor.
*/
public ApexStarterCommandLineArguments() {
- //@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 apex starter")
- .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 apex starter parameters")
- .hasArg()
- .argName("CONFIG_FILE")
- .required(false)
- .type(String.class)
- .build());
- options.addOption(Option.builder("p")
- .longOpt("property-file")
- .desc("the full path to the topic property file to use, "
- + "the property file contains the apex starter topic properties")
- .hasArg()
- .argName("PROP_FILE")
- .required(false)
- .type(String.class)
- .build());
- //@formatter:on
+ super(ApexStarterMain.class.getName(), APEX_COMPONENT, apexPropertyFileOpt());
}
/**
@@ -95,203 +47,24 @@ public class ApexStarterCommandLineArguments {
* @param args The command line arguments
*/
public ApexStarterCommandLineArguments(final String[] args) {
- // Set up the options with the default constructor
this();
- // Parse the arguments
try {
parse(args);
- } catch (final ApexStarterException e) {
+ } catch (final CommandLineException e) {
throw new ApexStarterRunTimeException("parse error on apex starter 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 ApexStarterException on command argument errors
- */
- public String parse(final String[] args) throws ApexStarterException {
- // Clear all our arguments
- setConfigurationFilePath(null);
- setPropertyFilePath(null);
-
- CommandLine commandLine = null;
- try {
- commandLine = new DefaultParser().parse(options, args);
- } catch (final ParseException e) {
- throw new ApexStarterException("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 ApexStarterException("too many command line arguments specified : " + Arrays.toString(args));
- }
-
- if (remainingArgs.length == 1) {
- configurationFilePath = remainingArgs[0];
- }
-
- if (commandLine.hasOption('h')) {
- return help(ApexStarterMain.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 ApexStarterException on command argument validation errors
- */
- public void validate() throws ApexStarterException {
- validateReadableFile("apex starter configuration", configurationFilePath);
- }
-
- /**
- * Print version information for apex starter.
- *
- * @return the version string
- */
- public String version() {
- return ResourceUtils.getResourceAsString("src/main/resources/version.txt");
- }
-
- /**
- * Print help information for apex starter.
- *
- * @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.
+ * Build the extra option property-file for ApexStarter.
*
- * @return true, if check set configuration file path
+ * @return the property-file option
*/
- 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 ApexStarterException on the file name passed as a parameter
- */
- private void validateReadableFile(final String fileTag, final String fileName) throws ApexStarterException {
- if (fileName == null || fileName.length() == 0) {
- throw new ApexStarterException(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 ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
-
- final File theFile = new File(fileUrl.getPath());
- if (!theFile.exists()) {
- throw new ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
- if (!theFile.isFile()) {
- throw new ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is not a normal file");
- }
- if (!theFile.canRead()) {
- throw new ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is ureadable");
- }
+ private static Option apexPropertyFileOpt() {
+ return Option.builder("p").longOpt("property-file")
+ .desc("the full path to the topic property file to use, "
+ + "the property file contains the policy apex starter properties")
+ .hasArg().argName("PROP_FILE").required(false).type(String.class).build();
}
-
}
diff --git a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java
index 7daa22846..c9362bcdd 100644
--- a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java
+++ b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
@@ -28,6 +28,7 @@ import org.onap.policy.apex.services.onappf.exception.ApexStarterException;
import org.onap.policy.apex.services.onappf.exception.ApexStarterRunTimeException;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterGroup;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.resources.MessageConstants;
import org.onap.policy.common.utils.services.Registry;
import org.slf4j.Logger;
@@ -77,7 +78,7 @@ public class ApexStarterMain {
// Start the activator
activator.initialize();
- } catch (final ApexStarterException e) {
+ } catch (final ApexStarterException | CommandLineException e) {
if (null != activator) {
Registry.unregister(ApexStarterConstants.REG_APEX_STARTER_ACTIVATOR);
}
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java
new file mode 100644
index 000000000..e564d38e4
--- /dev/null
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.services.onappf;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class TestApexStarterCommandLineArguments {
+
+ /**
+ * Test method for {@link org.onap.policy.apex.services.onappf.ApexStarterCommandLineArguments
+ * #getPropertyFilePath()}.
+ * Assert custom option was added to options object from super.
+ */
+ @Test
+ public void testCommandLineHasPropertyFileOption() {
+ String[] args = {"-p", "someFile.json"};
+ ApexStarterCommandLineArguments sut = new ApexStarterCommandLineArguments(args);
+ assertEquals("someFile.json", sut.getPropertyFilePath());
+ }
+
+ /**
+ * Test method for {@link org.onap.policy.apex.services.onappf.ApexStarterCommandLineArguments#version()}.
+ * Assert method consults version.txt from Apex module.
+ */
+ @Test
+ public void testVersion() {
+ String[] args = {"-v"};
+ ApexStarterCommandLineArguments sut = new ApexStarterCommandLineArguments(args);
+ assertThat(sut.version()).startsWith("ONAP Policy Framework Apex Starter Service");
+ }
+
+}
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java
index 1d491ea03..b4308b8b9 100644
--- a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
@@ -45,6 +45,7 @@ import org.onap.policy.apex.services.onappf.handler.ApexEngineHandler;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterGroup;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterHandler;
import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.services.Registry;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
@@ -73,9 +74,10 @@ public class TestPdpStateChangeListener {
* @throws ApexStarterException if some error occurs while starting up the apex starter
* @throws FileNotFoundException if the file is missing
* @throws IOException if IO exception occurs
+ * @throws CommandLineException if any parsing of args has errors
*/
@Before
- public void setUp() throws ApexStarterException, FileNotFoundException, IOException {
+ public void setUp() throws ApexStarterException, FileNotFoundException, IOException, CommandLineException {
pdpUpdateMessageListener = new PdpUpdateListener();
pdpStateChangeListener = new PdpStateChangeListener();
Registry.newRegistry();
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java
index d9b8fc09c..28e230ebb 100644
--- a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.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. All rights reserved.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
@@ -44,6 +44,7 @@ import org.onap.policy.apex.services.onappf.handler.PdpMessageHandler;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterGroup;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterHandler;
import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.services.Registry;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
@@ -72,9 +73,10 @@ public class TestPdpUpdateListener {
* @throws ApexStarterException if some error occurs while starting up the apex starter
* @throws FileNotFoundException if the file is missing
* @throws IOException if IO exception occurs
+ * @throws CommandLineException if any parsing of args has errors
*/
@Before
- public void setUp() throws ApexStarterException, FileNotFoundException, IOException {
+ public void setUp() throws ApexStarterException, FileNotFoundException, IOException, CommandLineException {
Registry.newRegistry();
final String[] apexStarterConfigParameters = {"-c", "src/test/resources/ApexStarterConfigParametersNoop.json"};
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java
index d39cbecf0..dd424c15b 100644
--- a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java
@@ -1,7 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * Modifications Copyright (C) 2020 Nordix Foundation
+ * Copyright (C) 2019-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.
@@ -29,6 +28,7 @@ import java.io.FileNotFoundException;
import org.junit.Test;
import org.onap.policy.apex.services.onappf.ApexStarterCommandLineArguments;
import org.onap.policy.apex.services.onappf.exception.ApexStarterException;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.coder.CoderException;
/**
@@ -39,7 +39,7 @@ import org.onap.policy.common.utils.coder.CoderException;
public class TestApexStarterParameterHandler {
@Test
- public void testParameterHandlerNoParameterFile() throws ApexStarterException {
+ public void testParameterHandlerNoParameterFile() throws ApexStarterException, CommandLineException {
final String[] emptyArgumentString = { "-c", "src/test/resources/NoParametersFile.json" };
final ApexStarterCommandLineArguments emptyArguments = new ApexStarterCommandLineArguments();
@@ -51,7 +51,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testParameterHandlerEmptyParameters() throws ApexStarterException {
+ public void testParameterHandlerEmptyParameters() throws ApexStarterException, CommandLineException {
final String[] noArgumentString = { "-c", "src/test/resources/NoParameters.json" };
final ApexStarterCommandLineArguments noArguments = new ApexStarterCommandLineArguments();
@@ -62,7 +62,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testParameterHandlerInvalidParameters() throws ApexStarterException {
+ public void testParameterHandlerInvalidParameters() throws ApexStarterException, CommandLineException {
final String[] invalidArgumentString = { "-c", "src/test/resources/InvalidParameters.json" };
final ApexStarterCommandLineArguments invalidArguments = new ApexStarterCommandLineArguments();
@@ -74,7 +74,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testParameterHandlerNoParameters() throws ApexStarterException {
+ public void testParameterHandlerNoParameters() throws ApexStarterException, CommandLineException {
final String[] noArgumentString = { "-c", "src/test/resources/EmptyConfigParameters.json" };
final ApexStarterCommandLineArguments noArguments = new ApexStarterCommandLineArguments();
@@ -85,7 +85,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterParameterGroup() throws ApexStarterException {
+ public void testApexStarterParameterGroup() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters = { "-c", "src/test/resources/ApexStarterConfigParameters.json" };
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
@@ -97,7 +97,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterParameterGroup_InvalidName() throws ApexStarterException {
+ public void testApexStarterParameterGroup_InvalidName() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters =
{ "-c", "src/test/resources/ApexStarterConfigParameters_InvalidName.json" };
@@ -110,7 +110,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterVersion() throws ApexStarterException {
+ public void testApexStarterVersion() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters = { "-v" };
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
final String version = arguments.parse(apexStarterConfigParameters);
@@ -118,7 +118,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterHelp() throws ApexStarterException {
+ public void testApexStarterHelp() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters = { "-h" };
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
final String help = arguments.parse(apexStarterConfigParameters);