diff options
author | Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com> | 2017-08-29 18:15:10 +0530 |
---|---|---|
committer | Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com> | 2017-08-30 11:02:07 +0530 |
commit | a4cd2403a5a171d6ab6aa6b1b0b1aae83345121b (patch) | |
tree | 21646bed2f1dd2974ed24756c1f04855362219eb /framework/src/main/java | |
parent | 56ecabe9f1e7fca51d919df2836811b378c0e7df (diff) |
Add versioning for command
By allowing to add version to the YAML, helps to
create same command for multiple versions of
product say onap 1.0, 1.1
CLI-37
Change-Id: Ic3982ea912045ff4f422fcf093cbd98ecd99716d
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Diffstat (limited to 'framework/src/main/java')
12 files changed, 214 insertions, 58 deletions
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 08cbc3bc..c65ca9a8 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommand.java @@ -58,6 +58,8 @@ public abstract class OnapCommand { private String cmdSchemaName; + private String cmdVersion; + private OnapService onapService = new OnapService(); private List<OnapCommandParameter> cmdParameters = new ArrayList<>(); @@ -324,4 +326,12 @@ public abstract class OnapCommand { return OnapCommandUtils.help(this); } // (mrkanag) Add toString for all command, parameter, result, etc objects in JSON format + + public void setVersion(String version) { + this.cmdVersion = version; + } + + public String getVersion() { + return this.cmdVersion; + } } 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 567e0381..ca875b35 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java @@ -16,6 +16,14 @@ package org.onap.cli.fw; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.onap.cli.fw.cmd.OnapHttpCommand; import org.onap.cli.fw.conf.Constants; import org.onap.cli.fw.conf.OnapCommandConfg; @@ -24,6 +32,7 @@ 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.OnapCommandRegistrationFailed; +import org.onap.cli.fw.error.OnapCommandRegistrationVersionMissing; import org.onap.cli.fw.output.OnapCommandResult; import org.onap.cli.fw.output.OnapCommandResultAttribute; import org.onap.cli.fw.output.OnapCommandResultAttributeScope; @@ -32,24 +41,17 @@ import org.onap.cli.fw.output.ResultType; import org.onap.cli.fw.utils.ExternalSchema; import org.onap.cli.fw.utils.OnapCommandUtils; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - /** * Onap Command registrar provides a common place, where every command would get registered automatically when its * loaded into JVM. * */ public class OnapCommandRegistrar { - /* - * static { //Start the AOP for logging new OnapCommandLogger(); } - */ + private Map<String, Class<? extends OnapCommand>> registry = new HashMap<>(); + private Set<String> availableProductVersions = new HashSet<>(); + private static OnapCommandRegistrar registrar = null; /** @@ -61,9 +63,15 @@ public class OnapCommandRegistrar { * Command Class * @throws OnapCommandInvalidRegistration * Invalid registration exception + * @throws OnapCommandRegistrationVersionMissing */ - public void register(String name, Class<? extends OnapCommand> cmd) throws OnapCommandInvalidRegistration { - this.registry.put(name, cmd); + public void register(String name, String version, Class<? extends OnapCommand> cmd) throws OnapCommandInvalidRegistration, OnapCommandRegistrationVersionMissing { + if (version == null || version.isEmpty()) { + throw new OnapCommandRegistrationVersionMissing(name); + } + + this.registry.put(name + ":" + version, cmd); + this.availableProductVersions.add(version); } /** @@ -92,6 +100,27 @@ public class OnapCommandRegistrar { } /** + * Get the list of discovered commands for a given product version in registrar. + * + * @return set + */ + public Set<String> listCommandsForEnabledProductVersion() { + String version = OnapCommandConfg.getEnabledProductVersion(); + + Set<String> cmds = new HashSet<>(); + if (!this.availableProductVersions.contains(version)) { + return cmds; + } + + for (String cmd: this.registry.keySet()) { + if (cmd.split(":")[1].equalsIgnoreCase(version)) { + cmds.add(cmd.split(":")[0]); + } + } + return cmds; + } + + /** * Returns map of command to schema. * * @return map @@ -103,7 +132,7 @@ public class OnapCommandRegistrar { List<ExternalSchema> schemas = OnapCommandUtils.findAllExternalSchemas(); if (schemas != null) { for (ExternalSchema schema : schemas) { - map.put(schema.getCmdName(), schema.getSchemaName()); + map.put(schema.getCmdName() + ":" + schema.getCmdVersion(), schema.getSchemaName()); } } if (this.registry != null) { @@ -127,19 +156,23 @@ public class OnapCommandRegistrar { * Exception */ public OnapCommand get(String cmdName) throws OnapCommandException { - OnapCommand cmd; - Class<? extends OnapCommand> cls = registry.get(cmdName); + return this.get(cmdName, OnapCommandConfg.getEnabledProductVersion()); + } + + private OnapCommand get(String cmdName, String version) throws OnapCommandException { + Class<? extends OnapCommand> cls = registry.get(cmdName + ":" + version); if (cls == null) { - throw new OnapCommandNotFound(cmdName); + throw new OnapCommandNotFound(cmdName, version); } + OnapCommand cmd; try { Constructor<?> constr = cls.getConstructor(); cmd = (OnapCommand) constr.newInstance(); String schemaName; if (cmd.getClass().equals(OnapHttpCommand.class)) { // NOSONAR - schemaName = OnapCommandUtils.loadExternalSchemaFromJson(cmdName).getSchemaName(); + schemaName = OnapCommandUtils.loadExternalSchemaFromJson(cmdName, version).getSchemaName(); } else { schemaName = this.getSchemaFileName(cls); } @@ -152,13 +185,13 @@ public class OnapCommandRegistrar { return cmd; } - private void autoDiscover() throws OnapCommandInvalidRegistration { + private void autoDiscover() throws OnapCommandInvalidRegistration, OnapCommandRegistrationVersionMissing { List<Class<OnapCommand>> cmds = OnapCommandUtils.findOnapCommands(); for (Class<OnapCommand> cmd : cmds) { if (cmd.isAnnotationPresent(OnapCommandSchema.class)) { OnapCommandSchema ano = cmd.getAnnotation(OnapCommandSchema.class); - this.register(ano.name(), cmd); + this.register(ano.name(), ano.version(), cmd); } } } @@ -166,15 +199,14 @@ public class OnapCommandRegistrar { private void autoDiscoverHttpSchemas() throws OnapCommandException { List<ExternalSchema> schemas = OnapCommandUtils.loadExternalSchemasFromJson(); for (ExternalSchema schema : schemas) { - this.register(schema.getCmdName(), OnapHttpCommand.class); + if (schema.isHttp()) { + this.register(schema.getCmdName(), schema.getCmdVersion(), OnapHttpCommand.class); + } } } private String getSchemaFileName(Class<? extends OnapCommand> cmd) { OnapCommandSchema ano = (OnapCommandSchema) cmd.getAnnotation(OnapCommandSchema.class); - if (ano.schema().isEmpty()) { - return "onap-" + ano.name() + "-schema.yaml"; - } return ano.schema(); } @@ -188,7 +220,18 @@ public class OnapCommandRegistrar { if (version == null) { version = OnapCommandConfg.getVersion(); } - return version; + + String configuredProductVersion = OnapCommandConfg.getEnabledProductVersion(); + + String errorNote = ""; + if (!this.availableProductVersions.contains(configuredProductVersion)) { + errorNote = "** CUATION: Please configure the enabled product version to use one of " + this.availableProductVersions.toString() + + ".\nTo enable a product version, set env variable CLI_PRODUCT_VERSION or cli.product.version in onap.properties"; + } + return "CLI version : " + version + "\n" + + "Available product versions: " + this.availableProductVersions.toString() + "\n" + + "Enabled product version : " + configuredProductVersion + "\n" + + errorNote; } /** @@ -209,6 +252,12 @@ public class OnapCommandRegistrar { attr.setScope(OnapCommandResultAttributeScope.SHORT); help.getRecords().add(attr); + OnapCommandResultAttribute attrVer = new OnapCommandResultAttribute(); + attrVer.setName(Constants.PRODUCT_VERSION.toUpperCase()); + attrVer.setDescription(Constants.DESCRIPTION); + attrVer.setScope(OnapCommandResultAttributeScope.SHORT); + help.getRecords().add(attrVer); + OnapCommandResultAttribute attrSrv = new OnapCommandResultAttribute(); attrSrv.setName(Constants.SERVICE.toUpperCase()); attrSrv.setDescription(Constants.SERVICE); @@ -224,18 +273,19 @@ public class OnapCommandRegistrar { for (String cmdName : OnapCommandUtils.sort(this.listCommands())) { OnapCommand cmd; try { - cmd = this.get(cmdName); + String []cmdVer = cmdName.split(":"); + cmd = this.get(cmdVer[0], cmdVer[1]); + attr.getValues().add(cmdVer[0]); + attrVer.getValues().add(cmdVer[1]); + attrSrv.getValues().add(cmd.printVersion()); + attrDesc.getValues().add(cmd.getDescription()); } catch (OnapCommandException e) { throw new OnapCommandHelpFailed(e); } - - attr.getValues().add(cmd.getName()); - attrSrv.getValues().add(cmd.printVersion()); - attrDesc.getValues().add(cmd.getDescription()); } try { - return "\n\nOnap sub-commands:\n" + help.print(); + return "\n\nOnap sub-commands:\n" + help.print() + "\n" + this.getVersion(); } catch (OnapCommandException e) { throw new OnapCommandHelpFailed(e); } diff --git a/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java b/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java index 853d3583..471ab057 100644 --- a/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java +++ b/framework/src/main/java/org/onap/cli/fw/OnapCommandSchema.java @@ -40,6 +40,13 @@ public @interface OnapCommandSchema { String name(); /** + * Command version + * + * @return + */ + String version(); + + /** * Schema file name placed under class path * * @return diff --git a/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java b/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java index e9d495c6..458a7587 100644 --- a/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java +++ b/framework/src/main/java/org/onap/cli/fw/ad/OnapAuthClient.java @@ -54,8 +54,6 @@ public class OnapAuthClient { private OnapService service = new OnapService(); - private String authType = OnapCommandConfg.getAuthType(); - private Map<String, String> paramMap = new HashMap<>(); public OnapAuthClient(OnapCredentials creds, boolean debug, OnapService service, List<OnapCommandParameter> params) throws OnapCommandHttpFailure, OnapCommandInvalidParameterValue { @@ -64,7 +62,6 @@ public class OnapAuthClient { for (OnapCommandParameter param : params) { paramMap.put(param.getName(), param.getValue().toString()); } - this.authType = service.getAuthType(); this.http = new OnapHttpConnection(creds.getHostUrl().startsWith("https"), debug); } @@ -88,15 +85,14 @@ public class OnapAuthClient { return; } - if (this.authType.equalsIgnoreCase(Constants.AUTH_BASIC)) { + if (this.service.getAuthType().equalsIgnoreCase(Constants.AUTH_BASIC)) { String authToken = BasicScheme.authenticate(new UsernamePasswordCredentials( creds.getUsername(), creds.getPassword()), "UTF-8", false).getValue(); Map<String, String> mapHeaders = OnapCommandConfg.getBasicCommonHeaders(this.paramMap); - if(this.service.getName() != null){ - mapHeaders.putAll(OnapCommandConfg.getServiceHeaders(this.service.getName(), this.paramMap)); - } + mapHeaders.putAll(OnapCommandConfg.getServiceHeaders(this.service.getName(), this.paramMap)); mapHeaders.put(OnapCommandConfg.getXAuthTokenName(), authToken); + this.http.setCommonHeaders(mapHeaders); return; } 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 57432751..81cdfca2 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 @@ -30,7 +30,7 @@ import java.util.List; * Refresh external schema. * */ -@OnapCommandSchema(name = "schema-refresh", schema = "schema-refresh.yaml") +@OnapCommandSchema(name = "schema-refresh", version="0.0", schema = "schema-refresh.yaml") public class OnapSchemaRefreshCommand extends OnapCommand { @Override 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 b1811483..140ac818 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 @@ -29,7 +29,7 @@ import java.util.Map; /** * Validate schema command. */ -@OnapCommandSchema(name = "schema-validate", schema = "schema-validate.yaml") +@OnapCommandSchema(name = "schema-validate", version="0.0", schema = "schema-validate.yaml") public class OnapSchemaValidateCommand extends OnapCommand { @Override 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 e9b158e7..980b94d3 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 @@ -129,6 +129,8 @@ public class Constants { public static final String CONF = "onap.properties"; public static final String ONAP_IGNORE_AUTH = "cli.ignore_auth"; public static final String ONAP_CLI_VERSION = "cli.version"; + public static final String ONAP_CLI_PRODUCT_VERSION = "cli.product.version"; + public static final String ONAP_CLI_PRODUCT_VERSION_ENV_NAME = "CLI_PRODUCT_VERSION"; public static final String HTTP_API_KEY_USE_COOKIES = "cli.http.api_key_use_cookies"; public static final String EXCLUDE_PARAMS_INTERNAL_CMD = "cli.exclude_params_internal_cmd"; public static final String NO_AUTH_DISABLE_INCLUDE_PARAMS_EXTERNAL_CMD = "cli.no_auth_disable_include_params_external_cmd"; @@ -146,7 +148,7 @@ public class Constants { public static final String EXTERNAL_JSON_PATTERN = "/**/*.json"; public static final String EXTERNAL_SCHEMA_PATH_PATERN = EXTERNAL_SCHEMA_DIRECTORY + EXTERNAL_YAML_PATTERN; public static final String EXTERNAL_DISCOVERY_DIRECTORY = "data"; - public static final String EXTERNAL_DISCOVERY_FILE = "external-schema.json"; + public static final String EXTERNAL_DISCOVERY_FILE = "cli-schema.json"; public static final String EXTERNAL_DISCOVERY_DIRECTORY_PATTERN = EXTERNAL_DISCOVERY_DIRECTORY + EXTERNAL_JSON_PATTERN; @@ -177,6 +179,7 @@ public class Constants { public static final String DEFAULT_SCHEMA_FILE_NAME = "default_input_parameters.yaml"; + public static final String PRODUCT_VERSION = "product version"; // Error message public static final String SCHEMA_INVALID_DEFAULT_PARAMS_SECTION = "Invalid default_parameter section"; public static final String SCHEMA_FILE_EMPTY = "The schema file cann't be null or empty"; 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 479431f2..5ca0589f 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 @@ -68,6 +68,14 @@ public final class OnapCommandConfg { return prps.getProperty(Constants.ONAP_CLI_VERSION); } + public static String getEnabledProductVersion() { + String version = System.getenv(Constants.ONAP_CLI_PRODUCT_VERSION_ENV_NAME); + if (version == null) { + version = prps.getProperty(Constants.ONAP_CLI_PRODUCT_VERSION); + } + return version; + } + /** * checks if cookies based auth. * @@ -103,22 +111,25 @@ public final class OnapCommandConfg { private static Map<String, String> getHeaderValues(String headerKey, Map<String, String> paramMap) { Map<String, String> mapHeaders = new HashMap<String, String> (); - Arrays.stream(prps.getProperty(headerKey) // NOSONAR - .split(",")).map(String::trim).forEach(header -> { - String headerName = prps.getProperty(headerKey+ "." + header); - String headerValue = prps.getProperty(headerKey + "." + header + ".value", null); - if (headerValue != null) { - headerValue = headerValue.replaceAll("uuid", UUID.randomUUID().toString()); - if (headerValue.contains("${")) { - String param = headerValue.substring(headerValue.indexOf("${")+2 ,headerValue.indexOf("}")); - String pattern = "${"+param+"}"; - headerValue = headerValue.replace(pattern, paramMap.getOrDefault(param, param)); + if (prps.containsKey(headerKey)) { + Arrays.stream(prps.getProperty(headerKey) // NOSONAR + .split(",")).map(String::trim).forEach(header -> { + String headerName = prps.getProperty(headerKey+ "." + header); + String headerValue = prps.getProperty(headerKey + "." + header + ".value", null); + if (headerValue != null) { + headerValue = headerValue.replaceAll("uuid", UUID.randomUUID().toString()); + if (headerValue.contains("${")) { + String param = headerValue.substring(headerValue.indexOf("${")+2 ,headerValue.indexOf("}")); + String pattern = "${"+param+"}"; + headerValue = headerValue.replace(pattern, paramMap.getOrDefault(param, param)); + } } - } - mapHeaders.put(headerName, headerValue); - }); + mapHeaders.put(headerName, headerValue); + }); + } return mapHeaders; } + public static Map<String, String> getBasicCommonHeaders(Map<String, String> paramMap) { return getHeaderValues(Constants.SERVICE_AUTH_BASIC_HTTP_HEADERS, paramMap); } diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java index 172d60bb..4a070fb3 100644 --- a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandNotFound.java @@ -24,7 +24,8 @@ public class OnapCommandNotFound extends OnapCommandException { private static final long serialVersionUID = 6676137916079057963L; - public OnapCommandNotFound(String cmdName) { - super("0x0011", "Command " + cmdName + " is not registered"); + public OnapCommandNotFound(String cmdName, String version) { + super("0x0011", "Command " + cmdName + " is not available for product version " + version + + ". so please check command name or product version set in env variable CLI_PRODUCT_VERSION or cli.product.version in onap.properties"); } } diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandRegistrationVersionMissing.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandRegistrationVersionMissing.java new file mode 100644 index 00000000..2bad5a4c --- /dev/null +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandRegistrationVersionMissing.java @@ -0,0 +1,30 @@ +/* + * 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 Not registered in Onap Command Registrar as version missing. + * + */ +public class OnapCommandRegistrationVersionMissing extends OnapCommandException { + + private static final long serialVersionUID = 5513297861129088463L; + + public OnapCommandRegistrationVersionMissing(String cmdName) { + super("0x0031", "Command " + cmdName + " version is missing"); + } +} diff --git a/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java b/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java index e9f19673..12f217ce 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/ExternalSchema.java @@ -19,8 +19,11 @@ package org.onap.cli.fw.utils; public class ExternalSchema { private String schemaName; + private String schemaURI; private String cmdName; + private String cmdVersion; private String version; + private String http = "false"; public String getSchemaName() { return schemaName; @@ -46,4 +49,32 @@ public class ExternalSchema { this.version = version; } + public String getCmdVersion() { + return cmdVersion; + } + + public void setCmdVersion(String cmdVersion) { + this.cmdVersion = cmdVersion; + } + + public String getSchemaURI() { + return schemaURI; + } + + public void setSchemaURI(String schemaURI) { + this.schemaURI = schemaURI; + } + + public String getHttp() { + return http; + } + + public void setHttp(String internal) { + this.http = internal; + } + + public boolean isHttp() { + return this.getHttp().equals("true"); + } + } diff --git a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java index 625c644b..b31b75cf 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java @@ -25,6 +25,7 @@ import org.onap.cli.fw.ad.OnapCredentials; import org.onap.cli.fw.ad.OnapService; import org.onap.cli.fw.cmd.OnapHttpCommand; import org.onap.cli.fw.cmd.OnapSwaggerCommand; +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; @@ -372,6 +373,13 @@ public class OnapCommandUtils { } break; + case VERSION: + Object version = values.get(key); + if (version != null) { + cmd.setVersion(version.toString()); + } + break; + case DESCRIPTION: Object description = values.get(key); if (description != null) { @@ -1482,7 +1490,11 @@ public class OnapCommandUtils { for (Entry<String, String> entry : resultMap.entrySet()) { String key = entry.getKey(); - resultsProcessed.put(key, replaceLineFromOutputResults(resultMap.get(key), resultHttp)); + try { + resultsProcessed.put(key, replaceLineFromOutputResults(resultMap.get(key), resultHttp)); + } catch(OnapCommandResultEmpty e) { + // pass // NOSONAR + } } return resultsProcessed; @@ -1508,9 +1520,14 @@ public class OnapCommandUtils { if (resourceMap != null && resourceMap.size() > 0) { ExternalSchema schema = new ExternalSchema(); schema.setSchemaName(resource.getFilename()); + schema.setSchemaURI(resource.getURI().toString()); schema.setCmdName((String) resourceMap.get(NAME)); Object obj = resourceMap.get(ONAP_CMD_SCHEMA_VERSION); schema.setVersion(obj.toString()); + schema.setCmdVersion(resourceMap.get(Constants.VERSION).toString()); + if (resourceMap.get(Constants.HTTP) != null) { + schema.setHttp("true"); + } extSchemas.add(schema); } } @@ -1672,12 +1689,12 @@ public class OnapCommandUtils { * @throws OnapCommandDiscoveryFailed * exception */ - public static ExternalSchema loadExternalSchemaFromJson(String cmd) throws OnapCommandException { + public static ExternalSchema loadExternalSchemaFromJson(String cmd, String version) throws OnapCommandException { List<ExternalSchema> list = loadExternalSchemasFromJson(); ExternalSchema schemaStr = null; if (list != null) { for (ExternalSchema schema : list) { - if (cmd.equals(schema.getCmdName())) { + if (cmd.equals(schema.getCmdName()) && version.equals(schema.getCmdVersion())) { schemaStr = schema; break; } |