+++ /dev/null
-#!/bin/bash
-
-#*******************************************************************************
-# 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.
-#*******************************************************************************
-
-export OPEN_CLI_HOME=/opt/oclip
-export OPEN_CLI_PRODUCT_IN_USE=open-cli
-
-cd $OPEN_CLI_HOME
-
-if [ ! -d ./data ]; then mkdir ./data; fi
-if [ ! -d ./open-cli-schema ]; then mkdir ./open-cli-schema; fi
-
-chmod +x ./bin/oclip.sh
-
-#Make oclip available in path
-ln ./bin/oclip.sh /usr/bin/oclip
-
-#Print the version
-oclip -v
\ No newline at end of file
}
ant.copy(todir: "${deployUnzip}") {
- fileset(file: "${basedir}/installer/cli-init.sh")
+ fileset(file: "${basedir}/installer/install.sh")
}
- ant.chmod(file: "${deployUnzip}/bin/onap.sh", perm: "ugo+x")
- ant.chmod(file: "${deployUnzip}/cli-init.sh", perm: "ugo+x")
+ ant.chmod(file: "${deployUnzip}/bin/oclip.sh", perm: "ugo+x")
+ ant.chmod(file: "${deployUnzip}/install.sh", perm: "ugo+x")
ant.copy(todir:
"${deployUnzip}/lib") {
fileset(dir:
"${project.build.directory}/../../../main/target/lib/")
fileset(dir:
- "${project.build.directory}/../../../plugins/target/lib/")
+ "${project.build.directory}/../../../products/target/lib/")
+ fileset(dir:
+ "${project.build.directory}/../../../profiles/target/lib/")
}
ant.copy(todir:
"${deployUnzip}/conf") {
fileset(file:
- "${project.build.directory}/../../../framework/src/main/resources/open-cli.properties")
+ "${basedir}/src/main/release/conf/open-cli.properties")
}
ant.copy(todir:
"${deployUnzip}/conf") {
fileset(file:
- "${project.build.directory}/../../../framework/src/main/resources/log4j.properties")
+ "${basedir}/src/main/release/conf/log4j.properties")
}
ant.copy(todir:
"${project.build.directory}/../../../README.md")
}
- ant.copy(todir:
- "${deployUnzip}") {
- fileset(file:
- "${project.build.directory}/../installer/install.sh")
- }
-
ant.zip(destfile:
"${deployFolder}/${outfileName}") {
zipfileset(dir: "${deployUnzip}", excludes: "**/*.sh")
--- /dev/null
+log4j.rootLogger=ERROR, file
+
+# Redirect log messages to a log file, support file rolling.
+log4j.appender.file=org.apache.log4j.RollingFileAppender
+log4j.appender.file.File=${OPEN_CLI_HOME}/logs/oclip.log
+log4j.appender.file.MaxFileSize=5MB
+log4j.appender.file.MaxBackupIndex=10
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
-cli.ignore_auth=false
-cli.http.api_key_use_cookies=true
-cli.discover_always=true
cli.product_name=open-cli
cli.version=1.0
+cli.discover_always=false
+
#schema validation
cli.schema.top_level_params_list=open_cli_schema_version,name,description,parameters,results,http,info
cli.schema.top_level_mandatory_list=open_cli_schema_version
cli.schema.result_params_list=name,description,scope,type,is_secured, default_value
cli.schema.result_params_mandatory_list=name, description, type, scope
-#http
-cli.schema.http_sections=request,service,success_codes,result_map,sample_response
-cli.schema.http_mandatory_sections=request, success_codes
-
-cli.schema.http_request_params=uri,method,body,headers,queries,multipart_entity_name
-cli.schema.http_request_mandatory_params=uri,method
-
-cli.schema.service_params_list=name,version,auth,mode
-cli.schema.service_params_mandatory_list=auth,mode
-
-cli.schema.http_methods=post,get,delete,put,head
-
cli.schema.boolean_values=true,false
-cli.schema.auth_values=none,basic
-cli.schema.mode_values=direct,catalog
cli.command.type=cmd,auth,catalog
+# moco properties
+cli.sample.gen.enable=false
+cli.sample.gen.target=.
+
# mrkanag Move this to db, once exteranl command registration is supported in place of discovery
cli.schema.type.supported=http
+#other properties to load (it should be hanled when plugins are made as externally register-able
+#when command plugin management support is enabled in oclip
+cli.plugins-prps=open-cli-http.properties
\ No newline at end of file
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <version>1.6.1</version>
+ <version>1.7.16</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.3.5</version>
- </dependency>
- <dependency>
- <groupId>com.jayway.jsonpath</groupId>
- <artifactId>json-path</artifactId>
- <version>2.2.0</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.6.3</version>
- </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
- <dependency>
- <groupId>org.onap.cli</groupId>
- <artifactId>cli-sample-mock-generator</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpmime</artifactId>
- <version>4.0.1</version>
- <scope>compile</scope>
+ <groupId>com.jayway.jsonpath</groupId>
+ <artifactId>json-path</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.6.3</version>
</dependency>
</dependencies>
</project>
* limitations under the License.
*/
-package org.onap.cli.fw;
+package org.onap.cli.fw.cmd;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandHelpFailed;
-import org.onap.cli.fw.error.OnapCommandInvalidParameterType;
-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.OnapCommandNotInitialized;
-import org.onap.cli.fw.error.OnapCommandParameterNameConflict;
-import org.onap.cli.fw.error.OnapCommandParameterOptionConflict;
-import org.onap.cli.fw.error.OnapCommandRegistrationFailed;
-import org.onap.cli.fw.error.OnapCommandSchemaNotFound;
import org.onap.cli.fw.info.OnapCommandInfo;
import org.onap.cli.fw.input.OnapCommandParameter;
import org.onap.cli.fw.output.OnapCommandResult;
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.output.OnapCommandResultType;
+import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
import org.onap.cli.fw.utils.OnapCommandHelperUtils;
-import org.onap.cli.fw.utils.OnapCommandSchemaLoaderUtils;
import org.onap.cli.fw.utils.OnapCommandUtils;
/**
private OnapCommandInfo info = new OnapCommandInfo();
- private List<OnapCommandParameter> cmdParameters = new ArrayList<>();
+ private Set<OnapCommandParameter> cmdParameters = new HashSet<>();
private OnapCommandResult cmdResult = new OnapCommandResult();
protected boolean isInitialzied = false;
public String getSchemaVersion() {
- return Constants.OPEN_CLI_SCHEMA_VERSION_VALUE_1_0;
+ return OnapCommandConstants.OPEN_CLI_SCHEMA_VERSION_VALUE_1_0;
}
- /**
- * Oclip command description, defined by derived command.
- */
public String getDescription() {
return this.cmdDescription;
}
this.cmdDescription = description;
}
- /*
- * Oclip command name like user-create, ns-list, etc , defined by derived command
- */
public String getName() {
return this.cmdName;
}
this.info = info;
}
- public void setParameters(List<OnapCommandParameter> parameters) {
+ public void setParameters(Set<OnapCommandParameter> parameters) {
this.cmdParameters = parameters;
}
- /*
- * Oclip command input parameters, defined by derived command
- */
- public List<OnapCommandParameter> getParameters() {
+ public Set<OnapCommandParameter> getParameters() {
return this.cmdParameters;
}
- /*
- * Oclip command input parameters, defined by derived command
- */
public Map<String, OnapCommandParameter> getParametersMap() {
return OnapCommandUtils.getInputMap(this.getParameters());
}
- /*
- * Oclip command output results, defined by derived command
- */
public OnapCommandResult getResult() {
return this.cmdResult;
}
/**
* Initialize this command from command schema and assumes schema is already validated.
*
- * @throws OnapCommandRegistrationFailed
- * Command Registration Exception
- * @throws OnapCommandInvalidResultAttributeScope
- * InvalidResultAttribute Exception
- * @throws OnapCommandInvalidPrintDirection
- * InvalidPrintDirection Exception
- * @throws OnapCommandInvalidParameterType
- * InvalidParameterType Exception
- * @throws OnapCommandSchemaNotFound
- * SchemaNotFound Exception
- * @throws OnapCommandInvalidSchema
- * InvalidSchema Exception
- * @throws OnapCommandParameterOptionConflict
- * ParameterOptionConflict Exception
- * @throws OnapCommandParameterNameConflict
- * ParameterNameConflict Exception
- * @throws OnapCommandInvalidSchemaVersion
- * InvalidSchemaVersion Exception
+ * @throws OnapCommandException
*
* @return List of error strings
*/
public List<String> initializeSchema(String schema, boolean validate) throws OnapCommandException {
this.setSchemaName(schema);
- List<String> errors = OnapCommandSchemaLoaderUtils.loadSchema(this, schema, true, validate);
+ List<String> errors = OnapCommandSchemaLoader.loadSchema(this, schema, true, validate);
errors.addAll(this.initializeProfileSchema());
this.isInitialzied = true;
Map<String, OnapCommandParameter> paramMap = this.getParametersMap();
// -h or --help is always higher precedence !, user can set this value to get help message
- if (Constants.BOOLEAN_TRUE.equals(paramMap.get(Constants.DEFAULT_PARAMETER_HELP).getValue())) {
+ if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_HELP).getValue())) {
OnapCommandResult result = new OnapCommandResult();
- result.setType(ResultType.TEXT);
+ result.setType(OnapCommandResultType.TEXT);
result.setOutput(this.printHelp());
return result;
}
// -v or --version is next higher precedence !, user can set this value to get help message
- if (Constants.BOOLEAN_TRUE.equals(paramMap.get(Constants.DEFAULT_PARAMETER_VERSION).getValue())) {
+ if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_VERSION).getValue())) {
OnapCommandResult result = new OnapCommandResult();
- result.setType(ResultType.TEXT);
+ result.setType(OnapCommandResultType.TEXT);
result.setOutput(this.printVersion());
return result;
}
// -f or --format
this.cmdResult.setType(
- ResultType.get(paramMap.get(Constants.DEFAULT_PARAMETER_OUTPUT_FORMAT).getValue().toString()));
- if (Constants.BOOLEAN_TRUE.equals(paramMap.get(Constants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG).getValue())) {
+ OnapCommandResultType.get(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_FORMAT).getValue().toString()));
+ if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG).getValue())) {
this.cmdResult.setScope(OnapCommandResultAttributeScope.LONG);
}
// --no-title
- if (Constants.BOOLEAN_TRUE.equals(paramMap.get(Constants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE).getValue())) {
+ if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE).getValue())) {
this.cmdResult.setIncludeTitle(false);
}
// --debug
- if (Constants.BOOLEAN_TRUE.equals(paramMap.get(Constants.DEFAULT_PARAMETER_DEBUG).getValue())) {
+ if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_DEBUG).getValue())) {
this.cmdResult.setDebug(true);
}
* Command type supported by Oclip CLI.
*
*/
-public enum CommandType {
+public enum OnapCommandType {
AUTH,
CATALOG,
* @throws OnapCommandInvalidParameterType
* exception
*/
- public static CommandType get(String name) throws OnapCommandInvalidCommandType {
+ public static OnapCommandType get(String name) throws OnapCommandInvalidCommandType {
if (AUTH.name().equalsIgnoreCase(name)) {
return AUTH;
} else if (CATALOG.name().equalsIgnoreCase(name)) {
import java.util.List;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandSchema;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.schema.OnapCommandSchemaInfo;
import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils;
-import org.onap.cli.fw.utils.SchemaInfo;
/**
* Refresh external schema.
@Override
protected void run() throws OnapCommandException {
- List<SchemaInfo> schemas = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(true);
+ List<OnapCommandSchemaInfo> schemas = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(true);
int i = 0;
- for (SchemaInfo schema : schemas) {
+ for (OnapCommandSchemaInfo schema : schemas) {
if (schema.isIgnore()) {
continue;
}
-
+
i++;
this.getResult().getRecordsMap().get("sr.no").getValues().add(String.valueOf(i));
this.getResult().getRecordsMap().get("command").getValues().add(schema.getCmdName());
import java.util.List;
import java.util.Map;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.input.OnapCommandParameter;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils;
-import org.onap.cli.fw.utils.OnapCommandSchemaLoaderUtils;
/**
* Validate schema command.
String ocsVersion = String.valueOf(versionParam.getValue());
String type = OnapCommandDiscoveryUtils.identitySchemaProfileType(
- OnapCommandSchemaLoaderUtils.validateSchemaVersion(location, ocsVersion));
+ OnapCommandSchemaLoader.validateSchemaVersion(location, ocsVersion));
OnapCommand cmd = null;
- if (type.equals(Constants.BASIC_SCHEMA_PROFILE)) {
+ if (type.equals(OnapCommandConstants.BASIC_SCHEMA_PROFILE)) {
cmd = new OnapCommand() {
@Override
protected void run() throws OnapCommandException {
+++ /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.conf;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-/**
- * Oclip command constants.
- *
- */
-public final class OnapCommandConfg {
-
- private static Properties prps = new Properties();
-
- /**
- * Private constructor.
- */
- private OnapCommandConfg() {
-
- }
-
- static {
- try {
- prps.load(OnapCommandConfg.class.getClassLoader().getResourceAsStream(Constants.CONF));
- } catch (IOException e) {
- throw new RuntimeException(e); // NOSONAR
- }
- }
-
- /**
- * is auth service ignored.
- *
- * @return boolean
- */
- public static boolean isAuthIgnored() {
- if ("true".equals(prps.getProperty(Constants.OPEN_IGNORE_AUTH))) {
- return true;
- }
-
- return false;
- }
-
- /**
- * is discovery should do every time.
- *
- * @return boolean
- */
- public static boolean isDiscoverAlways() {
- if ("true".equals(prps.getProperty(Constants.DISCOVER_ALWAYS))) {
- return true;
- }
-
- return false;
- }
-
- public static String getVersion() {
- return prps.getProperty(Constants.OPEN_CLI_VERSION);
- }
-
- public static String getEnabledProductVersion() {
- String version = System.getenv(Constants.OPEN_OPEN_CLI_PRODUCT_IN_USE_ENV_NAME);
- if (version == null) {
- version = prps.getProperty(Constants.OPEN_CLI_PRODUCT_NAME);
- }
- return version;
- }
-
- /**
- * checks if cookies based auth.
- *
- * @return boolean
- */
- public static boolean isCookiesBasedAuth() {
- if ("true".equals(prps.getProperty(Constants.HTTP_API_KEY_USE_COOKIES))) {
- return true;
- }
-
- return false;
- }
-
- public static String getProductName() {
- return prps.getProperty(Constants.OPEN_CLI_PRODUCT_NAME);
- }
-
- private static Map<String, String> getHeaderValues(String headerKey, Map<String, String> paramMap) {
- Map<String, String> mapHeaders = new HashMap<String, String> ();
- if (prps.containsKey(headerKey)) {
- Arrays.stream(prps.getProperty(headerKey) // NOSONAR
- .split(",")).map(String::trim).forEach(header -> {
- String headerName = prps.getProperty(headerKey+ "." + header);
- String headerValue = prps.getProperty(headerKey + "." + header + ".value", null);
- if (headerValue != null) {
- headerValue = headerValue.replaceAll("uuid", UUID.randomUUID().toString());
- if (headerValue.contains("${")) {
- String param = headerValue.substring(headerValue.indexOf("${")+2 ,headerValue.indexOf("}"));
- String pattern = "${"+param+"}";
- headerValue = headerValue.replace(pattern, paramMap.getOrDefault(param, param));
- }
- }
- mapHeaders.put(headerName, headerValue);
- });
- }
- return mapHeaders;
- }
-
- //mrkanag move this utils class
- public static List<String> getSchemaAttrInfo(String key) {
- return Arrays.stream(prps.getProperty(key).split(",")).map(String::trim).collect(Collectors.toList()); // NOSONAR
- }
-
- public static String getSampleGenerateTargetFolder() {
- return prps.getProperty(Constants.SAMPLE_GEN_TARGET_FOLDER, ".");
- }
-
- public static boolean isSampleGenerateEnabled() {
- return "true".equals(prps.getProperty(Constants.SAMPLE_GEN_ENABLED));
- }
-}
--- /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.conf;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+import java.util.stream.Collectors;
+
+/**
+ * Oclip command constants.
+ *
+ */
+public final class OnapCommandConfig {
+
+ private static Properties prps = new Properties();
+
+ /**
+ * Private constructor.
+ */
+ private OnapCommandConfig() {
+
+ }
+
+ static {
+ loadProperties(prps, OnapCommandConstants.CONF);
+ for (String prpFile: getCommaSeparatedList(OnapCommandConstants.OPEN_CLI_PLUGIN_PRPS)) {
+ addProperties(prpFile);
+ }
+ }
+
+ private static void loadProperties(Properties prps, String fileName) {
+ try {
+ prps.load(OnapCommandConfig.class.getClassLoader().getResourceAsStream(fileName));
+ } catch (Exception e) { // NOSONAR
+ throw new RuntimeException(e); // NOSONAR
+ }
+ }
+
+ private static void addProperties(String fileName) {
+ Properties ps = new Properties();
+ loadProperties(ps, fileName);
+
+ for (Object key: ps.keySet()) {
+ prps.put(key, ps.get(key));
+ }
+ }
+
+ public static String getPropertyValue(String propertyName) {
+ return prps.getProperty(propertyName);
+ }
+
+ public static List<String> getCommaSeparatedList(String key) {
+ return Arrays.stream(getPropertyValue(key).split(",")).map(String::trim).collect(Collectors.toList()); // NOSONAR
+ }
+}
package org.onap.cli.fw.conf;
/**
- * Constants.
+ * OnapCommandHttpConstants.
*
*/
-public class Constants {
+public class OnapCommandConstants {
//config
public static final String CONF = "open-cli.properties";
- public static final String OPEN_IGNORE_AUTH = "cli.ignore_auth";
public static final String OPEN_CLI_VERSION = "cli.version";
- public static final String HTTP_API_KEY_USE_COOKIES = "cli.http.api_key_use_cookies";
-
public static final String TOP_LEVEL_PARAMS_LIST = "cli.schema.top_level_params_list";
public static final String TOP_LEVEL_MANDATORY_LIST = "cli.schema.top_level_mandatory_list";
public static final String SERVICE_PARAMS_LIST = "cli.schema.service_params_list";
public static final String INPUT_PARAMS_MANDATORY_LIST = "cli.schema.input_params_mandatory_list";
public static final String RESULT_PARAMS_LIST = "cli.schema.result_params_list";
public static final String RESULT_PARAMS_MANDATORY_LIST = "cli.schema.result_params_mandatory_list";
- public static final String HTTP_SECTIONS = "cli.schema.http_sections";
- public static final String HTTP_MANDATORY_SECTIONS = "cli.schema.http_mandatory_sections";
- public static final String HTTP_REQUEST_PARAMS = "cli.schema.http_request_params";
- public static final String HTTP_REQUEST_MANDATORY_PARAMS = "cli.schema.http_request_mandatory_params";
- public static final String HTTP_METHODS = "cli.schema.http_methods";
public static final String BOOLEAN_VALUE = "cli.schema.boolean_values";
- public static final String AUTH_VALUES = "cli.schema.auth_values";
- public static final String MODE_VALUES = "cli.schema.mode_values";
+
public static final String COMMAND_TYPE_VALUES = "cli.command.type";
public static final String SCHEMA_TYPES_SUPPORTED = "cli.schema.type.supported";
- //http connection
- public static final String SSLCONTEST_TLS = "TLSV1.2";
- public static final String APPLICATION_JSON = "application/json";
-
public static final String OPEN_CLI_PRODUCT_NAME = "cli.product_name";
+ public static final String OPEN_CLI_PLUGIN_PRPS = "cli.plugins-prps";
//schema
public static final String OPEN_CLI_SCHEMA_VERSION = "open_cli_schema_version";
public static final String OPEN_CLI_SCHEMA_VERSION_VALUE_1_0 = "1.0";
-
public static final String NAME = "name";
-
public static final String DESCRIPTION = "description";
//Info
public static final String INFO = "info";
-
public static final String INFO_PRODUCT = "product";
- public static final String OPEN_OPEN_CLI_PRODUCT_IN_USE_ENV_NAME = "OPEN_CLI_PRODUCT_IN_USE";
+ public static final String OPEN_CLI_PRODUCT_IN_USE_ENV_NAME = "OPEN_CLI_PRODUCT_IN_USE";
public static final String INFO_SERVICE = "service";
public static final String INFO_TYPE = "type";
public static final String PARAMETER_TYPE_MAP = "map";
public static final String DEFAULT_PARAMETER_FILE_NAME = "default_input_parameters.yaml";
- public static final String DEFAULT_PARAMETER_HTTP_FILE_NAME = "default_input_parameters_http.yaml";
-
- public static final String DEAFULT_PARAMETER_USERNAME = "host-username";
- public static final String DEAFULT_PARAMETER_PASSWORD = "host-password";
- public static final String DEAFULT_PARAMETER_HOST_URL = "host-url";
public static final String DEFAULT_PARAMETER_HELP = "help";
public static final String DEFAULT_PARAMETER_VERSION = "version";
public static final String DEFAULT_PARAMETER_DEBUG = "debug";
public static final String DEFAULT_PARAMETER_OUTPUT_FORMAT = "format";
public static final String DEFAULT_PARAMETER_OUTPUT_ATTR_LONG = "long";
public static final String DEFAULT_PARAMETER_OUTPUT_NO_TITLE = "no-title";
- public static final String DEFAULT_PARAMETER_NO_AUTH = "no-auth";
//results
public static final String RESULTS = "results";
public static final String PORTRAINT_COLUMN_NAME_PROPERTY = "property";
public static final String PORTRAINT_COLUMN_NAME_VALUE = "value";
+ //discovery
public static final String SCHEMA_DIRECTORY = "open-cli-schema";
public static final String YAML_PATTERN = "/**/*.yaml";
public static final String JSON_PATTERN = "/**/*.json";
//normal
public static final String BASIC_SCHEMA_PROFILE = "basic";
- public static final String HTTP_SCHEMA_PROFILE = "http";
-
- //http
- public static final String HTTP = "http";
-
- public static final String SERVICE = "service";
- public static final String VERSION = "version";
- public static final String BASE_PATH = "base_path";
- public static final String AUTH = "auth";
- public static final String AUTH_NONE = "none";
- public static final String AUTH_BASIC = "basic";
- public static final String MODE = "mode";
- public static final String MODE_DIRECT = "direct";
- public static final String MODE_CATALOG = "catalog";
-
- public static final String REQUEST = "request";
- public static final String URI = "uri";
- public static final String BODY = "body";
-
- public static final String METHOD_TYPE = "method";
- public static final String POST = "post";
- public static final String GET = "get";
- public static final String DELETE = "delete";
- public static final String PUT = "put";
- public static final String HEAD = "delete";
-
- public static final String HEADERS = "headers";
- public static final String QUERIES = "queries";
- public static final String COOKIES = "cookies";
-
- public static final String SUCCESS_CODES = "success_codes";
-
- public static final String RESULT_MAP = "result_map";
-
- public static final String SAMPLE_RESPONSE = "sample_response";
-
- //swagger
- public static final String EXECUTOR = "exec";
-
- public static final String API = "api";
- public static final String CLIENT = "client";
- public static final String ENTITY = "entity";
- public static final String METHOD = "method";
- public static final String MULTIPART_ENTITY_NAME = "multipart_entity_name";
public static final String EXCEPTION = "exception";
public static final String BOOLEAN_TRUE = "true";
public static final String BOOLEAN_FALSE = "false";
public static final String SCHEMA_FILE_EMPTY = "The schema file cann't be null or empty";
public static final String SCHEMA_FILE_WRONG_EXTN = "Schema file should be '.yaml' extension";
public static final String SCHEMA_FILE_NOT_EXIST = "Schema file doesn't exist";
- public static final String HTTP_SECTION_EMPTY = "Http Section cann't be null or empty";
- public static final String HTTP_BODY_SECTION_EMPTY = "http body section under 'request:' cann't be null or empty";
- public static final String HTTP_BODY_FAILED_PARSING = "The http body json is failed to parse";
- public static final String HTTP_BODY_JSON_EMPTY = "The http body json cann't be null or empty";
- public static final String HTTP_SUCCESS_CODE_INVALID = "Invalid http success code.";
- public static final String HTTP_SAMPLE_RESPONSE_EMPTY = "Sample response cann't be null or empty";
- public static final String HTTP_SAMPLE_RESPONSE_FAILED_PARSING = "The http Sample response json is failed to parse.";
public static final String USE_DIRECTIVE = "use";
- public static final String SAMPLE_GEN_ENABLED = "cli.sample.gen.enable";
- public static final String SAMPLE_GEN_TARGET_FOLDER = "cli.sample.gen.target";
-
public static final String SPL_ENTRY_UUID = "uuid";
public static final String SPL_ENTRY_ENV = "env:";
- //auth plugin
- public static final String AUTH_SERVICE_AUTHORIZATION = "Authorization";
-
- //catalog plugin
- public static final String CATALOG_SERVICE_NAME = "catalog-service-name";
- public static final String CATALOG_SERVICE_VERSION = "catalog-service-version";
- public static final String CATALOG_SERVICE_BASE_PATH = "catalog-service-base-path";
- public static final String CATALOG_SERVICE_HOST_URL = "catalog-service-host-url";
-
public static final String VERSION_INFO = "version.info";
public static final String VERSION_INFO_PLACE_HOLDER_VERSION = "__VERSION__";
public static final String VERSION_INFO_PLACE_HOLDER_AVL_PRD_VER = "__AVAILABLE_PRODUCT_VERSIONS__";
public static final String VERSION_INFO_PLACE_HOLDER_ENB_PRD_VER = "__ENABLED_PRODUCT_VERSIONS__";
- private Constants() {
+ public static final String SAMPLE_GEN_ENABLED = "cli.sample.gen.enable";
+ public static final String SAMPLE_GEN_TARGET_FOLDER = "cli.sample.gen.target";
+
+ private OnapCommandConstants() {
}
}
package org.onap.cli.fw.error;
-import org.onap.cli.fw.OnapCommand;
+import org.onap.cli.fw.cmd.OnapCommand;
/**
* Command class invalid.
package org.onap.cli.fw.info;
-import org.onap.cli.fw.cmd.CommandType;
+import org.onap.cli.fw.cmd.OnapCommandType;
/**
* Oclip Command info like product version, service, contact, etc.
private String author;
- private CommandType type = CommandType.CMD;
+ private OnapCommandType type = OnapCommandType.CMD;
private boolean ignore = false;
this.author = email;
}
- public CommandType getCommandType() {
+ public OnapCommandType getCommandType() {
return type;
}
- public void setCommandType(CommandType type) {
+ public void setCommandType(OnapCommandType type) {
this.type = type;
}
/*
* Parameter type such as int, json, yaml, string, etc
*/
- private ParameterType parameterType;
+ private OnapCommandParameterType parameterType;
/*
* Default value
this.longOption = longOption;
}
- public ParameterType getParameterType() {
+ public OnapCommandParameterType getParameterType() {
return parameterType;
}
- public void setParameterType(ParameterType parameterType) {
+ public void setParameterType(OnapCommandParameterType parameterType) {
this.parameterType = parameterType;
if (this.defaultValue.isEmpty()) {
- if (this.getParameterType().equals(ParameterType.BOOL)) {
+ if (this.getParameterType().equals(OnapCommandParameterType.BOOL)) {
// For bool type always the default param is false
this.defaultValue = "false";
- } else if (this.getParameterType().equals(ParameterType.UUID)) {
+ } else if (this.getParameterType().equals(OnapCommandParameterType.UUID)) {
this.defaultValue = UUID.randomUUID().toString();
}
}
public void setValue(Object value) throws OnapCommandInvalidParameterValue {
this.rawValue = value;
- if (ParameterType.URL.equals(parameterType) && !value.toString().isEmpty() && !value.toString().startsWith("http")
+ if (OnapCommandParameterType.URL.equals(parameterType) && !value.toString().isEmpty() && !value.toString().startsWith("http")
&& !value.toString().startsWith("/")) {
this.value = "/" + value;
- } else if (ParameterType.ARRAY.equals(parameterType)) {
+ } else if (OnapCommandParameterType.ARRAY.equals(parameterType)) {
if (!(value instanceof List)) {
throw new OnapCommandInvalidParameterValue(this.getName());
}
} catch (JsonProcessingException e) {
throw new OnapCommandInvalidParameterValue(this.getName(), e);
}
- } else if (ParameterType.MAP.equals(parameterType)) {
+ } else if (OnapCommandParameterType.MAP.equals(parameterType)) {
if (!(value instanceof Map)) {
throw new OnapCommandInvalidParameterValue(this.getName());
}
throw new OnapCommandParameterMissing(this.getName());
}
- if (!this.isOptional() && ParameterType.BINARY.equals(parameterType)) {
+ if (!this.isOptional() && OnapCommandParameterType.BINARY.equals(parameterType)) {
File file = new File(value.toString());
if (!file.isFile()) {
throw new OnapCommandInvalidParameterValue(this.getName());
}
}
- // (mrkanag) validate for type supported ParameterType using constraints
+ // (mrkanag) validate for type supported OnapCommandParameterType using constraints
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((cmdName == null) ? 0 : cmdName.hashCode());
+ result = prime * result + ((longOption == null) ? 0 : longOption.hashCode());
+ result = prime * result + ((shortOption == null) ? 0 : shortOption.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ OnapCommandParameter other = (OnapCommandParameter) obj;
+ if (cmdName == null) {
+ if (other.cmdName != null)
+ return false;
+ } else if (!cmdName.equals(other.cmdName))
+ return false;
+ if (longOption == null) {
+ if (other.longOption != null)
+ return false;
+ } else if (!longOption.equals(other.longOption))
+ return false;
+ if (shortOption == null) {
+ if (other.shortOption != null)
+ return false;
+ } else if (!shortOption.equals(other.shortOption))
+ return false;
+ return true;
}
}
* Parameter type supported by Oclip CLI.
*
*/
-public enum ParameterType {
+public enum OnapCommandParameterType {
/**
* JSON file.
*/
* @throws OnapCommandInvalidParameterType
* exception
*/
- public static ParameterType get(String name) throws OnapCommandInvalidParameterType {
+ public static OnapCommandParameterType get(String name) throws OnapCommandInvalidParameterType {
if (JSON.name().equalsIgnoreCase(name)) {
return JSON;
} else if (YAML.name().equalsIgnoreCase(name)) {
package org.onap.cli.fw.input.cache;
-public class Param {
+public class OnapCommandParamEntity {
private String product;
package org.onap.cli.fw.input.cache;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DATA_DIRECTORY;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DATA_PATH_JSON_PATTERN;
+
+import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandLoadProfileFailed;
import org.onap.cli.fw.error.OnapCommandPersistProfileFailed;
-import org.onap.cli.fw.utils.OnapCommandProfileUtils;
+import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils;
+import org.springframework.core.io.Resource;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
public class OnapCommandParameterCache {
private static OnapCommandParameterCache single = null;
- private String profileName = Constants.PARAM_CACHE_FILE_NAME;
+ private String profileName = OnapCommandConstants.PARAM_CACHE_FILE_NAME;
private OnapCommandParameterCache() {
}
private void persist() {
- List<Param> params = new ArrayList<>();
+ List<OnapCommandParamEntity> params = new ArrayList<>();
for (String p: this.paramCache.keySet()) {
for (String name: this.paramCache.get(p).keySet()) {
- Param param = new Param();
+ OnapCommandParamEntity param = new OnapCommandParamEntity();
param.setProduct(p);
param.setName(name);
param.setValue(this.paramCache.get(p).get(name));
}
try {
- OnapCommandProfileUtils.persistProfile(params, this.profileName);
+ this.persistProfile(params, this.profileName);
} catch (OnapCommandPersistProfileFailed e) {
throw new RuntimeException(e); // NOSONAR
}
}
private void load() {
- List<Param> params= new ArrayList<>();
+ List<OnapCommandParamEntity> params= new ArrayList<>();
try {
- params = OnapCommandProfileUtils.loadParamFromCache(this.profileName);
+ params = this.loadParamFromCache(this.profileName);
} catch (OnapCommandLoadProfileFailed e) {
throw new RuntimeException(e); // NOSONAR
}
- for (Param p : params) {
+ for (OnapCommandParamEntity p : params) {
this.add(p.getProduct(), p.getName(), p.getValue());
}
}
this.profileName = profileName;
this.load();
}
+
+ private void persistProfile(List<OnapCommandParamEntity> params, String profileName) throws OnapCommandPersistProfileFailed {
+ if (params != null) {
+ try {
+ Resource[] resources = OnapCommandDiscoveryUtils.findResources(DATA_DIRECTORY);
+ if (resources != null && resources.length == 1) {
+ String path = resources[0].getURI().getPath();
+ File file = new File(path + File.separator + profileName + ".json");
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.writerWithDefaultPrettyPrinter().writeValue(file, params);
+ }
+ } catch (IOException e1) {
+ throw new OnapCommandPersistProfileFailed(e1);
+ }
+ }
+ }
+
+ private List<OnapCommandParamEntity> loadParamFromCache(String profileName) throws OnapCommandLoadProfileFailed {
+ List<OnapCommandParamEntity> params = new ArrayList<>();
+
+ try {
+ Resource resource = OnapCommandDiscoveryUtils.findResource(profileName + ".json",
+ DATA_PATH_JSON_PATTERN);
+ if (resource != null) {
+ File file = new File(resource.getURI().getPath());
+ ObjectMapper mapper = new ObjectMapper();
+ OnapCommandParamEntity[] list = mapper.readValue(file, OnapCommandParamEntity[].class);
+ params.addAll(Arrays.asList(list));
+ }
+ } catch (IOException e) {
+ throw new OnapCommandLoadProfileFailed(e);
+ }
+
+ return params;
+ }
}
* How to print the result.
*
*/
-public enum PrintDirection {
+public enum OnapCommandPrintDirection {
LANDSCAPE, PORTRAIT;
/**
* Get print direction.
* @throws OnapCommandInvalidPrintDirection
* exception
*/
- public static PrintDirection get(String name) throws OnapCommandInvalidPrintDirection {
+ public static OnapCommandPrintDirection get(String name) throws OnapCommandInvalidPrintDirection {
if (LANDSCAPE.name().equalsIgnoreCase(name)) {
return LANDSCAPE;
} else if (PORTRAIT.name().equalsIgnoreCase(name)) {
import java.util.List;
import java.util.Map;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandOutputFormatNotsupported;
import org.onap.cli.fw.error.OnapCommandOutputPrintingFailed;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
import org.onap.cli.fw.output.print.OnapCommandPrint;
import org.onap.cli.fw.utils.OnapCommandUtils;
/*
* Type requested by user
*/
- private ResultType type = ResultType.TABLE;
+ private OnapCommandResultType type = OnapCommandResultType.TABLE;
/*
* Scope requested by user
*
* loaded from schema file
*/
- private PrintDirection printDirection = PrintDirection.LANDSCAPE;
+ private OnapCommandPrintDirection printDirection = OnapCommandPrintDirection.LANDSCAPE;
private String debugInfo = "";
*/
private boolean isDebug = false;
- public PrintDirection getPrintDirection() {
+ public OnapCommandPrintDirection getPrintDirection() {
return printDirection;
}
- public void setPrintDirection(PrintDirection printDirection) {
+ public void setPrintDirection(OnapCommandPrintDirection printDirection) {
this.printDirection = printDirection;
}
return recordMap;
}
- public ResultType getType() {
+ public OnapCommandResultType getType() {
return type;
}
- public void setType(ResultType type) {
+ public void setType(OnapCommandResultType type) {
this.type = type;
}
OnapCommandPrint print = new OnapCommandPrint();
print.setPrintTitle(this.isIncludeTitle());
- if (this.getPrintDirection().equals(PrintDirection.LANDSCAPE)) {
+ if (this.getPrintDirection().equals(OnapCommandPrintDirection.LANDSCAPE)) {
for (OnapCommandResultAttribute record : this.getScopedRecords()) {
- if (record.getType().equals(ParameterType.JSON)) {
+ if (record.getType().equals(OnapCommandParameterType.JSON)) {
print.addColumn(record.getName(), OnapCommandUtils.jsonFlatten(record.getValues()));
} else {
print.addColumn(record.getName(), record.getValues());
} else {
// Add property column
OnapCommandResultAttribute prp = new OnapCommandResultAttribute();
- prp.setName(Constants.PORTRAINT_COLUMN_NAME_PROPERTY);
+ prp.setName(OnapCommandConstants.PORTRAINT_COLUMN_NAME_PROPERTY);
prp.setScope(OnapCommandResultAttributeScope.SHORT);
// Add value column
OnapCommandResultAttribute val = new OnapCommandResultAttribute();
- val.setName(Constants.PORTRAINT_COLUMN_NAME_VALUE);
+ val.setName(OnapCommandConstants.PORTRAINT_COLUMN_NAME_VALUE);
val.setScope(OnapCommandResultAttributeScope.SHORT);
for (OnapCommandResultAttribute record : this.getScopedRecords()) {
printOutput = this.getDebugInfo() + "\n";
}
- if (this.getType().equals(ResultType.JSON)) {
+ if (this.getType().equals(OnapCommandResultType.JSON)) {
return printOutput + print.printJson();
- } else if (this.getType().equals(ResultType.TABLE)) {
+ } else if (this.getType().equals(OnapCommandResultType.TABLE)) {
return printOutput + print.printTable(this.isIncludeSeparator());
- } else if (this.getType().equals(ResultType.CSV)) {
+ } else if (this.getType().equals(OnapCommandResultType.CSV)) {
return printOutput + print.printCsv();
}
import java.util.Arrays;
import java.util.List;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
/**
* Oclip command output records, helps to define the title and its description while command is defined and during run
*/
private OnapCommandResultAttributeScope outScope = OnapCommandResultAttributeScope.SHORT;
- private ParameterType paramType = ParameterType.STRING;
+ private OnapCommandParameterType paramType = OnapCommandParameterType.STRING;
private boolean isSecured = false;
this.outScope = scope;
}
- public ParameterType getType() {
+ public OnapCommandParameterType getType() {
return paramType;
}
- public void setType(ParameterType type) {
+ public void setType(OnapCommandParameterType type) {
this.paramType = type;
}
* Oclip command result format.
*
*/
-public enum ResultType {
+public enum OnapCommandResultType {
TABLE, CSV, JSON, YAML, TEXT;
/**
}
/**
- * Get ResultType.
+ * Get OnapCommandResultType.
*
* @param name
* format name
- * @return ResultType
+ * @return OnapCommandResultType
*/
- public static ResultType get(String name) {
+ public static OnapCommandResultType get(String name) {
if (TABLE.name().equalsIgnoreCase(name)) {
return TABLE;
}
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.onap.cli.fw.error.OnapCommandOutputPrintingFailed;
-import org.onap.cli.fw.output.PrintDirection;
+import org.onap.cli.fw.output.OnapCommandPrintDirection;
/**
* Oclip Command Table print.
public static final int MAX_COLUMN_LENGTH = 50;
- private PrintDirection direction;
+ private OnapCommandPrintDirection direction;
private Map<String, List<String>> data = new LinkedHashMap<>();
private boolean printTitle = true;
- public PrintDirection getDirection() {
+ public OnapCommandPrintDirection getDirection() {
return direction;
}
- public void setDirection(PrintDirection direction) {
+ public void setDirection(OnapCommandPrintDirection direction) {
this.direction = direction;
}
* limitations under the License.
*/
-package org.onap.cli.fw;
+package org.onap.cli.fw.registrar;
import java.io.IOException;
import java.util.HashMap;
import java.util.Set;
import org.apache.commons.io.IOUtils;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandHelpFailed;
import org.onap.cli.fw.error.OnapCommandInvalidRegistration;
import org.onap.cli.fw.error.OnapCommandRegistrationProductInfoMissing;
import org.onap.cli.fw.error.OnapUnsupportedSchemaProfile;
import org.onap.cli.fw.input.cache.OnapCommandParameterCache;
+import org.onap.cli.fw.output.OnapCommandPrintDirection;
import org.onap.cli.fw.output.OnapCommandResult;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
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.output.OnapCommandResultType;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.schema.OnapCommandSchemaInfo;
import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils;
import org.onap.cli.fw.utils.OnapCommandHelperUtils;
import org.onap.cli.fw.utils.OnapCommandUtils;
-import org.onap.cli.fw.utils.SchemaInfo;
/**
private Set<String> availableProductVersions = new HashSet<>();
- private String enabledProductVersion = OnapCommandConfg.getEnabledProductVersion();
+ private String enabledProductVersion = null;
private boolean isInteractiveMode = false;
this.registryProfilePlugins.put(profile, cmd);
}
+ private OnapCommandRegistrar() {
+ this.enabledProductVersion = System.getenv(OnapCommandConstants.OPEN_CLI_PRODUCT_IN_USE_ENV_NAME);
+ if (this.enabledProductVersion == null) {
+ this.enabledProductVersion = OnapCommandConfig.getPropertyValue(OnapCommandConstants.OPEN_CLI_PRODUCT_NAME);
+ }
+ }
+
/**
* Get global registrar.
*
* @throws OnapCommandException
* exception
*/
- public List<SchemaInfo> listCommandInfo() throws OnapCommandException {
+ public List<OnapCommandSchemaInfo> listCommandInfo() throws OnapCommandException {
return OnapCommandDiscoveryUtils.discoverSchemas();
}
}
private void autoDiscoverSchemas() throws OnapCommandException {
- List<SchemaInfo> schemas = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(true);
+ List<OnapCommandSchemaInfo> schemas = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(true);
Map<String, Class<OnapCommand>> plugins = this.autoDiscoverCommandPlugins();
- for (SchemaInfo schema : schemas) {
+ for (OnapCommandSchemaInfo schema : schemas) {
if (schema.isIgnore()) {
continue;
}
public String getVersion() {
String version = this.getClass().getPackage().getImplementationVersion();
if (version == null) {
- version = OnapCommandConfg.getVersion();
+ version = OnapCommandConfig.getPropertyValue(OnapCommandConstants.OPEN_CLI_VERSION);
}
String buildTime = OnapCommandHelperUtils.findLastBuildTime();
String versionInfo = "";
try {
- versionInfo = IOUtils.toString(this.getClass().getClassLoader().getResourceAsStream(Constants.VERSION_INFO));
+ versionInfo = IOUtils.toString(this.getClass().getClassLoader().getResourceAsStream(OnapCommandConstants.VERSION_INFO));
} catch (IOException e) {
//Never occurs // NOSONAR
}
- versionInfo = versionInfo.replaceAll(Constants.VERSION_INFO_PLACE_HOLDER_ENB_PRD_VER, configuredProductVersion);
- versionInfo = versionInfo.replaceAll(Constants.VERSION_INFO_PLACE_HOLDER_AVL_PRD_VER, this.availableProductVersions.toString());
- versionInfo = versionInfo.replaceAll(Constants.VERSION_INFO_PLACE_HOLDER_VERSION + "", version + buildTime);
+ versionInfo = versionInfo.replaceAll(OnapCommandConstants.VERSION_INFO_PLACE_HOLDER_ENB_PRD_VER, configuredProductVersion);
+ versionInfo = versionInfo.replaceAll(OnapCommandConstants.VERSION_INFO_PLACE_HOLDER_AVL_PRD_VER, this.availableProductVersions.toString());
+ versionInfo = versionInfo.replaceAll(OnapCommandConstants.VERSION_INFO_PLACE_HOLDER_VERSION + "", version + buildTime);
return versionInfo;
}
private String getHelp(boolean isEnabledProductVersionOnly) throws OnapCommandHelpFailed {
OnapCommandResult help = new OnapCommandResult();
- help.setType(ResultType.TABLE);
- help.setPrintDirection(PrintDirection.LANDSCAPE);
+ help.setType(OnapCommandResultType.TABLE);
+ help.setPrintDirection(OnapCommandPrintDirection.LANDSCAPE);
OnapCommandResultAttribute attr = new OnapCommandResultAttribute();
- attr.setName(Constants.NAME.toUpperCase());
- attr.setDescription(Constants.DESCRIPTION);
+ attr.setName(OnapCommandConstants.NAME.toUpperCase());
+ attr.setDescription(OnapCommandConstants.DESCRIPTION);
attr.setScope(OnapCommandResultAttributeScope.SHORT);
help.getRecords().add(attr);
OnapCommandResultAttribute attrVer = new OnapCommandResultAttribute();
if (!isEnabledProductVersionOnly) {
- attrVer.setName(Constants.INFO_PRODUCT.toUpperCase());
- attrVer.setDescription(Constants.DESCRIPTION);
+ attrVer.setName(OnapCommandConstants.INFO_PRODUCT.toUpperCase());
+ attrVer.setDescription(OnapCommandConstants.DESCRIPTION);
attrVer.setScope(OnapCommandResultAttributeScope.SHORT);
help.getRecords().add(attrVer);
}
OnapCommandResultAttribute attrSrv = new OnapCommandResultAttribute();
- attrSrv.setName(Constants.SERVICE.toUpperCase());
- attrSrv.setDescription(Constants.SERVICE);
+ attrSrv.setName(OnapCommandConstants.INFO_SERVICE.toUpperCase());
+ attrSrv.setDescription(OnapCommandConstants.INFO_SERVICE);
attrSrv.setScope(OnapCommandResultAttributeScope.SHORT);
help.getRecords().add(attrSrv);
OnapCommandResultAttribute attrDesc = new OnapCommandResultAttribute();
- attrDesc.setName(Constants.DESCRIPTION.toUpperCase());
- attrDesc.setDescription(Constants.DESCRIPTION);
+ attrDesc.setName(OnapCommandConstants.DESCRIPTION.toUpperCase());
+ attrDesc.setDescription(OnapCommandConstants.DESCRIPTION);
attrDesc.setScope(OnapCommandResultAttributeScope.SHORT);
help.getRecords().add(attrDesc);
* limitations under the License.
*/
-package org.onap.cli.fw;
+package org.onap.cli.fw.schema;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
* limitations under the License.
*/
-package org.onap.cli.fw.utils;
+package org.onap.cli.fw.schema;
-import org.onap.cli.fw.cmd.CommandType;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.cmd.OnapCommandType;
+import org.onap.cli.fw.conf.OnapCommandConstants;
/**
- * SchemaInfo is used in discovery caching.
+ * OnapCommandSchemaInfo is used in discovery caching.
*
*/
-public class SchemaInfo {
+public class OnapCommandSchemaInfo {
/**
* Name of the schema file name
*/
private String version;
- private String type = CommandType.CMD.name();
+ private String type = OnapCommandType.CMD.name();
- private String schemaProfile = Constants.BASIC_SCHEMA_PROFILE;
+ private String schemaProfile = OnapCommandConstants.BASIC_SCHEMA_PROFILE;
- private String ignore = Constants.BOOLEAN_FALSE;
+ private String ignore = OnapCommandConstants.BOOLEAN_FALSE;
public String getSchemaName() {
return schemaName;
}
public boolean isIgnore() {
- return Constants.BOOLEAN_TRUE.equalsIgnoreCase(this.getIgnore());
+ return OnapCommandConstants.BOOLEAN_TRUE.equalsIgnoreCase(this.getIgnore());
}
public String getIgnore() {
* limitations under the License.
*/
-package org.onap.cli.fw.utils;
-
-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_TRUE;
-import static org.onap.cli.fw.conf.Constants.COMMAND_TYPE_VALUES;
-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.HEADERS;
-import static org.onap.cli.fw.conf.Constants.HTTP;
-import static org.onap.cli.fw.conf.Constants.HTTP_MANDATORY_SECTIONS;
-import static org.onap.cli.fw.conf.Constants.HTTP_SECTIONS;
-import static org.onap.cli.fw.conf.Constants.INFO;
-import static org.onap.cli.fw.conf.Constants.INFO_AUTHOR;
-import static org.onap.cli.fw.conf.Constants.INFO_IGNORE;
-import static org.onap.cli.fw.conf.Constants.INFO_PARAMS_LIST;
-import static org.onap.cli.fw.conf.Constants.INFO_PARAMS_MANDATORY_LIST;
-import static org.onap.cli.fw.conf.Constants.INFO_PRODUCT;
-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_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.QUERIES;
-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_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;
+package org.onap.cli.fw.schema;
+
+import static org.onap.cli.fw.conf.OnapCommandConstants.ATTRIBUTES;
+import static org.onap.cli.fw.conf.OnapCommandConstants.BOOLEAN_TRUE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.COMMAND_TYPE_VALUES;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DEFAULT_PARAMETER_FILE_NAME;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DEFAULT_VALUE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DESCRIPTION;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DIRECTION;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO_AUTHOR;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO_IGNORE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO_PARAMS_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO_PARAMS_MANDATORY_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO_PRODUCT;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO_SERVICE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INFO_TYPE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INPUT_PARAMS_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.INPUT_PARAMS_MANDATORY_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.IS_INCLUDE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.IS_OPTIONAL;
+import static org.onap.cli.fw.conf.OnapCommandConstants.IS_SECURED;
+import static org.onap.cli.fw.conf.OnapCommandConstants.LONG_OPTION;
+import static org.onap.cli.fw.conf.OnapCommandConstants.NAME;
+import static org.onap.cli.fw.conf.OnapCommandConstants.OPEN_CLI_SCHEMA_VERSION;
+import static org.onap.cli.fw.conf.OnapCommandConstants.PARAMETERS;
+import static org.onap.cli.fw.conf.OnapCommandConstants.RESULTS;
+import static org.onap.cli.fw.conf.OnapCommandConstants.RESULT_PARAMS_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.RESULT_PARAMS_MANDATORY_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.SCHEMA_FILE_NOT_EXIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.SCHEMA_FILE_WRONG_EXTN;
+import static org.onap.cli.fw.conf.OnapCommandConstants.SCHEMA_PATH_PATERN;
+import static org.onap.cli.fw.conf.OnapCommandConstants.SCOPE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.SHORT_OPTION;
+import static org.onap.cli.fw.conf.OnapCommandConstants.TOP_LEVEL_MANDATORY_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.TOP_LEVEL_PARAMS_LIST;
+import static org.onap.cli.fw.conf.OnapCommandConstants.TYPE;
import java.io.File;
import java.io.FileInputStream;
import java.util.Map;
import java.util.Set;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.ad.OnapService;
-import org.onap.cli.fw.cmd.CommandType;
-import org.onap.cli.fw.cmd.OnapHttpCommand;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.cmd.OnapCommandType;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandInvalidSchema;
import org.onap.cli.fw.error.OnapCommandInvalidSchemaVersion;
import org.onap.cli.fw.error.OnapCommandSchemaNotFound;
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.OnapCommandParameterType;
+import org.onap.cli.fw.output.OnapCommandPrintDirection;
import org.onap.cli.fw.output.OnapCommandResult;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
import org.onap.cli.fw.output.OnapCommandResultAttributeScope;
-import org.onap.cli.fw.output.PrintDirection;
+import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils;
+import org.onap.cli.fw.utils.OnapCommandUtils;
import org.springframework.core.io.Resource;
import org.yaml.snakeyaml.Yaml;
-public class OnapCommandSchemaLoaderUtils {
+public class OnapCommandSchemaLoader {
/**
* Validates schema version.
throw new OnapCommandSchemaNotFound(schemaName, e);
}
if (inputStream == null) {
- inputStream = OnapCommandSchemaLoaderUtils.loadSchemaFromFile(schemaName);
+ inputStream = OnapCommandSchemaLoader.loadSchemaFromFile(schemaName);
}
- Map<String, ?> values = OnapCommandSchemaLoaderUtils.loadSchema(inputStream, schemaName);
+ Map<String, ?> values = OnapCommandSchemaLoader.loadSchema(inputStream, schemaName);
String schemaVersion = "";
if (values.keySet().contains(OPEN_CLI_SCHEMA_VERSION)) {
Object obj = values.get(OPEN_CLI_SCHEMA_VERSION);
validateSchemaVersion(DEFAULT_PARAMETER_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>();
//mrkanag default_parameter is supported only for parameters.
if (defaultParameterMap.containsKey(INFO)) {
- defaultParameterMap.remove(Constants.INFO);
+ defaultParameterMap.remove(OnapCommandConstants.INFO);
}
- errors.addAll(OnapCommandSchemaLoaderUtils.parseSchema(cmd, defaultParameterMap, validateSchema));
+ errors.addAll(OnapCommandSchemaLoader.parseSchema(cmd, defaultParameterMap, validateSchema));
}
Map<String, List<Map<String, String>>> commandYamlMap =
(Map<String, List<Map<String, String>>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion());
- errors.addAll(OnapCommandSchemaLoaderUtils.parseSchema(cmd, commandYamlMap, validateSchema));
+ errors.addAll(OnapCommandSchemaLoader.parseSchema(cmd, commandYamlMap, validateSchema));
return errors;
} catch (OnapCommandException 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<>();
-
- //mrkanag default_parameter is supported only for parameters.
- if (defaultParameterMap.containsKey(INFO)) {
- defaultParameterMap.remove(Constants.INFO);
- }
-
- errors.addAll(OnapCommandSchemaLoaderUtils.parseSchema(cmd, defaultParameterMap, validateSchema));
- }
-
- Map<String, List<Map<String, String>>> commandYamlMap =
- (Map<String, List<Map<String, String>>>)validateSchemaVersion(schemaName, cmd.getSchemaVersion());
-
- errors.addAll(OnapCommandSchemaLoaderUtils.parseHttpSchema(cmd, commandYamlMap, validateSchema));
-
- return errors;
-
- } catch (OnapCommandException e) {
- throw e;
- } catch (Exception e) {
- throw new OnapCommandInvalidSchema(schemaName, e);
- }
- }
-
- static List<String> parseSchema(OnapCommand cmd,
+ public static List<String> parseSchema(OnapCommand cmd,
final Map<String, ?> values,
boolean validate) throws OnapCommandException {
List<String> longOptions = new ArrayList<>();
if (validate) {
- OnapCommandUtils.validateTags(exceptionList, (Map<String, Object>) values, OnapCommandConfg.getSchemaAttrInfo(TOP_LEVEL_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(TOP_LEVEL_MANDATORY_LIST), "root level");
+ OnapCommandUtils.validateTags(exceptionList, (Map<String, Object>) values, OnapCommandConfig.getCommaSeparatedList(TOP_LEVEL_PARAMS_LIST),
+ OnapCommandConfig.getCommaSeparatedList(TOP_LEVEL_MANDATORY_LIST), "root level");
}
if (infoMap != null) {
if (validate) {
OnapCommandUtils.validateTags(exceptionList, (Map<String, Object>) values.get(key),
- OnapCommandConfg.getSchemaAttrInfo(INFO_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(INFO_PARAMS_MANDATORY_LIST), INFO);
+ OnapCommandConfig.getCommaSeparatedList(INFO_PARAMS_LIST),
+ OnapCommandConfig.getCommaSeparatedList(INFO_PARAMS_MANDATORY_LIST), INFO);
HashMap<String, String> validationMap = new HashMap<>();
validationMap.put(INFO_TYPE, COMMAND_TYPE_VALUES);
exceptionList.add("Attribute '" + secKey + "' under '" + INFO + "' is empty");
} else {
String value = String.valueOf(obj);
- if (!OnapCommandConfg.getSchemaAttrInfo(validationMap.get(secKey)).contains(value)) {
+ if (!OnapCommandConfig.getCommaSeparatedList(validationMap.get(secKey)).contains(value)) {
exceptionList.add("Attribute '" + secKey + "' contains invalid value. Valide values are "
- + OnapCommandConfg.getSchemaAttrInfo(validationMap.get(key))); //
+ + OnapCommandConfig.getCommaSeparatedList(validationMap.get(key))); //
}
}
}
case INFO_TYPE:
Object obj = infoMap.get(key1);
- info.setCommandType(CommandType.get(obj.toString()));
+ info.setCommandType(OnapCommandType.get(obj.toString()));
break;
case INFO_AUTHOR:
case INFO_IGNORE:
Object ignore = infoMap.get(key1);
- info.setIgnore(ignore.toString().equalsIgnoreCase(Constants.BOOLEAN_TRUE));
+ info.setIgnore(ignore.toString().equalsIgnoreCase(OnapCommandConstants.BOOLEAN_TRUE));
break;
}
}
}
if (validate) {
- OnapCommandUtils.validateTags(exceptionList, parameter, OnapCommandConfg.getSchemaAttrInfo(INPUT_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(INPUT_PARAMS_MANDATORY_LIST), PARAMETERS);
+ OnapCommandUtils.validateTags(exceptionList, parameter, OnapCommandConfig.getCommaSeparatedList(INPUT_PARAMS_LIST),
+ OnapCommandConfig.getCommaSeparatedList(INPUT_PARAMS_MANDATORY_LIST), PARAMETERS);
}
for (Map.Entry<String, String> entry1 : parameter.entrySet()) {
case TYPE:
try {
- param.setParameterType(ParameterType.get(parameter.get(key2)));
+ param.setParameterType(OnapCommandParameterType.get(parameter.get(key2)));
} catch (OnapCommandException ex) {
OnapCommandUtils.throwOrCollect(ex, exceptionList, validate);
}
switch (key3) {
case DIRECTION:
try {
- result.setPrintDirection(PrintDirection.get((String) valueMap.get(key3)));
+ result.setPrintDirection(OnapCommandPrintDirection.get((String) valueMap.get(key3)));
} catch (OnapCommandException ex) {
OnapCommandUtils.throwOrCollect(ex, exceptionList, validate);
}
for (Map<String, String> map : attrs) {
OnapCommandResultAttribute attr = new OnapCommandResultAttribute();
if (validate) {
- OnapCommandUtils.validateTags(exceptionList, map, OnapCommandConfg.getSchemaAttrInfo(RESULT_PARAMS_LIST),
- OnapCommandConfg.getSchemaAttrInfo(RESULT_PARAMS_MANDATORY_LIST), ATTRIBUTES);
+ OnapCommandUtils.validateTags(exceptionList, map, OnapCommandConfig.getCommaSeparatedList(RESULT_PARAMS_LIST),
+ OnapCommandConfig.getCommaSeparatedList(RESULT_PARAMS_MANDATORY_LIST), ATTRIBUTES);
}
Set<String> resultParamNames = new HashSet<>();
case TYPE:
try {
- attr.setType(ParameterType.get(map.get(key4)));
+ attr.setType(OnapCommandParameterType.get(map.get(key4)));
} catch (OnapCommandException ex) {
OnapCommandUtils.throwOrCollect(ex, exceptionList, validate);
}
return exceptionList;
}
- /**
- * Load the schema.
- *
- * @param cmd
- * OnapHttpCommand
- * @param schemaName
- * schema name
- * @throws OnapCommandException
- * on error
- */
- 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) {
- OnapCommandUtils.validateTags(errorList, valMap, OnapCommandConfg.getSchemaAttrInfo(HTTP_SECTIONS),
- OnapCommandConfg.getSchemaAttrInfo(HTTP_MANDATORY_SECTIONS), PARAMETERS);
- errorList.addAll(OnapCommandUtils.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) {
- OnapCommandUtils.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) {
- OnapCommandUtils.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;
-
- //mrkanag: from auth command, add the parameters to the command's parameters list
-
- case MODE:
- Object mode = serviceMap.get(key);
- srv.setMode(mode.toString());
- break;
- }
- }
- cmd.setService(srv);
- }
- break;
-
- case SUCCESS_CODES:
- if (validate) {
- OnapCommandUtils.validateHttpSccessCodes(errorList, (List<Object>) valMap.get(key1));
- }
- cmd.setSuccessStatusCodes((ArrayList) valMap.get(key1));
- break;
-
- case RESULT_MAP:
- if (validate) {
- OnapCommandUtils.validateHttpResultMap(errorList, values);
- }
- cmd.setResultMap((Map<String, String>) valMap.get(key1));
- break;
-
- case SAMPLE_RESPONSE:
- // (mrkanag) implement sample response handling
- break;
- }
- }
- }
- }catch (OnapCommandException e) {
- OnapCommandUtils.throwOrCollect(e, errorList, validate);
- }
-
- //Handle the parameters for auth
- if (!cmd.getService().isNoAuth()) {
- OnapCommand login = OnapCommandDiscoveryUtils.findAuthCommand(cmd, "login");
- OnapCommandUtils.copyParamSchemasFrom(login, cmd);
- }
-
- return errorList;
- }
-
public static InputStream loadSchemaFromFile(String schemaLocation) throws OnapCommandInvalidSchema {
File schemaFile = new File(schemaLocation);
try {
*/
public static Map<String, ?> loadSchema(Resource resource) throws OnapCommandInvalidSchema {
try {
- return OnapCommandSchemaLoaderUtils.loadSchema(resource.getInputStream(), resource.getFilename());
+ return OnapCommandSchemaLoader.loadSchema(resource.getInputStream(), resource.getFilename());
} catch (IOException e) {
throw new OnapCommandInvalidSchema(resource.getFilename(), e);
}
package org.onap.cli.fw.utils;
-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.DISCOVERY_FILE;
-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.SCHEMA_DIRECTORY;
-import static org.onap.cli.fw.conf.Constants.SCHEMA_PATH_PATERN;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DATA_DIRECTORY;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DATA_PATH_JSON_PATTERN;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DISCOVERY_FILE;
+import static org.onap.cli.fw.conf.OnapCommandConstants.NAME;
+import static org.onap.cli.fw.conf.OnapCommandConstants.OPEN_CLI_SCHEMA_VERSION;
+import static org.onap.cli.fw.conf.OnapCommandConstants.SCHEMA_DIRECTORY;
+import static org.onap.cli.fw.conf.OnapCommandConstants.SCHEMA_PATH_PATERN;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.ServiceLoader;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
-import org.onap.cli.fw.cmd.OnapHttpCommand;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandDiscoveryFailed;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandInstantiationFailed;
import org.onap.cli.fw.error.OnapCommandInvalidSchema;
-import org.onap.cli.fw.error.OnapCommandNotFound;
+import org.onap.cli.fw.schema.OnapCommandSchemaInfo;
+import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
* @throws OnapCommandDiscoveryFailed
* exception
*/
- public static SchemaInfo getSchemaInfo(String cmd, String version) throws OnapCommandException {
- List<SchemaInfo> list = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(false);
- SchemaInfo schemaInfo = null;
+ public static OnapCommandSchemaInfo getSchemaInfo(String cmd, String version) throws OnapCommandException {
+ List<OnapCommandSchemaInfo> list = OnapCommandDiscoveryUtils.discoverOrLoadSchemas(false);
+ OnapCommandSchemaInfo schemaInfo = null;
if (list != null) {
- for (SchemaInfo schema : list) {
+ for (OnapCommandSchemaInfo schema : list) {
if (cmd.equals(schema.getCmdName()) && version.equals(schema.getProduct())) {
schemaInfo = schema;
break;
* @throws OnapCommandDiscoveryFailed
* exception
*/
- public static List<SchemaInfo> discoverOrLoadSchemas(boolean forceRefresh) throws OnapCommandException {
- List<SchemaInfo> schemas = new ArrayList<>();
- if (forceRefresh || OnapCommandConfg.isDiscoverAlways() || !OnapCommandDiscoveryUtils.isAlreadyDiscovered()) {
+ public static List<OnapCommandSchemaInfo> discoverOrLoadSchemas(boolean forceRefresh) throws OnapCommandException {
+ List<OnapCommandSchemaInfo> schemas = new ArrayList<>();
+ if (forceRefresh || Boolean.parseBoolean(OnapCommandConfig.getPropertyValue(OnapCommandConstants.DISCOVER_ALWAYS))
+ || !OnapCommandDiscoveryUtils.isAlreadyDiscovered()) {
schemas = OnapCommandDiscoveryUtils.discoverSchemas();
if (!schemas.isEmpty()) {
OnapCommandDiscoveryUtils.persistSchemaInfo(schemas);
if (resource != null) {
File file = new File(resource.getURI().getPath());
ObjectMapper mapper = new ObjectMapper();
- SchemaInfo[] list = mapper.readValue(file, SchemaInfo[].class);
+ OnapCommandSchemaInfo[] list = mapper.readValue(file, OnapCommandSchemaInfo[].class);
schemas.addAll(Arrays.asList(list));
}
} catch (IOException e) {
* @throws OnapCommandDiscoveryFailed
* exception
*/
- public static void persistSchemaInfo(List<SchemaInfo> schemas) throws OnapCommandDiscoveryFailed {
+ public static void persistSchemaInfo(List<OnapCommandSchemaInfo> schemas) throws OnapCommandDiscoveryFailed {
if (schemas != null) {
try {
Resource[] resources = OnapCommandDiscoveryUtils.findResources(DATA_DIRECTORY);
public static String identitySchemaProfileType(Map<String, ?> schemaYamlMap) {
- for (String schemeType : OnapCommandConfg.getSchemaAttrInfo(Constants.SCHEMA_TYPES_SUPPORTED)) {
+ for (String schemeType : OnapCommandConfig.getCommaSeparatedList(OnapCommandConstants.SCHEMA_TYPES_SUPPORTED)) {
if (schemaYamlMap.get(schemeType) != null) {
return schemeType;
}
}
- return Constants.BASIC_SCHEMA_PROFILE;
+ return OnapCommandConstants.BASIC_SCHEMA_PROFILE;
}
/**
* @throws OnapCommandInvalidSchema
* exception
*/
- public static List<SchemaInfo> discoverSchemas() throws OnapCommandException {
- List<SchemaInfo> extSchemas = new ArrayList<>();
+ public static List<OnapCommandSchemaInfo> discoverSchemas() throws OnapCommandException {
+ List<OnapCommandSchemaInfo> extSchemas = new ArrayList<>();
try {
Resource[] res = findResources(SCHEMA_PATH_PATERN);
if (res != null && res.length > 0) {
for (Resource resource : res) {
try {
- resourceMap = OnapCommandSchemaLoaderUtils.loadSchema(resource);
+ resourceMap = OnapCommandSchemaLoader.loadSchema(resource);
} catch (OnapCommandException e) {
OnapCommandUtils.LOG.error("Ignores invalid schema " + resource.getURI().toString(), e);
continue;
}
if (resourceMap != null && resourceMap.size() > 0) {
- SchemaInfo schema = new SchemaInfo();
+ OnapCommandSchemaInfo schema = new OnapCommandSchemaInfo();
schema.setSchemaURI(resource.getURI().toString());
Object obj = resourceMap.get(OPEN_CLI_SCHEMA_VERSION);
schema.setVersion(obj.toString());
- if (!schema.getVersion().equalsIgnoreCase(Constants.OPEN_CLI_SCHEMA_VERSION_VALUE_1_0)) {
+ if (!schema.getVersion().equalsIgnoreCase(OnapCommandConstants.OPEN_CLI_SCHEMA_VERSION_VALUE_1_0)) {
OnapCommandUtils.LOG.info("Unsupported Schema version found " + schema.getSchemaURI());
continue;
}
schema.setSchemaName(resource.getFilename());
schema.setCmdName((String) resourceMap.get(NAME));
- Map<String, ?> infoMap = (Map<String, ?>) resourceMap.get(Constants.INFO);
- if (infoMap != null && infoMap.get(Constants.INFO_TYPE) != null) {
- schema.setType(infoMap.get(Constants.INFO_TYPE).toString());
+ Map<String, ?> infoMap = (Map<String, ?>) resourceMap.get(OnapCommandConstants.INFO);
+ if (infoMap != null && infoMap.get(OnapCommandConstants.INFO_TYPE) != null) {
+ schema.setType(infoMap.get(OnapCommandConstants.INFO_TYPE).toString());
}
- if (infoMap != null && infoMap.get(Constants.INFO_PRODUCT) != null) {
- schema.setProduct(infoMap.get(Constants.INFO_PRODUCT).toString());
+ if (infoMap != null && infoMap.get(OnapCommandConstants.INFO_PRODUCT) != null) {
+ schema.setProduct(infoMap.get(OnapCommandConstants.INFO_PRODUCT).toString());
}
- if (infoMap != null && infoMap.get(Constants.INFO_IGNORE) != null) {
- schema.setIgnore(infoMap.get(Constants.INFO_IGNORE).toString());
+ if (infoMap != null && infoMap.get(OnapCommandConstants.INFO_IGNORE) != null) {
+ schema.setIgnore(infoMap.get(OnapCommandConstants.INFO_IGNORE).toString());
}
schema.setSchemaProfile(identitySchemaProfileType(resourceMap));
}
}
-
- /**
- *
- * @param authAction login/logout
- * @return
- * @throws OnapCommandException
- */
- public static OnapCommand findAuthCommand(OnapHttpCommand forCmd, String authAction) throws OnapCommandException {
- OnapCommand auth = null;
- try {
- //mrkanag: fix this to discover the auth command by matching info->product & service
- auth = OnapCommandRegistrar.getRegistrar().get(
- forCmd.getInfo().getService() + "-" +
- forCmd.getService().getAuthType() + "-" + authAction,
- forCmd.getInfo().getProduct());
- } catch (OnapCommandNotFound e) {
- auth = OnapCommandRegistrar.getRegistrar().get(
- forCmd.getService().getAuthType() + "-" + authAction,
- forCmd.getInfo().getProduct());
- }
-
- return auth;
- }
}
package org.onap.cli.fw.utils;
-import static org.onap.cli.fw.conf.Constants.DESCRIPTION;
-import static org.onap.cli.fw.conf.Constants.NAME;
+import static org.onap.cli.fw.conf.OnapCommandConstants.DESCRIPTION;
+import static org.onap.cli.fw.conf.OnapCommandConstants.NAME;
import java.io.IOException;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
-import org.onap.cli.fw.OnapCommand;
+import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandHelpFailed;
import org.onap.cli.fw.input.OnapCommandParameter;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
+import org.onap.cli.fw.output.OnapCommandPrintDirection;
import org.onap.cli.fw.output.OnapCommandResult;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
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.output.OnapCommandResultType;
public class OnapCommandHelperUtils {
// Add parameters
OnapCommandResult paramTable = new OnapCommandResult();
- paramTable.setPrintDirection(PrintDirection.LANDSCAPE);
- paramTable.setType(ResultType.TABLE);
+ paramTable.setPrintDirection(OnapCommandPrintDirection.LANDSCAPE);
+ paramTable.setType(OnapCommandResultType.TABLE);
paramTable.setIncludeTitle(false);
paramTable.setIncludeSeparator(false);
}
optSecondCol += " It is of type " + param.getParameterType().name() + ".";
- if (param.getParameterType().equals(ParameterType.JSON)
- || param.getParameterType().equals(ParameterType.YAML)) {
+ if (param.getParameterType().equals(OnapCommandParameterType.JSON)
+ || param.getParameterType().equals(OnapCommandParameterType.YAML)) {
optSecondCol += " It's recommended to input the complete path of the file, which is having the value for it.";
}
if (param.isOptional()) {
// Add results
OnapCommandResult resultTable = new OnapCommandResult();
- resultTable.setPrintDirection(PrintDirection.PORTRAIT);
- resultTable.setType(ResultType.TABLE);
+ resultTable.setPrintDirection(OnapCommandPrintDirection.PORTRAIT);
+ resultTable.setType(OnapCommandResultType.TABLE);
resultTable.setIncludeTitle(false);
resultTable.setIncludeSeparator(false);
}
// Error
- help += "\n\nError::\n\n On error, it prints <HTTP STATUS CODE>::<ERROR CODE>::<ERROR MESSAGE>\n";
+ help += "\n\nError::\n\n On error, it prints <STATUS CODE>::<ERROR CODE>::<ERROR MESSAGE>\n";
return help;
}
+++ /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.utils;
-
-import static org.onap.cli.fw.conf.Constants.DATA_DIRECTORY;
-import static org.onap.cli.fw.conf.Constants.DATA_PATH_JSON_PATTERN;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.onap.cli.fw.error.OnapCommandLoadProfileFailed;
-import org.onap.cli.fw.error.OnapCommandPersistProfileFailed;
-import org.onap.cli.fw.input.cache.Param;
-import org.springframework.core.io.Resource;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-public class OnapCommandProfileUtils {
-
- public static List<Param> loadParamFromCache(String profileName) throws OnapCommandLoadProfileFailed {
- List<Param> params = new ArrayList<>();
-
- try {
- Resource resource = OnapCommandDiscoveryUtils.findResource(profileName + ".json",
- DATA_PATH_JSON_PATTERN);
- if (resource != null) {
- File file = new File(resource.getURI().getPath());
- ObjectMapper mapper = new ObjectMapper();
- Param[] list = mapper.readValue(file, Param[].class);
- params.addAll(Arrays.asList(list));
- }
- } catch (IOException e) {
- throw new OnapCommandLoadProfileFailed(e);
- }
-
- return params;
- }
-
- public static void persistProfile(List<Param> params, String profileName) throws OnapCommandPersistProfileFailed {
- if (params != null) {
- try {
- Resource[] resources = OnapCommandDiscoveryUtils.findResources(DATA_DIRECTORY);
- if (resources != null && resources.length == 1) {
- String path = resources[0].getURI().getPath();
- File file = new File(path + File.separator + profileName + ".json");
- ObjectMapper mapper = new ObjectMapper();
- mapper.writerWithDefaultPrettyPrinter().writeValue(file, params);
- }
- } catch (IOException e1) {
- throw new OnapCommandPersistProfileFailed(e1);
- }
- }
- }
-
-}
package org.onap.cli.fw.utils;
-import static org.onap.cli.fw.conf.Constants.ATTRIBUTES;
-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.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_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_SUCCESS_CODE_INVALID;
-import static org.onap.cli.fw.conf.Constants.METHOD;
-import static org.onap.cli.fw.conf.Constants.NAME;
-import static org.onap.cli.fw.conf.Constants.PARAMETERS;
-import static org.onap.cli.fw.conf.Constants.QUERIES;
-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.URI;
-
-import java.io.IOException;
+import static org.onap.cli.fw.conf.OnapCommandConstants.BOOLEAN_VALUE;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
-import java.util.stream.Collectors;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.cmd.OnapHttpCommand;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
-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.OnapCommandInvalidParameterValue;
import org.onap.cli.fw.error.OnapCommandParameterNotFound;
import org.onap.cli.fw.error.OnapCommandResultEmpty;
-import org.onap.cli.fw.error.OnapCommandResultMapProcessingFailed;
-import org.onap.cli.fw.http.HttpInput;
-import org.onap.cli.fw.http.HttpResult;
import org.onap.cli.fw.input.OnapCommandParameter;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.jayway.jsonpath.JsonPath;
-import net.minidev.json.JSONArray;
-import net.minidev.json.JSONObject;
-
/**
* Provides helper method to parse Yaml files and produce required objects.
*
}
- static void throwOrCollect(OnapCommandException ex, List<String> list, boolean shouldCollectException)
+ public static void throwOrCollect(OnapCommandException ex, List<String> list, boolean shouldCollectException)
throws OnapCommandException {
if (shouldCollectException) {
list.add(ex.getMessage());
}
}
- static void validateTags(List<String> schemaErrors, Map<String, ?> yamlMap, List<String> totalParams,
+ public 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
*/
- static boolean validateBoolean(String toValidate) {
- return OnapCommandConfg.getSchemaAttrInfo(BOOLEAN_VALUE).contains(toValidate.toLowerCase());
+ public static boolean validateBoolean(String toValidate) {
+ return OnapCommandConfig.getCommaSeparatedList(BOOLEAN_VALUE).contains(toValidate.toLowerCase());
}
- private static String emptySection(String section) {
+ public static String emptySection(String section) {
return "The section '" + section + ":' cann't be null or empty";
}
- static String invalidBooleanValueMessage(String section, String attribute, String value) {
+ public static String invalidBooleanValueMessage(String section, String attribute, String value) {
return "The value '" + value + "' of '" + attribute + "' present under '" + section + "' should be boolean";
}
- private static Set<String> validateHttpQueries(Map<String, Object> requestMap) {
- Map<String, Object> queries = (Map<String, Object>) requestMap.get(QUERIES);
- Set<String> queryParamNames = new HashSet<>();
- if (queries != null) {
- for (Entry<String, Object> entry : queries.entrySet()) {
- parseParameters(String.valueOf(entry.getValue()), queryParamNames);
- }
- }
- return queryParamNames;
- }
-
-
- private static Set<String> validateHttpHeaders(Map<String, Object> requestMap) {
-
- Map<String, Object> headers = (Map<String, Object>) requestMap.get(HEADERS);
- Set<String> headerParamNames = new HashSet<>();
- if (headers != null) {
- for (Entry<String, Object> entry : headers.entrySet()) {
- parseParameters(String.valueOf(entry.getValue()), headerParamNames);
- }
- }
- return headerParamNames;
- }
-
- private static Set<String> validateHttpBody(List<String> errorList, Map<String, Object> requestMap) {
- Set<String> bodyParamNames = new HashSet<>();
- Object bodyString = requestMap.get(BODY);
- if (bodyString == null) {
- return bodyParamNames;
- }
-
- String body = String.valueOf(bodyString);
- JSONObject obj = null;
- try {
- obj = new ObjectMapper().readValue(body, JSONObject.class);
- } catch (IOException e1) { // NOSONAR
- errorList.add(HTTP_BODY_FAILED_PARSING);
- }
- if (obj == null || "".equals(obj.toString())) {
- errorList.add(HTTP_BODY_JSON_EMPTY);
- }
- parseParameters(body, bodyParamNames);
-
- return bodyParamNames;
- }
-
- private static Set<String> validateHttpUri(List<String> errorList, Map<String, Object> requestMap) {
- Set<String> uriParamNames = new HashSet<>();
- String uri = (String) requestMap.get(URI);
- if (uri == null || uri.isEmpty()) {
- errorList.add(emptySection(URI));
- return uriParamNames;
- }
- parseParameters(uri, uriParamNames);
- return uriParamNames;
- }
-
- private static void parseParameters(String line, Set<String> paramNames) {
+ public static void parseParameters(String line, Set<String> paramNames) {
int currentIdx = 0;
while (currentIdx < line.length()) {
}
- private static Set<String> getRequestParams(Map<String, ?> yamlMap) {
-
- Set<String> set = new HashSet<>();
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> inputParams = (List<Map<String, Object>>) yamlMap.get(PARAMETERS);
-
- if (inputParams != null) {
- for (Map<String, Object> map : inputParams) {
- for (Entry<String, Object> entry : map.entrySet()) {
- Object key = entry.getKey();
-
- if (NAME.equals(key)) {
- set.add(String.valueOf(entry.getValue()));
- break;
- }
- }
- }
- }
-
- return set;
- }
-
- 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();
-
- Set<String> resultAttNames = attributes.stream().map(map -> map.get(NAME))
- .collect(Collectors.toSet());
-
- List<String> invaliResultMapParams = resultMapParams.stream()
- .filter(p -> !resultAttNames.contains(p)).collect(Collectors.toList());
-
- if (!invaliResultMapParams.isEmpty()) {
- throwOrCollect(new OnapCommandHttpInvalidResultMap(invaliResultMapParams), errorList, true);
- }
- }
-
- static void validateHttpSccessCodes(List<String> errorList, List<Object> requestSuccessCodes) {
-
- if (requestSuccessCodes == null || requestSuccessCodes.isEmpty()) {
- errorList.add(HTTP_SUCCESS_CODE_INVALID);
- return;
- }
-
- for (Object successCode : requestSuccessCodes) {
- Integer code = (Integer) successCode;
- if (code < 200 || code >= 300) {
- if ( code != 404) {
- errorList.add(HTTP_SUCCESS_CODE_INVALID);
- }
- }
- }
-
- }
-
- 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);
-
- if (requestMap != null && !requestMap.isEmpty()) {
- validateTags(errorList, requestMap, OnapCommandConfg.getSchemaAttrInfo(HTTP_REQUEST_PARAMS),
- OnapCommandConfg.getSchemaAttrInfo(HTTP_REQUEST_MANDATORY_PARAMS), REQUEST);
- String method = (String) requestMap.get(METHOD);
- if (method != null && !method.isEmpty()) {
- if (!OnapCommandConfg.getSchemaAttrInfo(HTTP_METHODS).contains(method.toLowerCase())) {
- errorList.add("Attribute '" + METHOD + "' under '" + REQUEST + "' is invalid, correct types are "
- + OnapCommandConfg.getSchemaAttrInfo(HTTP_METHODS).toString());
- }
- } else {
- errorList.add("Http request method cann't be null or empty");
- }
-
- Set<String> requestParams = getRequestParams(values);
-
- Set<String> uriParams = validateHttpUri(errorList, requestMap);
-
- Set<String> bodyParams = validateHttpBody(errorList, requestMap);
-
- Set<String> headerParams = validateHttpHeaders(requestMap);
-
- Set<String> queryParams = validateHttpQueries(requestMap);
-
- HashSet<String> totoalParams = new HashSet<>(uriParams);
- totoalParams.addAll(bodyParams);
- totoalParams.addAll(headerParams);
- totoalParams.addAll(queryParams);
-
- List<String> nonDeclaredParams = totoalParams.stream().filter(param -> !requestParams.contains(param))
- .collect(Collectors.toList());
-
- nonDeclaredParams.stream().forEach(p -> errorList.add("The parameter '" + p
- + "' declared under 'parameters:' section is not mapped into request section."));
- } else {
- errorList.add(emptySection(REQUEST));
- }
- return errorList;
- }
-
-
/**
* Create Dict from list of Parameters.
*
* list of parameters
* @return map
*/
- public static Map<String, OnapCommandParameter> getInputMap(List<OnapCommandParameter> inputs) {
+ public static Map<String, OnapCommandParameter> getInputMap(Set<OnapCommandParameter> inputs) {
Map<String, OnapCommandParameter> map = new HashMap<>();
for (OnapCommandParameter param : inputs) {
map.put(param.getName(), param);
return results;
}
- /**
- * Construct method name.
- *
- * @param name
- * name
- * @param prefix
- * prefix
- * @return string
- */
- public static String formMethodNameFromAttributeName(String name, String prefix) {
- if (name == null || name.isEmpty()) {
- return name;
- }
-
- String methodName = prefix;
- for (String tk : name.split("-")) {
- methodName += Character.toString(tk.charAt(0)).toUpperCase();
- methodName += tk.substring(1);
- }
- return methodName;
- }
-
/**
* There are unique values like uuid is supported, so when input, output (default) values has
* these special entries, then it will get replaced with it's value
String value = "";
switch (splEntry) {
- case Constants.SPL_ENTRY_UUID:
+ case OnapCommandConstants.SPL_ENTRY_UUID:
value = UUID.randomUUID().toString();
break;
default:
- if (splEntry.startsWith(Constants.SPL_ENTRY_ENV)) {
+ if (splEntry.startsWith(OnapCommandConstants.SPL_ENTRY_ENV)) {
//start to read after env:ENV_VAR_NAME
String envVarName = splEntry.substring(4);
value = System.getenv(envVarName);
String value = params.get(paramName).getValue().toString();
OnapCommandParameter param = params.get(paramName);
- if (ParameterType.ARRAY.equals(param.getParameterType())
- || ParameterType.MAP.equals(param.getParameterType())
- || ParameterType.JSON.equals(param.getParameterType())
- || ParameterType.YAML.equals(param.getParameterType())) {
+ if (OnapCommandParameterType.ARRAY.equals(param.getParameterType())
+ || OnapCommandParameterType.MAP.equals(param.getParameterType())
+ || OnapCommandParameterType.JSON.equals(param.getParameterType())
+ || OnapCommandParameterType.YAML.equals(param.getParameterType())) {
// ignore the front and back double quotes in json body
result += line.substring(currentIdx, idxS - 1) + value;
currentIdx = idxE + 2;
return result;
}
- private static ArrayList<String> replaceLineFromOutputResults(String line, HttpResult resultHttp)
- throws OnapCommandHttpHeaderNotFound, OnapCommandHttpInvalidResponseBody,
- OnapCommandResultMapProcessingFailed, OnapCommandResultEmpty {
- String headerProcessedLine = "";
-
- ArrayList<String> result = new ArrayList<>();
- if (!line.contains("$b{") && !line.contains("$h{")) {
- result.add(line);
- return result;
- }
-
- /**
- * In case of empty response body [] or {}
- **/
- if (resultHttp.getBody().length() <= 2) {
- return result;
- }
-
- /**
- * Process headers macros : line: $h{abc}-$b{$.[*].xyz} , After processing line will be [abc's
- * value]-$b{$.[*].xyz}
- **/
- int currentIdx = 0;
- while (currentIdx < line.length()) {
- int idxS = line.indexOf("$h{", currentIdx);
- if (idxS == -1) {
- headerProcessedLine += line.substring(currentIdx);
- break;
- }
- int idxE = line.indexOf("}", idxS);
- String headerName = line.substring(idxS + 3, idxE);
- headerName = headerName.trim();
- if (!resultHttp.getRespHeaders().containsKey(headerName)) {
- throw new OnapCommandHttpHeaderNotFound(headerName);
- }
- String value = resultHttp.getRespHeaders().get(headerName);
-
- headerProcessedLine += line.substring(currentIdx, idxS) + value;
- currentIdx = idxE + 1;
- }
-
- // Process body jsonpath macros
- List<Object> values = new ArrayList<>();
- String bodyProcessedPattern = "";
- currentIdx = 0;
- int maxRows = 1; // in normal case, only one row will be there
- while (currentIdx < headerProcessedLine.length()) {
- int idxS = headerProcessedLine.indexOf("$b{", currentIdx);
- if (idxS == -1) {
- bodyProcessedPattern += headerProcessedLine.substring(currentIdx);
- break;
- }
- int idxE = headerProcessedLine.indexOf("}", idxS);
- String jsonPath = headerProcessedLine.substring(idxS + 3, idxE);
- jsonPath = jsonPath.trim();
- try {
- // JSONArray or String
- Object value = JsonPath.read(resultHttp.getBody(), jsonPath);
- if (value instanceof JSONArray) {
- JSONArray arr = (JSONArray) value;
- if (arr.size() > maxRows) {
- maxRows = arr.size();
- }
- }
- bodyProcessedPattern += headerProcessedLine.substring(currentIdx, idxS) + "%s";
- values.add(value);
- currentIdx = idxE + 1;
- } catch (Exception e) {
- throw new OnapCommandHttpInvalidResponseBody(jsonPath, e);
- }
- }
-
- if (bodyProcessedPattern.isEmpty()) {
- result.add(headerProcessedLine);
- return result;
- } else {
- for (int i = 0; i < maxRows; i++) {
- currentIdx = 0;
- String bodyProcessedLine = "";
- int positionalIdx = 0; // %s positional idx
- while (currentIdx < bodyProcessedPattern.length()) {
- int idxS = bodyProcessedPattern.indexOf("%s", currentIdx);
- if (idxS == -1) {
- bodyProcessedLine += bodyProcessedPattern.substring(currentIdx);
- break;
- }
- int idxE = idxS + 2; // %s
- try {
- Object value = values.get(positionalIdx);
- String valueS = String.valueOf(value);
- if (value instanceof JSONArray) {
- JSONArray arr = (JSONArray) value;
- if (!arr.isEmpty()) {
- valueS = arr.get(i).toString();
- } else {
- throw new OnapCommandResultEmpty();
- }
- }
-
- bodyProcessedLine += bodyProcessedPattern.substring(currentIdx, idxS) + valueS;
- currentIdx = idxE;
- positionalIdx++;
- } catch (OnapCommandResultEmpty e) {
- throw e;
- } catch (Exception e) {
- throw new OnapCommandResultMapProcessingFailed(line, e);
- }
- }
- result.add(bodyProcessedLine);
- }
-
- return result;
- }
- }
-
- /**
- * Set argument to param value.
- *
- * @param params
- * map
- * @param input
- * HttpInput
- * @return HttpInput
- * @throws OnapCommandParameterNotFound
- * exception
- * @throws OnapCommandInvalidParameterValue
- * exception
- */
- public static HttpInput populateParameters(Map<String, OnapCommandParameter> params, HttpInput input)
- throws OnapCommandException {
- HttpInput inp = new HttpInput();
- for (OnapCommandParameter param : params.values()) {
- if (ParameterType.BINARY.equals(param.getParameterType())) {
- inp.setBinaryData(true);
- break;
- }
- }
- inp.setBody(replaceLineFromInputParameters(input.getBody(), params));
- inp.setUri(replaceLineFromInputParameters(input.getUri(), params));
- inp.setMethod(input.getMethod().toLowerCase());
- for (String h : input.getReqHeaders().keySet()) {
- String value = input.getReqHeaders().get(h);
- inp.getReqHeaders().put(h, replaceLineFromInputParameters(value, params));
- }
-
- for (String h : input.getReqQueries().keySet()) {
- String value = input.getReqQueries().get(h);
- inp.getReqQueries().put(h, replaceLineFromInputParameters(value, params));
- }
-
- return inp;
- }
-
- /**
- * Populate result.
- *
- * @param resultMap
- * map
- * @param resultHttp
- * HttpResult
- * @return map
- * @throws OnapCommandHttpHeaderNotFound
- * header not found exception
- * @throws OnapCommandHttpInvalidResponseBody
- * invalid response body exception
- * @throws OnapCommandResultMapProcessingFailed
- * map processing failed exception
- */
- public static Map<String, ArrayList<String>> populateOutputs(Map<String, String> resultMap, HttpResult resultHttp)
- throws OnapCommandException {
- Map<String, ArrayList<String>> resultsProcessed = new HashMap<>();
-
- for (Entry<String, String> entry : resultMap.entrySet()) {
- String key = entry.getKey();
- try {
- resultsProcessed.put(key, replaceLineFromOutputResults(resultMap.get(key), resultHttp));
- } catch(OnapCommandResultEmpty e) {
- // pass // NOSONAR
- }
- }
-
- return resultsProcessed;
- }
-
/**
* Populate result from input parameters.
*
* @param params
* Map<String, OnapCommandParameter>
* @return map
- * @throws OnapCommandHttpHeaderNotFound
- * header not found exception
- * @throws OnapCommandHttpInvalidResponseBody
- * invalid response body exception
- * @throws OnapCommandResultMapProcessingFailed
- * map processing failed exception
+ * @throws OnapCommandException
*/
public static Map<String, ArrayList<String>> populateOutputsFromInputParameters(
Map<String, ArrayList<String>> resultMap,
+++ /dev/null
-org.onap.cli.fw.cmd.OnapSchemaValidateCommand
-org.onap.cli.fw.cmd.OnapSchemaRefreshCommand
-org.onap.cli.fw.cmd.BasicAuthLoginCommand
-org.onap.cli.fw.cmd.BasicAuthLogoutCommand
-org.onap.cli.fw.cmd.CatalogCommand
-org.onap.cli.fw.cmd.OnapHttpCommand
\ No newline at end of file
--- /dev/null
+org.onap.cli.fw.cmd.OnapSchemaValidateCommand
+org.onap.cli.fw.cmd.OnapSchemaRefreshCommand
\ No newline at end of file
-log4j.rootLogger=ERROR, file
+log4j.rootLogger=ALL, file
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
-cli.ignore_auth=false
-cli.http.api_key_use_cookies=true
-cli.discover_always=false
cli.product_name=open-cli
cli.version=1.0
+cli.discover_always=false
#schema validation
cli.schema.top_level_params_list=open_cli_schema_version,name,description,parameters,results,http,info
cli.schema.result_params_list=name,description,scope,type,is_secured, default_value
cli.schema.result_params_mandatory_list=name, description, type, scope
-#http
-cli.schema.http_sections=request,service,success_codes,result_map,sample_response
-cli.schema.http_mandatory_sections=request, success_codes
-
-cli.schema.http_request_params=uri,method,body,headers,queries,multipart_entity_name
-cli.schema.http_request_mandatory_params=uri,method
-
-cli.schema.service_params_list=name,version,auth,mode
-cli.schema.service_params_mandatory_list=auth,mode
-
-cli.schema.http_methods=post,get,delete,put,head
-
cli.schema.boolean_values=true,false
-cli.schema.auth_values=none,basic
-cli.schema.mode_values=direct,catalog
cli.command.type=cmd,auth,catalog
-#product version
-cli.product.version=open-cli
-
# moco properties
-cli.sample.gen.enable=false
+cli.sample.gen.enable=true
cli.sample.gen.target=.
# mrkanag Move this to db, once exteranl command registration is supported in place of discovery
-cli.schema.type.supported=http
+cli.schema.type.supported=
+
+#other properties to load (it should be hanled when plugins are made as externally register-able
+#when command plugin management support is enabled in oclip
+cli.plugins-prps=
\ No newline at end of file
package org.onap.cli.cmd.sample;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandSchema;
+import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandExecutionFailed;
+import org.onap.cli.fw.schema.OnapCommandSchema;
/**
* This command helps to test the Command functionalities.
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
import java.util.UUID;
import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandExecutionFailed;
import org.onap.cli.fw.error.OnapCommandNotInitialized;
import org.onap.cli.fw.input.OnapCommandParameter;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
public class OnapCommandSampleTest {
@Test
OnapCommand sample = OnapCommandRegistrar.getRegistrar().get("sample-test");
- List<OnapCommandParameter> parameters = new ArrayList();
+ Set<OnapCommandParameter> parameters = new HashSet();
OnapCommandParameter v = new OnapCommandParameter();
- v.setName(Constants.DEFAULT_PARAMETER_VERSION);
+ v.setName(OnapCommandConstants.DEFAULT_PARAMETER_VERSION);
v.setValue("true");
parameters.add(v);
OnapCommandParameter h = new OnapCommandParameter();
- h.setName(Constants.DEFAULT_PARAMETER_HELP);
+ h.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
h.setValue("false");
parameters.add(h);
sample.setParameters(parameters);
public void sampleTestHelp() {
OnapCommandSample sample = new OnapCommandSample();
try {
- List<OnapCommandParameter> parameters = new ArrayList();
+ Set<OnapCommandParameter> parameters = new HashSet();
OnapCommandParameter v = new OnapCommandParameter();
- v.setName(Constants.DEFAULT_PARAMETER_HELP);
+ v.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
v.setValue("true");
- v.setParameterType(ParameterType.BOOL);
+ v.setParameterType(OnapCommandParameterType.BOOL);
parameters.add(v);
sample.setParameters(parameters);
sample.execute();
try {
OnapCommand sample = OnapCommandRegistrar.getRegistrar().get("sample-test");
- List<OnapCommandParameter> parameters = new ArrayList();
+ Set<OnapCommandParameter> parameters = new HashSet();
OnapCommandParameter v = new OnapCommandParameter();
- v.setName(Constants.DEFAULT_PARAMETER_VERSION);
+ v.setName(OnapCommandConstants.DEFAULT_PARAMETER_VERSION);
v.setValue("false");
parameters.add(v);
OnapCommandParameter h = new OnapCommandParameter();
- h.setName(Constants.DEFAULT_PARAMETER_HELP);
+ h.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
h.setValue("false");
parameters.add(h);
OnapCommandParameter f = new OnapCommandParameter();
- f.setName(Constants.DEFAULT_PARAMETER_OUTPUT_FORMAT);
+ f.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_FORMAT);
f.setValue("table");
parameters.add(f);
OnapCommandParameter l = new OnapCommandParameter();
- l.setName(Constants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG);
+ l.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG);
l.setValue("true");
parameters.add(l);
OnapCommandParameter t = new OnapCommandParameter();
- t.setName(Constants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE);
+ t.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE);
t.setValue("true");
parameters.add(t);
- OnapCommandParameter a = new OnapCommandParameter();
- a.setName(Constants.DEFAULT_PARAMETER_NO_AUTH);
- a.setValue("true");
- parameters.add(a);
OnapCommandParameter d = new OnapCommandParameter();
- d.setName(Constants.DEFAULT_PARAMETER_DEBUG);
+ d.setName(OnapCommandConstants.DEFAULT_PARAMETER_DEBUG);
d.setValue("true");
parameters.add(d);
- OnapCommandParameter m = new OnapCommandParameter();
- m.setName(Constants.DEAFULT_PARAMETER_HOST_URL);
- m.setValue("http://localhost");
- parameters.add(m);
+
sample.setParameters(parameters);
sample.execute();
OnapCommandSample sample = new OnapCommandSample();
sample.failCase = true;
- List<OnapCommandParameter> parameters = new ArrayList();
+ Set<OnapCommandParameter> parameters = new HashSet();
OnapCommandParameter v = new OnapCommandParameter();
- v.setName(Constants.DEFAULT_PARAMETER_VERSION);
+ v.setName(OnapCommandConstants.DEFAULT_PARAMETER_VERSION);
v.setValue("false");
parameters.add(v);
OnapCommandParameter h = new OnapCommandParameter();
- h.setName(Constants.DEFAULT_PARAMETER_HELP);
+ h.setName(OnapCommandConstants.DEFAULT_PARAMETER_HELP);
h.setValue("false");
parameters.add(h);
OnapCommandParameter f = new OnapCommandParameter();
- f.setName(Constants.DEFAULT_PARAMETER_OUTPUT_FORMAT);
+ f.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_FORMAT);
f.setValue("table");
parameters.add(f);
OnapCommandParameter l = new OnapCommandParameter();
- l.setName(Constants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG);
+ l.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG);
l.setValue("true");
parameters.add(l);
OnapCommandParameter t = new OnapCommandParameter();
- t.setName(Constants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE);
+ t.setName(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE);
t.setValue("true");
parameters.add(t);
- OnapCommandParameter a = new OnapCommandParameter();
- a.setName(Constants.DEFAULT_PARAMETER_NO_AUTH);
- a.setValue("true");
- parameters.add(a);
OnapCommandParameter d = new OnapCommandParameter();
- d.setName(Constants.DEFAULT_PARAMETER_DEBUG);
+ d.setName(OnapCommandConstants.DEFAULT_PARAMETER_DEBUG);
d.setValue("true");
parameters.add(d);
- OnapCommandParameter m = new OnapCommandParameter();
- m.setName(Constants.DEAFULT_PARAMETER_HOST_URL);
- m.setValue("http://localhost");
- parameters.add(m);
sample.setParameters(parameters);
sample.execute();
}
import org.junit.Ignore;
import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
import org.onap.cli.fw.schema.ValidateSchemaTest;
package org.onap.cli.fw.conf;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.junit.Assert;
-import org.junit.Test;
-
public class OnapCommandConfgTest {
- @Test
- public void versionTest() {
- String str = OnapCommandConfg.getVersion();
- Assert.assertTrue(str != null);
- }
-
- @Test
- public void isAuthIgnoredTest() throws IOException {
- Properties prps = new Properties();
- prps.load(OnapCommandConfg.class.getClassLoader().getResourceAsStream("open-cli.properties"));
- boolean auth = OnapCommandConfg.isAuthIgnored();
- Assert.assertTrue(auth == Boolean.valueOf(prps.getProperty("cli.ignore_auth")));
- Assert.assertTrue(OnapCommandConfg.isCookiesBasedAuth() == Boolean
- .valueOf(prps.getProperty("cli.http.api_key_use_cookies")));
- }
-
}
assertEquals("0x3002::Failed to parse the result format of command name, failed", failed.getMessage());
}
- @Test
- public void oclipCommandHttpHeaderNotFoundTest() {
- OnapCommandHttpHeaderNotFound failed = new OnapCommandHttpHeaderNotFound("name");
- assertEquals("0x3003::Http header name is not returned from the service", failed.getMessage());
- }
-
@Test
public void oclipCommandClientInitialzationFailedTest() {
OnapCommandClientInitialzationFailed failed = new OnapCommandClientInitialzationFailed("Test",
assertEquals("0x9001::Command failed to print help message, Failed", failed.getMessage());
}
- @Test
- public void oclipCommandHttpFailureTest1() {
- OnapCommandHttpFailure failed = new OnapCommandHttpFailure("Failed");
- assertEquals("0x3001::Failed", failed.getMessage());
-
- failed = new OnapCommandHttpFailure(new Exception("failed"), 201);
- assertEquals("201::0x3001::failed", failed.getMessage());
- }
-
- @Test
- public void oclipCommandHttpFailureTest2() {
- OnapCommandHttpFailure failed = new OnapCommandHttpFailure("Failed", 203);
-
- assertEquals("203::0x3001::Failed", failed.getMessage());
- }
-
@Test
public void oclipCommandInvalidParameterTypeTest() {
OnapCommandInvalidParameterType failed = new OnapCommandInvalidParameterType("Failed");
OnapCommandInvalidRegistration failed = new OnapCommandInvalidRegistration(OnapCommandErrorTest.class);
assertEquals("0x2001::Invalid commad class org.onap.cli.fw.error.OnapCommandErrorTest registration, "
- + "it should be derived from org.onap.cli.fw.OnapCommand", failed.getMessage());
+ + "it should be derived from org.onap.cli.fw.cmd.OnapCommand", failed.getMessage());
}
@Test
assertEquals("0xb003::Command schema open_cli_schema_version 1.0 is invalid or missing", failed.getMessage());
}
- @Test
- public void oclipCommandLoginFailedTest1() {
- OnapCommandLoginFailed failed = new OnapCommandLoginFailed(new Exception("Failed"));
-
- assertEquals("0x4001::Login failed, Failed", failed.getMessage());
- }
-
- @Test
- public void oclipCommandLoginFailedTest2() {
- OnapCommandLoginFailed failed = new OnapCommandLoginFailed("Failed", 201);
-
- assertEquals("201::0x4001::Login failed, Failed", failed.getMessage());
- }
-
- @Test
- public void oclipCommandLogoutFailedTest() {
- OnapCommandLogoutFailed failed = new OnapCommandLogoutFailed(new Exception("Failed"));
- assertEquals("0x4002::Logout failed, Failed", failed.getMessage());
-
- failed = new OnapCommandLogoutFailed(200);
- assertEquals("200::0x4002::Logout failed", failed.getMessage());
- }
-
@Test
public void oclipCommandNotFoundTest() {
OnapCommandNotFound failed = new OnapCommandNotFound("Test", "1.0");
assertEquals("0xb002::Command schema is missing for command Test", failed.getMessage());
}
- @Test
- public void oclipCommandServiceNotFoundTest() {
- OnapCommandServiceNotFound failed = new OnapCommandServiceNotFound("Service");
-
- assertEquals("0xd001::Service Service is not found in MSB", failed.getMessage());
- }
-
@Test
public void oclipCommandOutputFormatNotsupportedTest() {
OnapCommandOutputFormatNotsupported failed = new OnapCommandOutputFormatNotsupported("Format");
param.setLongOption("longOption");
param.setName("name");
param.setOptional(true);
- param.setParameterType(ParameterType.JSON);
+ param.setParameterType(OnapCommandParameterType.JSON);
param.setSecured(false);
param.setShortOption("shortOption");
param.setValue("value");
assertTrue(param.getDefaultValue().equals("defaultValue") && param.getDescription().equals("description")
&& param.getLongOption().equals("longOption") && param.getName().equals("name")
&& param.getShortOption().equals("shortOption") && param.getValue().equals("value")
- && param.isOptional() && !param.isSecured() && param.getParameterType().equals(ParameterType.JSON));
+ && param.isOptional() && !param.isSecured() && param.getParameterType().equals(OnapCommandParameterType.JSON));
assertTrue("value".equals(param.getValue()));
- param.setParameterType(ParameterType.ARRAY);
+ param.setParameterType(OnapCommandParameterType.ARRAY);
param.setValue(Arrays.asList("1", "2", "3"));
assertTrue("[\"1\",\"2\",\"3\"]".equals(param.getValue()));
- param.setParameterType(ParameterType.MAP);
+ param.setParameterType(OnapCommandParameterType.MAP);
Map<String, String> map = new HashMap<>();
map.put("One", "1");
map.put("Two", "2");
param.setOptional(false);
param.setValue("");
param.setDefaultValue("");
- param.setParameterType(ParameterType.STRING);
+ param.setParameterType(OnapCommandParameterType.STRING);
try {
param.validate();
} catch (OnapCommandException e) {
public void oclipCommandInvalidParameterValueArrayExeceptionTest() throws OnapCommandInvalidParameterValue {
OnapCommandParameter param = new OnapCommandParameter();
param.setName("name");
- param.setParameterType(ParameterType.ARRAY);
+ param.setParameterType(OnapCommandParameterType.ARRAY);
param.setValue("value");
assertTrue("[\"1\",\"2\",\"3\"]".equals(param.getValue()));
public void oclipCommandInvalidParameterValueMapExeceptionTest() throws OnapCommandInvalidParameterValue {
OnapCommandParameter param = new OnapCommandParameter();
param.setName("name");
- param.setParameterType(ParameterType.MAP);
+ param.setParameterType(OnapCommandParameterType.MAP);
param.setValue("value");
assertTrue("{\"One\":\"1\",\"Two\":\"2\",\"Three\":\"3\"}".equals(param.getValue()));
}
public void oclipCommandInvalidParameterValueBinaryExeceptionTest() throws OnapCommandException {
OnapCommandParameter param = new OnapCommandParameter();
param.setName("name");
- param.setParameterType(ParameterType.BINARY);
+ param.setParameterType(OnapCommandParameterType.BINARY);
param.setValue("value");
param.validate();
}
public void paramTypeGetTest() {
try {
- assertTrue(ParameterType.JSON.equals(ParameterType.get("json"))
- && ParameterType.YAML.equals(ParameterType.get("yaml"))
- && ParameterType.STRING.equals(ParameterType.get("string"))
- && ParameterType.DIGIT.equals(ParameterType.get("digit"))
- && ParameterType.URL.equals(ParameterType.get("url"))
- && ParameterType.BOOL.equals(ParameterType.get("bool"))
- && ParameterType.MAP.equals(ParameterType.get("map"))
- && ParameterType.BINARY.equals(ParameterType.get("binary"))
- && ParameterType.TEXT.equals(ParameterType.get("text"))
- && ParameterType.ARRAY.equals(ParameterType.get("array")));
+ assertTrue(OnapCommandParameterType.JSON.equals(OnapCommandParameterType.get("json"))
+ && OnapCommandParameterType.YAML.equals(OnapCommandParameterType.get("yaml"))
+ && OnapCommandParameterType.STRING.equals(OnapCommandParameterType.get("string"))
+ && OnapCommandParameterType.DIGIT.equals(OnapCommandParameterType.get("digit"))
+ && OnapCommandParameterType.URL.equals(OnapCommandParameterType.get("url"))
+ && OnapCommandParameterType.BOOL.equals(OnapCommandParameterType.get("bool"))
+ && OnapCommandParameterType.MAP.equals(OnapCommandParameterType.get("map"))
+ && OnapCommandParameterType.BINARY.equals(OnapCommandParameterType.get("binary"))
+ && OnapCommandParameterType.TEXT.equals(OnapCommandParameterType.get("text"))
+ && OnapCommandParameterType.ARRAY.equals(OnapCommandParameterType.get("array")));
} catch (OnapCommandInvalidParameterType e) {
fail("Shouldn't have thrown this exception : " + e.getMessage());
}
try {
- ParameterType.get("name");
+ OnapCommandParameterType.get("name");
} catch (OnapCommandInvalidParameterType e) {
assertTrue("0x7001::Parameter type name is invalid".equals(e.getMessage()));
}
import java.util.Collections;
import org.junit.Test;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
public class OnapCommandResultAttributeScopeTest {
@Test
att.setName("name");
att.setScope(OnapCommandResultAttributeScope.LONG);
att.setSecured(true);
- att.setType(ParameterType.DIGIT);
+ att.setType(OnapCommandParameterType.DIGIT);
att.setValues(Collections.emptyList());
assertTrue("description".equals(att.getDescription()) && "name".equals(att.getName())
&& OnapCommandResultAttributeScope.LONG.equals(att.getScope())
- && ParameterType.DIGIT.equals(att.getType()) && att.getValues().isEmpty());
+ && OnapCommandParameterType.DIGIT.equals(att.getType()) && att.getValues().isEmpty());
}
}
import org.junit.Ignore;
import org.junit.Test;
import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
public class OnapCommandResultTest {
res.setIncludeSeparator(true);
res.setIncludeTitle(true);
res.setOutput("Output");
- res.setPrintDirection(PrintDirection.LANDSCAPE);
+ res.setPrintDirection(OnapCommandPrintDirection.LANDSCAPE);
res.setRecords(new ArrayList<OnapCommandResultAttribute>());
res.setScope(OnapCommandResultAttributeScope.LONG);
- res.setType(ResultType.TABLE);
+ res.setType(OnapCommandResultType.TABLE);
res.setDebug(true);
assertTrue("debugInfo".equals(res.getDebugInfo()) && res.isIncludeSeparator()
- && "Output".equals(res.getOutput()) && PrintDirection.LANDSCAPE.equals(res.getPrintDirection())
+ && "Output".equals(res.getOutput()) && OnapCommandPrintDirection.LANDSCAPE.equals(res.getPrintDirection())
&& res.getRecords().isEmpty() && OnapCommandResultAttributeScope.LONG.equals(res.getScope())
- && ResultType.TABLE.equals(res.getType()));
+ && OnapCommandResultType.TABLE.equals(res.getType()));
String help = res.print();
res.setIncludeSeparator(true);
res.setIncludeTitle(true);
res.setOutput("Output");
- res.setPrintDirection(PrintDirection.LANDSCAPE);
+ res.setPrintDirection(OnapCommandPrintDirection.LANDSCAPE);
OnapCommandResultAttribute att = new OnapCommandResultAttribute();
att.setName("param");
att.setDescription("description");
- att.setType(ParameterType.STRING);
+ att.setType(OnapCommandParameterType.STRING);
att.setValues(new ArrayList<String>(Arrays.asList(new String[] { "value" })));
List<OnapCommandResultAttribute> list = new ArrayList<OnapCommandResultAttribute>();
list.add(att);
res.setRecords(list);
res.setScope(OnapCommandResultAttributeScope.LONG);
- res.setType(ResultType.TABLE);
+ res.setType(OnapCommandResultType.TABLE);
res.getRecordsMap();
String expRes = "+--------+\n|param |\n+--------+\n|value |\n+--------+\n";
String result = res.print();
res.setIncludeSeparator(true);
res.setIncludeTitle(true);
res.setOutput("Output");
- res.setPrintDirection(PrintDirection.LANDSCAPE);
+ res.setPrintDirection(OnapCommandPrintDirection.LANDSCAPE);
OnapCommandResultAttribute att = new OnapCommandResultAttribute();
att.setName("param");
att.setDescription("description");
- att.setType(ParameterType.JSON);
+ att.setType(OnapCommandParameterType.JSON);
att.setValues(
new ArrayList<String>(Arrays.asList(new String[] { "{\"id\": \"0001\",\"value\": \"result\"}" })));
List<OnapCommandResultAttribute> list = new ArrayList<OnapCommandResultAttribute>();
list.add(att);
res.setRecords(list);
res.setScope(OnapCommandResultAttributeScope.LONG);
- res.setType(ResultType.JSON);
+ res.setType(OnapCommandResultType.JSON);
// Will be handled after the json print is implemented
String result = res.print();
res.setIncludeSeparator(true);
res.setIncludeTitle(true);
res.setOutput("Output");
- res.setPrintDirection(PrintDirection.LANDSCAPE);
+ res.setPrintDirection(OnapCommandPrintDirection.LANDSCAPE);
OnapCommandResultAttribute att = new OnapCommandResultAttribute();
att.setName("param");
att.setDescription("description");
- att.setType(ParameterType.STRING);
+ att.setType(OnapCommandParameterType.STRING);
att.setValues(new ArrayList<String>(Arrays.asList(new String[] { "value" })));
List<OnapCommandResultAttribute> list = new ArrayList<OnapCommandResultAttribute>();
list.add(att);
OnapCommandResultAttribute a1 = new OnapCommandResultAttribute();
a1.setName("param1");
a1.setDescription("description1");
- a1.setType(ParameterType.STRING);
+ a1.setType(OnapCommandParameterType.STRING);
a1.setValues(new ArrayList<String>(Arrays.asList(new String[] { "value1" })));
list.add(a1);
res.setRecords(list);
res.setScope(OnapCommandResultAttributeScope.LONG);
- res.setType(ResultType.CSV);
+ res.setType(OnapCommandResultType.CSV);
String expRes = "param,param1\r\n";
String result = res.print();
res.setIncludeSeparator(true);
res.setIncludeTitle(true);
res.setOutput("Output");
- res.setPrintDirection(PrintDirection.PORTRAIT);
+ res.setPrintDirection(OnapCommandPrintDirection.PORTRAIT);
OnapCommandResultAttribute att = new OnapCommandResultAttribute();
att.setName("param");
att.setDescription("description");
- att.setType(ParameterType.STRING);
+ att.setType(OnapCommandParameterType.STRING);
att.setValues(new ArrayList<String>(Arrays.asList(new String[] { "value" })));
List<OnapCommandResultAttribute> list = new ArrayList<OnapCommandResultAttribute>();
list.add(att);
OnapCommandResultAttribute a1 = new OnapCommandResultAttribute();
a1.setName("param1");
a1.setDescription("description1");
- a1.setType(ParameterType.STRING);
+ a1.setType(OnapCommandParameterType.STRING);
a1.setValues(new ArrayList<String>(Arrays.asList(new String[] { "value1" })));
list.add(a1);
res.setRecords(list);
res.setScope(OnapCommandResultAttributeScope.LONG);
- res.setType(ResultType.CSV);
+ res.setType(OnapCommandResultType.CSV);
String expRes = "property,value\r\nparam,value\r\n";
String result = res.print();
assertEquals(expRes, result);
res.setIncludeSeparator(true);
res.setIncludeTitle(true);
res.setOutput("Output");
- res.setPrintDirection(PrintDirection.PORTRAIT);
+ res.setPrintDirection(OnapCommandPrintDirection.PORTRAIT);
OnapCommandResultAttribute att = new OnapCommandResultAttribute();
att.setName("param");
att.setDescription("description");
- att.setType(ParameterType.STRING);
+ att.setType(OnapCommandParameterType.STRING);
att.setValues(new ArrayList<String>(Arrays.asList(new String[] { "value" })));
List<OnapCommandResultAttribute> list = new ArrayList<OnapCommandResultAttribute>();
list.add(att);
res.setRecords(list);
res.setScope(OnapCommandResultAttributeScope.LONG);
- res.setType(ResultType.TABLE);
+ res.setType(OnapCommandResultType.TABLE);
String expRes = "+----------+--------+\n|property |value |\n+----------+--------+"
+ "\n|param |value |\n+----------+--------+\n";
public void printDirectionGetTest() {
try {
- assertTrue(PrintDirection.LANDSCAPE.equals(PrintDirection.get("landscape"))
- && PrintDirection.PORTRAIT.equals(PrintDirection.get("portrait")));
+ assertTrue(OnapCommandPrintDirection.LANDSCAPE.equals(OnapCommandPrintDirection.get("landscape"))
+ && OnapCommandPrintDirection.PORTRAIT.equals(OnapCommandPrintDirection.get("portrait")));
} catch (OnapCommandInvalidPrintDirection e) {
fail("Shouldn't have thrown this exception : " + e.getMessage());
}
try {
- PrintDirection.get("name");
+ OnapCommandPrintDirection.get("name");
} catch (OnapCommandInvalidPrintDirection e) {
assertTrue("0x8003::Print direction name is invalid".equals(e.getMessage()));
}
public class ResultTypeTest {
@Test
public void resultTypeGetTest() {
- assertTrue(ResultType.TABLE.equals(ResultType.get("table")) && ResultType.CSV.equals(ResultType.get("csv"))
- && ResultType.JSON.equals(ResultType.get("json")) && ResultType.YAML.equals(ResultType.get("yaml"))
- && ResultType.TEXT.equals(ResultType.get("text")));
+ assertTrue(OnapCommandResultType.TABLE.equals(OnapCommandResultType.get("table")) && OnapCommandResultType.CSV.equals(OnapCommandResultType.get("csv"))
+ && OnapCommandResultType.JSON.equals(OnapCommandResultType.get("json")) && OnapCommandResultType.YAML.equals(OnapCommandResultType.get("yaml"))
+ && OnapCommandResultType.TEXT.equals(OnapCommandResultType.get("text")));
}
@Test
public void isTabularFormTest() {
- assertTrue(ResultType.isTabularForm("table"));
+ assertTrue(OnapCommandResultType.isTabularForm("table"));
}
@Test
public void isTabularFormNotTest() {
- assertFalse(ResultType.isTabularForm("text"));
+ assertFalse(OnapCommandResultType.isTabularForm("text"));
}
}
import org.junit.Ignore;
import org.junit.Test;
import org.onap.cli.fw.error.OnapCommandOutputPrintingFailed;
-import org.onap.cli.fw.output.PrintDirection;
+import org.onap.cli.fw.output.OnapCommandPrintDirection;
public class OnapCommandPrintTest {
@Ignore
public void printCsvTest() throws OnapCommandOutputPrintingFailed {
OnapCommandPrint pr = new OnapCommandPrint();
- pr.setDirection(PrintDirection.LANDSCAPE);
+ pr.setDirection(OnapCommandPrintDirection.LANDSCAPE);
pr.setPrintTitle(true);
pr.addColumn("name1", new ArrayList<String>(Arrays.asList(new String[] { "value1" })));
String exp = "name1\r\n";
public void printTableTest() throws OnapCommandOutputPrintingFailed {
OnapCommandPrint pr = new OnapCommandPrint();
List<String> getColumnsData = new ArrayList<String>();
- pr.setDirection(PrintDirection.LANDSCAPE);
+ pr.setDirection(OnapCommandPrintDirection.LANDSCAPE);
pr.setPrintTitle(true);
pr.addColumn("name2", new ArrayList<String>(Arrays.asList(new String[] { "value2" })));
String exp = "+--------+\n|name2 |\n+--------+\n|value2 |\n+--------+\n";
public void printTableNullColumnHeaderTest() throws OnapCommandOutputPrintingFailed {
OnapCommandPrint pr = new OnapCommandPrint();
List<String> getColumnsData = new ArrayList<String>();
- pr.setDirection(PrintDirection.LANDSCAPE);
+ pr.setDirection(OnapCommandPrintDirection.LANDSCAPE);
pr.setPrintTitle(true);
pr.addColumn("name2", new ArrayList<String>(Arrays.asList(new String[] { "value2" })));
String exp = "+--------+\n|name2 |\n+--------+\n|value2 |\n+--------+\n";
public void printTableEmptyColumnValuesTest() throws OnapCommandOutputPrintingFailed {
OnapCommandPrint pr = new OnapCommandPrint();
List<String> getColumnsData = new ArrayList<String>();
- pr.setDirection(PrintDirection.LANDSCAPE);
+ pr.setDirection(OnapCommandPrintDirection.LANDSCAPE);
pr.setPrintTitle(true);
pr.addColumn("name2", new ArrayList<String>(Arrays.asList(new String[] { "" })));
String exp = "+--------+\n|name2 |\n+--------+\n| |\n+--------+\n";
* limitations under the License.
*/
-package org.onap.cli.fw;
+package org.onap.cli.fw.registrar;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Before;
import org.junit.Test;
+import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandHelpFailed;
import org.onap.cli.fw.error.OnapCommandNotFound;
+import org.onap.cli.fw.schema.OnapCommandSchema;
public class OnapCommandRegistrarTest {
OnapCommandRegistrar.getRegistrar().setEnabledProductVersion("open-cli");
assertEquals("open-cli", OnapCommandRegistrar.getRegistrar().getEnabledProductVersion());
OnapCommandRegistrar.getRegistrar().getAvailableProductVersions();
- assertTrue(OnapCommandRegistrar.getRegistrar().listCommandsForEnabledProductVersion().contains("schema-refresh"));
+ assertTrue(OnapCommandRegistrar.getRegistrar().listCommandsForEnabledProductVersion().contains("sample-test"));
assertTrue(OnapCommandRegistrar.getRegistrar().listCommandInfo().size() > 2);
} catch (Exception e) {
fail("failed to test the profile");
}
}
+
+
+ @Test
+ public void test() throws OnapCommandException {
+ OnapCommandRegistrar registrar = OnapCommandRegistrar.getRegistrar();
+ OnapCommand cmd = registrar.get("sample-test");
+ cmd.printVersion();
+ registrar.listCommands();
+ }
}
@OnapCommandSchema(schema = "sample-test-schema.yaml")
import java.util.List;
import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.cmd.OnapHttpCommand;
+import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandInvalidSchema;
-import org.onap.cli.fw.utils.OnapCommandSchemaLoaderUtils;
public class ValidateSchemaTest {
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandSchemaLoaderUtils.loadSchema(cmd, "fdsfds.yaml", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "fdsfds.yaml", true, true);
}
@Test(expected = OnapCommandInvalidSchema.class)
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandSchemaLoaderUtils.loadSchema(cmd, "fdsfds", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "fdsfds", true, true);
}
@Test(expected = OnapCommandInvalidSchema.class)
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandSchemaLoaderUtils.loadSchema(cmd,
+ OnapCommandSchemaLoader.loadSchema(cmd,
ValidateSchemaTest.class.getClassLoader().getResource("open-cli.properties").getFile(),
true, true);
}
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandSchemaLoaderUtils.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 {}
};
- OnapCommandSchemaLoaderUtils.loadSchema(cmd, "schema-validate-pass.yaml", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "schema-validate-pass.yaml", true, true);
}
@Override
protected void run() throws OnapCommandException {}
};
- OnapCommandSchemaLoaderUtils.loadSchema(cmd, "schema-invalid-file.yaml", true, true);
+ OnapCommandSchemaLoader.loadSchema(cmd, "schema-invalid-file.yaml", true, true);
}
@Test
public void validateTest() throws OnapCommandException {
- OnapCommand cmd1 = new OnapCommand() {
- @Override
- protected void run() throws OnapCommandException {}
- };
- List<String> errorList1 = OnapCommandSchemaLoaderUtils.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 = OnapCommandSchemaLoaderUtils.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 = OnapCommandSchemaLoaderUtils.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 = OnapCommandSchemaLoaderUtils.loadSchema(cmd2, "schema-validate-invalid.yaml", true, true);
-
- OnapHttpCommand oclipHttpCommand = new OnapHttpCommand();
- errorList4.addAll(OnapCommandSchemaLoaderUtils.loadHttpSchema(oclipHttpCommand,
- "schema-validate-invalid.yaml", true, true));
- assertTrue(errorList4.size() > 0);
OnapCommand cmd5 = new OnapCommand() {
@Override
protected void run() throws OnapCommandException {}
};
- List<String> errorList5 = OnapCommandSchemaLoaderUtils.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 static org.junit.Assert.fail;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runners.MethodSorters;
-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.OnapCommand;
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.error.OnapCommandHttpInvalidResponseBody;
-import org.onap.cli.fw.error.OnapCommandInvalidParameterType;
-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.OnapCommandParameterNameConflict;
-import org.onap.cli.fw.error.OnapCommandParameterNotFound;
import org.onap.cli.fw.error.OnapCommandParameterOptionConflict;
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.output.OnapCommandResult;
-import org.springframework.core.io.Resource;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.schema.OnapCommandSchemaInfo;
+import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
import mockit.Invocation;
import mockit.Mock;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OnapCommandUtilsTest {
-
- @Test(expected = OnapCommandInvalidSchema.class)
- public void oclipCommandUtilsInputStreamNullTest() throws OnapCommandException {
- OnapCommandSchemaLoaderUtils.validateSchemaVersion("sample-test1-schema-http1.yaml", "1.0");
- }
-
- @Test
- public void oclipCommandUtilsInputStreamNotNullTest() throws OnapCommandException {
- Map<String, ?> map = OnapCommandSchemaLoaderUtils.validateSchemaVersion("sample-test1-schema-http.yaml", "1.0");
- assertTrue(map != null);
- }
-
@Test
public void externalSchemaTest() {
- SchemaInfo schema = new SchemaInfo();
+ OnapCommandSchemaInfo schema = new OnapCommandSchemaInfo();
schema.setCmdName("cmdName");
schema.setSchemaName("schemaName");
schema.setVersion("version");
@Test
public void schemaFileNotFoundTest() throws OnapCommandException {
- Map<String, ?> map = OnapCommandSchemaLoaderUtils.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 = OnapCommandSchemaLoaderUtils.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 = OnapCommandSchemaLoaderUtils.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 = OnapCommandSchemaLoaderUtils.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();
- OnapCommandSchemaLoaderUtils.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();
- OnapCommandSchemaLoaderUtils.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();
- OnapCommandSchemaLoaderUtils.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();
- OnapCommandSchemaLoaderUtils.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();
- OnapCommandSchemaLoaderUtils.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()) {
assertTrue(map.size() == 15);
}
- @Test
- public void loadOnapCommandSchemaAuthRequiredTest() throws OnapCommandException {
- OnapCommand cmd = new OnapCommandSample();
- OnapCommandSchemaLoaderUtils.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 loadHttpBasedSchemaExceptionTest() throws OnapCommandException {
- OnapHttpCommand cmd = new OnapHttpCommandSample();
- cmd.setName("sample-test-http");
- try {
- OnapCommandSchemaLoaderUtils.loadHttpSchema(cmd, "sample-test-schema.yaml", true, false);
- } catch (OnapCommandParameterNameConflict | OnapCommandParameterOptionConflict
- | OnapCommandInvalidParameterType | OnapCommandInvalidPrintDirection
- | OnapCommandInvalidResultAttributeScope | OnapCommandSchemaNotFound | OnapCommandInvalidSchema
- | OnapCommandInvalidSchemaVersion e) {
- assertTrue(e.getMessage().contains("0xb001::Command schema sample-test-schema.yaml is invalid"));
- }
- }
-
- @Test
- public void loadHttpBasedSchemaTest() throws OnapCommandException {
- OnapHttpCommand cmd = new OnapHttpCommandSample();
- cmd.setName("sample-create-http");
- try {
- OnapCommandSchemaLoaderUtils.loadHttpSchema(cmd, "sample-test-schema-http.yaml", true, true);
- assertTrue(cmd.getSuccessStatusCodes().size() == 2);
- } catch (OnapCommandParameterNameConflict | OnapCommandParameterOptionConflict
- | OnapCommandInvalidParameterType | OnapCommandInvalidPrintDirection
- | OnapCommandInvalidResultAttributeScope | OnapCommandSchemaNotFound | OnapCommandInvalidSchema
- | OnapCommandInvalidSchemaVersion e) {
- fail("Test should not have thrown this exception : " + e.getMessage());
- }
- }
@Test
public void helpCommandTest() throws IOException, OnapCommandException {
OnapCommand cmd = new OnapCommandSample();
- OnapCommandSchemaLoaderUtils.loadSchema(cmd, "sample-test-schema.yaml", true, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-schema.yaml", true, false);
String actualResult = OnapCommandHelperUtils.help(cmd);
@Test
public void findOnapCommandsTest() {
List<Class<OnapCommand>> cmds = OnapCommandDiscoveryUtils.discoverCommandPlugins();
- assertTrue(cmds.size() == 7);
+ assertTrue(cmds.size() == 3);
}
@Test
}
- @Test
- public void formMethodNameFromAttributeTest() {
-
- String str = "";
- String name = OnapCommandUtils.formMethodNameFromAttributeName(str, "test");
-
- assertEquals("", name);
-
- str = null;
- name = OnapCommandUtils.formMethodNameFromAttributeName(str, "test");
-
- assertEquals(null, name);
-
- str = "test-get";
- name = OnapCommandUtils.formMethodNameFromAttributeName(str, "");
- assertEquals("TestGet", name);
-
- }
-
- @Test
- public void populateParametersTest() throws OnapCommandException {
-
- HttpInput input = new HttpInput();
- input.setBody("body");
- input.setMethod("method");
- Map<String, String> mapHead = new HashMap<>();
- mapHead.put("key2", "${value2}");
- input.setReqHeaders(mapHead);
- Map<String, String> query = new HashMap<>();
- query.put("key3", "{${value3}}");
- input.setReqQueries(query);
- input.setUri("uri");
-
- Map<String, OnapCommandParameter> params = new HashMap<>();
- OnapCommandParameter param = new OnapCommandParameter();
- param.setDefaultValue("defaultValue2");
- param.setParameterType(ParameterType.STRING);
- params.put("value2", param);
- OnapCommandParameter param1 = new OnapCommandParameter();
- param1.setDefaultValue("{\"defaultValue3\"}");
- param1.setParameterType(ParameterType.JSON);
- params.put("value3", param1);
-
- HttpInput input1 = OnapCommandUtils.populateParameters(params, input);
- String expected = "\nURL: uri\nMethod: method\nRequest Queries: {key3={\"defaultValue3\"}}\n"
- + "Request Body: body\nRequest Headers: {key2=defaultValue2}\nRequest Cookies: {}\nbinaryData=false";
- assertEquals(expected, input1.toString());
-
- input.setBody("${body}");
-
- HttpInput input2 = null;
- try {
- input2 = OnapCommandUtils.populateParameters(params, input);
- } catch (OnapCommandParameterNotFound e) {
- assertEquals("0x7005::Command input parameter body is not valid", e.getMessage());
- }
-
- }
-
- @Test(expected = OnapCommandHttpHeaderNotFound.class)
- public void populateOutputsTest() throws OnapCommandException {
- HttpResult output = new HttpResult();
- output.setBody(
- "{\"serviceName\":\"test\",\"version\":\"v1\",\"url\":\"/api/test/v1\",\"protocol\":\"REST\",\"visualRange\":\"1\",\"lb_policy\":\"hash\",\"nodes\":[{\"ip\":\"127.0.0.1\",\"port\":\"8012\",\"ttl\":0,\"nodeId\":\"test_127.0.0.1_8012\",\"expiration\":\"2017-02-10T05:33:25Z\",\"created_at\":\"2017-02-10T05:33:25Z\",\"updated_at\":\"2017-02-10T05:33:25Z\"}],\"status\":\"1\"}");
- Map<String, String> mapHead = new HashMap<>();
- mapHead.put("head1", "value1");
- output.setRespHeaders(mapHead);
- output.setStatus(0);
-
- Map<String, String> params = new HashMap<>();
- params.put("head", "$h{head1}");
- params.put("body", "$b{$.serviceName}");
- params.put("key", "value");
-
- Map<String, ArrayList<String>> input1 = OnapCommandUtils.populateOutputs(params, output);
- assertEquals("{head=[value1], body=[test], key=[value]}", input1.toString());
-
- params.put("body", "$b{{$.serviceName}");
- try {
- input1 = OnapCommandUtils.populateOutputs(params, output);
- } catch (OnapCommandHttpInvalidResponseBody e) {
- assertEquals(
- "0x3004::Http response body does not have json entry {$.serviceName, Missing property in path $['{$']",
- e.getMessage());
- }
- output.setBody("{}");
- input1 = OnapCommandUtils.populateOutputs(params, output);
- params.put("head", "$h{head2}");
- output.setBody("{\"test\"}");
- input1 = OnapCommandUtils.populateOutputs(params, output);
- }
-
-
@Test(expected = OnapCommandHelpFailed.class)
public void zendExceptionHelpTest1() throws OnapCommandException {
mockPrintMethodException();
OnapCommand cmd = new OnapCommandSample();
- OnapCommandSchemaLoaderUtils.loadSchema(cmd, "sample-test-schema.yaml", true, false);
+ OnapCommandSchemaLoader.loadSchema(cmd, "sample-test-schema.yaml", true, false);
OnapCommandHelperUtils.help(cmd);
@Test
public void test() throws OnapCommandException {
OnapCommandSampleInfo cmd = new OnapCommandSampleInfo();
- OnapCommandSchemaLoaderUtils.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-http.yaml")
- class OnapHttpCommandSample extends OnapHttpCommand {
-
- @Override
- protected void run() throws OnapCommandException {
- }
- }
-
- private void mockExternalResources() {
- new MockUp<OnapCommandUtils>() {
- boolean isMock = true;
-
- @Mock
- public Resource[] getExternalResources(Invocation inv, String pattern) throws IOException {
- if (isMock) {
- isMock = false;
- throw new IOException();
- } else {
- return inv.proceed(pattern);
- }
- }
- };
- }
-
private void mockPrintMethodException() {
new MockUp<OnapCommandResult>() {
boolean isMock = true;
--- /dev/null
+open_cli_sample_version: 1.0
+name: sample-test
+version: open-cli
+samples:
+ sample1:
+ name: sample-test
+ input: --string-param test
+ moco: sample-test-schema-moco.json
+ output: |
+ +----------+--------+
+ |property |value |
+ +----------+--------+
+ |output-1 |[] |
+ +----------+--------+
+ |output-2 |[] |
+ +----------+--------+
import java.util.List;
import org.apache.commons.io.IOUtils;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandHelpFailed;
import org.onap.cli.fw.error.OnapCommandInvalidSample;
import org.onap.cli.fw.error.OnapCommandWarning;
import org.onap.cli.fw.input.OnapCommandParameter;
+import org.onap.cli.fw.output.OnapCommandPrintDirection;
import org.onap.cli.fw.output.OnapCommandResult;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
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.output.OnapCommandResultType;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
import org.onap.cli.main.conf.OnapCliConstants;
import org.onap.cli.main.interactive.StringCompleter;
import org.onap.cli.main.utils.OnapCliArgsParser;
public static String getDirectiveHelp() throws OnapCommandHelpFailed {
OnapCommandResult help = new OnapCommandResult();
- help.setType(ResultType.TABLE);
- help.setPrintDirection(PrintDirection.LANDSCAPE);
+ help.setType(OnapCommandResultType.TABLE);
+ help.setPrintDirection(OnapCommandPrintDirection.LANDSCAPE);
OnapCommandResultAttribute attr = new OnapCommandResultAttribute();
- attr.setName(Constants.NAME.toUpperCase());
- attr.setDescription(Constants.DESCRIPTION);
+ attr.setName(OnapCommandConstants.NAME.toUpperCase());
+ attr.setDescription(OnapCommandConstants.DESCRIPTION);
attr.setScope(OnapCommandResultAttributeScope.SHORT);
help.getRecords().add(attr);
OnapCommandResultAttribute attrDesc = new OnapCommandResultAttribute();
- attrDesc.setName(Constants.DESCRIPTION.toUpperCase());
- attrDesc.setDescription(Constants.DESCRIPTION);
+ attrDesc.setName(OnapCommandConstants.DESCRIPTION.toUpperCase());
+ attrDesc.setDescription(OnapCommandConstants.DESCRIPTION);
attrDesc.setScope(OnapCommandResultAttributeScope.SHORT);
help.getRecords().add(attrDesc);
}
private void generateSmapleYaml(OnapCommand cmd) throws OnapCommandException {
- if (OnapCommandConfg.isSampleGenerateEnabled() && this.getExitCode() == OnapCliConstants.EXIT_SUCCESS) {
+ if (Boolean.parseBoolean(OnapCommandConfig.getPropertyValue(OnapCommandConstants.SAMPLE_GEN_ENABLED)) && this.getExitCode() == OnapCliConstants.EXIT_SUCCESS) {
try {
SampleYamlGenerator.generateSampleYaml(args, cmd.getResult().print(),
OnapCommandRegistrar.getRegistrar().getEnabledProductVersion(),
- OnapCommandConfg.getSampleGenerateTargetFolder() + "/" + cmd.getSchemaName().replaceAll(".yaml", "") + "-sample.yaml",
+ OnapCommandConfig.getPropertyValue(OnapCommandConstants.SAMPLE_GEN_TARGET_FOLDER) + "/" + cmd.getSchemaName().replaceAll(".yaml", "") + "-sample.yaml",
cmd.getResult().isDebug());
} catch (IOException error) {
throw new OnapCommandInvalidSample(args.get(0), error);
package org.onap.cli.main.utils;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import net.minidev.json.JSONObject;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import org.apache.commons.io.FileUtils;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
import org.onap.cli.fw.input.OnapCommandParameter;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
import org.onap.cli.main.error.OnapCliArgumentValueMissing;
import org.onap.cli.main.error.OnapCliInvalidArgument;
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import net.minidev.json.JSONObject;
/**
* Oclip CLI utilities.
* @throws OnapCommandInvalidParameterValue
* exception
*/
- public static void populateParams(List<OnapCommandParameter> params, List<String> args)
+ public static void populateParams(Set<OnapCommandParameter> params, List<String> args)
throws OnapCommandException {
Map<String, String> shortOptionMap = new HashMap<>();
Map<String, String> longOptionMap = new HashMap<>();
int positionalIdx = 0;
// Skip the first args oclip cmd name, so start from 1
for (int i = 1; i < args.size(); 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) {
+ 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(paramName).getParameterType().equals(ParameterType.BOOL)) {
+ if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.BOOL)) {
paramMap.get(paramName).setValue("true");
continue;
}
throw new OnapCliArgumentValueMissing(args.get(i));
}
- if (paramMap.get(paramName).getParameterType().equals(ParameterType.JSON)) {
+ if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.JSON)) {
paramMap.get(paramName).setValue(readJsonStringFromUrl(args.get(i + 1),
paramMap.get(paramName).getName()));
i++;
continue;
- } if (paramMap.get(paramName).getParameterType().equals(ParameterType.TEXT)) {
+ } if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.TEXT)) {
paramMap.get(paramName).setValue(readTextStringFromUrl(args.get(i + 1),
paramMap.get(paramName).getName()));
i++;
continue;
} else if (paramMap.get(paramName).getParameterType()
- .equals(ParameterType.ARRAY)) {
+ .equals(OnapCommandParameterType.ARRAY)) {
Object value = paramMap.get(paramName).getValue();
List<String> list;
if (value == "") {
paramMap.get(paramName).setValue(list);
i++;
continue;
- } else if (paramMap.get(paramName).getParameterType().equals(ParameterType.MAP)) {
+ } else if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.MAP)) {
Object value = paramMap.get(paramName).getValue();
Map<String, String> map;
import static org.junit.Assert.fail;
-import java.io.File;
import java.io.IOException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import org.junit.Ignore;
import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-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.OnapCliArgsParser;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
import jline.console.ConsoleReader;
import mockit.Invocation;
this.handle(new String[] { "sample-test", "--help" });
}
- @Ignore
- @Test
- public void testHandleProfile() {
- this.handle(new String[] { "-c", "test" });
- }
-
- @Ignore
- @Test
- public void testAAICustomerList() {
- this.handle(new String[] { "customer-list", "-u", "AAI", "-p", "AAI", "-m", "https://192.168.17.12:8443" });
- }
-
- @Ignore
- @Test
- public void testAAICloudList() {
- this.handle(new String[] { "cloud-list", "-u", "AAI", "-p", "AAI", "-m", "https://192.168.17.12:8443" });
- }
-
- @Test
- public void testHelpSampleCreateCommand() throws OnapCommandException {
- ClassLoader cl = ClassLoader.getSystemClassLoader();
- URL[] urls = ((URLClassLoader) cl).getURLs();
- for (URL url : urls) {
- if (url.getPath().contains("main/target/test-classes")) {
- File file = new File(url.getPath() + "data");
- if (!file.exists()) {
- file.mkdirs();
- }
- break;
- }
- }
- this.handle(new String[] { "sample-create", "--help" });
- 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" }));
- OnapCliArgsParser.populateParams(cmd.getParameters(), args);
- }
-
@Test
public void testHelpSampleCommandShort() {
this.handle(new String[] { "sample-test", "-h" });
package org.onap.cli.main;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandSchema;
+import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchema;
/**
* This command helps to test the Command functionalities.
package org.onap.cli.main.utils;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import org.junit.Assert;
import org.junit.Test;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.input.OnapCommandParameter;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
import org.onap.cli.main.error.OnapCliArgumentValueMissing;
import org.onap.cli.main.error.OnapCliInvalidArgument;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
public class OnapCliUtilsTest {
@Test
OnapCommandParameter param1 = new OnapCommandParameter();
param1.setLongOption("host-username");
param1.setName("host-username");
- param1.setParameterType(ParameterType.STRING);
+ param1.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param2 = new OnapCommandParameter();
param2.setLongOption("host-password");
param2.setName("host-password");
- param2.setParameterType(ParameterType.STRING);
+ param2.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param3 = new OnapCommandParameter();
param3.setLongOption("host-url");
param3.setName("host-url");
- param3.setParameterType(ParameterType.STRING);
+ param3.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param4 = new OnapCommandParameter();
param4.setLongOption("string-param");
param4.setName("string-param");
- param4.setParameterType(ParameterType.STRING);
+ param4.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param5 = new OnapCommandParameter();
param5.setLongOption("long-opt");
param5.setName("long-opt");
- param5.setParameterType(ParameterType.STRING);
+ param5.setParameterType(OnapCommandParameterType.STRING);
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(param1);
paramslist.add(param2);
paramslist.add(param3);
public void testpositionalargs() throws OnapCommandException {
OnapCommandParameter paramargs = new OnapCommandParameter();
paramargs.setName("http://localhost:8082/file.txt");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(paramargs);
String[] args = new String[] { "positional-args", "http://localhost:8082/file.txt" };
- paramargs.setParameterType(ParameterType.STRING);
+ paramargs.setParameterType(OnapCommandParameterType.STRING);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertEquals("positional-args", expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertEquals("positional-args", expectedList.get(1), paramslist.iterator().next().getValue());
}
@Test
OnapCommandParameter boolparam = new OnapCommandParameter();
boolparam.setLongOption("bool");
boolparam.setName("bool-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(boolparam);
String[] args = new String[] { "sample-create", "--bool" };
- boolparam.setParameterType(ParameterType.BOOL);
+ boolparam.setParameterType(OnapCommandParameterType.BOOL);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
}
OnapCommandParameter boolparam = new OnapCommandParameter();
boolparam.setShortOption("b");
boolparam.setName("bool-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(boolparam);
String[] args = new String[] { "sample-create", "-b", };
- boolparam.setParameterType(ParameterType.BOOL);
+ boolparam.setParameterType(OnapCommandParameterType.BOOL);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
}
@Test
OnapCommandParameter boolparam = new OnapCommandParameter();
boolparam.setLongOption("text-param");
boolparam.setName("text-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(boolparam);
String[] args = new String[] { "sample-create", "--text-param" , "text"};
- boolparam.setParameterType(ParameterType.TEXT);
+ boolparam.setParameterType(OnapCommandParameterType.TEXT);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
}
OnapCommandParameter boolparam = new OnapCommandParameter();
boolparam.setShortOption("e");
boolparam.setName("text-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(boolparam);
String[] args = new String[] { "sample-create", "-e" , "text"};
- boolparam.setParameterType(ParameterType.TEXT);
+ boolparam.setParameterType(OnapCommandParameterType.TEXT);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
}
@Test
OnapCommandParameter jsonparam = new OnapCommandParameter();
jsonparam.setShortOption("j");
jsonparam.setName("json-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(jsonparam);
File resourcesDirectory = new File("src/test/resources/sampletest.json");
String[] args = new String[] { "sample-create", "-j", "file:" + resourcesDirectory };
- jsonparam.setParameterType(ParameterType.JSON);
+ jsonparam.setParameterType(OnapCommandParameterType.JSON);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
}
@Test
OnapCommandParameter jsonparam = new OnapCommandParameter();
jsonparam.setLongOption("json-param");
jsonparam.setName("json-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(jsonparam);
File resourcesDirectory = new File("src/test/resources/sampletest.json");
String[] args = new String[] { "sample-create", "--json-param", "file:" + resourcesDirectory };
- jsonparam.setParameterType(ParameterType.JSON);
+ jsonparam.setParameterType(OnapCommandParameterType.JSON);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
}
@Test
OnapCommandParameter param1 = new OnapCommandParameter();
param1.setShortOption("u");
param1.setName("host-username");
- param1.setParameterType(ParameterType.STRING);
+ param1.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param2 = new OnapCommandParameter();
param2.setShortOption("p");
param2.setName("host-password");
- param2.setParameterType(ParameterType.STRING);
+ param2.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param3 = new OnapCommandParameter();
param3.setShortOption("r");
param3.setName("host-url");
- param3.setParameterType(ParameterType.STRING);
+ param3.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param4 = new OnapCommandParameter();
param4.setShortOption("c");
param4.setName("string-param");
- param4.setParameterType(ParameterType.STRING);
+ param4.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param5 = new OnapCommandParameter();
param5.setShortOption("l");
param5.setName("long-opt");
- param5.setParameterType(ParameterType.STRING);
+ param5.setParameterType(OnapCommandParameterType.STRING);
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(param1);
paramslist.add(param2);
paramslist.add(param3);
arrayval.setName("node-ip");
String[] args = new String[] { "sample-create", "--node-ip", "{}" };
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(arrayval);
- arrayval.setParameterType(ParameterType.ARRAY);
+ arrayval.setParameterType(OnapCommandParameterType.ARRAY);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertNotNull(expectedList.get(1), paramslist.iterator().next().getValue());
}
@Test
OnapCommandParameter param1 = new OnapCommandParameter();
param1.setLongOption("map");
param1.setName("MAP");
- param1.setParameterType(ParameterType.MAP);
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ param1.setParameterType(OnapCommandParameterType.MAP);
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(param1);
- param1.setParameterType(ParameterType.MAP);
+ param1.setParameterType(OnapCommandParameterType.MAP);
OnapCliArgsParser.populateParams(paramslist,
Arrays.asList("show", "--map", "param1=value1", "--map", "param2=value2"));
- Assert.assertEquals("{\"param1\":\"value1\",\"param2\":\"value2\"}", paramslist.get(0).getValue().toString());
+ Assert.assertEquals("{\"param1\":\"value1\",\"param2\":\"value2\"}", paramslist.iterator().next().getValue().toString());
}
@Test(expected = OnapCliInvalidArgument.class)
OnapCommandParameter param1 = new OnapCommandParameter();
param1.setLongOption("map");
param1.setName("MAP");
- param1.setParameterType(ParameterType.MAP);
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ param1.setParameterType(OnapCommandParameterType.MAP);
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(param1);
- param1.setParameterType(ParameterType.MAP);
+ param1.setParameterType(OnapCommandParameterType.MAP);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList("show", "--map", "param1=value1", "--map", "param2"));
- Assert.assertEquals("{\"param1\":\"value1\",\"param2\"}", paramslist.get(0).getValue().toString());
+ Assert.assertEquals("{\"param1\":\"value1\",\"param2\"}", paramslist.iterator().next().getValue().toString());
}
@Test(expected = OnapCliInvalidArgument.class)
OnapCommandParameter param1 = new OnapCommandParameter();
param1.setShortOption("o");
param1.setName("node-port");
- param1.setParameterType(ParameterType.MAP);
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ param1.setParameterType(OnapCommandParameterType.MAP);
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(param1);
- param1.setParameterType(ParameterType.MAP);
+ param1.setParameterType(OnapCommandParameterType.MAP);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList("show", "-o", "param1=value1", "-o", "param2"));
- Assert.assertEquals("{\"param1\":\"value1\",\"param2\"}", paramslist.get(0).getValue().toString());
+ Assert.assertEquals("{\"param1\":\"value1\",\"param2\"}", paramslist.iterator().next().getValue().toString());
}
@Test(expected = OnapCliInvalidArgument.class)
public void testpositionalargsfails() throws OnapCommandException {
OnapCommandParameter paramargs = new OnapCommandParameter();
paramargs.setName("http://localhost:8082/file.txt");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(paramargs);
String[] args = new String[] { "positional-args", "http://localhost:8082/file.txt",
"http://localhost:8082/file.txt" };
- paramargs.setParameterType(ParameterType.STRING);
+ paramargs.setParameterType(OnapCommandParameterType.STRING);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertEquals("positional-args", expectedList.get(1), paramslist.get(0).getValue());
+ Assert.assertEquals("positional-args", expectedList.get(1), paramslist.iterator().next().getValue());
}
@Test(expected = OnapCliInvalidArgument.class)
OnapCommandParameter boolparam = new OnapCommandParameter();
boolparam.setShortOption("b");
boolparam.setName("bool-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(boolparam);
String[] args = new String[] { "sample-create", "-b", "-b", "-h" };
- boolparam.setParameterType(ParameterType.BOOL);
+ boolparam.setParameterType(OnapCommandParameterType.BOOL);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertEquals("true", paramslist.get(0).getValue());
+ Assert.assertEquals("true", paramslist.iterator().next().getValue());
}
@Test(expected = OnapCliInvalidArgument.class)
OnapCommandParameter boolparam = new OnapCommandParameter();
boolparam.setShortOption("bool");
boolparam.setName("bool-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(boolparam);
String[] args = new String[] { "sample-create", "--bool", "--bool", "--help" };
- boolparam.setParameterType(ParameterType.BOOL);
+ boolparam.setParameterType(OnapCommandParameterType.BOOL);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertEquals("true", paramslist.get(0).getValue());
+ Assert.assertEquals("true", paramslist.iterator().next().getValue());
}
@Test(expected = OnapCliArgumentValueMissing.class)
OnapCommandParameter jsonparam = new OnapCommandParameter();
jsonparam.setLongOption("json-param");
jsonparam.setName("json-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(jsonparam);
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);
+ jsonparam.setParameterType(OnapCommandParameterType.JSON);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertEquals("--json-param", paramslist.get(0).getValue());
+ Assert.assertEquals("--json-param", paramslist.iterator().next().getValue());
}
OnapCommandParameter jsonparam = new OnapCommandParameter();
jsonparam.setShortOption("j");
jsonparam.setName("json-param");
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(jsonparam);
File resourcesDirectory = new File("src/test/resources/sampletest.json");
String[] args = new String[] { "sample-create", "-j", "file:" + resourcesDirectory, "-j" };
- jsonparam.setParameterType(ParameterType.JSON);
+ jsonparam.setParameterType(OnapCommandParameterType.JSON);
OnapCliArgsParser.populateParams(paramslist, Arrays.asList(args));
List<String> expectedList = Arrays.asList(args);
- Assert.assertEquals("--json-param", paramslist.get(0).getValue());
+ Assert.assertEquals("--json-param", paramslist.iterator().next().getValue());
}
}
\ No newline at end of file
+++ /dev/null
-open_cli_schema_version: 1.0
-name: sample-create
-description: Sample create into Onap
-info:
- product: open-cli
- service: test
- type: cmd
- author: Kanagaraj Manickam kanagaraj.manickam@huawei.com
-
-parameters:
- - name: service-name
- description: Oclip service name
- type: string
- short_option: x
- long_option: service-name
- is_optional: false
- - name: node-ip
- description: Oclip service running node IP
- type: array
- short_option: i
- long_option: node-ip
- - name: node-port
- description: Oclip service running node port
- type: map
- short_option: o
- long_option: node-port
-results:
- direction: portrait
- attributes:
- - name: name
- description: Oclip service name
- scope: short
- type: string
- - name: version
- description: Oclip service version
- scope: short
- type: string
- - name: url
- description: Oclip service base url
- scope: short
- type: url
- - name: status
- description: Oclip service status
- scope: short
- type: digit
- - name: nodes
- description: Oclip service running nodes
- scope: long
- type: string
- - name: location
- description: Oclip service location
- scope: long
- type: url
-http:
- request:
- uri: /services
- method: POST
- body: '{"serviceName":"${service-name}","nodeIp":"${node-ip}","nodePort":"${node-port}"}'
- headers:
- queries:
- success_codes:
- - 201
- - 200
- result_map:
- name: $b{$.serviceName}
- version: $b{$.version}
- url: $b{$.url}
- status: $b{$.status}
- nodes: $b{$.nodes[*].ip}:$b{$.nodes[*].port}
- location: $h{Location}
-
- sample_response:
- body: {"serviceName":"test","version":"v1","url":"/api/test/v1","protocol":"REST","visualRange":"1","lb_policy":"hash","nodes":[{"ip":"127.0.0.1","port":"8012","ttl":0,"nodeId":"test_127.0.0.1_8012","expiration":"2017-02-10T05:33:25Z","created_at":"2017-02-10T05:33:25Z","updated_at":"2017-02-10T05:33:25Z"}],"status":"1"}
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-openecomp-features</artifactId>
- <version>2.0.0</version>
- </parent>
-
- <artifactId>cli-plugins-openecomp-features-aai</artifactId>
- <name>cli/plugins/openecomp/features/aai</name>
- <packaging>jar</packaging>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
<modules>
<module>framework</module>
- <module>plugins</module>
+ <module>profiles</module>
+ <module>products</module>
<module>main</module>
<module>deployment</module>
<module>validate</module>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam</artifactId>
+ <artifactId>cli-products-onap-amsterdam</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam-auth</artifactId>
- <name>cli/plugins/onap-amsterdam/auth</name>
+ <artifactId>cli-products-onap-amsterdam-auth</artifactId>
+ <name>cli/products/onap-amsterdam/auth</name>
<packaging>jar</packaging>
<build>
<plugins>
package org.onap.cli.cmd.auth;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.cmd.BasicAuthLoginCommand;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.http.cmd.BasicAuthLoginCommand;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-login-onap-1-1.yaml")
public class OnapBasicAuthLoginCommandAmesterdam extends BasicAuthLoginCommand {
package org.onap.cli.cmd.auth;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.cmd.BasicAuthLogoutCommand;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.http.cmd.BasicAuthLogoutCommand;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-logout-onap-1-1.yaml")
public class OnapBasicAuthLogoutCommandAmesterdam extends BasicAuthLogoutCommand {
package org.onap.cli.cmd.auth;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.cmd.BasicAuthLoginCommand;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.http.cmd.BasicAuthLoginCommand;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-login-onap-sdc-1-1.yaml")
public class OnapSdcBasicAuthLoginCommandAmesterdam extends BasicAuthLoginCommand {
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam</artifactId>
+ <artifactId>cli-products-onap-amsterdam</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam-catalog</artifactId>
- <name>cli/plugins/onap-amsterdam/catalog</name>
+ <artifactId>cli-products-onap-amsterdam-catalog</artifactId>
+ <name>cli/products/onap-amsterdam/catalog</name>
<packaging>jar</packaging>
<build>
<plugins>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam-features-aai</artifactId>
- <name>cli/plugins/onap-amsterdam/features/aai</name>
+ <artifactId>cli-products-onap-amsterdam-features-aai</artifactId>
+ <name>cli/products/onap-amsterdam/features/aai</name>
<packaging>jar</packaging>
<build>
<plugins>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam-features-msb</artifactId>
- <name>cli/plugins/onap-amsterdam/features/msb</name>
+ <artifactId>cli-products-onap-amsterdam-features-msb</artifactId>
+ <name>cli/products/onap-amsterdam/features/msb</name>
<packaging>jar</packaging>
<build>
<plugins>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam</artifactId>
+ <artifactId>cli-products-onap-amsterdam</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam-features</artifactId>
- <name>cli/plugins/onap-amsterdam/features</name>
+ <artifactId>cli-products-onap-amsterdam-features</artifactId>
+ <name>cli/products/onap-amsterdam/features</name>
<packaging>pom</packaging>
-
+
<modules>
<module>msb</module>
<module>aai</module>
<module>sdc</module>
<module>so</module>
</modules>
-
+
<build>
<pluginManagement>
<plugins>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
- <!-- copy to plugin dependencies -->
- <outputDirectory>../../../../plugins/target/lib</outputDirectory>
+ <!-- copy to products dependencies -->
+ <outputDirectory>../../../../products/target/lib</outputDirectory>
</configuration>
</execution>
</executions>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam-features-sdc</artifactId>
- <name>cli/plugins/onap-amsterdam/features/sdc</name>
+ <artifactId>cli-products-onap-amsterdam-features-sdc</artifactId>
+ <name>cli/products/onap-amsterdam/features/sdc</name>
<packaging>jar</packaging>
<build>
<plugins>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam-features-so</artifactId>
- <name>cli/plugins/onap-amsterdam/features/so</name>
+ <artifactId>cli-products-onap-amsterdam-features-so</artifactId>
+ <name>cli/products/onap-amsterdam/features/so</name>
<packaging>jar</packaging>
<build>
<plugins>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins</artifactId>
+ <artifactId>cli-products</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-onap-amsterdam</artifactId>
- <name>cli/plugins/onap-amsterdam</name>
+ <artifactId>cli-products-onap-amsterdam</artifactId>
+ <name>cli/products/onap-amsterdam</name>
<packaging>pom</packaging>
-
+
<modules>
<module>auth</module>
<module>catalog</module>
<module>features</module>
</modules>
-
- <build>
+
+ <build>
<pluginManagement>
<plugins>
<plugin>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
- <!-- copy to plugin dependencies -->
- <outputDirectory>../../../plugins/target/lib</outputDirectory>
+ <!-- copy to products dependencies -->
+ <outputDirectory>../../../products/target/lib</outputDirectory>
</configuration>
</execution>
</executions>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-openecomp</artifactId>
+ <artifactId>cli-products-openecomp</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-openecomp-auth</artifactId>
- <name>cli/plugins/openecomp/auth</name>
+ <artifactId>cli-products-openecomp-auth</artifactId>
+ <name>cli/products/openecomp/auth</name>
<packaging>jar</packaging>
+
<build>
<plugins>
<plugin>
package org.onap.cli.cmd.auth;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.cmd.BasicAuthLoginCommand;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.http.cmd.BasicAuthLoginCommand;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-login-onap-1-0.yaml")
public class OnapBasicAuthLoginCommand extends BasicAuthLoginCommand {
package org.onap.cli.cmd.auth;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.cmd.BasicAuthLogoutCommand;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.http.cmd.BasicAuthLogoutCommand;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-logout-onap-1-0.yaml")
public class OnapBasicAuthLogoutCommand extends BasicAuthLogoutCommand {
package org.onap.cli.cmd.auth;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.cmd.BasicAuthLoginCommand;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.http.cmd.BasicAuthLoginCommand;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-login-onap-sdc-1-0.yaml")
public class OnapSdcBasicAuthLoginCommand extends BasicAuthLoginCommand {
-org.onap.cli.cmd.auth.OnapBasicAuthLoginCommand\r
-org.onap.cli.cmd.auth.OnapBasicAuthLogoutCommand\r
+org.onap.cli.cmd.auth.OnapBasicAuthLoginCommand
+org.onap.cli.cmd.auth.OnapBasicAuthLogoutCommand
org.onap.cli.cmd.auth.OnapSdcBasicAuthLoginCommand
\ No newline at end of file
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-openecomp</artifactId>
+ <artifactId>cli-products-openecomp</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-openecomp-catalog</artifactId>
- <name>cli/plugins/openecomp/catalog</name>
+ <artifactId>cli-products-openecomp-catalog</artifactId>
+ <name>cli/products/openecomp/catalog</name>
<packaging>jar</packaging>
<build>
<plugins>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.cli</groupId>
+ <artifactId>cli-products-openecomp-features</artifactId>
+ <version>2.0.0</version>
+ </parent>
+
+ <artifactId>cli-products-openecomp-features-aai</artifactId>
+ <name>cli/products/openecomp/features/aai</name>
+ <packaging>jar</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-openecomp</artifactId>
+ <artifactId>cli-products-openecomp</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-openecomp-features</artifactId>
- <name>cli/plugins/openecomp/features</name>
+ <artifactId>cli-products-openecomp-features</artifactId>
+ <name>cli/products/openecomp/features</name>
<packaging>pom</packaging>
-
+
<modules>
<module>aai</module>
<module>sdc</module>
</modules>
-
+
<build>
<pluginManagement>
<plugins>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
- <!-- copy to plugin dependencies -->
- <outputDirectory>../../../../plugins/target/lib</outputDirectory>
+ <!-- copy to products dependencies -->
+ <outputDirectory>../../../../products/target/lib</outputDirectory>
</configuration>
</execution>
</executions>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-openecomp-features</artifactId>
+ <artifactId>cli-products-openecomp-features</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-openecomp-features-sdc</artifactId>
- <name>cli/plugins/openecomp/features/sdc</name>
+ <artifactId>cli-products-openecomp-features-sdc</artifactId>
+ <name>cli/products/openecomp/features/sdc</name>
<packaging>jar</packaging>
<build>
<plugins>
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins</artifactId>
+ <artifactId>cli-products</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-openecomp</artifactId>
- <name>cli/plugins/openecomp</name>
+ <artifactId>cli-products-openecomp</artifactId>
+ <name>cli/products/openecomp</name>
<packaging>pom</packaging>
-
+
<modules>
<module>auth</module>
<module>catalog</module>
<module>features</module>
</modules>
-
<build>
<pluginManagement>
<plugins>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
- <!-- copy to plugin dependencies -->
- <outputDirectory>../../../plugins/target/lib</outputDirectory>
+ <!-- copy to products dependencies -->
+ <outputDirectory>../../../products/target/lib</outputDirectory>
</configuration>
</execution>
</executions>
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.
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ --><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins</artifactId>
- <name>cli/plugins</name>
+ <artifactId>cli-products</artifactId>
+ <name>cli/products</name>
<packaging>pom</packaging>
<dependencies>
<dependency>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-framework</artifactId>
+ <artifactId>cli-profiles-http</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
</profile>
</profiles>
-
- <build>
+ <build>
<pluginManagement>
<plugins>
<plugin>
</artifactItem>
</artifactItems>
<!-- copy to plugin dependencies -->
- <outputDirectory>../../plugins/target/lib</outputDirectory>
+ <outputDirectory>../../products/target/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugins>
</pluginManagement>
</build>
-</project>
-
+</project>
\ No newline at end of file
<parent>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins</artifactId>
+ <artifactId>cli-products</artifactId>
<version>2.0.0</version>
</parent>
- <artifactId>cli-plugins-sample</artifactId>
- <name>cli/plugins/sample</name>
+ <artifactId>cli-products-sample</artifactId>
+ <name>cli/products/sample</name>
<packaging>jar</packaging>
<build>
<plugins>
import java.util.Map;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandSchema;
+import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.input.OnapCommandParameter;
+import org.onap.cli.fw.schema.OnapCommandSchema;
/**
* Hello world.
//Populate outputs
this.getResult().getRecordsMap().get("output").getValues().add(output);
}
+
}
--- /dev/null
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.onap.cli</groupId>
+ <artifactId>cli-profiles</artifactId>
+ <version>2.0.0</version>
+ </parent>
+
+ <artifactId>cli-profiles-http</artifactId>
+ <name>cli-profiles/http</name>
+ <packaging>jar</packaging>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.cli</groupId>
+ <artifactId>cli-sample-mock-generator</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpmime</artifactId>
+ <version>4.0.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.jayway.jsonpath</groupId>
+ <artifactId>json-path</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.6.3</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jmockit</groupId>
+ <artifactId>jmockit</artifactId>
+ <version>1.19</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jmockit</groupId>
+ <artifactId>jmockit-coverage</artifactId>
+ <version>1.19</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
* limitations under the License.
*/
-package org.onap.cli.fw.ad;
+package org.onap.cli.fw.http.auth;
import java.util.HashMap;
import java.util.Map;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
-import org.onap.cli.fw.cmd.OnapHttpCommand;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.conf.OnapCommandConfig;
import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.error.OnapCommandHttpFailure;
import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
-import org.onap.cli.fw.error.OnapCommandNotFound;
-import org.onap.cli.fw.http.HttpInput;
-import org.onap.cli.fw.http.HttpResult;
-import org.onap.cli.fw.http.OnapHttpConnection;
+import org.onap.cli.fw.http.cmd.OnapHttpCommand;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
+import org.onap.cli.fw.http.connect.HttpInput;
+import org.onap.cli.fw.http.connect.HttpResult;
+import org.onap.cli.fw.http.connect.OnapHttpConnection;
+import org.onap.cli.fw.http.error.OnapCommandHttpFailure;
+import org.onap.cli.fw.http.schema.OnapCommandSchemaHttpLoader;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
-import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
import org.onap.cli.fw.utils.OnapCommandUtils;
/**
* Oclip Auth client helps to do login and logout.
*
*/
-public class OnapAuthClient {
+public class OnapCommandHttpAuthClient {
private OnapHttpCommand cmd = null;
private OnapHttpConnection http = null;
- public OnapAuthClient(OnapHttpCommand cmd, boolean debug) throws OnapCommandHttpFailure, OnapCommandInvalidParameterValue {
+ public OnapCommandHttpAuthClient(OnapHttpCommand cmd, boolean debug) throws OnapCommandHttpFailure, OnapCommandInvalidParameterValue {
this.cmd = cmd;
this.http = new OnapHttpConnection(debug);
}
public void login() throws OnapCommandException {
// For development purpose, its introduced and is not supported for production
- if (OnapCommandConfg.isAuthIgnored()) {
+ if (Boolean.parseBoolean(OnapCommandConfig.getPropertyValue(OnapCommandHttpConstants.OPEN_IGNORE_AUTH))) {
return;
}
- OnapCommand login = OnapCommandDiscoveryUtils.findAuthCommand(this.cmd, "login");
+ OnapCommand login = OnapCommandSchemaHttpLoader.findAuthCommand(this.cmd, "login");
OnapCommandUtils.copyParamsFrom(this.cmd, login);
login.execute();
*/
public void logout() throws OnapCommandException {
// For development purpose, its introduced and is not supported for production
- if (OnapCommandConfg.isAuthIgnored()) {
+ if (Boolean.parseBoolean(OnapCommandConfig.getPropertyValue(OnapCommandHttpConstants.OPEN_IGNORE_AUTH))) {
return;
}
- OnapCommand logout = OnapCommandDiscoveryUtils.findAuthCommand(this.cmd, "logout");
+ OnapCommand logout = OnapCommandSchemaHttpLoader.findAuthCommand(this.cmd, "logout");
OnapCommandUtils.copyParamsFrom(this.cmd, logout);
private String getServiceUrl(OnapHttpCommand cmd) throws OnapCommandException {
if (cmd.getService().isModeDirect()){
- return cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).getValue().toString();
+ return cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_HOST_URL).getValue().toString();
} else { //Catalog mode
OnapCommand catalog = OnapCommandRegistrar.getRegistrar().get("catalog");
Map<String, String> paramsOverrides = new HashMap<>();
- paramsOverrides.put(Constants.CATALOG_SERVICE_NAME, cmd.getService().getName());
- paramsOverrides.put(Constants.CATALOG_SERVICE_VERSION, cmd.getService().getVersion());
+ paramsOverrides.put(OnapCommandHttpConstants.CATALOG_SERVICE_NAME, cmd.getService().getName());
+ paramsOverrides.put(OnapCommandHttpConstants.CATALOG_SERVICE_VERSION, cmd.getService().getVersion());
OnapCommandUtils.copyParamsFrom(cmd, catalog, paramsOverrides);
catalog.execute();
- String hostUrl = catalog.getResult().getRecordsMap().get(Constants.CATALOG_SERVICE_HOST_URL).getValues().get(0);
+ String hostUrl = catalog.getResult().getRecordsMap().get(OnapCommandHttpConstants.CATALOG_SERVICE_HOST_URL).getValues().get(0);
hostUrl = hostUrl.trim();
if (hostUrl.endsWith("/")) {
hostUrl = hostUrl.substring(0, hostUrl.length()-1);
}
- String basePath = catalog.getResult().getRecordsMap().get(Constants.CATALOG_SERVICE_BASE_PATH).getValues().get(0);
+ String basePath = catalog.getResult().getRecordsMap().get(OnapCommandHttpConstants.CATALOG_SERVICE_BASE_PATH).getValues().get(0);
basePath = basePath.trim();
if (basePath.startsWith("/")) {
basePath = basePath.substring(1);
* limitations under the License.
*/
-package org.onap.cli.fw.ad;
+package org.onap.cli.fw.http.auth;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
/**
* Oclip Service as reported in api catalog.
*/
-public class OnapService {
+public class OnapCommandHttpService {
/*
* Oclip Service name like aai.
*/
* Another mode is 'direct', in which bastPath will be
* same as OnapCredentails.ServiceUrl.
*/
- private String mode = Constants.MODE_DIRECT;
+ private String mode = OnapCommandHttpConstants.MODE_DIRECT;
- private String authType = Constants.AUTH_NONE;
+ private String authType = OnapCommandHttpConstants.AUTH_NONE;
public String getMode() {
return mode;
}
public boolean isModeDirect() {
- return this.getMode().equals(Constants.MODE_DIRECT);
+ return this.getMode().equals(OnapCommandHttpConstants.MODE_DIRECT);
}
public String getAuthType() {
}
public boolean isNoAuth() {
- return this.authType.equalsIgnoreCase(Constants.AUTH_NONE);
+ return this.authType.equalsIgnoreCase(OnapCommandHttpConstants.AUTH_NONE);
}
public String getName() {
* limitations under the License.
*/
-package org.onap.cli.fw.cmd;
+package org.onap.cli.fw.http.cmd;
import java.util.Map;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.auth.BasicScheme;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.conf.Constants;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
import org.onap.cli.fw.input.OnapCommandParameter;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-login.yaml")
public class BasicAuthLoginCommand extends OnapHttpCommand {
//get the input arguments
Map<String, OnapCommandParameter> paramMap = getParametersMap();
- OnapCommandParameter usernameParam = paramMap.get(Constants.DEAFULT_PARAMETER_USERNAME);
+ OnapCommandParameter usernameParam = paramMap.get(OnapCommandHttpConstants.DEAFULT_PARAMETER_USERNAME);
String username = usernameParam.getValue().toString();
- OnapCommandParameter usernamePassword = paramMap.get(Constants.DEAFULT_PARAMETER_PASSWORD);
+ OnapCommandParameter usernamePassword = paramMap.get(OnapCommandHttpConstants.DEAFULT_PARAMETER_PASSWORD);
String password = usernamePassword.getValue().toString();
//Execute the command to get token
username, password), "UTF-8", false).getValue();
//Fill out the result part
- this.getResult().getRecordsMap().get(Constants.AUTH_SERVICE_AUTHORIZATION).getValues().add(authToken);
+ this.getResult().getRecordsMap().get(OnapCommandHttpConstants.AUTH_SERVICE_AUTHORIZATION).getValues().add(authToken);
}
}
* limitations under the License.
*/
-package org.onap.cli.fw.cmd;
+package org.onap.cli.fw.http.cmd;
-import org.onap.cli.fw.OnapCommandSchema;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "basic-logout.yaml")
public class BasicAuthLogoutCommand extends OnapHttpCommand {
* limitations under the License.
*/
-package org.onap.cli.fw.cmd;
+package org.onap.cli.fw.http.cmd;
-import org.onap.cli.fw.OnapCommandSchema;
import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchema;
@OnapCommandSchema(schema = "catalog.yaml")
public class CatalogCommand extends OnapHttpCommand {
* limitations under the License.
*/
-package org.onap.cli.fw.cmd;
+package org.onap.cli.fw.http.cmd;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandSchema;
-import org.onap.cli.fw.ad.OnapAuthClient;
-import org.onap.cli.fw.ad.OnapService;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.cmd.OnapCommandType;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandExecutionFailed;
-import org.onap.cli.fw.error.OnapCommandFailedMocoGenerate;
-import org.onap.cli.fw.http.HttpInput;
-import org.onap.cli.fw.http.HttpResult;
+import org.onap.cli.fw.http.auth.OnapCommandHttpAuthClient;
+import org.onap.cli.fw.http.auth.OnapCommandHttpService;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
+import org.onap.cli.fw.http.connect.HttpInput;
+import org.onap.cli.fw.http.connect.HttpResult;
+import org.onap.cli.fw.http.error.OnapCommandFailedMocoGenerate;
+import org.onap.cli.fw.http.schema.OnapCommandSchemaHttpLoader;
+import org.onap.cli.fw.http.utils.OnapCommandHttpUtils;
import org.onap.cli.fw.output.OnapCommandResultAttribute;
-import org.onap.cli.fw.utils.OnapCommandSchemaLoaderUtils;
+import org.onap.cli.fw.schema.OnapCommandSchema;
import org.onap.cli.fw.utils.OnapCommandUtils;
import org.onap.cli.http.mock.MockJsonGenerator;
import org.onap.cli.http.mock.MockRequest;
* Oclip http Command.
*
*/
-@OnapCommandSchema(type = Constants.HTTP_SCHEMA_PROFILE)
+@OnapCommandSchema(type = OnapCommandHttpConstants.HTTP_SCHEMA_PROFILE)
public class OnapHttpCommand extends OnapCommand {
private HttpInput input = new HttpInput();
private Map<String, String> resultMap = new HashMap<>();
- protected OnapAuthClient authClient;
+ protected OnapCommandHttpAuthClient authClient;
- private OnapService oclipService = new OnapService();
+ private OnapCommandHttpService oclipService = new OnapCommandHttpService();
public void setInput(HttpInput input) {
this.input = input;
@Override
public String getSchemaVersion() {
- return Constants.OPEN_CLI_SCHEMA_VERSION_VALUE_1_0;
+ return OnapCommandConstants.OPEN_CLI_SCHEMA_VERSION_VALUE_1_0;
}
public void setSuccessStatusCodes(List<Integer> successStatusCodes) {
/*
* Oclip service, this command uses to execute it.
*/
- public OnapService getService() {
+ public OnapCommandHttpService getService() {
return this.oclipService;
}
- public void setService(OnapService service) {
+ public void setService(OnapCommandHttpService service) {
this.oclipService = service;
}
@Override
protected List<String> initializeProfileSchema() throws OnapCommandException {
- return OnapCommandSchemaLoaderUtils.loadHttpSchema(this, this.getSchemaName(), true, false);
+ return OnapCommandSchemaHttpLoader.loadHttpSchema(this, this.getSchemaName(), true, false);
}
@Override
protected void validate() throws OnapCommandException {
if (! this.isAuthRequired()) {
- if (this.getParametersMap().containsKey(Constants.DEAFULT_PARAMETER_USERNAME)) {
- this.getParametersMap().get(Constants.DEAFULT_PARAMETER_USERNAME).setOptional(true);
+ if (this.getParametersMap().containsKey(OnapCommandHttpConstants.DEAFULT_PARAMETER_USERNAME)) {
+ this.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_USERNAME).setOptional(true);
}
- if (this.getParametersMap().containsKey(Constants.DEAFULT_PARAMETER_PASSWORD)) {
- this.getParametersMap().get(Constants.DEAFULT_PARAMETER_PASSWORD).setOptional(true);
+ if (this.getParametersMap().containsKey(OnapCommandHttpConstants.DEAFULT_PARAMETER_PASSWORD)) {
+ this.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_PASSWORD).setOptional(true);
}
}
private boolean isAuthRequired() {
return !this.getService().isNoAuth()
- && "false".equals(this.getParametersMap().get(Constants.DEFAULT_PARAMETER_NO_AUTH).getValue())
- && this.getInfo().getCommandType().equals(CommandType.CMD);
+ && "false".equals(this.getParametersMap().get(OnapCommandHttpConstants.DEFAULT_PARAMETER_NO_AUTH).getValue())
+ && this.getInfo().getCommandType().equals(OnapCommandType.CMD);
}
@Override
// For auth/catalog type commands, login and logout logic is not required
boolean isAuthRequired = this.isAuthRequired();
- this.authClient = new OnapAuthClient(
+ this.authClient = new OnapCommandHttpAuthClient(
this,
this.getResult().isDebug());
protected void processRequest() throws OnapCommandException {
- HttpInput httpInput = OnapCommandUtils.populateParameters(this.getParametersMap(), this.getInput());
+ HttpInput httpInput = OnapCommandHttpUtils.populateParameters(this.getParametersMap(), this.getInput());
httpInput.setUri(this.authClient.getServiceUrl() + httpInput.getUri());
HttpResult output = this.authClient.run(httpInput);
throw new OnapCommandExecutionFailed(this.getName(), output.getBody(), output.getStatus());
}
- Map<String, ArrayList<String>> results = OnapCommandUtils.populateOutputs(this.getResultMap(), output);
+ Map<String, ArrayList<String>> results = OnapCommandHttpUtils.populateOutputs(this.getResultMap(), output);
results = OnapCommandUtils.populateOutputsFromInputParameters(results, this.getParametersMap());
for (OnapCommandResultAttribute attr : this.getResult().getRecords()) {
private void generateJsonMock(HttpInput httpInput, HttpResult httpResult, String schemaName)
throws OnapCommandFailedMocoGenerate {
- if (OnapCommandConfg.isSampleGenerateEnabled()) {
+ if (Boolean.parseBoolean(OnapCommandConfig.getPropertyValue(OnapCommandConstants.SAMPLE_GEN_ENABLED))) {
try {
MockRequest mockRequest = new MockRequest();
mockRequest.setMethod(httpInput.getMethod());
mockResponse.setStatus(httpResult.getStatus());
mockResponse.setJson(httpResult.getBody());
- MockJsonGenerator.generateMocking(mockRequest, mockResponse, OnapCommandConfg.getSampleGenerateTargetFolder()
+ MockJsonGenerator.generateMocking(mockRequest, mockResponse,
+ OnapCommandConfig.getPropertyValue(OnapCommandConstants.SAMPLE_GEN_TARGET_FOLDER)
+ "/" + schemaName.replace(".yaml", "") + "-moco.json");
} catch (IOException error) {
throw new OnapCommandFailedMocoGenerate(schemaName, error);
--- /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.http.conf;
+
+/**
+ * OnapCommandHttpConstants.
+ *
+ */
+public class OnapCommandHttpConstants {
+ public static final String CONF = "open-cli-http.properties";
+ public static final String OPEN_IGNORE_AUTH = "cli.ignore_auth";
+ public static final String HTTP_API_KEY_USE_COOKIES = "cli.http.api_key_use_cookies";
+ public static final String HTTP_SECTIONS = "cli.schema.http_sections";
+ public static final String HTTP_MANDATORY_SECTIONS = "cli.schema.http_mandatory_sections";
+ public static final String HTTP_REQUEST_PARAMS = "cli.schema.http_request_params";
+ public static final String HTTP_REQUEST_MANDATORY_PARAMS = "cli.schema.http_request_mandatory_params";
+ public static final String HTTP_METHODS = "cli.schema.http_methods";
+ //http connection
+ public static final String SSLCONTEST_TLS = "TLSV1.2";
+ public static final String APPLICATION_JSON = "application/json";
+ public static final String DEFAULT_PARAMETER_HTTP_FILE_NAME = "default_input_parameters_http.yaml";
+ public static final String DEAFULT_PARAMETER_USERNAME = "host-username";
+ public static final String DEAFULT_PARAMETER_PASSWORD = "host-password";
+ public static final String DEAFULT_PARAMETER_HOST_URL = "host-url";
+ public static final String DEFAULT_PARAMETER_NO_AUTH = "no-auth";
+ public static final String HTTP_SCHEMA_PROFILE = "http";
+ //http
+ public static final String HTTP = "http";
+ public static final String METHOD = "method";
+ public static final String SERVICE = "service";
+ public static final String VERSION = "version";
+ public static final String BASE_PATH = "base_path";
+ public static final String AUTH = "auth";
+ public static final String AUTH_NONE = "none";
+ public static final String AUTH_BASIC = "basic";
+ public static final String MODE = "mode";
+ public static final String MODE_DIRECT = "direct";
+ public static final String MODE_CATALOG = "catalog";
+ public static final String REQUEST = "request";
+ public static final String URI = "uri";
+ public static final String BODY = "body";
+ public static final String METHOD_TYPE = "method";
+ public static final String POST = "post";
+ public static final String GET = "get";
+ public static final String DELETE = "delete";
+ public static final String PUT = "put";
+ public static final String HEAD = "delete";
+ public static final String HEADERS = "headers";
+ public static final String QUERIES = "queries";
+ public static final String COOKIES = "cookies";
+ public static final String SUCCESS_CODES = "success_codes";
+ public static final String RESULT_MAP = "result_map";
+ public static final String SAMPLE_RESPONSE = "sample_response";
+ public static final String MULTIPART_ENTITY_NAME = "multipart_entity_name";
+ public static final String HTTP_SECTION_EMPTY = "Http Section cann't be null or empty";
+ public static final String HTTP_BODY_SECTION_EMPTY = "http body section under 'request:' cann't be null or empty";
+ public static final String HTTP_BODY_FAILED_PARSING = "The http body json is failed to parse";
+ public static final String HTTP_BODY_JSON_EMPTY = "The http body json cann't be null or empty";
+ public static final String HTTP_SUCCESS_CODE_INVALID = "Invalid http success code.";
+ public static final String HTTP_SAMPLE_RESPONSE_EMPTY = "Sample response cann't be null or empty";
+ public static final String HTTP_SAMPLE_RESPONSE_FAILED_PARSING = "The http Sample response json is failed to parse.";
+ //auth plugin
+ public static final String AUTH_SERVICE_AUTHORIZATION = "Authorization";
+ //catalog plugin
+ public static final String CATALOG_SERVICE_NAME = "catalog-service-name";
+ public static final String CATALOG_SERVICE_VERSION = "catalog-service-version";
+ public static final String CATALOG_SERVICE_BASE_PATH = "catalog-service-base-path";
+ public static final String CATALOG_SERVICE_HOST_URL = "catalog-service-host-url";
+
+ public static final String AUTH_VALUES = "cli.schema.auth_values";
+ public static final String MODE_VALUES = "cli.schema.mode_values";
+ public static final String SERVICE_PARAMS_LIST = "cli.schema.service_params_list";
+ public static final String SERVICE_PARAMS_MANDATORY_LIST = "cli.schema.service_params_mandatory_list";
+}
+
+
* limitations under the License.
*/
-package org.onap.cli.fw.http;
+package org.onap.cli.fw.http.connect;
import java.util.HashMap;
import java.util.Map;
* limitations under the License.
*/
-package org.onap.cli.fw.http;
+package org.onap.cli.fw.http.connect;
import java.util.HashMap;
import java.util.Map;
* limitations under the License.
*/
-package org.onap.cli.fw.http;
+package org.onap.cli.fw.http.connect;
import java.io.File;
import java.io.IOException;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.error.OnapCommandHttpFailure;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
+import org.onap.cli.fw.http.error.OnapCommandHttpFailure;
/**
* Helps to make http connection.<br>
}
private void initHttpClient(boolean isSecured) throws OnapCommandHttpFailure {
- if (this.httpClient == null) {
+ if (this.httpClient == null) {
try {
if (isSecured) {
- SSLContext sslContext = SSLContext.getInstance(Constants.SSLCONTEST_TLS);
+ SSLContext sslContext = SSLContext.getInstance(OnapCommandHttpConstants.SSLCONTEST_TLS);
sslContext.init(null, new TrustManager[] { new TrustAllX509TrustManager() },
new java.security.SecureRandom());
X509HostnameVerifier hostnameVerifier = new AllowAllHostnameVerifier();
} catch (Exception e) {
throw new OnapCommandHttpFailure(e);
}
- }
+ }
}
-
+
public String getDebugInfo() {
return this.debugDetails;
}
private void addCommonHeaders(HttpInput input) {
if (!input.isBinaryData()) {
- input.getReqHeaders().put("Content-Type", Constants.APPLICATION_JSON);
+ input.getReqHeaders().put("Content-Type", OnapCommandHttpConstants.APPLICATION_JSON);
}
- input.getReqHeaders().put("Accept", Constants.APPLICATION_JSON);
+ input.getReqHeaders().put("Accept", OnapCommandHttpConstants.APPLICATION_JSON);
for (String headerName : this.mapCommonHeaders.keySet()) {
input.getReqHeaders().put(headerName, this.mapCommonHeaders.get(headerName));
updateInputFromCookies(input, cookieStore);
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
-
+
this.initHttpClient(input.getUri().startsWith("https"));
-
+
HttpResponse resp = this.httpClient.execute(requestBase, localContext);
String respContent = this.getResponseBody(resp);
result.setBody(respContent);
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
+
+import org.onap.cli.fw.error.OnapCommandException;
/**
* Invalid data for generating moco json .
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
+
+import org.onap.cli.fw.error.OnapCommandException;
/**
* Command execution failed.
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
+
+import org.onap.cli.fw.error.OnapCommandException;
/**
* OnapCommandParameterNotFound.
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
+
+import org.onap.cli.fw.error.OnapCommandException;
/**
* OnapCommandParameterNotFound.
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
import java.util.List;
+import org.onap.cli.fw.error.OnapCommandException;
+
/**
* Invalid result map in HTTP section.
*
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
+
+import org.onap.cli.fw.error.OnapCommandException;
/**
* Login failed.
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
+
+import org.onap.cli.fw.error.OnapCommandException;
/**
* Logout failed.
* limitations under the License.
*/
-package org.onap.cli.fw.error;
+package org.onap.cli.fw.http.error;
+
+import org.onap.cli.fw.error.OnapCommandException;
/**
* Command not registered in MSB.
--- /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.http.schema;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
+import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.error.OnapCommandInvalidSchema;
+import org.onap.cli.fw.error.OnapCommandNotFound;
+import org.onap.cli.fw.http.auth.OnapCommandHttpService;
+import org.onap.cli.fw.http.cmd.OnapHttpCommand;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
+import org.onap.cli.fw.http.error.OnapCommandHttpInvalidResultMap;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
+import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
+import org.onap.cli.fw.utils.OnapCommandUtils;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import net.minidev.json.JSONObject;
+
+public class OnapCommandSchemaHttpLoader {
+
+ 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 ?
+ OnapCommandSchemaLoader.validateSchemaVersion(OnapCommandHttpConstants.DEFAULT_PARAMETER_HTTP_FILE_NAME, cmd.getSchemaVersion()) : new HashMap<>();
+
+ //mrkanag default_parameter is supported only for parameters.
+ if (defaultParameterMap.containsKey(OnapCommandConstants.INFO)) {
+ defaultParameterMap.remove(OnapCommandConstants.INFO);
+ }
+
+ errors.addAll(OnapCommandSchemaLoader.parseSchema(cmd, defaultParameterMap, validateSchema));
+ }
+
+ Map<String, List<Map<String, String>>> commandYamlMap =
+ (Map<String, List<Map<String, String>>>)OnapCommandSchemaLoader.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);
+ }
+ }
+
+ /**
+ * Load the schema.
+ *
+ * @param cmd
+ * OnapHttpCommand
+ * @param schemaName
+ * schema name
+ * @throws OnapCommandException
+ * on error
+ */
+ 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(OnapCommandHttpConstants.HTTP);
+
+ if (valMap != null) {
+ if (validate) {
+ OnapCommandUtils.validateTags(errorList, valMap, OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.HTTP_SECTIONS),
+ OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.HTTP_MANDATORY_SECTIONS), OnapCommandConstants.PARAMETERS);
+ errorList.addAll(validateHttpSchemaSection(values));
+ }
+ for (Map.Entry<String, ?> entry1 : valMap.entrySet()) {
+ String key1 = entry1.getKey();
+
+ switch (key1) {
+ case OnapCommandHttpConstants.REQUEST:
+ Map<String, ?> map = (Map<String, ?>) valMap.get(key1);
+
+ for (Map.Entry<String, ?> entry2 : map.entrySet()) {
+ try {
+ String key2 = entry2.getKey();
+
+ switch (key2) {
+ case OnapCommandHttpConstants.URI:
+ Object obj = map.get(key2);
+ cmd.getInput().setUri(obj.toString());
+ break;
+ case OnapCommandHttpConstants.METHOD_TYPE:
+ Object method = map.get(key2);
+ cmd.getInput().setMethod(method.toString());
+ break;
+ case OnapCommandHttpConstants.BODY:
+ Object body = map.get(key2);
+ cmd.getInput().setBody(body.toString());
+ break;
+ case OnapCommandHttpConstants.HEADERS:
+ Map<String, String> head = (Map<String, String>) map.get(key2);
+ cmd.getInput().setReqHeaders(head);
+ break;
+ case OnapCommandHttpConstants.QUERIES:
+ Map<String, String> query = (Map<String, String>) map.get(key2);
+
+ cmd.getInput().setReqQueries(query);
+ break;
+ case OnapCommandHttpConstants.MULTIPART_ENTITY_NAME:
+ Object multipartEntityName = map.get(key2);
+ cmd.getInput().setMultipartEntityName(multipartEntityName.toString());
+ break;
+ }
+ }catch (Exception ex) {
+ OnapCommandUtils.throwOrCollect(new OnapCommandInvalidSchema(cmd.getSchemaName(), ex), errorList, validate);
+ }
+ }
+ break;
+
+ case OnapCommandHttpConstants.SERVICE:
+ Map<String, String> serviceMap = (Map<String, String>) valMap.get(key1);
+
+ if (serviceMap != null) {
+ if (validate) {
+ OnapCommandUtils.validateTags(errorList, (Map<String, Object>) valMap.get(key1),
+ OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.SERVICE_PARAMS_LIST),
+ OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.SERVICE_PARAMS_MANDATORY_LIST), OnapCommandHttpConstants.SERVICE);
+
+ HashMap<String, String> validationMap = new HashMap<>();
+ validationMap.put(OnapCommandHttpConstants.AUTH, OnapCommandHttpConstants.AUTH_VALUES);
+ validationMap.put(OnapCommandHttpConstants.MODE, OnapCommandHttpConstants.MODE_VALUES);
+
+ for (String secKey : validationMap.keySet()) {
+ if (serviceMap.containsKey(secKey)) {
+ Object obj = serviceMap.get(secKey);
+ if (obj == null) {
+ errorList.add("Attribute '" + secKey + "' under '" + OnapCommandHttpConstants.SERVICE + "' is empty");
+ } else {
+ String value = String.valueOf(obj);
+ if (!OnapCommandConfig.getCommaSeparatedList(validationMap.get(secKey)).contains(value)) {
+ errorList.add("Attribute '" + secKey + "' contains invalid value. Valide values are "
+ + OnapCommandConfig.getCommaSeparatedList(validationMap.get(key1))); //
+ }
+ }
+ }
+ }
+ }
+
+ OnapCommandHttpService srv = new OnapCommandHttpService();
+
+ for (Map.Entry<String, String> entry : serviceMap.entrySet()) {
+ String key = entry.getKey();
+
+ switch (key) {
+ case OnapCommandConstants.NAME:
+ srv.setName(serviceMap.get(key));
+ break;
+
+ case OnapCommandHttpConstants.VERSION:
+ srv.setVersion(serviceMap.get(key).toString());
+ break;
+
+ case OnapCommandHttpConstants.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(OnapCommandHttpConstants.DEAFULT_PARAMETER_USERNAME).setInclude(false);
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_PASSWORD).setInclude(false);
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEFAULT_PARAMETER_NO_AUTH).setInclude(false);
+ }
+ break;
+
+ //mrkanag: from auth command, add the parameters to the command's parameters list
+
+ case OnapCommandHttpConstants.MODE:
+ Object mode = serviceMap.get(key);
+ srv.setMode(mode.toString());
+ break;
+ }
+ }
+ cmd.setService(srv);
+ }
+ break;
+
+ case OnapCommandHttpConstants.SUCCESS_CODES:
+ if (validate) {
+ validateHttpSccessCodes(errorList, (List<Object>) valMap.get(key1));
+ }
+ cmd.setSuccessStatusCodes((ArrayList) valMap.get(key1));
+ break;
+
+ case OnapCommandHttpConstants.RESULT_MAP:
+ if (validate) {
+ validateHttpResultMap(errorList, values);
+ }
+ cmd.setResultMap((Map<String, String>) valMap.get(key1));
+ break;
+
+ case OnapCommandHttpConstants.SAMPLE_RESPONSE:
+ // (mrkanag) implement sample response handling
+ break;
+ }
+ }
+ }
+ }catch (OnapCommandException e) {
+ OnapCommandUtils.throwOrCollect(e, errorList, validate);
+ }
+
+ //Handle the parameters for auth
+ if (!cmd.getService().isNoAuth()) {
+ OnapCommand login = OnapCommandSchemaHttpLoader.findAuthCommand(cmd, "login");
+ OnapCommandUtils.copyParamSchemasFrom(login, cmd);
+ }
+
+ return errorList;
+ }
+
+ public static ArrayList<String> validateHttpSchemaSection(Map<String, ?> values) {
+ ArrayList<String> errorList = new ArrayList<>();
+ Map<String, ?> map = (Map<String, ?>) values.get(OnapCommandHttpConstants.HTTP);
+ Map<String, Object> requestMap = (Map<String, Object>) map.get(OnapCommandHttpConstants.REQUEST);
+
+ if (requestMap != null && !requestMap.isEmpty()) {
+ OnapCommandUtils.validateTags(errorList, requestMap, OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.HTTP_REQUEST_PARAMS),
+ OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.HTTP_REQUEST_MANDATORY_PARAMS), OnapCommandHttpConstants.REQUEST);
+ String method = (String) requestMap.get(OnapCommandHttpConstants.METHOD);
+ if (method != null && !method.isEmpty()) {
+ if (!OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.HTTP_METHODS).contains(method.toLowerCase())) {
+ errorList.add("Attribute '" + OnapCommandHttpConstants.METHOD + "' under '" + OnapCommandHttpConstants.REQUEST + "' is invalid, correct types are "
+ + OnapCommandConfig.getCommaSeparatedList(OnapCommandHttpConstants.HTTP_METHODS).toString());
+ }
+ } else {
+ errorList.add("Http request method cann't be null or empty");
+ }
+
+ Set<String> requestParams = getRequestParams(values);
+
+ Set<String> uriParams = validateHttpUri(errorList, requestMap);
+
+ Set<String> bodyParams = validateHttpBody(errorList, requestMap);
+
+ Set<String> headerParams = validateHttpHeaders(requestMap);
+
+ Set<String> queryParams = validateHttpQueries(requestMap);
+
+ HashSet<String> totoalParams = new HashSet<>(uriParams);
+ totoalParams.addAll(bodyParams);
+ totoalParams.addAll(headerParams);
+ totoalParams.addAll(queryParams);
+
+ List<String> nonDeclaredParams = totoalParams.stream().filter(param -> !requestParams.contains(param))
+ .collect(Collectors.toList());
+
+ nonDeclaredParams.stream().forEach(p -> errorList.add("The parameter '" + p
+ + "' declared under 'parameters:' section is not mapped into request section."));
+ } else {
+ errorList.add(OnapCommandUtils.emptySection(OnapCommandHttpConstants.REQUEST));
+ }
+ return errorList;
+ }
+
+ public static void validateHttpSccessCodes(List<String> errorList, List<Object> requestSuccessCodes) {
+
+ if (requestSuccessCodes == null || requestSuccessCodes.isEmpty()) {
+ errorList.add(OnapCommandHttpConstants.HTTP_SUCCESS_CODE_INVALID);
+ return;
+ }
+
+ for (Object successCode : requestSuccessCodes) {
+ Integer code = (Integer) successCode;
+ if (code < 200 || code >= 300) {
+ if ( code != 404) {
+ errorList.add(OnapCommandHttpConstants.HTTP_SUCCESS_CODE_INVALID);
+ }
+ }
+ }
+
+ }
+
+ public static void validateHttpResultMap(List<String> errorList, Map<String, ?> values) throws OnapCommandException {
+ Map<String, ?> valMap = (Map<String, ?>) values.get(OnapCommandHttpConstants.HTTP);
+ List<Map<String, String>> attributes = (List<Map<String, String>>) ((Map<String, ?>)values.get(OnapCommandConstants.RESULTS)).get(OnapCommandConstants.ATTRIBUTES);
+ Set<String> resultMapParams = ((Map<String, String>) valMap.get(OnapCommandHttpConstants.RESULT_MAP)).keySet();
+
+ Set<String> resultAttNames = attributes.stream().map(map -> map.get(OnapCommandConstants.NAME))
+ .collect(Collectors.toSet());
+
+ List<String> invaliResultMapParams = resultMapParams.stream()
+ .filter(p -> !resultAttNames.contains(p)).collect(Collectors.toList());
+
+ if (!invaliResultMapParams.isEmpty()) {
+ OnapCommandUtils.throwOrCollect(new OnapCommandHttpInvalidResultMap(invaliResultMapParams), errorList, true);
+ }
+ }
+
+ public static Set<String> validateHttpQueries(Map<String, Object> requestMap) {
+ Map<String, Object> queries = (Map<String, Object>) requestMap.get(OnapCommandHttpConstants.QUERIES);
+ Set<String> queryParamNames = new HashSet<>();
+ if (queries != null) {
+ for (Entry<String, Object> entry : queries.entrySet()) {
+ OnapCommandUtils.parseParameters(String.valueOf(entry.getValue()), queryParamNames);
+ }
+ }
+ return queryParamNames;
+ }
+
+ public static Set<String> validateHttpHeaders(Map<String, Object> requestMap) {
+
+ Map<String, Object> headers = (Map<String, Object>) requestMap.get(OnapCommandHttpConstants.HEADERS);
+ Set<String> headerParamNames = new HashSet<>();
+ if (headers != null) {
+ for (Entry<String, Object> entry : headers.entrySet()) {
+ OnapCommandUtils.parseParameters(String.valueOf(entry.getValue()), headerParamNames);
+ }
+ }
+ return headerParamNames;
+ }
+
+ public static Set<String> validateHttpBody(List<String> errorList, Map<String, Object> requestMap) {
+ Set<String> bodyParamNames = new HashSet<>();
+ Object bodyString = requestMap.get(OnapCommandHttpConstants.BODY);
+ if (bodyString == null) {
+ return bodyParamNames;
+ }
+
+ String body = String.valueOf(bodyString);
+ JSONObject obj = null;
+ try {
+ obj = new ObjectMapper().readValue(body, JSONObject.class);
+ } catch (IOException e1) { // NOSONAR
+ errorList.add(OnapCommandHttpConstants.HTTP_BODY_FAILED_PARSING);
+ }
+ if (obj == null || "".equals(obj.toString())) {
+ errorList.add(OnapCommandHttpConstants.HTTP_BODY_JSON_EMPTY);
+ }
+ OnapCommandUtils.parseParameters(body, bodyParamNames);
+
+ return bodyParamNames;
+ }
+
+ public static Set<String> validateHttpUri(List<String> errorList, Map<String, Object> requestMap) {
+ Set<String> uriParamNames = new HashSet<>();
+ String uri = (String) requestMap.get(OnapCommandHttpConstants.URI);
+ if (uri == null || uri.isEmpty()) {
+ errorList.add(OnapCommandUtils.emptySection(OnapCommandHttpConstants.URI));
+ return uriParamNames;
+ }
+ OnapCommandUtils.parseParameters(uri, uriParamNames);
+ return uriParamNames;
+ }
+
+ public static Set<String> getRequestParams(Map<String, ?> yamlMap) {
+
+ Set<String> set = new HashSet<>();
+
+ @SuppressWarnings("unchecked")
+ List<Map<String, Object>> inputParams = (List<Map<String, Object>>) yamlMap.get(OnapCommandConstants.PARAMETERS);
+
+ if (inputParams != null) {
+ for (Map<String, Object> map : inputParams) {
+ for (Entry<String, Object> entry : map.entrySet()) {
+ Object key = entry.getKey();
+
+ if (OnapCommandConstants.NAME.equals(key)) {
+ set.add(String.valueOf(entry.getValue()));
+ break;
+ }
+ }
+ }
+ }
+
+ return set;
+ }
+
+ /**
+ *
+ * @param authAction login/logout
+ * @return
+ * @throws OnapCommandException
+ */
+ public static OnapCommand findAuthCommand(OnapHttpCommand forCmd, String authAction) throws OnapCommandException {
+ OnapCommand auth = null;
+ try {
+ //mrkanag: fix this to discover the auth command by matching info->product & service
+ auth = OnapCommandRegistrar.getRegistrar().get(
+ forCmd.getInfo().getService() + "-" +
+ forCmd.getService().getAuthType() + "-" + authAction,
+ forCmd.getInfo().getProduct());
+ } catch (OnapCommandNotFound e) {
+ auth = OnapCommandRegistrar.getRegistrar().get(
+ forCmd.getService().getAuthType() + "-" + authAction,
+ forCmd.getInfo().getProduct());
+ }
+
+ return auth;
+ }
+
+
+}
--- /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.http.utils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
+import org.onap.cli.fw.error.OnapCommandParameterNotFound;
+import org.onap.cli.fw.error.OnapCommandResultEmpty;
+import org.onap.cli.fw.error.OnapCommandResultMapProcessingFailed;
+import org.onap.cli.fw.http.connect.HttpInput;
+import org.onap.cli.fw.http.connect.HttpResult;
+import org.onap.cli.fw.http.error.OnapCommandHttpHeaderNotFound;
+import org.onap.cli.fw.http.error.OnapCommandHttpInvalidResponseBody;
+import org.onap.cli.fw.input.OnapCommandParameter;
+import org.onap.cli.fw.input.OnapCommandParameterType;
+import org.onap.cli.fw.utils.OnapCommandUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.jayway.jsonpath.JsonPath;
+
+import net.minidev.json.JSONArray;
+
+public class OnapCommandHttpUtils {
+
+ static Logger LOG = LoggerFactory.getLogger(OnapCommandHttpUtils.class);
+
+ /**
+ * Set argument to param value.
+ *
+ * @param params
+ * map
+ * @param input
+ * HttpInput
+ * @return HttpInput
+ * @throws OnapCommandParameterNotFound
+ * exception
+ * @throws OnapCommandInvalidParameterValue
+ * exception
+ */
+ public static HttpInput populateParameters(Map<String, OnapCommandParameter> params, HttpInput input)
+ throws OnapCommandException {
+ HttpInput inp = new HttpInput();
+ for (OnapCommandParameter param : params.values()) {
+ if (OnapCommandParameterType.BINARY.equals(param.getParameterType())) {
+ inp.setBinaryData(true);
+ break;
+ }
+ }
+ inp.setBody(OnapCommandUtils.replaceLineFromInputParameters(input.getBody(), params));
+ inp.setUri(OnapCommandUtils.replaceLineFromInputParameters(input.getUri(), params));
+ inp.setMethod(input.getMethod().toLowerCase());
+ for (String h : input.getReqHeaders().keySet()) {
+ String value = input.getReqHeaders().get(h);
+ inp.getReqHeaders().put(h, OnapCommandUtils.replaceLineFromInputParameters(value, params));
+ }
+
+ for (String h : input.getReqQueries().keySet()) {
+ String value = input.getReqQueries().get(h);
+ inp.getReqQueries().put(h, OnapCommandUtils.replaceLineFromInputParameters(value, params));
+ }
+
+ return inp;
+ }
+
+ /**
+ * Populate result.
+ *
+ * @param resultMap
+ * map
+ * @param resultHttp
+ * HttpResult
+ * @return map
+ * @throws OnapCommandHttpHeaderNotFound
+ * header not found exception
+ * @throws OnapCommandHttpInvalidResponseBody
+ * invalid response body exception
+ * @throws OnapCommandResultMapProcessingFailed
+ * map processing failed exception
+ */
+ public static Map<String, ArrayList<String>> populateOutputs(Map<String, String> resultMap, HttpResult resultHttp)
+ throws OnapCommandException {
+ Map<String, ArrayList<String>> resultsProcessed = new HashMap<>();
+
+ for (Entry<String, String> entry : resultMap.entrySet()) {
+ String key = entry.getKey();
+ try {
+ resultsProcessed.put(key, OnapCommandHttpUtils.replaceLineFromOutputResults(resultMap.get(key), resultHttp));
+ } catch(OnapCommandResultEmpty e) {
+ // pass // NOSONAR
+ }
+ }
+
+ return resultsProcessed;
+ }
+
+ public static ArrayList<String> replaceLineFromOutputResults(String line, HttpResult resultHttp)
+ throws OnapCommandHttpHeaderNotFound, OnapCommandHttpInvalidResponseBody,
+ OnapCommandResultMapProcessingFailed, OnapCommandResultEmpty {
+ String headerProcessedLine = "";
+
+ ArrayList<String> result = new ArrayList<>();
+ if (!line.contains("$b{") && !line.contains("$h{")) {
+ result.add(line);
+ return result;
+ }
+
+ /**
+ * In case of empty response body [] or {}
+ **/
+ if (resultHttp.getBody().length() <= 2) {
+ return result;
+ }
+
+ /**
+ * Process headers macros : line: $h{abc}-$b{$.[*].xyz} , After processing line will be [abc's
+ * value]-$b{$.[*].xyz}
+ **/
+ int currentIdx = 0;
+ while (currentIdx < line.length()) {
+ int idxS = line.indexOf("$h{", currentIdx);
+ if (idxS == -1) {
+ headerProcessedLine += line.substring(currentIdx);
+ break;
+ }
+ int idxE = line.indexOf("}", idxS);
+ String headerName = line.substring(idxS + 3, idxE);
+ headerName = headerName.trim();
+ if (!resultHttp.getRespHeaders().containsKey(headerName)) {
+ throw new OnapCommandHttpHeaderNotFound(headerName);
+ }
+ String value = resultHttp.getRespHeaders().get(headerName);
+
+ headerProcessedLine += line.substring(currentIdx, idxS) + value;
+ currentIdx = idxE + 1;
+ }
+
+ // Process body jsonpath macros
+ List<Object> values = new ArrayList<>();
+ String bodyProcessedPattern = "";
+ currentIdx = 0;
+ int maxRows = 1; // in normal case, only one row will be there
+ while (currentIdx < headerProcessedLine.length()) {
+ int idxS = headerProcessedLine.indexOf("$b{", currentIdx);
+ if (idxS == -1) {
+ bodyProcessedPattern += headerProcessedLine.substring(currentIdx);
+ break;
+ }
+ int idxE = headerProcessedLine.indexOf("}", idxS);
+ String jsonPath = headerProcessedLine.substring(idxS + 3, idxE);
+ jsonPath = jsonPath.trim();
+ try {
+ // JSONArray or String
+ Object value = JsonPath.read(resultHttp.getBody(), jsonPath);
+ if (value instanceof JSONArray) {
+ JSONArray arr = (JSONArray) value;
+ if (arr.size() > maxRows) {
+ maxRows = arr.size();
+ }
+ }
+ bodyProcessedPattern += headerProcessedLine.substring(currentIdx, idxS) + "%s";
+ values.add(value);
+ currentIdx = idxE + 1;
+ } catch (Exception e) {
+ throw new OnapCommandHttpInvalidResponseBody(jsonPath, e);
+ }
+ }
+
+ if (bodyProcessedPattern.isEmpty()) {
+ result.add(headerProcessedLine);
+ return result;
+ } else {
+ for (int i = 0; i < maxRows; i++) {
+ currentIdx = 0;
+ String bodyProcessedLine = "";
+ int positionalIdx = 0; // %s positional idx
+ while (currentIdx < bodyProcessedPattern.length()) {
+ int idxS = bodyProcessedPattern.indexOf("%s", currentIdx);
+ if (idxS == -1) {
+ bodyProcessedLine += bodyProcessedPattern.substring(currentIdx);
+ break;
+ }
+ int idxE = idxS + 2; // %s
+ try {
+ Object value = values.get(positionalIdx);
+ String valueS = String.valueOf(value);
+ if (value instanceof JSONArray) {
+ JSONArray arr = (JSONArray) value;
+ if (!arr.isEmpty()) {
+ valueS = arr.get(i).toString();
+ } else {
+ throw new OnapCommandResultEmpty();
+ }
+ }
+
+ bodyProcessedLine += bodyProcessedPattern.substring(currentIdx, idxS) + valueS;
+ currentIdx = idxE;
+ positionalIdx++;
+ } catch (OnapCommandResultEmpty e) {
+ throw e;
+ } catch (Exception e) {
+ throw new OnapCommandResultMapProcessingFailed(line, e);
+ }
+ }
+ result.add(bodyProcessedLine);
+ }
+
+ return result;
+ }
+ }
+
+}
+
--- /dev/null
+org.onap.cli.fw.http.cmd.BasicAuthLoginCommand
+org.onap.cli.fw.http.cmd.BasicAuthLogoutCommand
+org.onap.cli.fw.http.cmd.CatalogCommand
+org.onap.cli.fw.http.cmd.OnapHttpCommand
\ No newline at end of file
--- /dev/null
+cli.ignore_auth=false
+cli.http.api_key_use_cookies=true
+
+#schema validation
+#http
+cli.schema.http_sections=request,service,success_codes,result_map,sample_response
+cli.schema.http_mandatory_sections=request, success_codes
+
+cli.schema.http_request_params=uri,method,body,headers,queries,multipart_entity_name
+cli.schema.http_request_mandatory_params=uri,method
+
+cli.schema.service_params_list=name,version,auth,mode
+cli.schema.service_params_mandatory_list=auth,mode
+
+cli.schema.http_methods=post,get,delete,put,head
+
+cli.schema.auth_values=none,basic
+cli.schema.mode_values=direct,catalog
package org.onap.cli.fw.cmd;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
-import org.junit.Ignore;
import org.junit.Test;
import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.http.HttpInput;
+import org.onap.cli.fw.http.cmd.OnapHttpCommand;
+import org.onap.cli.fw.http.connect.HttpInput;
import org.onap.cli.fw.input.OnapCommandParameter;
-import org.onap.cli.fw.input.ParameterType;
+import org.onap.cli.fw.input.OnapCommandParameterType;
public class OnapHttpCommandTest {
- @Ignore
@Test(expected = OnapCommandException.class)
public void runTest() throws OnapCommandException {
OnapCommandParameter param1 = new OnapCommandParameter();
param1.setLongOption("host-username");
param1.setName("host-username");
- param1.setParameterType(ParameterType.STRING);
+ param1.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param2 = new OnapCommandParameter();
param2.setLongOption("host-password");
param2.setName("host-password");
- param2.setParameterType(ParameterType.STRING);
+ param2.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param3 = new OnapCommandParameter();
param3.setLongOption("host-url");
param3.setName("host-url");
- param3.setParameterType(ParameterType.STRING);
+ param3.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param4 = new OnapCommandParameter();
param4.setLongOption("string-param");
param4.setName("string-param");
- param4.setParameterType(ParameterType.STRING);
+ param4.setParameterType(OnapCommandParameterType.STRING);
OnapCommandParameter param5 = new OnapCommandParameter();
param5.setLongOption("long-opt");
param5.setName("long-opt");
- param5.setParameterType(ParameterType.STRING);
+ param5.setParameterType(OnapCommandParameterType.STRING);
- List<OnapCommandParameter> paramslist = new ArrayList<>();
+ Set<OnapCommandParameter> paramslist = new HashSet<>();
paramslist.add(param1);
paramslist.add(param2);
paramslist.add(param3);
import java.util.HashMap;
import org.junit.Test;
+import org.onap.cli.fw.http.connect.HttpInput;
+import org.onap.cli.fw.http.connect.HttpResult;
public class HttpInputOutputTest {
import org.apache.http.protocol.HttpContext;
import org.junit.Before;
import org.junit.Test;
-import org.onap.cli.fw.error.OnapCommandHttpFailure;
+import org.onap.cli.fw.http.connect.HttpInput;
+import org.onap.cli.fw.http.connect.HttpResult;
+import org.onap.cli.fw.http.connect.OnapHttpConnection;
+import org.onap.cli.fw.http.error.OnapCommandHttpFailure;
import mockit.Invocation;
import mockit.Mock;
* limitations under the License.
*/
-package org.onap.cli.fw.ad;
+package org.onap.cli.fw.http.auth;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
-import org.onap.cli.fw.cmd.OnapHttpCommand;
-import org.onap.cli.fw.conf.Constants;
-import org.onap.cli.fw.conf.OnapCommandConfg;
+import org.onap.cli.fw.conf.OnapCommandConfig;
+import org.onap.cli.fw.conf.OnapCommandConstants;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandProductVersionInvalid;
+import org.onap.cli.fw.http.cmd.OnapHttpCommand;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
public class OnapAuthClientCommandBasedTest {
@Before
public void setup() throws OnapCommandProductVersionInvalid, OnapCommandException {
- OnapCommandRegistrar.getRegistrar().setEnabledProductVersion(OnapCommandConfg.getProductName());
- }
-
- @Test
- public void internalCommandTest() {
- try {
- OnapCommand cmd = OnapCommandRegistrar.getRegistrar().get("sample-test");
- cmd.getInfo().setService(OnapCommandConfg.getProductName());
-
- cmd.execute();
- } catch (OnapCommandException e) {
- fail("Internal command failed to run");
- e.printStackTrace(System.out);
- }
+ OnapCommandRegistrar.getRegistrar().setEnabledProductVersion(OnapCommandConfig.getPropertyValue(OnapCommandConstants.OPEN_CLI_PRODUCT_NAME));
}
@Test
public void yesCatalogYesAuthTest() throws OnapCommandException {
try {
OnapHttpCommand cmd = getCommand("sample-test-schema-yes-auth-yes-catalog.yaml");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_USERNAME).setValue("test");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_PASSWORD).setValue("password");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_USERNAME).setValue("test");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_PASSWORD).setValue("password");
cmd.execute();
} catch (OnapCommandException e) {
public void yesCatalogNoAuthTest() throws OnapCommandException {
try {
OnapHttpCommand cmd = getCommand("sample-test-schema-no-auth-yes-catalog.yaml");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
cmd.execute();
} catch (OnapCommandException e) {
public void noCatalogYesAuthTest() throws OnapCommandException {
try {
OnapHttpCommand cmd = getCommand("sample-test-schema-yes-auth-no-catalog.yaml");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_USERNAME).setValue("test");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_PASSWORD).setValue("password");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_USERNAME).setValue("test");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_PASSWORD).setValue("password");
cmd.execute();
} catch (OnapCommandException e) {
public void noCatalogNoAuthTest() throws OnapCommandException {
try {
OnapHttpCommand cmd = getCommand("sample-test-schema-no-auth-no-catalog.yaml");
- cmd.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
+ cmd.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_HOST_URL).setValue("http://localhost:8080");
cmd.execute();
} catch (OnapCommandException e) {
protected void processRequest() throws OnapCommandException {
if (!this.getService().isModeDirect()) {
String url = this.authClient.getServiceUrl();
- assert url.equals(this.getParametersMap().get(Constants.DEAFULT_PARAMETER_HOST_URL).getValue() + "/");
+ assert url.equals(this.getParametersMap().get(OnapCommandHttpConstants.DEAFULT_PARAMETER_HOST_URL).getValue() + "/");
}
}
};
* limitations under the License.
*/
-package org.onap.cli.fw.ad;
+package org.onap.cli.fw.http.auth;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
-import org.onap.cli.fw.conf.Constants;
+import org.onap.cli.fw.http.conf.OnapCommandHttpConstants;
public class OnapServiceTest {
@Test
public void serviceTest() {
- OnapService ser = new OnapService();
+ OnapCommandHttpService ser = new OnapCommandHttpService();
ser.setName("name");
ser.setVersion("1.0");
ser.setBasePath("basePath");
- ser.setAuthType(Constants.AUTH_NONE);
+ ser.setAuthType(OnapCommandHttpConstants.AUTH_NONE);
assertTrue(ser.getName().equals("name") && ser.getVersion().equals("1.0")
&& ser.getBasePath().equals("basePath") && ser.isNoAuth());
--- /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.http.error;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.cli.fw.error.OnapCommandResultMapProcessingFailed;
+
+public class OnapCommandErrorTest {
+ @Test
+ public void oclipCommandResultMapProcessingFailedTest() {
+ OnapCommandResultMapProcessingFailed failed = new OnapCommandResultMapProcessingFailed("name",
+ new Exception("failed"));
+ assertEquals("0x3002::Failed to parse the result format of command name, failed", failed.getMessage());
+ }
+
+ @Test
+ public void oclipCommandHttpHeaderNotFoundTest() {
+ OnapCommandHttpHeaderNotFound failed = new OnapCommandHttpHeaderNotFound("name");
+ assertEquals("0x3003::Http header name is not returned from the service", failed.getMessage());
+ }
+
+ @Test
+ public void oclipCommandHttpFailureTest1() {
+ OnapCommandHttpFailure failed = new OnapCommandHttpFailure("Failed");
+ assertEquals("0x3001::Failed", failed.getMessage());
+
+ failed = new OnapCommandHttpFailure(new Exception("failed"), 201);
+ assertEquals("201::0x3001::failed", failed.getMessage());
+ }
+
+ @Test
+ public void oclipCommandHttpFailureTest2() {
+ OnapCommandHttpFailure failed = new OnapCommandHttpFailure("Failed", 203);
+
+ assertEquals("203::0x3001::Failed", failed.getMessage());
+ }
+
+ @Test
+ public void oclipCommandLoginFailedTest1() {
+ OnapCommandLoginFailed failed = new OnapCommandLoginFailed(new Exception("Failed"));
+
+ assertEquals("0x4001::Login failed, Failed", failed.getMessage());
+ }
+
+ @Test
+ public void oclipCommandLoginFailedTest2() {
+ OnapCommandLoginFailed failed = new OnapCommandLoginFailed("Failed", 201);
+
+ assertEquals("201::0x4001::Login failed, Failed", failed.getMessage());
+ }
+
+ @Test
+ public void oclipCommandLogoutFailedTest() {
+ OnapCommandLogoutFailed failed = new OnapCommandLogoutFailed(new Exception("Failed"));
+ assertEquals("0x4002::Logout failed, Failed", failed.getMessage());
+
+ failed = new OnapCommandLogoutFailed(200);
+ assertEquals("200::0x4002::Logout failed", failed.getMessage());
+ }
+
+ @Test
+ public void oclipCommandServiceNotFoundTest() {
+ OnapCommandServiceNotFound failed = new OnapCommandServiceNotFound("Service");
+
+ assertEquals("0xd001::Service Service is not found in MSB", failed.getMessage());
+ }
+
+}
* limitations under the License.
*/
-package org.onap.cli.fw.utils;
+package org.onap.cli.fw.http.schema;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.cli.fw.OnapCommand;
-import org.onap.cli.fw.OnapCommandRegistrar;
-import org.onap.cli.fw.error.OnapCommandException;
-
-
-public class OpenCommandRegistrarTest {
+import static org.junit.Assert.assertTrue;
- @Before
- public void setUp() throws Exception {
+import java.util.List;
- }
+import org.junit.Test;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
+public class ValidateSchemaTest {
@Test
- public void test() throws OnapCommandException {
- OnapCommandRegistrar registrar = OnapCommandRegistrar.getRegistrar();
- OnapCommand cmd = registrar.get("sample-test");
- cmd.printVersion();
- registrar.listCommands();
+ public void validateTest() throws OnapCommandException {
+
+ OnapCommand cmd1 = new OnapCommand() {
+ @Override
+ protected void run() throws OnapCommandException {}
+ };
+ List<String> errorList1 = OnapCommandSchemaLoader.loadSchema(cmd1, "schema-validate-http.yaml", true, true);
+ assertTrue(errorList1.size() > 0);
}
-
}
--- /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.http.utils;
+
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+import org.onap.cli.fw.cmd.OnapCommand;
+import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.error.OnapCommandInvalidParameterType;
+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.OnapCommandParameterNameConflict;
+import org.onap.cli.fw.error.OnapCommandParameterOptionConflict;
+import org.onap.cli.fw.error.OnapCommandSchemaNotFound;
+import org.onap.cli.fw.http.cmd.OnapHttpCommand;
+import org.onap.cli.fw.http.connect.HttpResult;
+import org.onap.cli.fw.http.error.OnapCommandHttpHeaderNotFound;
+import org.onap.cli.fw.http.error.OnapCommandHttpInvalidResponseBody;
+import org.onap.cli.fw.http.schema.OnapCommandSchemaHttpLoader;
+import org.onap.cli.fw.input.OnapCommandParameter;
+import org.onap.cli.fw.schema.OnapCommandSchema;
+import org.onap.cli.fw.schema.OnapCommandSchemaLoader;
+import org.onap.cli.fw.utils.OnapCommandUtils;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class OnapCommandUtilsTest {
+
+ @Test(expected = OnapCommandInvalidSchema.class)
+ public void oclipCommandUtilsInputStreamNullTest() throws OnapCommandException {
+ OnapCommandSchemaLoader.validateSchemaVersion("sample-test1-schema-http1.yaml", "1.0");
+ }
+
+ @Test
+ public void oclipCommandUtilsInputStreamNotNullTest() throws OnapCommandException {
+ Map<String, ?> map = OnapCommandSchemaLoader.validateSchemaVersion("sample-test1-schema-http.yaml", "1.0");
+ assertTrue(map != null);
+ }
+
+ @Test
+ public void loadHttpBasedSchemaTest() throws OnapCommandException {
+ OnapHttpCommand cmd = new OnapHttpCommandSample();
+ cmd.setName("sample-create-http");
+ try {
+ OnapCommandSchemaHttpLoader.loadHttpSchema(cmd, "sample-test-schema-http.yaml", true, true);
+ assertTrue(cmd.getSuccessStatusCodes().size() == 2);
+ } catch (OnapCommandParameterNameConflict | OnapCommandParameterOptionConflict
+ | OnapCommandInvalidParameterType | OnapCommandInvalidPrintDirection
+ | OnapCommandInvalidResultAttributeScope | OnapCommandSchemaNotFound | OnapCommandInvalidSchema
+ | OnapCommandInvalidSchemaVersion e) {
+ fail("Test should not have thrown this exception : " + e.getMessage());
+ }
+ }
+
+
+ @Test
+ public void loadOnapCommandSchemaAuthRequiredTest() throws OnapCommandException {
+ OnapCommand cmd = new OnapCommand() {
+
+ @Override
+ protected void run() throws OnapCommandException {
+ // TODO Auto-generated method stub
+
+ }
+ };
+ 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(expected = OnapCommandHttpHeaderNotFound.class)
+ public void populateOutputsTest() throws OnapCommandException {
+ HttpResult output = new HttpResult();
+ output.setBody(
+ "{\"serviceName\":\"test\",\"version\":\"v1\",\"url\":\"/api/test/v1\",\"protocol\":\"REST\",\"visualRange\":\"1\",\"lb_policy\":\"hash\",\"nodes\":[{\"ip\":\"127.0.0.1\",\"port\":\"8012\",\"ttl\":0,\"nodeId\":\"test_127.0.0.1_8012\",\"expiration\":\"2017-02-10T05:33:25Z\",\"created_at\":\"2017-02-10T05:33:25Z\",\"updated_at\":\"2017-02-10T05:33:25Z\"}],\"status\":\"1\"}");
+ Map<String, String> mapHead = new HashMap<>();
+ mapHead.put("head1", "value1");
+ output.setRespHeaders(mapHead);
+ output.setStatus(0);
+
+ Map<String, String> params = new HashMap<>();
+ params.put("head", "$h{head1}");
+ params.put("body", "$b{$.serviceName}");
+ params.put("key", "value");
+
+ Map<String, ArrayList<String>> input1 = OnapCommandHttpUtils.populateOutputs(params, output);
+ assertEquals("{head=[value1], body=[test], key=[value]}", input1.toString());
+
+ params.put("body", "$b{{$.serviceName}");
+ try {
+ input1 = OnapCommandHttpUtils.populateOutputs(params, output);
+ } catch (OnapCommandHttpInvalidResponseBody e) {
+ assertEquals(
+ "0x3004::Http response body does not have json entry {$.serviceName, Missing property in path $['{$']",
+ e.getMessage());
+ }
+ output.setBody("{}");
+ input1 = OnapCommandHttpUtils.populateOutputs(params, output);
+ params.put("head", "$h{head2}");
+ output.setBody("{\"test\"}");
+ input1 = OnapCommandHttpUtils.populateOutputs(params, output);
+ }
+
+ @OnapCommandSchema(schema = "sample-test-schema-http.yaml")
+ class OnapHttpCommandSample extends OnapHttpCommand {
+
+ @Override
+ protected void run() throws OnapCommandException {
+ }
+ }
+}
--- /dev/null
+cli.product_name=open-cli
+cli.version=1.0
+
+cli.discover_always=false
+
+#schema validation
+cli.schema.top_level_params_list=open_cli_schema_version,name,description,parameters,results,http,info
+cli.schema.top_level_mandatory_list=open_cli_schema_version
+
+cli.schema.info_params_list=product,service,type,author,ignore
+cli.schema.info_params_mandatory_list=product,service
+
+cli.schema.input_params_list=name,description,type,short_option,long_option, is_optional,default_value,is_secured,is_include
+cli.schema.input_params_mandatory_list=name,description,type
+
+cli.schema.result_params_list=name,description,scope,type,is_secured, default_value
+cli.schema.result_params_mandatory_list=name, description, type, scope
+
+cli.schema.boolean_values=true,false
+cli.command.type=cmd,auth,catalog
+
+# moco properties
+cli.sample.gen.enable=false
+cli.sample.gen.target=.
+
+# mrkanag Move this to db, once exteranl command registration is supported in place of discovery
+cli.schema.type.supported=http
+
+#other properties to load (it should be hanled when plugins are made as externally register-able
+#when command plugin management support is enabled in oclip
+cli.plugins-prps=open-cli-http.properties
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.cli</groupId>
+ <artifactId>cli</artifactId>
+ <version>2.0.0</version>
+ </parent>
+
+ <artifactId>cli-profiles</artifactId>
+ <name>cli/profiles</name>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>http</module>
+ </modules>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.cli</groupId>
+ <artifactId>cli-framework</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-artifact</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>${project.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <type>${project.packaging}</type>
+ </artifactItem>
+ </artifactItems>
+ <!-- copy to profiles dependencies -->
+ <outputDirectory>../../profiles/target/lib</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>../../profiles/target/lib</outputDirectory>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>false</overWriteSnapshots>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ <excludeArtifactIds>junit,jmockit</excludeArtifactIds>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-sample</artifactId>
+ <artifactId>cli-products-sample</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-catalog</artifactId>
+ <artifactId>cli-products-onap-amsterdam-catalog</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-auth</artifactId>
+ <artifactId>cli-products-onap-amsterdam-auth</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features-so</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features-so</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features-sdc</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features-sdc</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features-msb</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features-msb</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.cli</groupId>
- <artifactId>cli-plugins-onap-amsterdam-features-aai</artifactId>
+ <artifactId>cli-products-onap-amsterdam-features-aai</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
import java.util.Map;
import java.util.stream.Stream;
-import org.onap.cli.fw.OnapCommandRegistrar;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandInvalidSample;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
import org.onap.cli.fw.utils.OnapCommandDiscoveryUtils;
import org.onap.cli.main.OnapCli;
import org.slf4j.Logger;
import org.apache.commons.io.FileUtils;
import org.junit.Ignore;
import org.junit.Test;
-import org.onap.cli.fw.OnapCommandRegistrar;
import org.onap.cli.fw.error.OnapCommandException;
-import org.onap.cli.fw.utils.SchemaInfo;
+import org.onap.cli.fw.registrar.OnapCommandRegistrar;
+import org.onap.cli.fw.schema.OnapCommandSchemaInfo;
import org.onap.cli.main.OnapCli;
import org.onap.cli.moco.OnapCommandHttpMocoServer;
import org.onap.cli.moco.OnapCommandSample;
OnapCommandRegistrar.getRegistrar().setEnabledProductVersion(version);
System.out.println(version);
System.out.println("==========================\n\n");
- for (SchemaInfo sch : OnapCommandRegistrar.getRegistrar().listCommandInfo()) {
+ for (OnapCommandSchemaInfo sch : OnapCommandRegistrar.getRegistrar().listCommandInfo()) {
if (sch.isIgnore()) {
continue;
}
System.out.println(version);
System.out.println("==========================\n\n");
int i = 1;
- for (SchemaInfo sch : OnapCommandRegistrar.getRegistrar().listCommandInfo()) {
+ for (OnapCommandSchemaInfo sch : OnapCommandRegistrar.getRegistrar().listCommandInfo()) {
if (sch.isIgnore()) {
continue;
}
--- /dev/null
+cli.product_name=open-cli
+cli.version=1.0
+
+cli.discover_always=false
+
+#schema validation
+cli.schema.top_level_params_list=open_cli_schema_version,name,description,parameters,results,http,info
+cli.schema.top_level_mandatory_list=open_cli_schema_version
+
+cli.schema.info_params_list=product,service,type,author,ignore
+cli.schema.info_params_mandatory_list=product,service
+
+cli.schema.input_params_list=name,description,type,short_option,long_option, is_optional,default_value,is_secured,is_include
+cli.schema.input_params_mandatory_list=name,description,type
+
+cli.schema.result_params_list=name,description,scope,type,is_secured, default_value
+cli.schema.result_params_mandatory_list=name, description, type, scope
+
+cli.schema.boolean_values=true,false
+cli.command.type=cmd,auth,catalog
+
+# moco properties
+cli.sample.gen.enable=false
+cli.sample.gen.target=.
+
+# mrkanag Move this to db, once exteranl command registration is supported in place of discovery
+cli.schema.type.supported=http
+
+#other properties to load (it should be hanled when plugins are made as externally register-able
+#when command plugin management support is enabled in oclip
+cli.plugins-prps=open-cli-http.properties
\ No newline at end of file