Swagger client sdk support is removed.
Issue-Id: CLI-66
Change-Id: Ic7b23cfd72f2ae29de7ab44d2cffb35af2db701b
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
import org.onap.cli.fw.output.OnapCommandResultAttribute;
import org.onap.cli.fw.output.OnapCommandResultAttributeScope;
import org.onap.cli.fw.output.ResultType;
+import org.onap.cli.fw.utils.OnapCommandSchemaLoader;
import org.onap.cli.fw.utils.OnapCommandUtils;
/**
*/
public void initializeSchema(String schema) throws OnapCommandException {
this.setSchemaName(schema);
- OnapCommandUtils.loadSchema(this, schema, true, false);
+ OnapCommandSchemaLoader.loadSchema(this, schema, true, false);
this.initializeProfileSchema();
this.isInitialzied = true;
}
import org.onap.cli.fw.http.HttpInput;
import org.onap.cli.fw.http.HttpResult;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
+import org.onap.cli.fw.utils.OnapCommandSchemaLoader;
import org.onap.cli.fw.utils.OnapCommandUtils;
import org.onap.cli.http.mock.MockJsonGenerator;
import org.onap.cli.http.mock.MockRequest;
@Override
protected void initializeProfileSchema() throws OnapCommandException {
- OnapCommandUtils.loadHttpSchema(this, this.getSchemaName(), true, false);
+ OnapCommandSchemaLoader.loadHttpSchema(this, this.getSchemaName(), true, false);
}
@Override
import org.onap.cli.fw.OnapCommandSchema;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.input.OnapCommandParameter;
-import org.onap.cli.fw.utils.OnapCommandUtils;
+import org.onap.cli.fw.utils.OnapCommandSchemaLoader;
import java.util.ArrayList;
import java.util.List;
location = location.substring(1);
}
- List<String> error = OnapCommandUtils.loadSchema(new OnapCommand() {
+ List<String> error = OnapCommandSchemaLoader.loadSchema(new OnapCommand() {
@Override
protected void run() throws OnapCommandException {
}
}, location, true, true);
- error.addAll(OnapCommandUtils.loadHttpSchema(new OnapHttpCommand(),
+ error.addAll(OnapCommandSchemaLoader.loadHttpSchema(new OnapHttpCommand(),
location, true, true));
List<String> slNumber = new ArrayList<>();
+++ /dev/null
-/*
- * 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.cmd;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.List;
-
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.error.OnapCommandClientInitialzationFailed;
-import org.onap.cli.fw.error.OnapCommandResultInitialzationFailed;
-import org.onap.cli.fw.output.OnapCommandResultAttribute;
-import org.onap.cli.fw.run.OnapCommandExecutor;
-import org.onap.cli.fw.utils.OnapCommandUtils;
-
-public abstract class OnapSwaggerCommand extends OnapCommand {
-
-
- private OnapCommandExecutor cmdExecutor;
-
- public OnapCommandExecutor getExecutor() {
- return cmdExecutor;
- }
-
- public void setExecutor(OnapCommandExecutor executor) {
- this.cmdExecutor = executor;
- }
-
- /**
- * Initialize the given ApiClient object with AUTH token and base path.
- *
- * @param client
- * api client
- * @throws OnapCommandClientInitialzationFailed
- * client initialization failed
- */
- protected <T> T initializeApiClient(T client) throws OnapCommandClientInitialzationFailed {
- try {
- Method basePath = client.getClass().getMethod("setBasePath", String.class);
- //mrkanag set the basepath
- basePath.invoke(client, "/");
-
-// if (this.getAuthToken() != null) {
-// Method apiKey = client.getClass().getMethod("setApiKey", String.class);
-// apiKey.invoke(client, this.getAuthToken());
-// }
- return client;
- } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException
- | InvocationTargetException e) {
- throw new OnapCommandClientInitialzationFailed(this.getName(), e);
- }
- }
-
- protected <T> void initializeResult(T obj) throws OnapCommandResultInitialzationFailed {
- this.getResult().setOutput(obj);
- if (obj instanceof List) {
- this.initializeListResult((List) obj);
- } else {
- this.initializeRow(obj);
- }
- }
-
- private <T> void initializeRow(T obj) throws OnapCommandResultInitialzationFailed {
- for (OnapCommandResultAttribute row : this.getResult().getRecords()) {
- String methodName = OnapCommandUtils.formMethodNameFromAttributeName(row.getName(), "get");
- Method get;
- try {
- get = obj.getClass().getMethod(methodName);
- row.getValues().add(get.invoke(obj).toString());
- } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException
- | InvocationTargetException e) {
- throw new OnapCommandResultInitialzationFailed(this.getName(), e);
- }
- }
- }
-
- protected <T> void initializeListResult(List<T> rows) throws OnapCommandResultInitialzationFailed {
- this.getResult().setOutput(rows);
- for (T row : rows) {
- this.initializeRow(row);
- }
- }
-}
+++ /dev/null
-/*
- * 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.run;
-
-/**
- * Oclip Command executor.
- *
- */
-public class OnapCommandExecutor {
-
- private String apiName;
- private String clientName;
- private String entityName;
- private String methodName;
- private String exceptionName;
-
- public String getApi() {
- return this.apiName;
- }
-
- public void setApi(String api) {
- this.apiName = api;
- }
-
- public String getClient() {
- return this.clientName;
- }
-
- public void setClient(String client) {
- this.clientName = client;
- }
-
- public String getEntity() {
- return entityName;
- }
-
- public void setEntity(String entity) {
- this.entityName = entity;
- }
-
- public String getMethod() {
- return methodName;
- }
-
- public void setMethod(String method) {
- this.methodName = method;
- }
-
- public String getException() {
- return exceptionName;
- }
-
- public void setException(String exception) {
- this.exceptionName = exception;
- }
-
-}
--- /dev/null
+/*\r
+ * Copyright 2017 Huawei Technologies Co., Ltd.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.onap.cli.fw.utils;\r
+\r
+import static org.onap.cli.fw.conf.Constants.ATTRIBUTES;\r
+import static org.onap.cli.fw.conf.Constants.AUTH;\r
+import static org.onap.cli.fw.conf.Constants.AUTH_VALUES;\r
+import static org.onap.cli.fw.conf.Constants.BODY;\r
+import static org.onap.cli.fw.conf.Constants.COMMAND_TYPE_VALUES;\r
+import static org.onap.cli.fw.conf.Constants.DEAFULT_PARAMETER_PASSWORD;\r
+import static org.onap.cli.fw.conf.Constants.DEAFULT_PARAMETER_USERNAME;\r
+import static org.onap.cli.fw.conf.Constants.DEFAULT_PARAMETER_FILE_NAME;\r
+import static org.onap.cli.fw.conf.Constants.DEFAULT_PARAMETER_HTTP_FILE_NAME;\r
+import static org.onap.cli.fw.conf.Constants.DEFAULT_PARAMETER_NO_AUTH;\r
+import static org.onap.cli.fw.conf.Constants.DEFAULT_VALUE;\r
+import static org.onap.cli.fw.conf.Constants.DESCRIPTION;\r
+import static org.onap.cli.fw.conf.Constants.DIRECTION;\r
+import static org.onap.cli.fw.conf.Constants.HEADERS;\r
+import static org.onap.cli.fw.conf.Constants.HTTP;\r
+import static org.onap.cli.fw.conf.Constants.HTTP_MANDATORY_SECTIONS;\r
+import static org.onap.cli.fw.conf.Constants.HTTP_SECTIONS;\r
+import static org.onap.cli.fw.conf.Constants.INFO;\r
+import static org.onap.cli.fw.conf.Constants.INFO_AUTHOR;\r
+import static org.onap.cli.fw.conf.Constants.INFO_PARAMS_LIST;\r
+import static org.onap.cli.fw.conf.Constants.INFO_PARAMS_MANDATORY_LIST;\r
+import static org.onap.cli.fw.conf.Constants.INFO_PRODUCT;\r
+import static org.onap.cli.fw.conf.Constants.INFO_SERVICE;\r
+import static org.onap.cli.fw.conf.Constants.INFO_TYPE;\r
+import static org.onap.cli.fw.conf.Constants.INPUT_PARAMS_LIST;\r
+import static org.onap.cli.fw.conf.Constants.INPUT_PARAMS_MANDATORY_LIST;\r
+import static org.onap.cli.fw.conf.Constants.IS_INCLUDE;\r
+import static org.onap.cli.fw.conf.Constants.IS_OPTIONAL;\r
+import static org.onap.cli.fw.conf.Constants.IS_SECURED;\r
+import static org.onap.cli.fw.conf.Constants.LONG_OPTION;\r
+import static org.onap.cli.fw.conf.Constants.METHOD_TYPE;\r
+import static org.onap.cli.fw.conf.Constants.MODE;\r
+import static org.onap.cli.fw.conf.Constants.MODE_VALUES;\r
+import static org.onap.cli.fw.conf.Constants.MULTIPART_ENTITY_NAME;\r
+import static org.onap.cli.fw.conf.Constants.NAME;\r
+import static org.onap.cli.fw.conf.Constants.OPEN_CLI_SCHEMA_VERSION;\r
+import static org.onap.cli.fw.conf.Constants.PARAMETERS;\r
+import static org.onap.cli.fw.conf.Constants.QUERIES;\r
+import static org.onap.cli.fw.conf.Constants.REQUEST;\r
+import static org.onap.cli.fw.conf.Constants.RESULTS;\r
+import static org.onap.cli.fw.conf.Constants.RESULT_MAP;\r
+import static org.onap.cli.fw.conf.Constants.RESULT_PARAMS_LIST;\r
+import static org.onap.cli.fw.conf.Constants.RESULT_PARAMS_MANDATORY_LIST;\r
+import static org.onap.cli.fw.conf.Constants.SAMPLE_RESPONSE;\r
+import static org.onap.cli.fw.conf.Constants.SCHEMA_PATH_PATERN;\r
+import static org.onap.cli.fw.conf.Constants.SCOPE;\r
+import static org.onap.cli.fw.conf.Constants.SERVICE;\r
+import static org.onap.cli.fw.conf.Constants.SERVICE_PARAMS_LIST;\r
+import static org.onap.cli.fw.conf.Constants.SERVICE_PARAMS_MANDATORY_LIST;\r
+import static org.onap.cli.fw.conf.Constants.SHORT_OPTION;\r
+import static org.onap.cli.fw.conf.Constants.SUCCESS_CODES;\r
+import static org.onap.cli.fw.conf.Constants.TOP_LEVEL_MANDATORY_LIST;\r
+import static org.onap.cli.fw.conf.Constants.TOP_LEVEL_PARAMS_LIST;\r
+import static org.onap.cli.fw.conf.Constants.TYPE;\r
+import static org.onap.cli.fw.conf.Constants.URI;\r
+import static org.onap.cli.fw.conf.Constants.VERSION;\r
+\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.HashMap;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.onap.cli.fw.OnapCommand;\r
+import org.onap.cli.fw.ad.OnapService;\r
+import org.onap.cli.fw.cmd.CommandType;\r
+import org.onap.cli.fw.cmd.OnapHttpCommand;\r
+import org.onap.cli.fw.conf.OnapCommandConfg;\r
+import org.onap.cli.fw.error.OnapCommandException;\r
+import org.onap.cli.fw.error.OnapCommandInvalidSchema;\r
+import org.onap.cli.fw.error.OnapCommandInvalidSchemaVersion;\r
+import org.onap.cli.fw.error.OnapCommandParameterNameConflict;\r
+import org.onap.cli.fw.error.OnapCommandParameterOptionConflict;\r
+import org.onap.cli.fw.error.OnapCommandSchemaNotFound;\r
+import org.onap.cli.fw.info.OnapCommandInfo;\r
+import org.onap.cli.fw.input.OnapCommandParameter;\r
+import org.onap.cli.fw.input.ParameterType;\r
+import org.onap.cli.fw.output.OnapCommandResult;\r
+import org.onap.cli.fw.output.OnapCommandResultAttribute;\r
+import org.onap.cli.fw.output.OnapCommandResultAttributeScope;\r
+import org.onap.cli.fw.output.PrintDirection;\r
+import org.springframework.core.io.Resource;\r
+import org.yaml.snakeyaml.Yaml;\r
+\r
+public class OnapCommandSchemaLoader {\r
+\r
+ /**\r
+ * Validates schema version.\r
+ *\r
+ * @param schemaName schema name\r
+ * @param version schema version\r
+ * @return map\r
+ * @throws OnapCommandInvalidSchemaVersion invalid schema version exception\r
+ * @throws OnapCommandInvalidSchema invalid schema\r
+ * @throws OnapCommandSchemaNotFound schema not found\r
+ */\r
+ public static Map<String, ?> validateSchemaVersion(String schemaName, String version) throws OnapCommandException {\r
+ InputStream inputStream = OnapCommandUtils.class.getClassLoader().getResourceAsStream(schemaName);\r
+ \r
+ try {\r
+ Resource resource = OnapCommandUtils.findResource(schemaName, SCHEMA_PATH_PATERN);\r
+ \r
+ if (resource != null) {\r
+ inputStream = resource.getInputStream();\r
+ }\r
+ \r
+ } catch (IOException e) {\r
+ throw new OnapCommandSchemaNotFound(schemaName, e);\r
+ }\r
+ if (inputStream == null) {\r
+ inputStream = OnapCommandUtils.loadSchemaFromFile(schemaName);\r
+ }\r
+ \r
+ Map<String, ?> values = null;\r
+ try {\r
+ values = (Map<String, ?>) new Yaml().load(inputStream);\r
+ } catch (Exception e) {\r
+ throw new OnapCommandInvalidSchema(schemaName, e);\r
+ }\r
+ String schemaVersion = "";\r
+ if (values.keySet().contains(OPEN_CLI_SCHEMA_VERSION)) {\r
+ Object obj = values.get(OPEN_CLI_SCHEMA_VERSION);\r
+ schemaVersion = obj.toString();\r
+ }\r
+ \r
+ if (!version.equals(schemaVersion)) {\r
+ throw new OnapCommandInvalidSchemaVersion(schemaVersion);\r
+ }\r
+ \r
+ return values;\r
+ }\r
+\r
+ /**\r
+ * Retrieve OnapCommand from schema.\r
+ *\r
+ * @param cmd OnapCommand\r
+ * @param schemaName schema name\r
+ * @param includeDefault include if default\r
+ * @param validateSchema flag to represent validation\r
+ * @throws OnapCommandException on error\r
+ */\r
+ public static List<String> loadSchema(OnapCommand cmd, String schemaName, boolean includeDefault,\r
+ boolean validateSchema) throws OnapCommandException {\r
+ try {\r
+ List<String> errors = new ArrayList<>();\r
+ if (includeDefault) {\r
+ Map<String, ?> defaultParameterMap = includeDefault ?\r
+ validateSchemaVersion(DEFAULT_PARAMETER_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>();\r
+ errors.addAll(OnapCommandSchemaLoader.parseSchema(cmd, defaultParameterMap, validateSchema));\r
+ }\r
+ \r
+ Map<String, List<Map<String, String>>> commandYamlMap =\r
+ (Map<String, List<Map<String, String>>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion());\r
+ \r
+ errors.addAll(OnapCommandSchemaLoader.parseSchema(cmd, commandYamlMap, validateSchema));\r
+ \r
+ return errors;\r
+ } catch (OnapCommandException e) {\r
+ throw e;\r
+ } catch (Exception e) {\r
+ throw new OnapCommandInvalidSchema(schemaName, e);\r
+ }\r
+ }\r
+\r
+ public static List<String> loadHttpSchema(OnapHttpCommand cmd, String schemaName, boolean includeDefault,\r
+ boolean validateSchema) throws OnapCommandException {\r
+ try {\r
+ List<String> errors = new ArrayList<>();\r
+ if (includeDefault) {\r
+ Map<String, ?> defaultParameterMap = includeDefault ?\r
+ validateSchemaVersion(DEFAULT_PARAMETER_HTTP_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>();\r
+ errors.addAll(OnapCommandSchemaLoader.parseSchema(cmd, defaultParameterMap, validateSchema));\r
+ }\r
+ \r
+ Map<String, List<Map<String, String>>> commandYamlMap =\r
+ (Map<String, List<Map<String, String>>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion());\r
+ \r
+ errors.addAll(OnapCommandSchemaLoader.parseHttpSchema(cmd, commandYamlMap, validateSchema));\r
+ \r
+ return errors;\r
+ \r
+ } catch (OnapCommandException e) {\r
+ throw e;\r
+ } catch (Exception e) {\r
+ throw new OnapCommandInvalidSchema(schemaName, e);\r
+ }\r
+ }\r
+\r
+ static List<String> parseSchema(OnapCommand cmd,\r
+ final Map<String, ?> values,\r
+ boolean validate) throws OnapCommandException {\r
+ \r
+ List<String> exceptionList = new ArrayList<>();\r
+ List<String> shortOptions = new ArrayList<>();\r
+ List<String> longOptions = new ArrayList<>();\r
+ \r
+ if (validate) {\r
+ OnapCommandUtils.validateTags(exceptionList, (Map<String, Object>) values, OnapCommandConfg.getSchemaAttrInfo(TOP_LEVEL_PARAMS_LIST),\r
+ OnapCommandConfg.getSchemaAttrInfo(TOP_LEVEL_MANDATORY_LIST), "root level");\r
+ }\r
+ \r
+ \r
+ List<String> sections = Arrays.asList(NAME, DESCRIPTION, INFO, PARAMETERS, RESULTS);\r
+ \r
+ for (String key : sections) {\r
+ \r
+ switch (key) {\r
+ case NAME:\r
+ Object val = values.get(key);\r
+ if (val != null) {\r
+ cmd.setName(val.toString());\r
+ }\r
+ break;\r
+ \r
+ case DESCRIPTION:\r
+ Object description = values.get(key);\r
+ if (description != null) {\r
+ cmd.setDescription(description.toString());\r
+ }\r
+ break;\r
+ \r
+ case INFO:\r
+ Map<String, String> infoMap = (Map<String, String>) values.get(key);\r
+ \r
+ if (infoMap != null) {\r
+ if (validate) {\r
+ OnapCommandUtils.validateTags(exceptionList, (Map<String, Object>) values.get(key),\r
+ OnapCommandConfg.getSchemaAttrInfo(INFO_PARAMS_LIST),\r
+ OnapCommandConfg.getSchemaAttrInfo(INFO_PARAMS_MANDATORY_LIST), INFO);\r
+ \r
+ HashMap<String, String> validationMap = new HashMap<>();\r
+ validationMap.put(INFO_TYPE, COMMAND_TYPE_VALUES);\r
+ \r
+ for (String secKey : validationMap.keySet()) {\r
+ if (infoMap.containsKey(secKey)) {\r
+ Object obj = infoMap.get(secKey);\r
+ if (obj == null) {\r
+ exceptionList.add("Attribute '" + secKey + "' under '" + INFO + "' is empty");\r
+ } else {\r
+ String value = String.valueOf(obj);\r
+ if (!OnapCommandConfg.getSchemaAttrInfo(validationMap.get(secKey)).contains(value)) {\r
+ exceptionList.add("Attribute '" + secKey + "' contains invalid value. Valide values are "\r
+ + OnapCommandConfg.getSchemaAttrInfo(validationMap.get(key))); //\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ OnapCommandInfo info = new OnapCommandInfo();\r
+ \r
+ for (Map.Entry<String, String> entry1 : infoMap.entrySet()) {\r
+ String key1 = entry1.getKey();\r
+ \r
+ switch (key1) {\r
+ case INFO_PRODUCT:\r
+ info.setProduct(infoMap.get(key1));\r
+ break;\r
+ \r
+ case INFO_SERVICE:\r
+ info.setService(infoMap.get(key1).toString());\r
+ break;\r
+ \r
+ case INFO_TYPE:\r
+ Object obj = infoMap.get(key1);\r
+ info.setCommandType(CommandType.get(obj.toString()));\r
+ break;\r
+ \r
+ case INFO_AUTHOR:\r
+ Object mode = infoMap.get(key1);\r
+ info.setAuthor(mode.toString());\r
+ break;\r
+ }\r
+ }\r
+ \r
+ cmd.setInfo(info);\r
+ }\r
+ break;\r
+ \r
+ case PARAMETERS:\r
+ \r
+ List<Map<String, String>> parameters = (List) values.get(key);\r
+ \r
+ if (parameters != null) {\r
+ Set<String> names = new HashSet<>();\r
+ \r
+ //To support overriding of the parameters, if command is already\r
+ //having the same named parameters, means same parameter is\r
+ //Overridden from included template into current template\r
+ Set<String> existingParamNames = cmd.getParametersMap().keySet();\r
+ \r
+ for (Map<String, String> parameter : parameters) {\r
+ boolean isOverriding = false;\r
+ OnapCommandParameter param = new OnapCommandParameter();\r
+ \r
+ //Override the parameters from its base such as default parameters list\r
+ if (existingParamNames.contains(parameter.getOrDefault(NAME, ""))) {\r
+ param = cmd.getParametersMap().get(parameter.getOrDefault(NAME, ""));\r
+ isOverriding = true;\r
+ }\r
+ \r
+ if (validate) {\r
+ OnapCommandUtils.validateTags(exceptionList, parameter, OnapCommandConfg.getSchemaAttrInfo(INPUT_PARAMS_LIST),\r
+ OnapCommandConfg.getSchemaAttrInfo(INPUT_PARAMS_MANDATORY_LIST), PARAMETERS);\r
+ }\r
+ \r
+ for (Map.Entry<String, String> entry1 : parameter.entrySet()) {\r
+ String key2 = entry1.getKey();\r
+ \r
+ switch (key2) {\r
+ case NAME:\r
+ if (names.contains(parameter.get(key2))) {\r
+ OnapCommandUtils.throwOrCollect(new OnapCommandParameterNameConflict(parameter.get(key2)), exceptionList, validate);\r
+ } else {\r
+ names.add(parameter.get(key2));\r
+ }\r
+ \r
+ param.setName(parameter.get(key2));\r
+ break;\r
+ \r
+ case DESCRIPTION:\r
+ param.setDescription(parameter.get(key2));\r
+ break;\r
+ \r
+ case SHORT_OPTION:\r
+ if (shortOptions.contains(parameter.get(key2))) {\r
+ OnapCommandUtils.throwOrCollect(new OnapCommandParameterOptionConflict(parameter.get(key2)), exceptionList, validate);\r
+ }\r
+ shortOptions.add(parameter.get(key2));\r
+ param.setShortOption(parameter.get(key2));\r
+ break;\r
+ \r
+ case LONG_OPTION:\r
+ if (longOptions.contains(parameter.get(key2))) {\r
+ OnapCommandUtils.throwOrCollect(new OnapCommandParameterOptionConflict(parameter.get(key2)), exceptionList, validate);\r
+ }\r
+ longOptions.add(parameter.get(key2));\r
+ param.setLongOption(parameter.get(key2));\r
+ break;\r
+ \r
+ case DEFAULT_VALUE:\r
+ Object obj = parameter.get(key2);\r
+ param.setDefaultValue(obj.toString());\r
+ break;\r
+ \r
+ case TYPE:\r
+ try {\r
+ param.setParameterType(ParameterType.get(parameter.get(key2)));\r
+ } catch (OnapCommandException ex) {\r
+ OnapCommandUtils.throwOrCollect(ex, exceptionList, validate);\r
+ }\r
+ break;\r
+ \r
+ case IS_OPTIONAL:\r
+ if (validate) {\r
+ if (!OnapCommandUtils.validateBoolean(String.valueOf(parameter.get(key2)))) {\r
+ exceptionList.add(OnapCommandUtils.invalidBooleanValueMessage(parameter.get(NAME),\r
+ IS_SECURED, parameter.get(key2)));\r
+ }\r
+ }\r
+ if ("true".equalsIgnoreCase(String.valueOf(parameter.get(key2)))) {\r
+ param.setOptional(true);\r
+ } else {\r
+ param.setOptional(false);\r
+ }\r
+ break;\r
+ \r
+ case IS_SECURED:\r
+ if (validate) {\r
+ if (!OnapCommandUtils.validateBoolean(String.valueOf(parameter.get(key2)))) {\r
+ exceptionList.add(OnapCommandUtils.invalidBooleanValueMessage(parameter.get(NAME),\r
+ IS_SECURED, parameter.get(key2)));\r
+ }\r
+ }\r
+ \r
+ if ("true".equalsIgnoreCase(String.valueOf(parameter.get(key2)))) {\r
+ param.setSecured(true);\r
+ } else {\r
+ param.setSecured(false);\r
+ }\r
+ break;\r
+ \r
+ case IS_INCLUDE:\r
+ if (validate) {\r
+ if (!OnapCommandUtils.validateBoolean(String.valueOf(parameter.get(key2)))) {\r
+ exceptionList.add(OnapCommandUtils.invalidBooleanValueMessage(parameter.get(NAME),\r
+ IS_INCLUDE, parameter.get(key2)));\r
+ }\r
+ }\r
+ \r
+ if ("true".equalsIgnoreCase(String.valueOf(parameter.get(key2)))) {\r
+ param.setInclude(true);\r
+ } else {\r
+ param.setInclude(false);\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ \r
+ if ( !isOverriding) {\r
+ cmd.getParameters().add(param);\r
+ } else {\r
+ cmd.getParametersMap().replace(param.getName(), param);\r
+ }\r
+ }\r
+ }\r
+ break;\r
+ \r
+ case RESULTS:\r
+ Map<String, ?> valueMap = (Map<String, ?>) values.get(key);\r
+ if (valueMap != null) {\r
+ OnapCommandResult result = new OnapCommandResult();\r
+ for (Map.Entry<String, ?> entry1 : valueMap.entrySet()) {\r
+ String key3 = entry1.getKey();\r
+ \r
+ switch (key3) {\r
+ case DIRECTION:\r
+ try {\r
+ result.setPrintDirection(PrintDirection.get((String) valueMap.get(key3)));\r
+ } catch (OnapCommandException ex) {\r
+ OnapCommandUtils.throwOrCollect(ex, exceptionList, validate);\r
+ }\r
+ break;\r
+ \r
+ case ATTRIBUTES:\r
+ List<Map<String, String>> attrs = (ArrayList) valueMap.get(key3);\r
+ \r
+ for (Map<String, String> map : attrs) {\r
+ OnapCommandResultAttribute attr = new OnapCommandResultAttribute();\r
+ if (validate) {\r
+ OnapCommandUtils.validateTags(exceptionList, map, OnapCommandConfg.getSchemaAttrInfo(RESULT_PARAMS_LIST),\r
+ OnapCommandConfg.getSchemaAttrInfo(RESULT_PARAMS_MANDATORY_LIST), ATTRIBUTES);\r
+ }\r
+ \r
+ Set<String> resultParamNames = new HashSet<>();\r
+ \r
+ for (Map.Entry<String, String> entry4 : map.entrySet()) {\r
+ String key4 = entry4.getKey();\r
+ \r
+ switch (key4) {\r
+ case NAME:\r
+ if (resultParamNames.contains(map.get(key4))) {\r
+ exceptionList.add("Attribute name='" + map.get(key4) + "' under '"\r
+ + ATTRIBUTES + ":' is already used, Take different one.");\r
+ \r
+ } else {\r
+ attr.setName(map.get(key4));\r
+ resultParamNames.add(map.get(key4));\r
+ }\r
+ break;\r
+ \r
+ case DESCRIPTION:\r
+ attr.setDescription(map.get(key4));\r
+ break;\r
+ \r
+ case SCOPE:\r
+ try {\r
+ attr.setScope(OnapCommandResultAttributeScope.get(map.get(key4)));\r
+ } catch (OnapCommandException ex) {\r
+ OnapCommandUtils.throwOrCollect(ex, exceptionList, validate);\r
+ }\r
+ break;\r
+ \r
+ case TYPE:\r
+ try {\r
+ attr.setType(ParameterType.get(map.get(key4)));\r
+ } catch (OnapCommandException ex) {\r
+ OnapCommandUtils.throwOrCollect(ex, exceptionList, validate);\r
+ }\r
+ break;\r
+ \r
+ case DEFAULT_VALUE:\r
+ Object obj = map.get(key4);\r
+ attr.setDefaultValue(obj.toString());\r
+ break;\r
+ \r
+ case IS_SECURED:\r
+ if (validate) {\r
+ if (!OnapCommandUtils.validateBoolean(String.valueOf(map.get(key4)))) {\r
+ exceptionList.add(OnapCommandUtils.invalidBooleanValueMessage(ATTRIBUTES,\r
+ IS_SECURED, map.get(key4)));\r
+ }\r
+ }\r
+ if ("true".equals(String.valueOf(map.get(key4)))) {\r
+ attr.setSecured(true);\r
+ } else {\r
+ attr.setSecured(false);\r
+ }\r
+ break;\r
+ }\r
+ \r
+ }\r
+ result.getRecords().add(attr);\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ cmd.setResult(result);\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ return exceptionList;\r
+ }\r
+\r
+ /**\r
+ * Load the schema.\r
+ *\r
+ * @param cmd\r
+ * OnapHttpCommand\r
+ * @param schemaName\r
+ * schema name\r
+ * @throws OnapCommandException\r
+ * on error\r
+ */\r
+ static ArrayList<String> parseHttpSchema(OnapHttpCommand cmd,\r
+ final Map<String, ?> values,\r
+ boolean validate) throws OnapCommandException {\r
+ ArrayList<String> errorList = new ArrayList<>();\r
+ try {\r
+ Map<String, ?> valMap = (Map<String, ?>) values.get(HTTP);\r
+ \r
+ if (valMap != null) {\r
+ if (validate) {\r
+ OnapCommandUtils.validateTags(errorList, valMap, OnapCommandConfg.getSchemaAttrInfo(HTTP_SECTIONS),\r
+ OnapCommandConfg.getSchemaAttrInfo(HTTP_MANDATORY_SECTIONS), PARAMETERS);\r
+ errorList.addAll(OnapCommandUtils.validateHttpSchemaSection(values));\r
+ }\r
+ for (Map.Entry<String, ?> entry1 : valMap.entrySet()) {\r
+ String key1 = entry1.getKey();\r
+ \r
+ switch (key1) {\r
+ case REQUEST:\r
+ Map<String, ?> map = (Map<String, ?>) valMap.get(key1);\r
+ \r
+ for (Map.Entry<String, ?> entry2 : map.entrySet()) {\r
+ try {\r
+ String key2 = entry2.getKey();\r
+ \r
+ switch (key2) {\r
+ case URI:\r
+ Object obj = map.get(key2);\r
+ cmd.getInput().setUri(obj.toString());\r
+ break;\r
+ case METHOD_TYPE:\r
+ Object method = map.get(key2);\r
+ cmd.getInput().setMethod(method.toString());\r
+ break;\r
+ case BODY:\r
+ Object body = map.get(key2);\r
+ cmd.getInput().setBody(body.toString());\r
+ break;\r
+ case HEADERS:\r
+ Map<String, String> head = (Map<String, String>) map.get(key2);\r
+ cmd.getInput().setReqHeaders(head);\r
+ break;\r
+ case QUERIES:\r
+ Map<String, String> query = (Map<String, String>) map.get(key2);\r
+ \r
+ cmd.getInput().setReqQueries(query);\r
+ break;\r
+ case MULTIPART_ENTITY_NAME:\r
+ Object multipartEntityName = map.get(key2);\r
+ cmd.getInput().setMultipartEntityName(multipartEntityName.toString());\r
+ break;\r
+ }\r
+ }catch (Exception ex) {\r
+ OnapCommandUtils.throwOrCollect(new OnapCommandInvalidSchema(cmd.getSchemaName(), ex), errorList, validate);\r
+ }\r
+ }\r
+ break;\r
+ \r
+ case SERVICE:\r
+ Map<String, String> serviceMap = (Map<String, String>) valMap.get(key1);\r
+ \r
+ if (serviceMap != null) {\r
+ if (validate) {\r
+ OnapCommandUtils.validateTags(errorList, (Map<String, Object>) valMap.get(key1),\r
+ OnapCommandConfg.getSchemaAttrInfo(SERVICE_PARAMS_LIST),\r
+ OnapCommandConfg.getSchemaAttrInfo(SERVICE_PARAMS_MANDATORY_LIST), SERVICE);\r
+ \r
+ HashMap<String, String> validationMap = new HashMap<>();\r
+ validationMap.put(AUTH, AUTH_VALUES);\r
+ validationMap.put(MODE, MODE_VALUES);\r
+ \r
+ for (String secKey : validationMap.keySet()) {\r
+ if (serviceMap.containsKey(secKey)) {\r
+ Object obj = serviceMap.get(secKey);\r
+ if (obj == null) {\r
+ errorList.add("Attribute '" + secKey + "' under '" + SERVICE + "' is empty");\r
+ } else {\r
+ String value = String.valueOf(obj);\r
+ if (!OnapCommandConfg.getSchemaAttrInfo(validationMap.get(secKey)).contains(value)) {\r
+ errorList.add("Attribute '" + secKey + "' contains invalid value. Valide values are "\r
+ + OnapCommandConfg.getSchemaAttrInfo(validationMap.get(key1))); //\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ OnapService srv = new OnapService();\r
+ \r
+ for (Map.Entry<String, String> entry : serviceMap.entrySet()) {\r
+ String key = entry.getKey();\r
+ \r
+ switch (key) {\r
+ case NAME:\r
+ srv.setName(serviceMap.get(key));\r
+ break;\r
+ \r
+ case VERSION:\r
+ srv.setVersion(serviceMap.get(key).toString());\r
+ break;\r
+ \r
+ case AUTH:\r
+ Object obj = serviceMap.get(key);\r
+ srv.setAuthType(obj.toString());\r
+ \r
+ //On None type, username, password and no_auth are invalid\r
+ if (srv.isNoAuth()) {\r
+ cmd.getParametersMap().get(DEAFULT_PARAMETER_USERNAME).setInclude(false);\r
+ cmd.getParametersMap().get(DEAFULT_PARAMETER_PASSWORD).setInclude(false);\r
+ cmd.getParametersMap().get(DEFAULT_PARAMETER_NO_AUTH).setInclude(false);\r
+ }\r
+ break;\r
+ \r
+ case MODE:\r
+ Object mode = serviceMap.get(key);\r
+ srv.setMode(mode.toString());\r
+ break;\r
+ }\r
+ }\r
+ cmd.setService(srv);\r
+ }\r
+ break;\r
+ \r
+ case SUCCESS_CODES:\r
+ if (validate) {\r
+ OnapCommandUtils.validateHttpSccessCodes(errorList, (List<Object>) valMap.get(key1));\r
+ }\r
+ cmd.setSuccessStatusCodes((ArrayList) valMap.get(key1));\r
+ break;\r
+ \r
+ case RESULT_MAP:\r
+ if (validate) {\r
+ OnapCommandUtils.validateHttpResultMap(errorList, values);\r
+ }\r
+ cmd.setResultMap((Map<String, String>) valMap.get(key1));\r
+ break;\r
+ \r
+ case SAMPLE_RESPONSE:\r
+ // (mrkanag) implement sample response handling\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }catch (OnapCommandException e) {\r
+ OnapCommandUtils.throwOrCollect(e, errorList, validate);\r
+ }\r
+ return errorList;\r
+ }\r
+\r
+}\r
package org.onap.cli.fw.utils;
-import static org.onap.cli.fw.conf.Constants.API;
import static org.onap.cli.fw.conf.Constants.ATTRIBUTES;
-import static org.onap.cli.fw.conf.Constants.AUTH;
-import static org.onap.cli.fw.conf.Constants.AUTH_VALUES;
import static org.onap.cli.fw.conf.Constants.BODY;
import static org.onap.cli.fw.conf.Constants.BOOLEAN_VALUE;
-import static org.onap.cli.fw.conf.Constants.CLIENT;
-import static org.onap.cli.fw.conf.Constants.COMMAND_TYPE_VALUES;
import static org.onap.cli.fw.conf.Constants.DATA_DIRECTORY;
import static org.onap.cli.fw.conf.Constants.DATA_PATH_JSON_PATTERN;
-import static org.onap.cli.fw.conf.Constants.DEAFULT_PARAMETER_PASSWORD;
-import static org.onap.cli.fw.conf.Constants.DEAFULT_PARAMETER_USERNAME;
-import static org.onap.cli.fw.conf.Constants.DEFAULT_PARAMETER_FILE_NAME;
-import static org.onap.cli.fw.conf.Constants.DEFAULT_PARAMETER_HTTP_FILE_NAME;
-import static org.onap.cli.fw.conf.Constants.DEFAULT_PARAMETER_NO_AUTH;
-import static org.onap.cli.fw.conf.Constants.DEFAULT_VALUE;
import static org.onap.cli.fw.conf.Constants.DESCRIPTION;
-import static org.onap.cli.fw.conf.Constants.DIRECTION;
import static org.onap.cli.fw.conf.Constants.DISCOVERY_FILE;
-import static org.onap.cli.fw.conf.Constants.ENTITY;
-import static org.onap.cli.fw.conf.Constants.EXCEPTION;
-import static org.onap.cli.fw.conf.Constants.EXECUTOR;
import static org.onap.cli.fw.conf.Constants.HEADERS;
import static org.onap.cli.fw.conf.Constants.HTTP;
import static org.onap.cli.fw.conf.Constants.HTTP_BODY_FAILED_PARSING;
import static org.onap.cli.fw.conf.Constants.HTTP_BODY_JSON_EMPTY;
-import static org.onap.cli.fw.conf.Constants.HTTP_MANDATORY_SECTIONS;
import static org.onap.cli.fw.conf.Constants.HTTP_METHODS;
import static org.onap.cli.fw.conf.Constants.HTTP_REQUEST_MANDATORY_PARAMS;
import static org.onap.cli.fw.conf.Constants.HTTP_REQUEST_PARAMS;
-import static org.onap.cli.fw.conf.Constants.HTTP_SECTIONS;
import static org.onap.cli.fw.conf.Constants.HTTP_SUCCESS_CODE_INVALID;
-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_PARAMS_LIST;
-import static org.onap.cli.fw.conf.Constants.INFO_PARAMS_MANDATORY_LIST;
-import static org.onap.cli.fw.conf.Constants.INFO_PRODUCT;
-import static org.onap.cli.fw.conf.Constants.INFO_SERVICE;
-import static org.onap.cli.fw.conf.Constants.INFO_TYPE;
-import static org.onap.cli.fw.conf.Constants.INPUT_PARAMS_LIST;
-import static org.onap.cli.fw.conf.Constants.INPUT_PARAMS_MANDATORY_LIST;
-import static org.onap.cli.fw.conf.Constants.IS_INCLUDE;
-import static org.onap.cli.fw.conf.Constants.IS_OPTIONAL;
-import static org.onap.cli.fw.conf.Constants.IS_SECURED;
-import static org.onap.cli.fw.conf.Constants.LONG_OPTION;
import static org.onap.cli.fw.conf.Constants.METHOD;
-import static org.onap.cli.fw.conf.Constants.METHOD_TYPE;
-import static org.onap.cli.fw.conf.Constants.MODE;
-import static org.onap.cli.fw.conf.Constants.MODE_VALUES;
-import static org.onap.cli.fw.conf.Constants.MULTIPART_ENTITY_NAME;
import static org.onap.cli.fw.conf.Constants.NAME;
import static org.onap.cli.fw.conf.Constants.OPEN_CLI_SCHEMA_VERSION;
import static org.onap.cli.fw.conf.Constants.PARAMETERS;
import static org.onap.cli.fw.conf.Constants.REQUEST;
import static org.onap.cli.fw.conf.Constants.RESULTS;
import static org.onap.cli.fw.conf.Constants.RESULT_MAP;
-import static org.onap.cli.fw.conf.Constants.RESULT_PARAMS_LIST;
-import static org.onap.cli.fw.conf.Constants.RESULT_PARAMS_MANDATORY_LIST;
-import static org.onap.cli.fw.conf.Constants.SAMPLE_RESPONSE;
import static org.onap.cli.fw.conf.Constants.SCHEMA_DIRECTORY;
import static org.onap.cli.fw.conf.Constants.SCHEMA_FILE_NOT_EXIST;
import static org.onap.cli.fw.conf.Constants.SCHEMA_FILE_WRONG_EXTN;
import static org.onap.cli.fw.conf.Constants.SCHEMA_PATH_PATERN;
-import static org.onap.cli.fw.conf.Constants.SCOPE;
-import static org.onap.cli.fw.conf.Constants.SERVICE;
-import static org.onap.cli.fw.conf.Constants.SERVICE_PARAMS_LIST;
-import static org.onap.cli.fw.conf.Constants.SERVICE_PARAMS_MANDATORY_LIST;
-import static org.onap.cli.fw.conf.Constants.SHORT_OPTION;
-import static org.onap.cli.fw.conf.Constants.SUCCESS_CODES;
-import static org.onap.cli.fw.conf.Constants.TOP_LEVEL_MANDATORY_LIST;
-import static org.onap.cli.fw.conf.Constants.TOP_LEVEL_PARAMS_LIST;
-import static org.onap.cli.fw.conf.Constants.TYPE;
import static org.onap.cli.fw.conf.Constants.URI;
-import static org.onap.cli.fw.conf.Constants.VERSION;
import java.io.File;
import java.io.FileInputStream;
import java.util.stream.Collectors;
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.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.OnapCommandHttpHeaderNotFound;
import org.onap.cli.fw.error.OnapCommandHttpInvalidResponseBody;
import org.onap.cli.fw.error.OnapCommandHttpInvalidResultMap;
-import org.onap.cli.fw.error.OnapCommandInvalidParameterType;
import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
-import org.onap.cli.fw.error.OnapCommandInvalidPrintDirection;
-import org.onap.cli.fw.error.OnapCommandInvalidResultAttributeScope;
import org.onap.cli.fw.error.OnapCommandInvalidSchema;
-import org.onap.cli.fw.error.OnapCommandInvalidSchemaVersion;
import org.onap.cli.fw.error.OnapCommandLoadProfileFailed;
-import org.onap.cli.fw.error.OnapCommandParameterNameConflict;
import org.onap.cli.fw.error.OnapCommandParameterNotFound;
-import org.onap.cli.fw.error.OnapCommandParameterOptionConflict;
import org.onap.cli.fw.error.OnapCommandPersistProfileFailed;
import org.onap.cli.fw.error.OnapCommandResultEmpty;
import org.onap.cli.fw.error.OnapCommandResultMapProcessingFailed;
-import org.onap.cli.fw.error.OnapCommandSchemaNotFound;
import org.onap.cli.fw.http.HttpInput;
import org.onap.cli.fw.http.HttpResult;
-import org.onap.cli.fw.info.OnapCommandInfo;
import org.onap.cli.fw.input.OnapCommandParameter;
import org.onap.cli.fw.input.ParameterType;
import org.onap.cli.fw.input.cache.Param;
import org.onap.cli.fw.output.OnapCommandResultAttributeScope;
import org.onap.cli.fw.output.PrintDirection;
import org.onap.cli.fw.output.ResultType;
-import org.onap.cli.fw.run.OnapCommandExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
}
- /**
- * Validates schema version.
- *
- * @param schemaName schema name
- * @param version schema version
- * @return map
- * @throws OnapCommandInvalidSchemaVersion invalid schema version exception
- * @throws OnapCommandInvalidSchema invalid schema
- * @throws OnapCommandSchemaNotFound schema not found
- */
- public static Map<String, ?> validateSchemaVersion(String schemaName, String version) throws OnapCommandException {
- InputStream inputStream = OnapCommandUtils.class.getClassLoader().getResourceAsStream(schemaName);
-
- try {
- Resource resource = findResource(schemaName, SCHEMA_PATH_PATERN);
-
- if (resource != null) {
- inputStream = resource.getInputStream();
- }
-
- } catch (IOException e) {
- throw new OnapCommandSchemaNotFound(schemaName, e);
- }
- if (inputStream == null) {
- inputStream = loadSchemaFromFile(schemaName);
- }
-
- Map<String, ?> values = null;
- try {
- values = (Map<String, ?>) new Yaml().load(inputStream);
- } catch (Exception e) {
- throw new OnapCommandInvalidSchema(schemaName, e);
- }
- String schemaVersion = "";
- if (values.keySet().contains(OPEN_CLI_SCHEMA_VERSION)) {
- Object obj = values.get(OPEN_CLI_SCHEMA_VERSION);
- schemaVersion = obj.toString();
- }
-
- if (!version.equals(schemaVersion)) {
- throw new OnapCommandInvalidSchemaVersion(schemaVersion);
- }
-
- return values;
- }
-
- private static InputStream loadSchemaFromFile(String schemaLocation) throws OnapCommandInvalidSchema {
+ static InputStream loadSchemaFromFile(String schemaLocation) throws OnapCommandInvalidSchema {
File schemaFile = new File(schemaLocation);
try {
FileInputStream inputFileStream = new FileInputStream(schemaFile);
}
}
- /**
- * Retrieve OnapCommand from schema.
- *
- * @param cmd OnapCommand
- * @param schemaName schema name
- * @param includeDefault include if default
- * @param validateSchema flag to represent validation
- * @throws OnapCommandException on error
- */
- public static List<String> loadSchema(OnapCommand cmd, String schemaName, boolean includeDefault,
- boolean validateSchema) throws OnapCommandException {
- try {
- List<String> errors = new ArrayList<>();
- if (includeDefault) {
- Map<String, ?> defaultParameterMap = includeDefault ?
- validateSchemaVersion(DEFAULT_PARAMETER_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>();
- errors.addAll(parseSchema(cmd, defaultParameterMap, validateSchema));
- }
-
- Map<String, List<Map<String, String>>> commandYamlMap =
- (Map<String, List<Map<String, String>>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion());
-
- errors.addAll(parseSchema(cmd, commandYamlMap, validateSchema));
-
- return errors;
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- throw new OnapCommandInvalidSchema(schemaName, e);
- }
- }
-
-
- public static List<String> loadHttpSchema(OnapHttpCommand cmd, String schemaName, boolean includeDefault,
- boolean validateSchema) throws OnapCommandException {
- try {
- List<String> errors = new ArrayList<>();
- if (includeDefault) {
- Map<String, ?> defaultParameterMap = includeDefault ?
- validateSchemaVersion(DEFAULT_PARAMETER_HTTP_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>();
- errors.addAll(parseSchema(cmd, defaultParameterMap, validateSchema));
- }
-
- Map<String, List<Map<String, String>>> commandYamlMap =
- (Map<String, List<Map<String, String>>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion());
-
- errors.addAll(parseHttpSchema(cmd, commandYamlMap, validateSchema));
-
- return errors;
-
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- throw new OnapCommandInvalidSchema(schemaName, e);
- }
- }
-
- private static List<String> parseSchema(OnapCommand cmd,
- final Map<String, ?> values,
- boolean validate) throws OnapCommandException {
-
- List<String> exceptionList = new ArrayList<>();
- List<String> shortOptions = new ArrayList<>();
- List<String> longOptions = new ArrayList<>();
-
- if (validate) {
- validateTags(exceptionList, (Map<String, Object>) values, OnapCommandConfg.getSchemaAttrInfo(TOP_LEVEL_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(TOP_LEVEL_MANDATORY_LIST), "root level");
- }
-
-
- List<String> sections = Arrays.asList(NAME, DESCRIPTION, INFO, PARAMETERS, RESULTS);
-
- for (String key : sections) {
-
- switch (key) {
- case NAME:
- Object val = values.get(key);
- if (val != null) {
- cmd.setName(val.toString());
- }
- break;
-
- case DESCRIPTION:
- Object description = values.get(key);
- if (description != null) {
- cmd.setDescription(description.toString());
- }
- break;
-
- case INFO:
- Map<String, String> infoMap = (Map<String, String>) values.get(key);
-
- if (infoMap != null) {
- if (validate) {
- validateTags(exceptionList, (Map<String, Object>) values.get(key),
- OnapCommandConfg.getSchemaAttrInfo(INFO_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(INFO_PARAMS_MANDATORY_LIST), INFO);
-
- HashMap<String, String> validationMap = new HashMap<>();
- validationMap.put(INFO_TYPE, COMMAND_TYPE_VALUES);
-
- for (String secKey : validationMap.keySet()) {
- if (infoMap.containsKey(secKey)) {
- Object obj = infoMap.get(secKey);
- if (obj == null) {
- exceptionList.add("Attribute '" + secKey + "' under '" + INFO + "' is empty");
- } else {
- String value = String.valueOf(obj);
- if (!OnapCommandConfg.getSchemaAttrInfo(validationMap.get(secKey)).contains(value)) {
- exceptionList.add("Attribute '" + secKey + "' contains invalid value. Valide values are "
- + OnapCommandConfg.getSchemaAttrInfo(validationMap.get(key))); //
- }
- }
- }
- }
- }
-
- OnapCommandInfo info = new OnapCommandInfo();
-
- for (Map.Entry<String, String> entry1 : infoMap.entrySet()) {
- String key1 = entry1.getKey();
-
- switch (key1) {
- case INFO_PRODUCT:
- info.setProduct(infoMap.get(key1));
- break;
-
- case INFO_SERVICE:
- info.setService(infoMap.get(key1).toString());
- break;
-
- case INFO_TYPE:
- Object obj = infoMap.get(key1);
- info.setCommandType(CommandType.get(obj.toString()));
- break;
-
- case INFO_AUTHOR:
- Object mode = infoMap.get(key1);
- info.setAuthor(mode.toString());
- break;
- }
- }
-
- cmd.setInfo(info);
- }
- break;
-
- case PARAMETERS:
-
- List<Map<String, String>> parameters = (List) values.get(key);
-
- if (parameters != null) {
- Set<String> names = new HashSet<>();
-
- //To support overriding of the parameters, if command is already
- //having the same named parameters, means same parameter is
- //Overridden from included template into current template
- Set<String> existingParamNames = cmd.getParametersMap().keySet();
-
- for (Map<String, String> parameter : parameters) {
- boolean isOverriding = false;
- OnapCommandParameter param = new OnapCommandParameter();
-
- //Override the parameters from its base such as default parameters list
- if (existingParamNames.contains(parameter.getOrDefault(NAME, ""))) {
- param = cmd.getParametersMap().get(parameter.getOrDefault(NAME, ""));
- isOverriding = true;
- }
-
- if (validate) {
- validateTags(exceptionList, parameter, OnapCommandConfg.getSchemaAttrInfo(INPUT_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(INPUT_PARAMS_MANDATORY_LIST), PARAMETERS);
- }
-
- for (Map.Entry<String, String> entry1 : parameter.entrySet()) {
- String key2 = entry1.getKey();
-
- switch (key2) {
- case NAME:
- if (names.contains(parameter.get(key2))) {
- throwOrCollect(new OnapCommandParameterNameConflict(parameter.get(key2)), exceptionList, validate);
- } else {
- names.add(parameter.get(key2));
- }
-
- param.setName(parameter.get(key2));
- break;
-
- case DESCRIPTION:
- param.setDescription(parameter.get(key2));
- break;
-
- case SHORT_OPTION:
- if (shortOptions.contains(parameter.get(key2))) {
- throwOrCollect(new OnapCommandParameterOptionConflict(parameter.get(key2)), exceptionList, validate);
- }
- shortOptions.add(parameter.get(key2));
- param.setShortOption(parameter.get(key2));
- break;
-
- case LONG_OPTION:
- if (longOptions.contains(parameter.get(key2))) {
- throwOrCollect(new OnapCommandParameterOptionConflict(parameter.get(key2)), exceptionList, validate);
- }
- longOptions.add(parameter.get(key2));
- param.setLongOption(parameter.get(key2));
- break;
-
- case DEFAULT_VALUE:
- Object obj = parameter.get(key2);
- param.setDefaultValue(obj.toString());
- break;
-
- case TYPE:
- try {
- param.setParameterType(ParameterType.get(parameter.get(key2)));
- } catch (OnapCommandException ex) {
- throwOrCollect(ex, exceptionList, validate);
- }
- break;
-
- case IS_OPTIONAL:
- if (validate) {
- if (!validateBoolean(String.valueOf(parameter.get(key2)))) {
- exceptionList.add(invalidBooleanValueMessage(parameter.get(NAME),
- IS_SECURED, parameter.get(key2)));
- }
- }
- if ("true".equalsIgnoreCase(String.valueOf(parameter.get(key2)))) {
- param.setOptional(true);
- } else {
- param.setOptional(false);
- }
- break;
-
- case IS_SECURED:
- if (validate) {
- if (!validateBoolean(String.valueOf(parameter.get(key2)))) {
- exceptionList.add(invalidBooleanValueMessage(parameter.get(NAME),
- IS_SECURED, parameter.get(key2)));
- }
- }
-
- if ("true".equalsIgnoreCase(String.valueOf(parameter.get(key2)))) {
- param.setSecured(true);
- } else {
- param.setSecured(false);
- }
- break;
-
- case IS_INCLUDE:
- if (validate) {
- if (!validateBoolean(String.valueOf(parameter.get(key2)))) {
- exceptionList.add(invalidBooleanValueMessage(parameter.get(NAME),
- IS_INCLUDE, parameter.get(key2)));
- }
- }
-
- if ("true".equalsIgnoreCase(String.valueOf(parameter.get(key2)))) {
- param.setInclude(true);
- } else {
- param.setInclude(false);
- }
- break;
- }
- }
-
- if ( !isOverriding) {
- cmd.getParameters().add(param);
- } else {
- cmd.getParametersMap().replace(param.getName(), param);
- }
- }
- }
- break;
-
- case RESULTS:
- Map<String, ?> valueMap = (Map<String, ?>) values.get(key);
- if (valueMap != null) {
- OnapCommandResult result = new OnapCommandResult();
- for (Map.Entry<String, ?> entry1 : valueMap.entrySet()) {
- String key3 = entry1.getKey();
-
- switch (key3) {
- case DIRECTION:
- try {
- result.setPrintDirection(PrintDirection.get((String) valueMap.get(key3)));
- } catch (OnapCommandException ex) {
- throwOrCollect(ex, exceptionList, validate);
- }
- break;
-
- case ATTRIBUTES:
- List<Map<String, String>> attrs = (ArrayList) valueMap.get(key3);
-
- for (Map<String, String> map : attrs) {
- OnapCommandResultAttribute attr = new OnapCommandResultAttribute();
- if (validate) {
- validateTags(exceptionList, map, OnapCommandConfg.getSchemaAttrInfo(RESULT_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(RESULT_PARAMS_MANDATORY_LIST), ATTRIBUTES);
- }
-
- Set<String> resultParamNames = new HashSet<>();
-
- for (Map.Entry<String, String> entry4 : map.entrySet()) {
- String key4 = entry4.getKey();
-
- switch (key4) {
- case NAME:
- if (resultParamNames.contains(map.get(key4))) {
- exceptionList.add("Attribute name='" + map.get(key4) + "' under '"
- + ATTRIBUTES + ":' is already used, Take different one.");
-
- } else {
- attr.setName(map.get(key4));
- resultParamNames.add(map.get(key4));
- }
- break;
-
- case DESCRIPTION:
- attr.setDescription(map.get(key4));
- break;
-
- case SCOPE:
- try {
- attr.setScope(OnapCommandResultAttributeScope.get(map.get(key4)));
- } catch (OnapCommandException ex) {
- throwOrCollect(ex, exceptionList, validate);
- }
- break;
-
- case TYPE:
- try {
- attr.setType(ParameterType.get(map.get(key4)));
- } catch (OnapCommandException ex) {
- throwOrCollect(ex, exceptionList, validate);
- }
- break;
-
- case DEFAULT_VALUE:
- Object obj = map.get(key4);
- attr.setDefaultValue(obj.toString());
- break;
-
- case IS_SECURED:
- if (validate) {
- if (!validateBoolean(String.valueOf(map.get(key4)))) {
- exceptionList.add(invalidBooleanValueMessage(ATTRIBUTES,
- IS_SECURED, map.get(key4)));
- }
- }
- if ("true".equals(String.valueOf(map.get(key4)))) {
- attr.setSecured(true);
- } else {
- attr.setSecured(false);
- }
- break;
- }
-
- }
- result.getRecords().add(attr);
- }
- break;
- }
- }
- cmd.setResult(result);
- }
- break;
- }
- }
- return exceptionList;
- }
-
- /**
- * Load the schema.
- *
- * @param cmd
- * OnapSwaggerBasedCommand
- * @param schemaName
- * schema name
- * @throws OnapCommandParameterNameConflict
- * param name conflict exception
- * @throws OnapCommandParameterOptionConflict
- * param option conflict exception
- * @throws OnapCommandInvalidParameterType
- * invalid param type exception
- * @throws OnapCommandInvalidPrintDirection
- * invalid print direction exception
- * @throws OnapCommandInvalidResultAttributeScope
- * invalid scope exception
- * @throws OnapCommandSchemaNotFound
- * schema not found
- * @throws OnapCommandInvalidSchema
- * invalid schema
- * @throws OnapCommandInvalidSchemaVersion
- * invalid schema version
- */
- public static void loadSchema(OnapSwaggerCommand cmd, String schemaName) throws OnapCommandException {
- try {
- Map<String, ?> values = (Map<String, ?>) validateSchemaVersion(schemaName, cmd.getSchemaVersion());
- Map<String, String> valueMap = (Map<String, String>) values.get(EXECUTOR);
- OnapCommandExecutor exec = new OnapCommandExecutor();
-
- for (Map.Entry<String, String> entry1 : valueMap.entrySet()) {
- String key1 = entry1.getKey();
-
- if (API.equals(key1)) {
- exec.setApi(valueMap.get(key1));
- } else if (CLIENT.equals(key1)) {
- exec.setClient(valueMap.get(key1));
- } else if (ENTITY.equals(key1)) {
- exec.setEntity(valueMap.get(key1));
- } else if (EXCEPTION.equals(key1)) {
- exec.setException(valueMap.get(key1));
- } else if (METHOD.equals(key1)) {
- exec.setMethod(valueMap.get(key1));
- }
- }
-
- cmd.setExecutor(exec);
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- throw new OnapCommandInvalidSchema(schemaName, e);
- }
- }
-
- /**
- * Load the schema.
- *
- * @param cmd
- * OnapHttpCommand
- * @param schemaName
- * schema name
- * @throws OnapCommandException
- * on error
- */
- private static ArrayList<String> parseHttpSchema(OnapHttpCommand cmd,
- final Map<String, ?> values,
- boolean validate) throws OnapCommandException {
- ArrayList<String> errorList = new ArrayList<>();
- try {
- Map<String, ?> valMap = (Map<String, ?>) values.get(HTTP);
-
- if (valMap != null) {
- if (validate) {
- validateTags(errorList, valMap, OnapCommandConfg.getSchemaAttrInfo(HTTP_SECTIONS),
- OnapCommandConfg.getSchemaAttrInfo(HTTP_MANDATORY_SECTIONS), PARAMETERS);
- errorList.addAll(validateHttpSchemaSection(values));
- }
- for (Map.Entry<String, ?> entry1 : valMap.entrySet()) {
- String key1 = entry1.getKey();
-
- switch (key1) {
- case REQUEST:
- Map<String, ?> map = (Map<String, ?>) valMap.get(key1);
-
- for (Map.Entry<String, ?> entry2 : map.entrySet()) {
- try {
- String key2 = entry2.getKey();
-
- switch (key2) {
- case URI:
- Object obj = map.get(key2);
- cmd.getInput().setUri(obj.toString());
- break;
- case METHOD_TYPE:
- Object method = map.get(key2);
- cmd.getInput().setMethod(method.toString());
- break;
- case BODY:
- Object body = map.get(key2);
- cmd.getInput().setBody(body.toString());
- break;
- case HEADERS:
- Map<String, String> head = (Map<String, String>) map.get(key2);
- cmd.getInput().setReqHeaders(head);
- break;
- case QUERIES:
- Map<String, String> query = (Map<String, String>) map.get(key2);
-
- cmd.getInput().setReqQueries(query);
- break;
- case MULTIPART_ENTITY_NAME:
- Object multipartEntityName = map.get(key2);
- cmd.getInput().setMultipartEntityName(multipartEntityName.toString());
- break;
- }
- }catch (Exception ex) {
- throwOrCollect(new OnapCommandInvalidSchema(cmd.getSchemaName(), ex), errorList, validate);
- }
- }
- break;
-
- case SERVICE:
- Map<String, String> serviceMap = (Map<String, String>) valMap.get(key1);
-
- if (serviceMap != null) {
- if (validate) {
- validateTags(errorList, (Map<String, Object>) valMap.get(key1),
- OnapCommandConfg.getSchemaAttrInfo(SERVICE_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(SERVICE_PARAMS_MANDATORY_LIST), SERVICE);
-
- HashMap<String, String> validationMap = new HashMap<>();
- validationMap.put(AUTH, AUTH_VALUES);
- validationMap.put(MODE, MODE_VALUES);
-
- for (String secKey : validationMap.keySet()) {
- if (serviceMap.containsKey(secKey)) {
- Object obj = serviceMap.get(secKey);
- if (obj == null) {
- errorList.add("Attribute '" + secKey + "' under '" + SERVICE + "' is empty");
- } else {
- String value = String.valueOf(obj);
- if (!OnapCommandConfg.getSchemaAttrInfo(validationMap.get(secKey)).contains(value)) {
- errorList.add("Attribute '" + secKey + "' contains invalid value. Valide values are "
- + OnapCommandConfg.getSchemaAttrInfo(validationMap.get(key1))); //
- }
- }
- }
- }
- }
-
- OnapService srv = new OnapService();
-
- for (Map.Entry<String, String> entry : serviceMap.entrySet()) {
- String key = entry.getKey();
-
- switch (key) {
- case NAME:
- srv.setName(serviceMap.get(key));
- break;
-
- case VERSION:
- srv.setVersion(serviceMap.get(key).toString());
- break;
-
- case AUTH:
- Object obj = serviceMap.get(key);
- srv.setAuthType(obj.toString());
-
- //On None type, username, password and no_auth are invalid
- if (srv.isNoAuth()) {
- cmd.getParametersMap().get(DEAFULT_PARAMETER_USERNAME).setInclude(false);
- cmd.getParametersMap().get(DEAFULT_PARAMETER_PASSWORD).setInclude(false);
- cmd.getParametersMap().get(DEFAULT_PARAMETER_NO_AUTH).setInclude(false);
- }
- break;
-
- case MODE:
- Object mode = serviceMap.get(key);
- srv.setMode(mode.toString());
- break;
- }
- }
- cmd.setService(srv);
- }
- break;
-
- case SUCCESS_CODES:
- if (validate) {
- validateHttpSccessCodes(errorList, (List<Object>) valMap.get(key1));
- }
- cmd.setSuccessStatusCodes((ArrayList) valMap.get(key1));
- break;
-
- case RESULT_MAP:
- if (validate) {
- validateHttpResultMap(errorList, values);
- }
- cmd.setResultMap((Map<String, String>) valMap.get(key1));
- break;
-
- case SAMPLE_RESPONSE:
- // (mrkanag) implement sample response handling
- break;
- }
- }
- }
- }catch (OnapCommandException e) {
- throwOrCollect(e, errorList, validate);
- }
- return errorList;
- }
-
-
- private static void throwOrCollect(OnapCommandException ex, List<String> list, boolean shouldCollectException)
+ static void throwOrCollect(OnapCommandException ex, List<String> list, boolean shouldCollectException)
throws OnapCommandException {
if (shouldCollectException) {
list.add(ex.getMessage());
}
}
- private static void validateTags(List<String> schemaErrors, Map<String, ?> yamlMap, List<String> totalParams,
+ static void validateTags(List<String> schemaErrors, Map<String, ?> yamlMap, List<String> totalParams,
List<String> mandatoryParams, String section) {
// mrkanag capture invalid entries as well
for (String param : totalParams) {
* string
* @return boolean
*/
- protected static boolean validateBoolean(String toValidate) {
+ static boolean validateBoolean(String toValidate) {
return OnapCommandConfg.getSchemaAttrInfo(BOOLEAN_VALUE).contains(toValidate.toLowerCase());
}
return "The section '" + section + ":' cann't be null or empty";
}
- private static String invalidBooleanValueMessage(String section, String attribute, String value) {
+ static String invalidBooleanValueMessage(String section, String attribute, String value) {
return "The value '" + value + "' of '" + attribute + "' present under '" + section + "' should be boolean";
}
return set;
}
- private static void validateHttpResultMap(List<String> errorList, Map<String, ?> values) throws OnapCommandException {
+ static void validateHttpResultMap(List<String> errorList, Map<String, ?> values) throws OnapCommandException {
Map<String, ?> valMap = (Map<String, ?>) values.get(HTTP);
List<Map<String, String>> attributes = (List<Map<String, String>>) ((Map<String, ?>)values.get(RESULTS)).get(ATTRIBUTES);
Set<String> resultMapParams = ((Map<String, String>) valMap.get(RESULT_MAP)).keySet();
}
}
- private static void validateHttpSccessCodes(List<String> errorList, List<Object> requestSuccessCodes) {
+ static void validateHttpSccessCodes(List<String> errorList, List<Object> requestSuccessCodes) {
if (requestSuccessCodes == null || requestSuccessCodes.isEmpty()) {
errorList.add(HTTP_SUCCESS_CODE_INVALID);
}
-
- private static ArrayList<String> validateHttpSchemaSection(Map<String, ?> values) {
-
+ static ArrayList<String> validateHttpSchemaSection(Map<String, ?> values) {
ArrayList<String> errorList = new ArrayList<>();
Map<String, ?> map = (Map<String, ?>) values.get(HTTP);
Map<String, Object> requestMap = (Map<String, Object>) map.get(REQUEST);
+++ /dev/null
-/*
- * 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.cmd;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-
-import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.error.OnapCommandExecutionFailed;
-import org.onap.cli.fw.error.OnapCommandExecutorInfoMissing;
-import org.onap.cli.fw.error.OnapCommandResultInitialzationFailed;
-import org.onap.cli.fw.utils.OnapCommandUtils;
-
-public class OnapCreateSwaggerBasedCommand extends OnapSwaggerCommand {
-
- private <T> T initializeEntity(T obj, List<String> prps) throws OnapCommandResultInitialzationFailed {
- for (int i = 1; i < prps.size(); i++) {
- String paramName = prps.get(i).trim();
- String prpName = paramName;
- // paramName(prpName)
- if (prpName.contains("(")) {
- paramName = prpName.substring(0, prpName.indexOf("("));
- prpName = prpName.substring(prpName.indexOf("(") + 1, prpName.indexOf(")"));
- }
- String methodName = OnapCommandUtils.formMethodNameFromAttributeName(prpName, "set");
-
- try {
- Method set = obj.getClass().getMethod(methodName, String.class);
- set.invoke(obj, this.getParametersMap().get(paramName).getValue());
- } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException
- | InvocationTargetException e) {
- throw new OnapCommandResultInitialzationFailed(this.getName(), e);
- }
- }
- return obj;
- }
-
- @Override
- protected void run() throws OnapCommandException {
- if (this.getExecutor() == null) {
- throw new OnapCommandExecutorInfoMissing(this.getName());
- }
-
- try {
- // Initialize client
- Class clientClaz = Class.forName(this.getExecutor().getClient());
- Object client = clientClaz.getConstructor().newInstance();
- this.initializeApiClient(client);
-
- // Initialize api
- Class apiCls = Class.forName(this.getExecutor().getApi());
- Object api = apiCls.getConstructor(clientClaz).newInstance(client);
-
- // invoke method
- List<String> methodTokens = Arrays.asList(this.getExecutor().getMethod().split(","));
-
- List<String> entityTokens = Arrays.asList(this.getExecutor().getEntity().split(","));
- Class entityCls = Class.forName(entityTokens.get(0));
- Object entity = entityCls.newInstance();
- Method method = api.getClass().getMethod(methodTokens.get(0), entityCls);
- Object result = method.invoke(api, this.initializeEntity(entity, entityTokens));
-
- // initialize result
- this.initializeResult(result);
- } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- throw new OnapCommandExecutionFailed(this.getName(), e);
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- try {
- Class execCls = Class.forName(this.getExecutor().getException());
- Method execMethod = execCls.getClass().getMethod("getCode");
- if (execCls.isInstance(e)) {
- throw new OnapCommandExecutionFailed(this.getName(), e, (Integer) execMethod.invoke(e));
- }
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
- | ClassNotFoundException | NoSuchMethodException | SecurityException e1) {
- throw new OnapCommandExecutionFailed(this.getName(), e1.getMessage());
- }
- throw new OnapCommandExecutionFailed(this.getName(), e.getMessage());
- }
- }
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.error.OnapCommandException;
-
-public class OnapCreateSwaggerBasedCommandTest {
-
- @Test
- public void runTest() throws OnapCommandException {
- OnapCommand cmd = new OnapCreateSwaggerBasedCommand();
- cmd.initializeSchema("sample-test-schema-swagger.yaml");
- //cmd.execute();
- }
-
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.error.OnapCommandExecutionFailed;
-import org.onap.cli.fw.error.OnapCommandExecutorInfoMissing;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Helps to make delete rest calls on top of swagger generated java client. For example following one shows how MSB
- * service list is achieved here exec: ... method: deleteMicroService, [input param name given under Parameters]
- *
- */
-public class OnapDeleteSwaggerBasedCommand extends OnapSwaggerCommand {
-
- @Override
- protected void run() throws OnapCommandException {
- if (this.getExecutor() == null) {
- throw new OnapCommandExecutorInfoMissing(this.getName());
- }
-
- try {
- // Initialize client
- Class clientCls = Class.forName(this.getExecutor().getClient());
- Object client = clientCls.getConstructor().newInstance();
- this.initializeApiClient(client);
-
- // Initialize api
- Class apiCls = Class.forName(this.getExecutor().getApi());
- Object api = apiCls.getConstructor(clientCls).newInstance(client);
-
- // invoke method
- List<String> methodTokens = Arrays.asList(this.getExecutor().getMethod().split(","));
-
- Method method = api.getClass().getMethod(methodTokens.get(0), String.class);
- method.invoke(api, this.getParametersMap().get(methodTokens.get(1)).getValue());
- } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- throw new OnapCommandExecutionFailed(this.getName(), e);
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- try {
- Class execCls = Class.forName(this.getExecutor().getException());
- Method execMethod = execCls.getClass().getMethod("getCode");
- if (execCls.isInstance(e)) {
- throw new OnapCommandExecutionFailed(this.getName(), e, (Integer) execMethod.invoke(e));
- }
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
- | ClassNotFoundException | NoSuchMethodException | SecurityException e1) {
- throw new OnapCommandExecutionFailed(this.getName(), e1.getMessage());
- }
- throw new OnapCommandExecutionFailed(this.getName(), e.getMessage());
- }
- }
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-public class OnapDeleteSwaggerBasedCommandTest {
-
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.error.OnapCommandExecutionFailed;
-import org.onap.cli.fw.error.OnapCommandExecutorInfoMissing;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Helps to make get rest calls on top of swagger generated java client. For example following one shows how MSB service
- * list is achieved here exec: ... method: getMicroService, [input param name given under Parameters]
- *
- */
-public class OnapGetSwaggerBasedCommand extends OnapSwaggerCommand {
-
- @Override
- protected void run() throws OnapCommandException {
- if (this.getExecutor() == null) {
- throw new OnapCommandExecutorInfoMissing(this.getName());
- }
-
- try {
- // Initialize client
- Class clientCls = Class.forName(this.getExecutor().getClient());
- Object client = clientCls.getConstructor().newInstance();
- this.initializeApiClient(client);
-
- // Initialize api
- Class apiCls = Class.forName(this.getExecutor().getApi());
- Object api = apiCls.getConstructor(clientCls).newInstance(client);
-
- // invoke method
- List<String> methodTokens = Arrays.asList(this.getExecutor().getMethod().split(","));
-
- Method method = api.getClass().getMethod(methodTokens.get(0), String.class);
- Object result = method.invoke(api, this.getParametersMap().get(methodTokens.get(1)).getValue());
-
- // initialize result
- this.initializeResult(result);
-
- } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- throw new OnapCommandExecutionFailed(this.getName(), e);
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- try {
- Class execCls = Class.forName(this.getExecutor().getException());
- Method execMethod = execCls.getClass().getMethod("getCode");
- if (execCls.isInstance(e)) {
- throw new OnapCommandExecutionFailed(this.getName(), e, (Integer) execMethod.invoke(e));
- }
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
- | ClassNotFoundException | NoSuchMethodException | SecurityException e1) {
- throw new OnapCommandExecutionFailed(this.getName(), e1.getMessage());
- }
- throw new OnapCommandExecutionFailed(this.getName(), e.getMessage());
- }
- }
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-public class OnapGetSwaggerBasedCommandTest {
-
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.error.OnapCommandExecutionFailed;
-import org.onap.cli.fw.error.OnapCommandExecutorInfoMissing;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * Helps to make list rest calls on top of swagger generated java client. For example following one shows how MSB
- * service list is achived here exec: api:
- * org.onap.common_services.microservice_bus.apiroute_service.client.api.MSBServiceResourceApi client:
- * org.onap.common_services.microservice_bus.apiroute_service.client.invoker.ApiClient method: getMicroService
- * exception: org.onap.common_services.microservice_bus.apiroute_service.client.invoker.ApiException
- *
- */
-public class OnapListSwaggerBasedCommand extends OnapSwaggerCommand {
-
- @Override
- protected void run() throws OnapCommandException {
- if (this.getExecutor() == null) {
- throw new OnapCommandExecutorInfoMissing(this.getName());
- }
-
- try {
- // Initialize client
- Class clientCls = Class.forName(this.getExecutor().getClient());
- Object client = clientCls.getConstructor().newInstance();
- this.initializeApiClient(client);
-
- // Initialize api
- Class apiCls = Class.forName(this.getExecutor().getApi());
- Object api = apiCls.getConstructor(clientCls).newInstance(client);
-
- // invoke method
- Method method = api.getClass().getMethod(this.getExecutor().getMethod());
- Object result = method.invoke(api);
-
- // initialize result
- this.initializeResult(result);
-
- } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- throw new OnapCommandExecutionFailed(this.getName(), e);
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- try {
- Class execCls = Class.forName(this.getExecutor().getException());
- Method execMethod = execCls.getClass().getMethod("getCode");
- if (execCls.isInstance(e)) {
- throw new OnapCommandExecutionFailed(this.getName(), e, (Integer) execMethod.invoke(e));
- }
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
- | ClassNotFoundException | NoSuchMethodException | SecurityException e1) {
- throw new OnapCommandExecutionFailed(this.getName(), e1.getMessage());
- }
- throw new OnapCommandExecutionFailed(this.getName(), e.getMessage());
- }
- }
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-public class OnapListSwaggerBasedCommandTest {
-
-}
+++ /dev/null
-/*
- * 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.cmd;
-
-import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.error.OnapCommandClientInitialzationFailed;
-import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.error.OnapCommandResultInitialzationFailed;
-import org.onap.cli.fw.input.OnapCommandParameter;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class OnapSwaggerCommandTest {
-
- @Test(expected = OnapCommandResultInitialzationFailed.class)
- public void initializeResultTest1() throws OnapCommandException {
- OnapSwaggerCommandImpl swagger = new OnapSwaggerCommandImpl();
- swagger.initializeSchema("onap-test-schema.yaml");
- List<String> obj = new ArrayList<>();
- obj.add("name");
- obj.add("get");
- swagger.initializeResult(obj);
-
- Set<String> obj1 = new HashSet<>();
- obj.add("name");
- obj.add("get");
- swagger.initializeResult(obj1);
- }
-
- @Test(expected = OnapCommandResultInitialzationFailed.class)
- public void initializeResultTest2() throws OnapCommandException {
- OnapSwaggerCommandImpl swagger = new OnapSwaggerCommandImpl();
- swagger.initializeSchema("onap-test-schema.yaml");
- Set<String> obj1 = new HashSet<>();
- obj1.add("name");
- obj1.add("get");
- swagger.initializeResult(obj1);
- }
-
- @Test
- public void initializeResultTest3() throws OnapCommandException {
- OnapSwaggerCommandImpl swagger = new OnapSwaggerCommandImpl();
- swagger.initializeSchema("onap-test-schema.yaml");
- ApiClient cit = new ApiClient();
- cit.setApiKey("apiKey");
- cit.setBasePath("basePath");
- swagger.initializeApiClient(cit);
- }
-
- class OnapSwaggerCommandImpl extends OnapSwaggerCommand {
- protected void run() throws OnapCommandException {
- }
-
- }
-
- class ApiClient {
-
- private String basePath;
- private String apiKey;
-
- public String getBasePath() {
- return basePath;
- }
-
- public void setBasePath(String basePath) {
- this.basePath = basePath;
- }
-
- public String getApiKey() {
- return apiKey;
- }
-
- public void setApiKey(String apiKey) {
- this.apiKey = apiKey;
- }
-
- }
-}
+++ /dev/null
-/*
- * 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.run;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class OnapCommandExecutorTest {
-
- @Test
- public void commandExecutorTest() {
- OnapCommandExecutor exec = new OnapCommandExecutor();
- exec.setApi("api");
- exec.setClient("client");
- exec.setEntity("entity");
- exec.setException("exception");
- exec.setMethod("method");
-
- Assert.assertTrue(
- exec.getApi().equals("api") && exec.getClient().equals("client") && exec.getEntity().equals("entity")
- && exec.getMethod().equals("method") && exec.getException().equals("exception"));
- }
-
-}
import org.onap.cli.fw.cmd.OnapHttpCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandInvalidSchema;
-import org.onap.cli.fw.utils.OnapCommandUtils;
+import org.onap.cli.fw.utils.OnapCommandSchemaLoader;
import java.util.List;
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandUtils.loadSchema(cmd, "fdsfds.yaml", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "fdsfds.yaml", true, true);
}
@Test(expected = OnapCommandInvalidSchema.class)
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandUtils.loadSchema(cmd, "fdsfds", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "fdsfds", true, true);
}
@Test(expected = OnapCommandInvalidSchema.class)
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandUtils.loadSchema(cmd,
+ OnapCommandSchemaLoader.loadSchema(cmd,
ValidateSchemaTest.class.getClassLoader().getResource("open-cli.properties").getFile(),
true, true);
}
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandUtils.loadSchema(cmd, "schema-invalid-file-null.yaml", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "schema-invalid-file-null.yaml", true, true);
}
@Test
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandUtils.loadSchema(cmd, "schema-validate-pass.yaml", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "schema-validate-pass.yaml", true, true);
}
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandUtils.loadSchema(cmd, "schema-invalid-file.yaml", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "schema-invalid-file.yaml", true, true);
}
@Test
@Override
protected void run() throws OnapCommandException {}
};
- List<String> errorList1 = OnapCommandUtils.loadSchema(cmd1, "schema-validate-http.yaml", true, true);
+ List<String> errorList1 = OnapCommandSchemaLoader.loadSchema(cmd1, "schema-validate-http.yaml", true, true);
assertTrue(errorList1.size() > 0);
OnapCommand cmd2 = new OnapCommand() {
@Override
protected void run() throws OnapCommandException {}
};
- List<String> errorList2 = OnapCommandUtils.loadSchema(cmd2, "schema-validate-basic.yaml", true, true);
+ List<String> errorList2 = OnapCommandSchemaLoader.loadSchema(cmd2, "schema-validate-basic.yaml", true, true);
assertTrue(errorList2.size() > 0);
OnapCommand cmd3 = new OnapCommand() {
@Override
protected void run() throws OnapCommandException {}
};
- List<String> errorList3 = OnapCommandUtils.loadSchema(cmd2, "schema-validate-invalidschematype.yaml", true, true);
+ List<String> errorList3 = OnapCommandSchemaLoader.loadSchema(cmd2, "schema-validate-invalidschematype.yaml", true, true);
assertTrue(errorList3.size() > 0);
OnapCommand cmd4 = new OnapCommand() {
@Override
protected void run() throws OnapCommandException {}
};
- List<String> errorList4 = OnapCommandUtils.loadSchema(cmd2, "schema-validate-invalid.yaml", true, true);
+ List<String> errorList4 = OnapCommandSchemaLoader.loadSchema(cmd2, "schema-validate-invalid.yaml", true, true);
OnapHttpCommand oclipHttpCommand = new OnapHttpCommand();
- errorList4.addAll(OnapCommandUtils.loadHttpSchema(oclipHttpCommand,
+ errorList4.addAll(OnapCommandSchemaLoader.loadHttpSchema(oclipHttpCommand,
"schema-validate-invalid.yaml", true, true));
assertTrue(errorList4.size() > 0);
@Override
protected void run() throws OnapCommandException {}
};
- List<String> errorList5 = OnapCommandUtils.loadSchema(cmd5, "schema-validate-pass.yaml", true, true);
+ List<String> errorList5 = OnapCommandSchemaLoader.loadSchema(cmd5, "schema-validate-pass.yaml", true, true);
assertTrue(errorList5.size() == 0);
}
import org.onap.cli.fw.OnapCommand;
import org.onap.cli.fw.OnapCommandSchema;
import org.onap.cli.fw.cmd.OnapHttpCommand;
-import org.onap.cli.fw.cmd.OnapSwaggerCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandHelpFailed;
import org.onap.cli.fw.error.OnapCommandHttpHeaderNotFound;
import org.onap.cli.fw.input.OnapCommandParameter;
import org.onap.cli.fw.input.ParameterType;
import org.onap.cli.fw.output.OnapCommandResult;
-import org.onap.cli.fw.run.OnapCommandExecutor;
import org.springframework.core.io.Resource;
import mockit.Invocation;
@Test(expected = OnapCommandInvalidSchema.class)
public void oclipCommandUtilsInputStreamNullTest() throws OnapCommandException {
- OnapCommandUtils.validateSchemaVersion("sample-test1-schema-http1.yaml", "1.0");
+ OnapCommandSchemaLoader.validateSchemaVersion("sample-test1-schema-http1.yaml", "1.0");
}
@Test
public void oclipCommandUtilsInputStreamNotNullTest() throws OnapCommandException {
- Map<String, ?> map = OnapCommandUtils.validateSchemaVersion("sample-test1-schema-http.yaml", "1.0");
+ Map<String, ?> map = OnapCommandSchemaLoader.validateSchemaVersion("sample-test1-schema-http.yaml", "1.0");
assertTrue(map != null);
}
@Test
public void schemaFileNotFoundTest() throws OnapCommandException {
- Map<String, ?> map = OnapCommandUtils.validateSchemaVersion("sample-test-schema.yaml", "1.0");
+ Map<String, ?> map = OnapCommandSchemaLoader.validateSchemaVersion("sample-test-schema.yaml", "1.0");
assertTrue(map.size() > 0);
}
public void invalidSchemaFileTest() throws OnapCommandException {
Map<String, ?> map = null;
try {
- map = OnapCommandUtils.validateSchemaVersion("sample-test-schema1.yaml", "1.0");
+ map = OnapCommandSchemaLoader.validateSchemaVersion("sample-test-schema1.yaml", "1.0");
} catch (OnapCommandInvalidSchemaVersion e) {
fail("Test should not have thrown this exception : " + e.getMessage());
} catch (OnapCommandInvalidSchema e) {
public void validateWrongSchemaVersionTest() throws OnapCommandException {
Map<String, ?> map = null;
try {
- map = OnapCommandUtils.validateSchemaVersion("sample-test-invalid-schema.yaml", "1.0");
+ map = OnapCommandSchemaLoader.validateSchemaVersion("sample-test-invalid-schema.yaml", "1.0");
} catch (OnapCommandInvalidSchemaVersion e) {
fail("Test should not have thrown this exception : " + e.getMessage());
} catch (OnapCommandInvalidSchema e) {
public void validateSchemaVersionTest() throws OnapCommandException {
Map<String, ?> map = null;
try {
- map = OnapCommandUtils.validateSchemaVersion("sample-test-schema.yaml", "1.1");
+ map = OnapCommandSchemaLoader.validateSchemaVersion("sample-test-schema.yaml", "1.1");
} catch (OnapCommandInvalidSchemaVersion e) {
assertEquals("0xb003::Command schema open_cli_schema_version 1.0 is invalid or missing", e.getMessage());
} catch (OnapCommandInvalidSchema e) {
@Test
public void loadOnapCommandSchemaWithOutDefaultTest() throws OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-schema.yaml", false, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-schema.yaml", false, false);
assertTrue("sample-test".equals(cmd.getName()) && cmd.getParameters().size() == 9);
}
@Test(expected = OnapCommandParameterNameConflict.class)
public void loadOnapCommandSchemaWithDuplicateNameTest() throws OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-invalid-schema-duplicate-name.yaml", false, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-invalid-schema-duplicate-name.yaml", false, false);
}
@Test(expected = OnapCommandParameterOptionConflict.class)
public void loadOnapCommandSchemaWithDuplicateShortOptionTest() throws OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-invalid-schema-duplicate-shortoption.yaml", false, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-invalid-schema-duplicate-shortoption.yaml", false, false);
}
@Test(expected = OnapCommandParameterOptionConflict.class)
public void loadOnapCommandSchemaWithDuplicateLongOptionTest() throws OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-invalid-schema-duplicate-longoption.yaml", false, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-invalid-schema-duplicate-longoption.yaml", false, false);
}
@Test
public void loadOnapCommandSchemaWithDefaultTest() throws OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-schema.yaml", true, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-schema.yaml", true, false);
assertTrue("sample-test".equals(cmd.getName()) && cmd.getParameters().size() > 9);
for (OnapCommandParameter com : cmd.getParameters()) {
@Test
public void loadOnapCommandSchemaAuthRequiredTest() throws OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-schema-auth-required.yaml", true, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-schema-auth-required.yaml", true, false);
assertTrue("sample-test".equals(cmd.getName()));
Map<String, OnapCommandParameter> map = OnapCommandUtils.getInputMap(cmd.getParameters());
assertTrue(map.size() == 7);
}
- @Test
- public void loadSwaggerBasedSchemaExceptionTest() throws OnapCommandException {
- OnapSwaggerCommand cmd = new OnapSwaggerBasedCommandSample();
- try {
- OnapCommandUtils.loadSchema(cmd, "sample-test-schema.yaml");
- } catch (OnapCommandInvalidSchema e) {
- assertEquals("0xb001", e.getErrorCode());
- }
- }
-
- @Test
- public void loadSwaggerBasedSchemaTest() throws OnapCommandException {
- OnapSwaggerCommand cmd = new OnapSwaggerBasedCommandSample();
- try {
- OnapCommandUtils.loadSchema(cmd, "sample-test-schema-swagger.yaml");
- OnapCommandExecutor exe = cmd.getExecutor();
- assertTrue(exe != null);
- } catch (OnapCommandInvalidSchema e) {
- assertTrue(e.getMessage().contains("0xb001::Command schema sample-test-schema.yaml is invalid"));
- }
- }
-
@Test
public void loadHttpBasedSchemaExceptionTest() throws OnapCommandException {
OnapHttpCommand cmd = new OnapHttpCommandSample();
cmd.setName("sample-test-http");
try {
- OnapCommandUtils.loadHttpSchema(cmd, "sample-test-schema.yaml", true, false);
+ OnapCommandSchemaLoader.loadHttpSchema(cmd, "sample-test-schema.yaml", true, false);
} catch (OnapCommandParameterNameConflict | OnapCommandParameterOptionConflict
| OnapCommandInvalidParameterType | OnapCommandInvalidPrintDirection
| OnapCommandInvalidResultAttributeScope | OnapCommandSchemaNotFound | OnapCommandInvalidSchema
OnapHttpCommand cmd = new OnapHttpCommandSample();
cmd.setName("sample-create-http");
try {
- OnapCommandUtils.loadHttpSchema(cmd, "sample-test-schema-http.yaml", true, true);
+ OnapCommandSchemaLoader.loadHttpSchema(cmd, "sample-test-schema-http.yaml", true, true);
assertTrue(cmd.getSuccessStatusCodes().size() == 2);
} catch (OnapCommandParameterNameConflict | OnapCommandParameterOptionConflict
| OnapCommandInvalidParameterType | OnapCommandInvalidPrintDirection
@Test
public void helpCommandTest() throws IOException, OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-schema.yaml", true, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-schema.yaml", true, false);
String actualResult = OnapCommandUtils.help(cmd);
mockPrintMethodException();
OnapCommand cmd = new OnapCommandSample();
- OnapCommandUtils.loadSchema(cmd, "sample-test-schema.yaml", true, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-schema.yaml", true, false);
OnapCommandUtils.help(cmd);
@Test
public void test() throws OnapCommandException {
OnapCommandSampleInfo cmd = new OnapCommandSampleInfo();
- OnapCommandUtils.loadSchema(cmd, "sample-test-info.yaml", true, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-info.yaml", true, false);
OnapCommandInfo info = cmd.getInfo();
assert info != null;
}
}
}
- @OnapCommandSchema(schema = "sample-test-schema-swagger.yaml")
- class OnapSwaggerBasedCommandSample extends OnapSwaggerCommand {
-
- @Override
- protected void run() throws OnapCommandException {
- }
- }
-
@OnapCommandSchema(schema = "sample-test-schema-http.yaml")
class OnapHttpCommandSample extends OnapHttpCommand {
import org.onap.cli.fw.output.ResultType;
import org.onap.cli.main.conf.OnapCliConstants;
import org.onap.cli.main.interactive.StringCompleter;
-import org.onap.cli.main.utils.OnapCliUtils;
+import org.onap.cli.main.utils.OnapCliArgsParser;
import org.onap.cli.sample.yaml.SampleYamlGenerator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
}
}
- OnapCliUtils.populateParams(cmd.getParameters(), args);
+ OnapCliArgsParser.populateParams(cmd.getParameters(), args);
OnapCommandResult result = cmd.execute();
this.print(result.getDebugInfo());
* Oclip CLI utilities.
*
*/
-public class OnapCliUtils {
+public class OnapCliArgsParser {
/**
* private Constructor.
*/
- private OnapCliUtils() {
+ private OnapCliArgsParser() {
}
int positionalIdx = 0;
// Skip the first args oclip cmd name, so start from 1
for (int i = 1; i < args.size(); i++) {
- // check if short option exist
- // (mrkanag) Optimize the below code to handle short and long options in one iteration
- // now its redundant
- if (shortOptionMap.containsKey(args.get(i))) {
+ String paramName = null;
+ if (shortOptionMap.containsKey(args.get(i))) {
+ paramName = shortOptionMap.get(args.get(i));
+ } else if (longOptionMap.containsKey(args.get(i))) {
+ paramName = longOptionMap.get(args.get(i));
+ }
+
+ if (paramName != null) {
// end of the list or if its option rather than a value
if ((i + 1) == args.size() || args.get(i + 1).startsWith("-")) {
- if (paramMap.get(shortOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.BOOL)) {
- paramMap.get(shortOptionMap.get(args.get(i))).setValue("true");
+ if (paramMap.get(paramName).getParameterType().equals(ParameterType.BOOL)) {
+ paramMap.get(paramName).setValue("true");
continue;
}
throw new OnapCliArgumentValueMissing(args.get(i));
}
- if (paramMap.get(shortOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.JSON)) {
- paramMap.get(shortOptionMap.get(args.get(i))).setValue(readJsonStringFromUrl(args.get(i + 1),
- paramMap.get(shortOptionMap.get(args.get(i))).getName()));
+ if (paramMap.get(paramName).getParameterType().equals(ParameterType.JSON)) {
+ paramMap.get(paramName).setValue(readJsonStringFromUrl(args.get(i + 1),
+ paramMap.get(paramName).getName()));
i++;
continue;
- } if (paramMap.get(shortOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.TEXT)) {
- paramMap.get(shortOptionMap.get(args.get(i))).setValue(readTextStringFromUrl(args.get(i + 1),
- paramMap.get(shortOptionMap.get(args.get(i))).getName()));
+ } if (paramMap.get(paramName).getParameterType().equals(ParameterType.TEXT)) {
+ paramMap.get(paramName).setValue(readTextStringFromUrl(args.get(i + 1),
+ paramMap.get(paramName).getName()));
i++;
continue;
- } else if (paramMap.get(shortOptionMap.get(args.get(i))).getParameterType()
+ } else if (paramMap.get(paramName).getParameterType()
.equals(ParameterType.ARRAY)) {
- Object value = paramMap.get(shortOptionMap.get(args.get(i))).getValue();
+ Object value = paramMap.get(paramName).getValue();
List<String> list;
if (value == "") {
list = new ArrayList<>();
} else {
- list = convertJsonToListString(paramMap.get(shortOptionMap.get(args.get(i))).getName(),
+ list = convertJsonToListString(paramMap.get(paramName).getName(),
value.toString());
}
list.add(args.get(i + 1));
- paramMap.get(shortOptionMap.get(args.get(i))).setValue(list);
+ paramMap.get(paramName).setValue(list);
i++;
continue;
- } else if (paramMap.get(shortOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.MAP)) {
- Object value = paramMap.get(shortOptionMap.get(args.get(i))).getValue();
+ } else if (paramMap.get(paramName).getParameterType().equals(ParameterType.MAP)) {
+ Object value = paramMap.get(paramName).getValue();
Map<String, String> map;
if (value == "") {
map = new HashMap<>();
} else {
- map = convertJsonToMapString(paramMap.get(shortOptionMap.get(args.get(i))).getName(),
+ map = convertJsonToMapString(paramMap.get(paramName).getName(),
value.toString());
}
String[] argArr = arg.split("=");
if (argArr.length != 2) {
- throw new OnapCliInvalidArgument(paramMap.get(shortOptionMap.get(args.get(i))).getName());
+ throw new OnapCliInvalidArgument(paramMap.get(paramName).getName());
}
map.put(argArr[0], argArr[1]);
- paramMap.get(shortOptionMap.get(args.get(i))).setValue(map);
+ paramMap.get(paramName).setValue(map);
i++;
continue;
}
- paramMap.get(shortOptionMap.get(args.get(i))).setValue(args.get(i + 1));
-
- i++;
- continue;
- }
-
- // check if long option exist
- if (longOptionMap.containsKey(args.get(i))) {
- // end of the list or if its option rather than a value
- if ((i + 1) == args.size() || args.get(i + 1).startsWith("-")) {
- if (paramMap.get(longOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.BOOL)) {
- paramMap.get(longOptionMap.get(args.get(i))).setValue("true");
- continue;
- }
- throw new OnapCliArgumentValueMissing(args.get(i));
- }
-
- if (paramMap.get(longOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.JSON)) {
- paramMap.get(longOptionMap.get(args.get(i))).setValue(readJsonStringFromUrl(args.get(i + 1),
- paramMap.get(longOptionMap.get(args.get(i))).getName()));
- i++;
- continue;
- } else if (paramMap.get(longOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.TEXT)) {
- paramMap.get(longOptionMap.get(args.get(i))).setValue(readTextStringFromUrl(args.get(i + 1),
- paramMap.get(longOptionMap.get(args.get(i))).getName()));
- i++;
- continue;
- } else if (paramMap.get(longOptionMap.get(args.get(i))).getParameterType()
- .equals(ParameterType.ARRAY)) {
- Object value = paramMap.get(longOptionMap.get(args.get(i))).getValue();
- List<String> list;
- if (value == "") {
- list = new ArrayList<>();
- } else {
- list = convertJsonToListString(paramMap.get(longOptionMap.get(args.get(i))).getName(),
- value.toString());
- }
- list.add(args.get(i + 1));
- paramMap.get(longOptionMap.get(args.get(i))).setValue(list);
- i++;
- continue;
- } else if (paramMap.get(longOptionMap.get(args.get(i))).getParameterType().equals(ParameterType.MAP)) {
-
- Object value = paramMap.get(longOptionMap.get(args.get(i))).getValue();
-
- Map<String, String> map;
-
- if (value == "") {
- map = new HashMap<>();
- } else {
- map = convertJsonToMapString(paramMap.get(longOptionMap.get(args.get(i))).getName(),
- value.toString());
- }
-
- String arg = args.get(i + 1);
- String[] argArr = arg.split("=");
-
- if (argArr.length != 2) {
- throw new OnapCliInvalidArgument(paramMap.get(longOptionMap.get(args.get(i))).getName());
- }
-
- map.put(argArr[0], argArr[1]);
- paramMap.get(longOptionMap.get(args.get(i))).setValue(map);
- i++;
- continue;
- }
-
- paramMap.get(longOptionMap.get(args.get(i))).setValue(args.get(i + 1));
+ paramMap.get(paramName).setValue(args.get(i + 1));
i++;
continue;
import org.onap.cli.fw.OnapCommandRegistrar;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandHelpFailed;
-import org.onap.cli.main.utils.OnapCliUtils;
+import org.onap.cli.main.utils.OnapCliArgsParser;
import jline.console.ConsoleReader;
import mockit.Invocation;
OnapCommand cmd = OnapCommandRegistrar.getRegistrar().get("sample-create");
List<String> args = new ArrayList<>(Arrays.asList(new String[] { "sample-create", "--service-name", "test-service", "-i", "ip1", "-i",
"ip2", "-o", "port1=value1", "-o", "port2=value2" }));
- OnapCliUtils.populateParams(cmd.getParameters(), args);
+ OnapCliArgsParser.populateParams(cmd.getParameters(), args);
}
@Test
String[] args = new String[] { "sample-create", "--host-username", "admin", "--host-password", "123",
"--host-url", "a@b.com", "--string-param", "blah", "--long-opt", "10" };
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertEquals("host-username", expectedList.get(2), param1.getValue());
paramslist.add(paramargs);
String[] args = new String[] { "positional-args", "http://localhost:8082/file.txt" };
paramargs.setParameterType(ParameterType.STRING);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertEquals("positional-args", expectedList.get(1), paramslist.get(0).getValue());
}
String[] args = new String[] { "sample-create", "--bool" };
boolparam.setParameterType(ParameterType.BOOL);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
String[] args = new String[] { "sample-create", "-b", };
boolparam.setParameterType(ParameterType.BOOL);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
}
String[] args = new String[] { "sample-create", "--text-param" , "text"};
boolparam.setParameterType(ParameterType.TEXT);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
String[] args = new String[] { "sample-create", "-e" , "text"};
boolparam.setParameterType(ParameterType.TEXT);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
}
File resourcesDirectory = new File("src/test/resources/sampletest.json");
String[] args = new String[] { "sample-create", "-j", "file:" + resourcesDirectory };
jsonparam.setParameterType(ParameterType.JSON);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
}
File resourcesDirectory = new File("src/test/resources/sampletest.json");
String[] args = new String[] { "sample-create", "--json-param", "file:" + resourcesDirectory };
jsonparam.setParameterType(ParameterType.JSON);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
}
String[] args11 = new String[] { "sample-create", "-u", "admin", "-p", "123", "-r", "a@b.com", "-c", "blah",
"-l", "10", };
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args11));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args11));
List<String> expectedList = Arrays.asList(args11);
paramslist.add(arrayval);
arrayval.setParameterType(ParameterType.ARRAY);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
paramslist.add(param1);
param1.setParameterType(ParameterType.MAP);
- OnapCliUtils.populateParams(paramslist,
+ OnapCliArgsParser.populateParams(paramslist,
Arrays.asList("show", "--map", "param1=value1", "--map", "param2=value2"));
Assert.assertEquals("{\"param1\":\"value1\",\"param2\":\"value2\"}", paramslist.get(0).getValue().toString());
paramslist.add(param1);
param1.setParameterType(ParameterType.MAP);
- OnapCliUtils.populateParams(paramslist, Arrays.asList("show", "--map", "param1=value1", "--map", "param2"));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList("show", "--map", "param1=value1", "--map", "param2"));
Assert.assertEquals("{\"param1\":\"value1\",\"param2\"}", paramslist.get(0).getValue().toString());
}
List<OnapCommandParameter> paramslist = new ArrayList<>();
paramslist.add(param1);
param1.setParameterType(ParameterType.MAP);
- OnapCliUtils.populateParams(paramslist, Arrays.asList("show", "-o", "param1=value1", "-o", "param2"));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList("show", "-o", "param1=value1", "-o", "param2"));
Assert.assertEquals("{\"param1\":\"value1\",\"param2\"}", paramslist.get(0).getValue().toString());
}
String[] args = new String[] { "positional-args", "http://localhost:8082/file.txt",
"http://localhost:8082/file.txt" };
paramargs.setParameterType(ParameterType.STRING);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertEquals("positional-args", expectedList.get(1), paramslist.get(0).getValue());
}
String[] args = new String[] { "sample-create", "-b", "-b", "-h" };
boolparam.setParameterType(ParameterType.BOOL);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertEquals("true", paramslist.get(0).getValue());
}
String[] args = new String[] { "sample-create", "--bool", "--bool", "--help" };
boolparam.setParameterType(ParameterType.BOOL);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertEquals("true", paramslist.get(0).getValue());
}
File resourcesDirectory = new File("src/test/resources/sampletest.json");
String[] args = new String[] { "sample-create", "--json-param", "file:" + resourcesDirectory, "--json-param" };
jsonparam.setParameterType(ParameterType.JSON);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertEquals("--json-param", paramslist.get(0).getValue());
File resourcesDirectory = new File("src/test/resources/sampletest.json");
String[] args = new String[] { "sample-create", "-j", "file:" + resourcesDirectory, "-j" };
jsonparam.setParameterType(ParameterType.JSON);
- OnapCliUtils.populateParams(paramslist, Arrays.asList(args));
+ OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
Assert.assertEquals("--json-param", paramslist.get(0).getValue());