diff options
-rw-r--r-- | services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java index eee77c9ea..89c47d6bc 100644 --- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java +++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java @@ -1,19 +1,20 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * Modification Copyright (C) 2020 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========================================================= */ @@ -37,16 +38,19 @@ import org.onap.policy.common.utils.resources.ResourceUtils; import org.onap.policy.common.utils.validation.ParameterValidationUtils; /** - * This class reads and handles command line parameters for the Apex main program. + * This class reads and handles command line parameters for the Apex main + * program. * * @author Liam Fallon (liam.fallon@ericsson.com) */ public class ApexCommandLineArguments { - // A system property holding the root directory for relative paths in the configuration file - public static final String RELATIVE_FILE_ROOT = "APEX_RELATIVE_FILE_ROOT"; + // A system property holding the root directory for relative paths in the + // configuration file + public static final String APEX_RELATIVE_FILE_ROOT = "APEX_RELATIVE_FILE_ROOT"; // Recurring string constants private static final String FILE_PREAMBLE = " file \""; + private static final String RELATIVE_FILE_ROOT = "relative file root \""; private static final int HELP_LINE_LENGTH = 120; // Apache Commons CLI options @@ -90,7 +94,7 @@ public class ApexCommandLineArguments { .desc("the root file path for relative file paths specified in the Apex configuration file, " + "defaults to the current directory from where Apex is executed") .hasArg() - .argName(RELATIVE_FILE_ROOT) + .argName(APEX_RELATIVE_FILE_ROOT) .required(false) .type(String.class) .build()); @@ -123,7 +127,8 @@ public class ApexCommandLineArguments { * 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 + * @return a string with a message for help and version, or null if there is no + * message * @throws ApexException on command argument errors */ public String parse(final String[] args) throws ApexException { @@ -191,7 +196,7 @@ public class ApexCommandLineArguments { /** * Print version information for Apex. - * + * * @return the version string */ public String version() { @@ -209,7 +214,7 @@ public class ApexCommandLineArguments { final PrintWriter stringPrintWriter = new PrintWriter(stringWriter); new HelpFormatter().printHelp(stringPrintWriter, HELP_LINE_LENGTH, mainClassName + " [options...]", "options", - options, 0, 0, ""); + options, 0, 0, ""); return stringWriter.toString(); } @@ -287,7 +292,7 @@ public class ApexCommandLineArguments { String relativeFileRootValue = relativeFileRoot; if (!ParameterValidationUtils.validateStringParameter(relativeFileRoot)) { - relativeFileRootValue = System.getProperty(RELATIVE_FILE_ROOT); + relativeFileRootValue = System.getProperty(APEX_RELATIVE_FILE_ROOT); } if (!ParameterValidationUtils.validateStringParameter(relativeFileRootValue)) { @@ -297,7 +302,7 @@ public class ApexCommandLineArguments { } this.relativeFileRoot = relativeFileRootValue; - System.setProperty(RELATIVE_FILE_ROOT, relativeFileRootValue); + System.setProperty(APEX_RELATIVE_FILE_ROOT, relativeFileRootValue); } /** @@ -312,7 +317,7 @@ public class ApexCommandLineArguments { /** * Validate readable file. * - * @param fileTag the file tag + * @param fileTag the file tag * @param fileName the file name * @throws ApexException the apex exception */ @@ -321,7 +326,8 @@ public class ApexCommandLineArguments { throw new ApexException(fileTag + " file was not specified as an argument"); } - // The file name can refer to a resource on the local file system or on the class path + // The file name can refer to a resource on the local file system or on the + // class path final URL fileUrl = ResourceUtils.getUrl4Resource(fileName); if (fileUrl == null) { throw new ApexException(fileTag + FILE_PREAMBLE + fileName + "\" does not exist"); @@ -345,13 +351,15 @@ public class ApexCommandLineArguments { private void validateRelativeFileRoot() throws ApexException { File relativeFileRootPath = new File(relativeFileRoot); if (!relativeFileRootPath.isDirectory()) { - throw new ApexException( - "relative file root \"" + relativeFileRoot + "\" does not exist or is not a directory"); + throw new ApexException(RELATIVE_FILE_ROOT + relativeFileRoot + "\" does not exist or is not a directory"); + } + + if (!relativeFileRootPath.canRead()) { + throw new ApexException(RELATIVE_FILE_ROOT + relativeFileRoot + "\" is not a readable directory"); } - if (!relativeFileRootPath.canWrite()) { - throw new ApexException( - "relative file root \"" + relativeFileRoot + "\" does not exist or is not a directory"); + if (!relativeFileRootPath.canExecute()) { + throw new ApexException(RELATIVE_FILE_ROOT + relativeFileRoot + "\" is not an executable directory"); } } |