From 8aa599260569b9f063fb85680c95116b00609c31 Mon Sep 17 00:00:00 2001 From: Kanagaraj Manickam k00365106 Date: Sat, 14 Oct 2017 01:04:20 +0530 Subject: Make schema-validate independent of schema profile Now schema-validate is able to validate schema of any given type supported. Issue-Id: CLI-66 Change-Id: I47ac5e81e9b12dd575e0a4cdc7e8e8bad0f87474 Signed-off-by: Kanagaraj Manickam k00365106 --- .../src/main/java/org/onap/cli/fw/OnapCommand.java | 23 ++++--- .../java/org/onap/cli/fw/OnapCommandRegistrar.java | 45 ++++++++------ .../java/org/onap/cli/fw/cmd/OnapHttpCommand.java | 4 +- .../onap/cli/fw/cmd/OnapSchemaRefreshCommand.java | 16 ++--- .../onap/cli/fw/cmd/OnapSchemaValidateCommand.java | 41 +++++++----- .../main/java/org/onap/cli/fw/conf/Constants.java | 1 + .../org/onap/cli/fw/conf/OnapCommandConfg.java | 1 - .../fw/error/OnapCommandExecutorInfoMissing.java | 30 --------- .../error/OnapCommandParameterOptionConflict.java | 4 +- .../cli/fw/error/OnapUnsupportedSchemaProfile.java | 2 +- .../java/org/onap/cli/fw/info/OnapCommandInfo.java | 12 ++++ .../onap/cli/fw/input/OnapCommandParameter.java | 12 ++-- .../org/onap/cli/fw/output/OnapCommandResult.java | 10 +-- .../cli/fw/output/OnapCommandResultAttribute.java | 4 +- .../onap/cli/fw/output/print/OnapCommandPrint.java | 10 +-- .../cli/fw/utils/OnapCommandDiscoveryUtils.java | 32 ++++++++-- .../cli/fw/utils/OnapCommandSchemaLoaderUtils.java | 72 +++++++++++++++++++--- .../java/org/onap/cli/fw/utils/SchemaInfo.java | 13 ++++ .../main/resources/default_input_parameters.yaml | 38 ------------ .../resources/default_input_parameters_http.yaml | 30 --------- .../resources/open-cli-schema/basic-login.yaml | 19 ------ .../resources/open-cli-schema/basic-logout.yaml | 19 ------ .../main/resources/open-cli-schema/catalog.yaml | 44 ------------- .../open-cli-schema/default_input_parameters.yaml | 44 +++++++++++++ .../open-cli-schema/http/basic-login.yaml | 19 ++++++ .../open-cli-schema/http/basic-logout.yaml | 19 ++++++ .../resources/open-cli-schema/http/catalog.yaml | 44 +++++++++++++ .../http/default_input_parameters_http.yaml | 36 +++++++++++ .../resources/open-cli-schema/schema-validate.yaml | 7 +++ framework/src/main/resources/open-cli.properties | 2 +- framework/src/main/resources/version.info | 4 +- .../org/onap/cli/fw/OnapCommandRegistrarTest.java | 2 - .../cli/fw/cmd/OnapSchemaRefreshCommandTest.java | 18 +++--- .../cli/fw/cmd/OnapSchemaValidateCommandTest.java | 43 ++++--------- .../org/onap/cli/fw/conf/OnapCommandConfgTest.java | 6 +- .../onap/cli/fw/error/OnapCommandErrorTest.java | 10 +-- .../org/onap/cli/fw/http/HttpInputOutputTest.java | 4 +- .../onap/cli/fw/http/OnapHttpConnectionTest.java | 14 ++--- .../cli/fw/input/OnapCommandParameterTest.java | 8 +-- .../OnapCommandResultAttributeScopeTest.java | 4 +- .../onap/cli/fw/output/OnapCommandResultTest.java | 8 +-- .../cli/fw/output/print/OnapCommandPrintTest.java | 8 +-- .../cli/fw/output/print/TableGeneratorTest.java | 6 +- .../org/onap/cli/fw/schema/ValidateSchemaTest.java | 8 +-- framework/src/test/resources/open-cli.properties | 39 ++++++++++++ 45 files changed, 485 insertions(+), 350 deletions(-) delete mode 100644 framework/src/main/java/org/onap/cli/fw/error/OnapCommandExecutorInfoMissing.java delete mode 100644 framework/src/main/resources/default_input_parameters.yaml delete mode 100644 framework/src/main/resources/default_input_parameters_http.yaml delete mode 100644 framework/src/main/resources/open-cli-schema/basic-login.yaml delete mode 100644 framework/src/main/resources/open-cli-schema/basic-logout.yaml delete mode 100644 framework/src/main/resources/open-cli-schema/catalog.yaml create mode 100644 framework/src/main/resources/open-cli-schema/default_input_parameters.yaml create mode 100644 framework/src/main/resources/open-cli-schema/http/basic-login.yaml create mode 100644 framework/src/main/resources/open-cli-schema/http/basic-logout.yaml create mode 100644 framework/src/main/resources/open-cli-schema/http/catalog.yaml create mode 100644 framework/src/main/resources/open-cli-schema/http/default_input_parameters_http.yaml create mode 100644 framework/src/test/resources/open-cli.properties (limited to 'framework') diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java index fe6adf25..d931aaf3 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java @@ -135,7 +135,7 @@ public abstract class OnapCommand { } /** - * Initialize this command from command schema. + * Initialize this command from command schema and assumes schema is already validated. * * @throws OnapCommandRegistrationFailed * Command Registration Exception @@ -155,18 +155,27 @@ public abstract class OnapCommand { * ParameterNameConflict Exception * @throws OnapCommandInvalidSchemaVersion * InvalidSchemaVersion Exception + * + * @return List of error strings */ - public void initializeSchema(String schema) throws OnapCommandException { + public List initializeSchema(String schema) throws OnapCommandException { + return this.initializeSchema(schema, false); + } + + public List initializeSchema(String schema, boolean validate) throws OnapCommandException { this.setSchemaName(schema); - OnapCommandSchemaLoaderUtils.loadSchema(this, schema, true, false); - this.initializeProfileSchema(); + + List errors = OnapCommandSchemaLoaderUtils.loadSchema(this, schema, true, validate); + errors.addAll(this.initializeProfileSchema()); this.isInitialzied = true; - } + return errors; + } /** - * Any additional profile based such as http/swagger schema could be initialized. + * Any additional profile based such as http schema could be initialized. */ - protected void initializeProfileSchema() throws OnapCommandException { + protected List initializeProfileSchema() throws OnapCommandException { + return new ArrayList<>(); } /* diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java b/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java index b44279fb..9d1d9d07 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java @@ -17,8 +17,6 @@ package org.onap.cli.fw; import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -33,7 +31,6 @@ import org.onap.cli.fw.error.OnapCommandHelpFailed; import org.onap.cli.fw.error.OnapCommandInvalidRegistration; import org.onap.cli.fw.error.OnapCommandNotFound; import org.onap.cli.fw.error.OnapCommandProductVersionInvalid; -import org.onap.cli.fw.error.OnapCommandRegistrationFailed; import org.onap.cli.fw.error.OnapCommandRegistrationProductInfoMissing; import org.onap.cli.fw.error.OnapUnsupportedSchemaProfile; import org.onap.cli.fw.input.cache.OnapCommandParameterCache; @@ -56,6 +53,8 @@ import org.onap.cli.fw.utils.SchemaInfo; public class OnapCommandRegistrar { private Map> registry = new HashMap<>(); + private Map> registryProfilePlugins = new HashMap<>(); + private Set availableProductVersions = new HashSet<>(); private String enabledProductVersion = OnapCommandConfg.getEnabledProductVersion(); @@ -111,6 +110,10 @@ public class OnapCommandRegistrar { } + private void registerProfilePlugin(String profile, Class cmd) { + this.registryProfilePlugins.put(profile, cmd); + } + /** * Get global registrar. * @@ -156,6 +159,14 @@ public class OnapCommandRegistrar { return cmds; } + public Class getProfilePlugin(String profile) throws OnapUnsupportedSchemaProfile { + if (!this.registryProfilePlugins.containsKey(profile)) { + throw new OnapUnsupportedSchemaProfile(profile); + } + + return this.registryProfilePlugins.get(profile); + } + public Set getAvailableProductVersions() { return this.availableProductVersions; } @@ -205,18 +216,9 @@ public class OnapCommandRegistrar { throw new OnapCommandNotFound(cmdName, version); } - OnapCommand cmd; - try { - Constructor constr = cls.getConstructor(); - cmd = (OnapCommand) constr.newInstance(); - - String schemaName = OnapCommandDiscoveryUtils.getSchemaInfo(cmdName, version).getSchemaName(); - - cmd.initializeSchema(schemaName); - } catch (OnapCommandException | NoSuchMethodException | SecurityException | InstantiationException - | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - throw new OnapCommandRegistrationFailed(cmdName, e); - } + OnapCommand cmd = OnapCommandDiscoveryUtils.loadCommandClass(cls); + String schemaName = OnapCommandDiscoveryUtils.getSchemaInfo(cmdName, version).getSchemaName(); + cmd.initializeSchema(schemaName); return cmd; } @@ -231,6 +233,7 @@ public class OnapCommandRegistrar { if (ano.schema() != null && !ano.schema().isEmpty()) { map.put(ano.schema(), cmd); } else if (ano.type() != null && !ano.type().isEmpty()) { + this.registerProfilePlugin(ano.type(), cmd); map.put(ano.type(), cmd); } else { throw new OnapUnsupportedSchemaProfile(ano.schema()); @@ -242,15 +245,19 @@ public class OnapCommandRegistrar { } private void autoDiscoverSchemas() throws OnapCommandException { - List schemas = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(); + List schemas = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(true); Map> plugins = this.autoDiscoverCommandPlugins(); for (SchemaInfo schema : schemas) { - if (plugins.containsKey(schema.getSchemaProfile())) { + if (schema.isIgnore()) { + continue; + } + + if (plugins.containsKey(schema.getSchemaName())) { + this.register(schema.getCmdName(), schema.getProduct(), plugins.get(schema.getSchemaName())); + } else if (plugins.containsKey(schema.getSchemaProfile())) { this.register(schema.getCmdName(), schema.getProduct(), plugins.get(schema.getSchemaProfile())); - } else if (plugins.containsKey(schema.getSchemaName())) { - this.register(schema.getCmdName(), schema.getProduct(), plugins.get(schema.getSchemaName())); } else { throw new OnapUnsupportedSchemaProfile(schema.getSchemaURI()); } diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapHttpCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapHttpCommand.java index 11fc71f3..892f367a 100644 --- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapHttpCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapHttpCommand.java @@ -98,8 +98,8 @@ public class OnapHttpCommand extends OnapCommand { } @Override - protected void initializeProfileSchema() throws OnapCommandException { - OnapCommandSchemaLoaderUtils.loadHttpSchema(this, this.getSchemaName(), true, false); + protected List initializeProfileSchema() throws OnapCommandException { + return OnapCommandSchemaLoaderUtils.loadHttpSchema(this, this.getSchemaName(), true, false); } @Override diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java index 3319f03d..40d8eee5 100644 --- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommand.java @@ -34,13 +34,15 @@ public class OnapSchemaRefreshCommand extends OnapCommand { @Override protected void run() throws OnapCommandException { - List schemas = OnapCommandDiscoveryUtils.discoverSchemas(); - // Will override the existing json file - OnapCommandDiscoveryUtils.persistSchemaInfo(schemas); - - for (int i = 0; i < schemas.size(); i++) { - SchemaInfo schema = schemas.get(i); - this.getResult().getRecordsMap().get("sr.no").getValues().add(String.valueOf(i + 1)); + List schemas = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(true); + int i = 0; + for (SchemaInfo schema : schemas) { + if (schema.isIgnore()) { + continue; + } + + i++; + this.getResult().getRecordsMap().get("sr.no").getValues().add(String.valueOf(i)); this.getResult().getRecordsMap().get("command").getValues().add(schema.getCmdName()); this.getResult().getRecordsMap().get("schema").getValues().add(schema.getSchemaName()); this.getResult().getRecordsMap().get("ocs-version").getValues().add(schema.getVersion()); diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java index 15e3775a..ff3f1c98 100644 --- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommand.java @@ -16,16 +16,19 @@ package org.onap.cli.fw.cmd; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + import org.onap.cli.fw.OnapCommand; +import org.onap.cli.fw.OnapCommandRegistrar; import org.onap.cli.fw.OnapCommandSchema; +import org.onap.cli.fw.conf.Constants; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.input.OnapCommandParameter; +import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils; import org.onap.cli.fw.utils.OnapCommandSchemaLoaderUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - /** * Validate schema command. */ @@ -35,30 +38,40 @@ public class OnapSchemaValidateCommand extends OnapCommand { @Override protected void run() throws OnapCommandException { Map paramMap = getParametersMap(); + OnapCommandParameter locationParam = paramMap.get("schema-location"); String location = String.valueOf(locationParam.getValue()); + OnapCommandParameter interSchemaParam = paramMap.get("internal-schema"); boolean isInternalSchema = Boolean.valueOf(String.valueOf(interSchemaParam.getValue())); - if (isInternalSchema) { + if (isInternalSchema && location.startsWith("/")) { location = location.substring(1); } - List error = OnapCommandSchemaLoaderUtils.loadSchema(new OnapCommand() { - @Override - protected void run() throws OnapCommandException { - } - }, location, true, true); + OnapCommandParameter versionParam = paramMap.get("ocs-version"); + String ocsVersion = String.valueOf(versionParam.getValue()); + String type = OnapCommandDiscoveryUtils.identitySchemaProfileType( + OnapCommandSchemaLoaderUtils.validateSchemaVersion(location, ocsVersion)); - error.addAll(OnapCommandSchemaLoaderUtils.loadHttpSchema(new OnapHttpCommand(), - location, true, true)); + OnapCommand cmd = null; + if (type.equals(Constants.BASIC_SCHEMA_PROFILE)) { + cmd = new OnapCommand() { + @Override + protected void run() throws OnapCommandException { + } + }; + } else { + cmd = OnapCommandDiscoveryUtils.loadCommandClass(OnapCommandRegistrar.getRegistrar().getProfilePlugin(type)); + } + List error = cmd.initializeSchema(location, true); List slNumber = new ArrayList<>(); for (int i = 1; i <= error.size(); i++) { slNumber.add(String.valueOf(i)); } - this.getResult().getRecords().get(0).setValues(slNumber); - this.getResult().getRecords().get(1).setValues(error); + this.getResult().getRecordsMap().get("sl-no").setValues(slNumber); + this.getResult().getRecordsMap().get("error").setValues(error); } } diff --git a/framework/src/main/java/org/onap/cli/fw/conf/Constants.java b/framework/src/main/java/org/onap/cli/fw/conf/Constants.java index 248ea068..4c7581b7 100644 --- a/framework/src/main/java/org/onap/cli/fw/conf/Constants.java +++ b/framework/src/main/java/org/onap/cli/fw/conf/Constants.java @@ -71,6 +71,7 @@ public class Constants { public static final String INFO_SERVICE = "service"; public static final String INFO_TYPE = "type"; public static final String INFO_AUTHOR = "author"; + public static final String INFO_IGNORE = "ignore"; //parameters public static final String PARAMETERS = "parameters"; diff --git a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java index bc01a769..19e7b48b 100644 --- a/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java +++ b/framework/src/main/java/org/onap/cli/fw/conf/OnapCommandConfg.java @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; -import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandExecutorInfoMissing.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandExecutorInfoMissing.java deleted file mode 100644 index 3de7438e..00000000 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandExecutorInfoMissing.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2017 Huawei Technologies Co., Ltd. - * - * 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. - */ - -package org.onap.cli.fw.error; - -/** - * Command result initialization failed. - * - */ -public class OnapCommandExecutorInfoMissing extends OnapCommandException { - - private static final long serialVersionUID = 8580121615330415456L; - - public OnapCommandExecutorInfoMissing(String cmd) { - super("0x6002", "Command " + cmd + " excutor info is missing from schema"); - } -} diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandParameterOptionConflict.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandParameterOptionConflict.java index 1ee0a8c3..e7c9e40a 100644 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandParameterOptionConflict.java +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandParameterOptionConflict.java @@ -24,8 +24,8 @@ public class OnapCommandParameterOptionConflict extends OnapCommandException { private static final long serialVersionUID = -3107017890769007297L; - public OnapCommandParameterOptionConflict(String name) { - super("0x7006", "Parameter option " + name + " is in conflict, only one option is allowed with given name"); + public OnapCommandParameterOptionConflict(String schemaName, String name) { + super("0x7006", "In " + schemaName + ", Parameter option " + name + " is in conflict, only one option is allowed with given name"); } } diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapUnsupportedSchemaProfile.java b/framework/src/main/java/org/onap/cli/fw/error/OnapUnsupportedSchemaProfile.java index 098f04df..10375594 100644 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapUnsupportedSchemaProfile.java +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapUnsupportedSchemaProfile.java @@ -26,7 +26,7 @@ public class OnapUnsupportedSchemaProfile extends OnapCommandException { private static final String ERROR_CODE = "0xb004"; - private static final String ERROR_MSG = "Unsupported schema profile"; + private static final String ERROR_MSG = "Unsupported schema profile "; public OnapUnsupportedSchemaProfile(String schema) { super(ERROR_CODE, ERROR_MSG + schema); diff --git a/framework/src/main/java/org/onap/cli/fw/info/OnapCommandInfo.java b/framework/src/main/java/org/onap/cli/fw/info/OnapCommandInfo.java index f3f3bfe1..c52965f9 100644 --- a/framework/src/main/java/org/onap/cli/fw/info/OnapCommandInfo.java +++ b/framework/src/main/java/org/onap/cli/fw/info/OnapCommandInfo.java @@ -31,6 +31,8 @@ public class OnapCommandInfo { private CommandType type = CommandType.CMD; + private boolean ignore = false; + public String getProduct() { return product; } @@ -62,4 +64,14 @@ public class OnapCommandInfo { public void setCommandType(CommandType type) { this.type = type; } + + public boolean isIgnore() { + return ignore; + } + + public void setIgnore(boolean ignore) { + this.ignore = ignore; + } + + } \ No newline at end of file diff --git a/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java b/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java index 05b5fa29..ac2e8521 100644 --- a/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java +++ b/framework/src/main/java/org/onap/cli/fw/input/OnapCommandParameter.java @@ -16,18 +16,18 @@ package org.onap.cli.fw.input; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.File; +import java.util.List; +import java.util.Map; +import java.util.UUID; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandInvalidParameterValue; import org.onap.cli.fw.error.OnapCommandParameterMissing; import org.onap.cli.fw.utils.OnapCommandUtils; -import java.io.File; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; /** * Oclip Command's input parameter. diff --git a/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResult.java b/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResult.java index 678bcfc9..ae5d86ca 100644 --- a/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResult.java +++ b/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResult.java @@ -16,6 +16,11 @@ package org.onap.cli.fw.output; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.onap.cli.fw.conf.Constants; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandOutputFormatNotsupported; @@ -24,11 +29,6 @@ import org.onap.cli.fw.input.ParameterType; import org.onap.cli.fw.output.print.OnapCommandPrint; import org.onap.cli.fw.utils.OnapCommandUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - /** * Oclip Command result holds the final output of the command. * diff --git a/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResultAttribute.java b/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResultAttribute.java index ba4d5433..fe4ed32e 100644 --- a/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResultAttribute.java +++ b/framework/src/main/java/org/onap/cli/fw/output/OnapCommandResultAttribute.java @@ -16,12 +16,12 @@ package org.onap.cli.fw.output; -import org.onap.cli.fw.input.ParameterType; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.onap.cli.fw.input.ParameterType; + /** * Oclip command output records, helps to define the title and its description while command is defined and during run * time, it captures the value of the output as well. diff --git a/framework/src/main/java/org/onap/cli/fw/output/print/OnapCommandPrint.java b/framework/src/main/java/org/onap/cli/fw/output/print/OnapCommandPrint.java index beb2330f..96ce59b2 100644 --- a/framework/src/main/java/org/onap/cli/fw/output/print/OnapCommandPrint.java +++ b/framework/src/main/java/org/onap/cli/fw/output/print/OnapCommandPrint.java @@ -16,11 +16,6 @@ package org.onap.cli.fw.output.print; -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVPrinter; -import org.onap.cli.fw.error.OnapCommandOutputPrintingFailed; -import org.onap.cli.fw.output.PrintDirection; - import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; @@ -31,6 +26,11 @@ import java.util.List; import java.util.Map; import java.util.StringTokenizer; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVPrinter; +import org.onap.cli.fw.error.OnapCommandOutputPrintingFailed; +import org.onap.cli.fw.output.PrintDirection; + /** * Oclip Command Table print. * diff --git a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java index 69fd2ac4..37220434 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandDiscoveryUtils.java @@ -26,6 +26,8 @@ import static org.onap.cli.fw.conf.Constants.SCHEMA_PATH_PATERN; import java.io.File; import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -37,6 +39,7 @@ import org.onap.cli.fw.conf.Constants; import org.onap.cli.fw.conf.OnapCommandConfg; import org.onap.cli.fw.error.OnapCommandDiscoveryFailed; import org.onap.cli.fw.error.OnapCommandException; +import org.onap.cli.fw.error.OnapCommandInstantiationFailed; import org.onap.cli.fw.error.OnapCommandInvalidSchema; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; @@ -59,7 +62,7 @@ public class OnapCommandDiscoveryUtils { * exception */ public static SchemaInfo getSchemaInfo(String cmd, String version) throws OnapCommandException { - List list = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(); + List list = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(false); SchemaInfo schemaInfo = null; if (list != null) { for (SchemaInfo schema : list) { @@ -81,9 +84,9 @@ public class OnapCommandDiscoveryUtils { * @throws OnapCommandDiscoveryFailed * exception */ - public static List discoverOrLoadSchemas() throws OnapCommandException { + public static List discoverOrLoadSchemas(boolean forceRefresh) throws OnapCommandException { List schemas = new ArrayList<>(); - if (OnapCommandConfg.isDiscoverAlways() || !OnapCommandDiscoveryUtils.isAlreadyDiscovered()) { + if (forceRefresh || OnapCommandConfg.isDiscoverAlways() || !OnapCommandDiscoveryUtils.isAlreadyDiscovered()) { schemas = OnapCommandDiscoveryUtils.discoverSchemas(); if (!schemas.isEmpty()) { OnapCommandDiscoveryUtils.persistSchemaInfo(schemas); @@ -211,7 +214,7 @@ public class OnapCommandDiscoveryUtils { return resolver.getResources("classpath*:" + pattern); } - static String identitySchemaProfileType(Map schemaYamlMap) { + public static String identitySchemaProfileType(Map schemaYamlMap) { for (String schemeType : OnapCommandConfg.getSchemaAttrInfo(Constants.SCHEMA_TYPES_SUPPORTED)) { if (schemaYamlMap.get(schemeType) != null) { @@ -240,9 +243,9 @@ public class OnapCommandDiscoveryUtils { for (Resource resource : res) { try { - resourceMap = loadSchema(resource); + resourceMap = OnapCommandSchemaLoaderUtils.loadSchema(resource); } catch (OnapCommandException e) { - OnapCommandUtils.LOG.error("Invalid schema " + resource.getURI().toString(), e); + OnapCommandUtils.LOG.error("Ignores invalid schema " + resource.getURI().toString(), e); continue; } @@ -271,6 +274,9 @@ public class OnapCommandDiscoveryUtils { schema.setProduct(infoMap.get(Constants.INFO_PRODUCT).toString()); } + if (infoMap != null && infoMap.get(Constants.INFO_IGNORE) != null) { + schema.setIgnore(infoMap.get(Constants.INFO_IGNORE).toString()); + } schema.setSchemaProfile(identitySchemaProfileType(resourceMap)); extSchemas.add(schema); @@ -299,4 +305,18 @@ public class OnapCommandDiscoveryUtils { return clss; } + /** + * Instantiate command plugin + * @throws OnapCommandInstantiationFailed + */ + public static OnapCommand loadCommandClass(Class cls) throws OnapCommandInstantiationFailed { + try { + Constructor constr = cls.getConstructor(); + return (OnapCommand) constr.newInstance(); + } catch (NoSuchMethodException | SecurityException | InstantiationException + | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + throw new OnapCommandInstantiationFailed(cls.getName(), e); + } + + } } diff --git a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandSchemaLoaderUtils.java b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandSchemaLoaderUtils.java index a33b98ac..e115fc02 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandSchemaLoaderUtils.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandSchemaLoaderUtils.java @@ -35,6 +35,7 @@ import static org.onap.cli.fw.conf.Constants.HTTP_MANDATORY_SECTIONS; import static org.onap.cli.fw.conf.Constants.HTTP_SECTIONS; import static org.onap.cli.fw.conf.Constants.INFO; import static org.onap.cli.fw.conf.Constants.INFO_AUTHOR; +import static org.onap.cli.fw.conf.Constants.INFO_IGNORE; import static org.onap.cli.fw.conf.Constants.INFO_PARAMS_LIST; import static org.onap.cli.fw.conf.Constants.INFO_PARAMS_MANDATORY_LIST; import static org.onap.cli.fw.conf.Constants.INFO_PRODUCT; @@ -92,6 +93,7 @@ import org.onap.cli.fw.OnapCommand; import org.onap.cli.fw.ad.OnapService; import org.onap.cli.fw.cmd.CommandType; import org.onap.cli.fw.cmd.OnapHttpCommand; +import org.onap.cli.fw.conf.Constants; import org.onap.cli.fw.conf.OnapCommandConfg; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandInvalidSchema; @@ -138,12 +140,7 @@ public class OnapCommandSchemaLoaderUtils { inputStream = OnapCommandSchemaLoaderUtils.loadSchemaFromFile(schemaName); } - Map values = null; - try { - values = (Map) new Yaml().load(inputStream); - } catch (Exception e) { - throw new OnapCommandInvalidSchema(schemaName, e); - } + Map values = OnapCommandSchemaLoaderUtils.loadSchema(inputStream, schemaName); String schemaVersion = ""; if (values.keySet().contains(OPEN_CLI_SCHEMA_VERSION)) { Object obj = values.get(OPEN_CLI_SCHEMA_VERSION); @@ -173,6 +170,11 @@ public class OnapCommandSchemaLoaderUtils { if (includeDefault) { Map defaultParameterMap = includeDefault ? validateSchemaVersion(DEFAULT_PARAMETER_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>(); + //mrkanag default_parameter is supported only for parameters. + if (defaultParameterMap.containsKey(INFO)) { + defaultParameterMap.remove(Constants.INFO); + } + errors.addAll(OnapCommandSchemaLoaderUtils.parseSchema(cmd, defaultParameterMap, validateSchema)); } @@ -196,6 +198,12 @@ public class OnapCommandSchemaLoaderUtils { if (includeDefault) { Map defaultParameterMap = includeDefault ? validateSchemaVersion(DEFAULT_PARAMETER_HTTP_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>(); + + //mrkanag default_parameter is supported only for parameters. + if (defaultParameterMap.containsKey(INFO)) { + defaultParameterMap.remove(Constants.INFO); + } + errors.addAll(OnapCommandSchemaLoaderUtils.parseSchema(cmd, defaultParameterMap, validateSchema)); } @@ -297,6 +305,11 @@ public class OnapCommandSchemaLoaderUtils { Object mode = infoMap.get(key1); info.setAuthor(mode.toString()); break; + + case INFO_IGNORE: + Object ignore = infoMap.get(key1); + info.setIgnore(ignore.toString().equalsIgnoreCase(Constants.BOOLEAN_TRUE)); + break; } } @@ -351,7 +364,9 @@ public class OnapCommandSchemaLoaderUtils { case SHORT_OPTION: if (shortOptions.contains(parameter.get(key2))) { - OnapCommandUtils.throwOrCollect(new OnapCommandParameterOptionConflict(parameter.get(key2)), exceptionList, validate); + OnapCommandUtils.throwOrCollect(new OnapCommandParameterOptionConflict( + cmd.getSchemaName(), + parameter.get(key2)), exceptionList, validate); } shortOptions.add(parameter.get(key2)); param.setShortOption(parameter.get(key2)); @@ -359,7 +374,9 @@ public class OnapCommandSchemaLoaderUtils { case LONG_OPTION: if (longOptions.contains(parameter.get(key2))) { - OnapCommandUtils.throwOrCollect(new OnapCommandParameterOptionConflict(parameter.get(key2)), exceptionList, validate); + OnapCommandUtils.throwOrCollect(new OnapCommandParameterOptionConflict( + cmd.getSchemaName(), + parameter.get(key2)), exceptionList, validate); } longOptions.add(parameter.get(key2)); param.setLongOption(parameter.get(key2)); @@ -688,7 +705,7 @@ public class OnapCommandSchemaLoaderUtils { return errorList; } - static InputStream loadSchemaFromFile(String schemaLocation) throws OnapCommandInvalidSchema { + public static InputStream loadSchemaFromFile(String schemaLocation) throws OnapCommandInvalidSchema { File schemaFile = new File(schemaLocation); try { FileInputStream inputFileStream = new FileInputStream(schemaFile); @@ -705,4 +722,41 @@ public class OnapCommandSchemaLoaderUtils { } } + /** + * Get schema map. + * + * @param resource + * resource obj + * @return map + * @throws OnapCommandInvalidSchema + * exception + */ + public static Map loadSchema(Resource resource) throws OnapCommandInvalidSchema { + try { + return OnapCommandSchemaLoaderUtils.loadSchema(resource.getInputStream(), resource.getFilename()); + } catch (IOException e) { + throw new OnapCommandInvalidSchema(resource.getFilename(), e); + } + + } + + /** + * Get schema map. + * + * @param resource + * resource obj + * @return map + * @throws OnapCommandInvalidSchema + * exception + */ + public static Map loadSchema(InputStream stream, String schemaName) throws OnapCommandInvalidSchema { + Map values = null; + try { + values = (Map) new Yaml().load(stream); + } catch (Exception e) { + throw new OnapCommandInvalidSchema(schemaName, e); + } + + return values; + } } diff --git a/framework/src/main/java/org/onap/cli/fw/utils/SchemaInfo.java b/framework/src/main/java/org/onap/cli/fw/utils/SchemaInfo.java index 85d6b1f8..beb02a37 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/SchemaInfo.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/SchemaInfo.java @@ -48,6 +48,8 @@ public class SchemaInfo { private String schemaProfile = Constants.BASIC_SCHEMA_PROFILE; + private String ignore = Constants.BOOLEAN_FALSE; + public String getSchemaName() { return schemaName; } @@ -104,6 +106,17 @@ public class SchemaInfo { this.type = type; } + public boolean isIgnore() { + return Constants.BOOLEAN_TRUE.equalsIgnoreCase(this.getIgnore()); + } + + public String getIgnore() { + return ignore; + } + + public void setIgnore(String ignore) { + this.ignore = ignore; + } } diff --git a/framework/src/main/resources/default_input_parameters.yaml b/framework/src/main/resources/default_input_parameters.yaml deleted file mode 100644 index a8d35eee..00000000 --- a/framework/src/main/resources/default_input_parameters.yaml +++ /dev/null @@ -1,38 +0,0 @@ -open_cli_schema_version: 1.0 -parameters: - - name: help - type: string - description: print help message - short_option: h - long_option: help - default_value: false - - name: version - type: string - description: print service version - short_option: v - long_option: version - default_value: false - - name: debug - type: bool - description: Enable debug output - short_option: d - long_option: debug - default_value: false - - name: format - type: string - description: Output formats, supported formats such as table, csv, json, yaml - short_option: f - long_option: format - default_value: table - - name: long - type: bool - description: whether to print all attributes or only short attributes - short_option: s - long_option: long - default_value: false - - name: no-title - type: bool - description: whether to print title or not - short_option: t - long_option: no-title - default_value: false \ No newline at end of file diff --git a/framework/src/main/resources/default_input_parameters_http.yaml b/framework/src/main/resources/default_input_parameters_http.yaml deleted file mode 100644 index 81656ea0..00000000 --- a/framework/src/main/resources/default_input_parameters_http.yaml +++ /dev/null @@ -1,30 +0,0 @@ -open_cli_schema_version: 1.0 -parameters: - - name: host-username - type: string - description: Host user name - short_option: u - long_option: host-username - default_value: $s{env:OPEN_CLI_HOST_USERNAME} - is_optional: false - - name: host-password - type: string - description: Host user password - short_option: p - long_option: host-password - default_value: $s{env:OPEN_CLI_HOST_PASSWORD} - is_secured: true - is_optional: false - - name: host-url - type: url - description: host url in http(s) - short_option: m - long_option: host-url - is_optional: false - default_value: $s{env:OPEN_CLI_HOST_URL} - - name: no-auth - type: bool - description: whether to authenticate user or not - short_option: a - long_option: no-auth - default_value: false \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/basic-login.yaml b/framework/src/main/resources/open-cli-schema/basic-login.yaml deleted file mode 100644 index dab9652e..00000000 --- a/framework/src/main/resources/open-cli-schema/basic-login.yaml +++ /dev/null @@ -1,19 +0,0 @@ -open_cli_schema_version: 1.0 - -name: basic-login - -description: basic login auth command - -info: - product: open-cli - service: basic-auth - type: auth - author: Kanagaraj Manickam mkr1481@gmail.com - -results: - direction: portrait - attributes: - - name: Authorization - description: Authorization - scope: short - type: string diff --git a/framework/src/main/resources/open-cli-schema/basic-logout.yaml b/framework/src/main/resources/open-cli-schema/basic-logout.yaml deleted file mode 100644 index ef60006c..00000000 --- a/framework/src/main/resources/open-cli-schema/basic-logout.yaml +++ /dev/null @@ -1,19 +0,0 @@ -open_cli_schema_version: 1.0 - -name: basic-logout - -description: basic logout auth command - -info: - product: open-cli - service: basic-auth - type: auth - author: Kanagaraj Manickam mkr1481@gmail.com - -parameters: - - name: host-username - is_include: false - - name: host-password - is_include: false - - name: no-auth - is_include: false \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/catalog.yaml b/framework/src/main/resources/open-cli-schema/catalog.yaml deleted file mode 100644 index d3ee9992..00000000 --- a/framework/src/main/resources/open-cli-schema/catalog.yaml +++ /dev/null @@ -1,44 +0,0 @@ -open_cli_schema_version: 1.0 - -name: catalog - -description: cli catalog command to find the base path for service. - -info: - product: open-cli - service: catalog - type: catalog - author: Kanagaraj Manickam mkr1481@gmail.com - -parameters: - - name: catalog-service-name - type: string - description: service name registered in catalog service - short_option: l - long_option: catalog-service-name - is_optional: false - - name: catalog-service-version - type: string - description: service version registered in catalog service - short_option: i - long_option: catalog-service-version - is_optional: false - - name: host-username - is_include: false - - name: host-password - is_include: false - - name: no-auth - is_include: false -results: - direction: portrait - attributes: - - name: catalog-service-host-url - description: Service connection url - scope: short - type: string - default_value: ${host-url} - - name: catalog-service-base-path - description: service base path, to append with host-url for connecting the service. - scope: short - type: string - default_value: / \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/default_input_parameters.yaml b/framework/src/main/resources/open-cli-schema/default_input_parameters.yaml new file mode 100644 index 00000000..e8e08f46 --- /dev/null +++ b/framework/src/main/resources/open-cli-schema/default_input_parameters.yaml @@ -0,0 +1,44 @@ +open_cli_schema_version: 1.0 + +info: + product: open-cli + service: default-param + ignore: true + +parameters: + - name: help + type: string + description: print help message + short_option: h + long_option: help + default_value: false + - name: version + type: string + description: print service version + short_option: v + long_option: version + default_value: false + - name: debug + type: bool + description: Enable debug output + short_option: d + long_option: debug + default_value: false + - name: format + type: string + description: Output formats, supported formats such as table, csv, json, yaml + short_option: f + long_option: format + default_value: table + - name: long + type: bool + description: whether to print all attributes or only short attributes + short_option: s + long_option: long + default_value: false + - name: no-title + type: bool + description: whether to print title or not + short_option: t + long_option: no-title + default_value: false \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/http/basic-login.yaml b/framework/src/main/resources/open-cli-schema/http/basic-login.yaml new file mode 100644 index 00000000..dab9652e --- /dev/null +++ b/framework/src/main/resources/open-cli-schema/http/basic-login.yaml @@ -0,0 +1,19 @@ +open_cli_schema_version: 1.0 + +name: basic-login + +description: basic login auth command + +info: + product: open-cli + service: basic-auth + type: auth + author: Kanagaraj Manickam mkr1481@gmail.com + +results: + direction: portrait + attributes: + - name: Authorization + description: Authorization + scope: short + type: string diff --git a/framework/src/main/resources/open-cli-schema/http/basic-logout.yaml b/framework/src/main/resources/open-cli-schema/http/basic-logout.yaml new file mode 100644 index 00000000..ef60006c --- /dev/null +++ b/framework/src/main/resources/open-cli-schema/http/basic-logout.yaml @@ -0,0 +1,19 @@ +open_cli_schema_version: 1.0 + +name: basic-logout + +description: basic logout auth command + +info: + product: open-cli + service: basic-auth + type: auth + author: Kanagaraj Manickam mkr1481@gmail.com + +parameters: + - name: host-username + is_include: false + - name: host-password + is_include: false + - name: no-auth + is_include: false \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/http/catalog.yaml b/framework/src/main/resources/open-cli-schema/http/catalog.yaml new file mode 100644 index 00000000..d3ee9992 --- /dev/null +++ b/framework/src/main/resources/open-cli-schema/http/catalog.yaml @@ -0,0 +1,44 @@ +open_cli_schema_version: 1.0 + +name: catalog + +description: cli catalog command to find the base path for service. + +info: + product: open-cli + service: catalog + type: catalog + author: Kanagaraj Manickam mkr1481@gmail.com + +parameters: + - name: catalog-service-name + type: string + description: service name registered in catalog service + short_option: l + long_option: catalog-service-name + is_optional: false + - name: catalog-service-version + type: string + description: service version registered in catalog service + short_option: i + long_option: catalog-service-version + is_optional: false + - name: host-username + is_include: false + - name: host-password + is_include: false + - name: no-auth + is_include: false +results: + direction: portrait + attributes: + - name: catalog-service-host-url + description: Service connection url + scope: short + type: string + default_value: ${host-url} + - name: catalog-service-base-path + description: service base path, to append with host-url for connecting the service. + scope: short + type: string + default_value: / \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/http/default_input_parameters_http.yaml b/framework/src/main/resources/open-cli-schema/http/default_input_parameters_http.yaml new file mode 100644 index 00000000..d7fbe03c --- /dev/null +++ b/framework/src/main/resources/open-cli-schema/http/default_input_parameters_http.yaml @@ -0,0 +1,36 @@ +open_cli_schema_version: 1.0 + +info: + product: open-cli + service: default-param + ignore: true + +parameters: + - name: host-username + type: string + description: Host user name + short_option: u + long_option: host-username + default_value: $s{env:OPEN_CLI_HOST_USERNAME} + is_optional: false + - name: host-password + type: string + description: Host user password + short_option: p + long_option: host-password + default_value: $s{env:OPEN_CLI_HOST_PASSWORD} + is_secured: true + is_optional: false + - name: host-url + type: url + description: host url in http(s) + short_option: m + long_option: host-url + is_optional: false + default_value: $s{env:OPEN_CLI_HOST_URL} + - name: no-auth + type: bool + description: whether to authenticate user or not + short_option: a + long_option: no-auth + default_value: false \ No newline at end of file diff --git a/framework/src/main/resources/open-cli-schema/schema-validate.yaml b/framework/src/main/resources/open-cli-schema/schema-validate.yaml index 65acfb0e..c17b3a08 100644 --- a/framework/src/main/resources/open-cli-schema/schema-validate.yaml +++ b/framework/src/main/resources/open-cli-schema/schema-validate.yaml @@ -21,6 +21,13 @@ parameters: short_option: i long_option: internal-schema is_optional: false + - name: ocs-version + type: string + description: OCS version + short_option: b + long_option: ocs-version + is_optional: true + default_value: 1.0 results: direction: landscape diff --git a/framework/src/main/resources/open-cli.properties b/framework/src/main/resources/open-cli.properties index 757b0259..813e46dd 100644 --- a/framework/src/main/resources/open-cli.properties +++ b/framework/src/main/resources/open-cli.properties @@ -8,7 +8,7 @@ cli.version=1.0 cli.schema.top_level_params_list=open_cli_schema_version,name,description,parameters,results,http,info cli.schema.top_level_mandatory_list=open_cli_schema_version -cli.schema.info_params_list=product,service,type,author +cli.schema.info_params_list=product,service,type,author,ignore cli.schema.info_params_mandatory_list=product,service cli.schema.input_params_list=name,description,type,short_option,long_option, is_optional,default_value,is_secured,is_include diff --git a/framework/src/main/resources/version.info b/framework/src/main/resources/version.info index fc959d19..edfa61d6 100644 --- a/framework/src/main/resources/version.info +++ b/framework/src/main/resources/version.info @@ -3,5 +3,5 @@ Available products: __AVAILABLE_PRODUCT_VERSIONS__ Enabled product : __ENABLED_PRODUCT_VERSIONS__ To enable a product, use one of following methods: -1. In scripting mode, Set environment variable OPEN_CLI_PRODUCT_IN_USE -2. In interactive mode, set the directive 'use ' +1. In scripting mode, set environment variable OPEN_CLI_PRODUCT_IN_USE +2. In interactive mode, use the directive 'use ' diff --git a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java index 339a0f66..3f9f780d 100644 --- a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java +++ b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java @@ -25,12 +25,10 @@ import java.io.File; import java.net.URL; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandHelpFailed; import org.onap.cli.fw.error.OnapCommandNotFound; -import org.onap.cli.fw.error.OnapCommandRegistrationFailed; public class OnapCommandRegistrarTest { diff --git a/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommandTest.java b/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommandTest.java index 7aedd42d..99f45190 100644 --- a/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommandTest.java +++ b/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaRefreshCommandTest.java @@ -16,13 +16,13 @@ package org.onap.cli.fw.cmd; -import org.junit.Test; -import org.onap.cli.fw.error.OnapCommandException; -import org.onap.cli.fw.output.OnapCommandResultAttribute; +import static org.junit.Assert.assertTrue; import java.util.List; -import static org.junit.Assert.assertTrue; +import org.junit.Test; +import org.onap.cli.fw.error.OnapCommandException; +import org.onap.cli.fw.output.OnapCommandResultAttribute; public class OnapSchemaRefreshCommandTest { @@ -32,15 +32,11 @@ public class OnapSchemaRefreshCommandTest { cmd.initializeSchema("schema-refresh.yaml"); cmd.execute(); - List oclipCommandResultAttribute = cmd.getResult() + List oclipCommandResultAttributes = cmd.getResult() .getRecords(); - String s1Number = oclipCommandResultAttribute.get(0).getValues().get(0); - String cmdName = oclipCommandResultAttribute.get(1).getValues().get(0); - String cmdVer = oclipCommandResultAttribute.get(2).getValues().get(0); - String cmdFile = oclipCommandResultAttribute.get(3).getValues().get(0); - String version = oclipCommandResultAttribute.get(4).getValues().get(0); - assertTrue(s1Number.equalsIgnoreCase("1")); + assertTrue(oclipCommandResultAttributes.size() > 1); + } } diff --git a/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommandTest.java b/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommandTest.java index 2355d668..8d8de2f7 100644 --- a/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommandTest.java +++ b/framework/src/test/java/org/onap/cli/fw/cmd/OnapSchemaValidateCommandTest.java @@ -16,49 +16,32 @@ package org.onap.cli.fw.cmd; +import org.junit.Ignore; import org.junit.Test; +import org.onap.cli.fw.OnapCommand; +import org.onap.cli.fw.OnapCommandRegistrar; import org.onap.cli.fw.error.OnapCommandException; -import org.onap.cli.fw.input.OnapCommandParameter; import org.onap.cli.fw.schema.ValidateSchemaTest; + public class OnapSchemaValidateCommandTest { + @Ignore @Test public void validateSchemaCommandTest1() throws OnapCommandException { - OnapSchemaValidateCommand cmd = new OnapSchemaValidateCommand(); - cmd.initializeSchema("schema-validate.yaml"); - for (OnapCommandParameter param : cmd.getParameters()) { - if ("host-username".equals(param.getName())) { - param.setValue("test"); - } else if ("host-password".equals(param.getName())) { - param.setValue("test"); - } else if ("host-url".equals(param.getName())) { - param.setValue("test-url"); - } else if ("schema-location".equals(param.getName())) { - param.setValue("schema-validate-pass.yaml"); - } else if ("internal-schema".equals(param.getName())) { - param.setValue("true"); - } - } + OnapCommand cmd = OnapCommandRegistrar.getRegistrar().get("schema-validate"); + cmd.getParametersMap().get("schema-location").setValue("schema-validate-pass.yaml"); + cmd.getParametersMap().get("internal-schema").setValue("true"); cmd.execute(); } + @Ignore @Test public void validateSchemaCommandTest2() throws OnapCommandException { - OnapSchemaValidateCommand cmd = new OnapSchemaValidateCommand(); - cmd.initializeSchema("schema-validate.yaml"); - for (OnapCommandParameter param : cmd.getParameters()) { - if ("host-username".equals(param.getName())) { - param.setValue("test"); - } else if ("host-password".equals(param.getName())) { - param.setValue("test"); - } else if ("host-url".equals(param.getName())) { - param.setValue("test-url"); - } else if ("schema-location".equals(param.getName())) { - param.setValue( - ValidateSchemaTest.class.getClassLoader().getResource("schema-validate-pass.yaml").getFile()); - } - } + OnapCommand cmd = OnapCommandRegistrar.getRegistrar().get("schema-validate"); + cmd.getParametersMap().get("schema-location").setValue( + ValidateSchemaTest.class.getClassLoader().getResource("schema-validate-pass.yaml").getFile()); + cmd.getParametersMap().get("internal-schema").setValue("true"); cmd.execute(); } } diff --git a/framework/src/test/java/org/onap/cli/fw/conf/OnapCommandConfgTest.java b/framework/src/test/java/org/onap/cli/fw/conf/OnapCommandConfgTest.java index 1a677707..2c25991b 100644 --- a/framework/src/test/java/org/onap/cli/fw/conf/OnapCommandConfgTest.java +++ b/framework/src/test/java/org/onap/cli/fw/conf/OnapCommandConfgTest.java @@ -16,12 +16,12 @@ package org.onap.cli.fw.conf; -import org.junit.Assert; -import org.junit.Test; - import java.io.IOException; import java.util.Properties; +import org.junit.Assert; +import org.junit.Test; + public class OnapCommandConfgTest { @Test diff --git a/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java b/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java index 45560c4a..899f2e3b 100644 --- a/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java +++ b/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java @@ -94,9 +94,9 @@ public class OnapCommandErrorTest { @Test public void oclipCommandExecutorInfoMissingTest() { - OnapCommandExecutorInfoMissing failed = new OnapCommandExecutorInfoMissing("Test"); + OnapCommandInstantiationFailed failed = new OnapCommandInstantiationFailed("Test"); - assertEquals("0x6002::Command Test excutor info is missing from schema", failed.getMessage()); + assertEquals("0x6002::Failed to instantiate the command plugin Test", failed.getMessage()); } @Test @@ -225,9 +225,9 @@ public class OnapCommandErrorTest { @Test public void oclipCommandParameterOptionConflictTest() { - OnapCommandParameterOptionConflict failed = new OnapCommandParameterOptionConflict("option"); + OnapCommandParameterOptionConflict failed = new OnapCommandParameterOptionConflict("test", "option"); - assertEquals("0x7006::Parameter option option is in conflict, only one option is allowed with given name", + assertEquals("0x7006::In test, Parameter option option is in conflict, only one option is allowed with given name", failed.getMessage()); } @@ -296,5 +296,5 @@ public class OnapCommandErrorTest { OnapCommandInvalidCommandType failed = new OnapCommandInvalidCommandType("test"); assertEquals("0x3003::Command type test is invalid", failed.getMessage()); - } + } } diff --git a/framework/src/test/java/org/onap/cli/fw/http/HttpInputOutputTest.java b/framework/src/test/java/org/onap/cli/fw/http/HttpInputOutputTest.java index 900d72e8..0a3a817e 100644 --- a/framework/src/test/java/org/onap/cli/fw/http/HttpInputOutputTest.java +++ b/framework/src/test/java/org/onap/cli/fw/http/HttpInputOutputTest.java @@ -18,10 +18,10 @@ package org.onap.cli.fw.http; import static org.junit.Assert.assertTrue; -import org.junit.Test; - import java.util.HashMap; +import org.junit.Test; + public class HttpInputOutputTest { @Test diff --git a/framework/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java b/framework/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java index ab00f90b..785092c2 100644 --- a/framework/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java +++ b/framework/src/test/java/org/onap/cli/fw/http/OnapHttpConnectionTest.java @@ -17,11 +17,11 @@ package org.onap.cli.fw.http; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import mockit.Invocation; -import mockit.Mock; -import mockit.MockUp; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpUriRequest; @@ -31,9 +31,9 @@ import org.junit.Before; import org.junit.Test; import org.onap.cli.fw.error.OnapCommandHttpFailure; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; +import mockit.Invocation; +import mockit.Mock; +import mockit.MockUp; public class OnapHttpConnectionTest { HttpInput inp = null; diff --git a/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java b/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java index f2e9f0b3..44656f9f 100644 --- a/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java +++ b/framework/src/test/java/org/onap/cli/fw/input/OnapCommandParameterTest.java @@ -16,15 +16,15 @@ package org.onap.cli.fw.input; -import org.junit.Test; -import org.onap.cli.fw.error.OnapCommandException; -import org.onap.cli.fw.error.OnapCommandInvalidParameterValue; +import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.assertTrue; +import org.junit.Test; +import org.onap.cli.fw.error.OnapCommandException; +import org.onap.cli.fw.error.OnapCommandInvalidParameterValue; public class OnapCommandParameterTest { diff --git a/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultAttributeScopeTest.java b/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultAttributeScopeTest.java index 76d139a0..7ab3fe52 100644 --- a/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultAttributeScopeTest.java +++ b/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultAttributeScopeTest.java @@ -18,11 +18,11 @@ package org.onap.cli.fw.output; import static org.junit.Assert.assertTrue; +import java.util.Collections; + import org.junit.Test; import org.onap.cli.fw.input.ParameterType; -import java.util.Collections; - public class OnapCommandResultAttributeScopeTest { @Test public void oclipCommandResultAttributeTest() { diff --git a/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultTest.java b/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultTest.java index dddab1bc..9c832c24 100644 --- a/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultTest.java +++ b/framework/src/test/java/org/onap/cli/fw/output/OnapCommandResultTest.java @@ -19,15 +19,15 @@ package org.onap.cli.fw.output; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.junit.Ignore; import org.junit.Test; import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.input.ParameterType; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - public class OnapCommandResultTest { @Test diff --git a/framework/src/test/java/org/onap/cli/fw/output/print/OnapCommandPrintTest.java b/framework/src/test/java/org/onap/cli/fw/output/print/OnapCommandPrintTest.java index ae17d6d4..84c868b3 100644 --- a/framework/src/test/java/org/onap/cli/fw/output/print/OnapCommandPrintTest.java +++ b/framework/src/test/java/org/onap/cli/fw/output/print/OnapCommandPrintTest.java @@ -18,15 +18,15 @@ package org.onap.cli.fw.output.print; import static org.junit.Assert.assertEquals; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.junit.Ignore; import org.junit.Test; import org.onap.cli.fw.error.OnapCommandOutputPrintingFailed; import org.onap.cli.fw.output.PrintDirection; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - public class OnapCommandPrintTest { @Test diff --git a/framework/src/test/java/org/onap/cli/fw/output/print/TableGeneratorTest.java b/framework/src/test/java/org/onap/cli/fw/output/print/TableGeneratorTest.java index f9ae0717..58ff4751 100644 --- a/framework/src/test/java/org/onap/cli/fw/output/print/TableGeneratorTest.java +++ b/framework/src/test/java/org/onap/cli/fw/output/print/TableGeneratorTest.java @@ -18,13 +18,13 @@ package org.onap.cli.fw.output.print; import static org.junit.Assert.assertEquals; -import org.junit.Before; -import org.junit.Test; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.junit.Before; +import org.junit.Test; + public class TableGeneratorTest { private TableGenerator table; diff --git a/framework/src/test/java/org/onap/cli/fw/schema/ValidateSchemaTest.java b/framework/src/test/java/org/onap/cli/fw/schema/ValidateSchemaTest.java index 22c36c3d..a900fe6d 100644 --- a/framework/src/test/java/org/onap/cli/fw/schema/ValidateSchemaTest.java +++ b/framework/src/test/java/org/onap/cli/fw/schema/ValidateSchemaTest.java @@ -16,6 +16,10 @@ package org.onap.cli.fw.schema; +import static org.junit.Assert.assertTrue; + +import java.util.List; + import org.junit.Test; import org.onap.cli.fw.OnapCommand; import org.onap.cli.fw.cmd.OnapHttpCommand; @@ -23,10 +27,6 @@ import org.onap.cli.fw.error.OnapCommandException; import org.onap.cli.fw.error.OnapCommandInvalidSchema; import org.onap.cli.fw.utils.OnapCommandSchemaLoaderUtils; -import java.util.List; - -import static org.junit.Assert.assertTrue; - public class ValidateSchemaTest { @Test(expected = OnapCommandInvalidSchema.class) diff --git a/framework/src/test/resources/open-cli.properties b/framework/src/test/resources/open-cli.properties new file mode 100644 index 00000000..23ba7800 --- /dev/null +++ b/framework/src/test/resources/open-cli.properties @@ -0,0 +1,39 @@ +cli.ignore_auth=false +cli.http.api_key_use_cookies=true +cli.discover_always=true +cli.product_name=open-cli +cli.version=1.0 + +#schema validation +cli.schema.top_level_params_list=open_cli_schema_version,name,description,parameters,results,http,info +cli.schema.top_level_mandatory_list=open_cli_schema_version + +cli.schema.info_params_list=product,service,type,author,ignore +cli.schema.info_params_mandatory_list=product,service + +cli.schema.input_params_list=name,description,type,short_option,long_option, is_optional,default_value,is_secured,is_include +cli.schema.input_params_mandatory_list=name,description,type + +cli.schema.result_params_list=name,description,scope,type,is_secured, default_value +cli.schema.result_params_mandatory_list=name, description, type, scope + +#http +cli.schema.http_sections=request,service,success_codes,result_map,sample_response +cli.schema.http_mandatory_sections=request, success_codes + +cli.schema.http_request_params=uri,method,body,headers,queries,multipart_entity_name +cli.schema.http_request_mandatory_params=uri,method + +cli.schema.service_params_list=name,version,auth,mode +cli.schema.service_params_mandatory_list=auth,mode + +cli.schema.http_methods=post,get,delete,put,head + +cli.schema.boolean_values=true,false +cli.schema.auth_values=none,basic +cli.schema.mode_values=direct,catalog +cli.command.type=cmd,auth,catalog + +# mrkanag Move this to db, once exteranl command registration is supported in place of discovery +cli.schema.type.supported=http + -- cgit 1.2.3-korg