X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=framework%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcli%2Ffw%2Fcmd%2FOnapCommand.java;h=dbd246305a2fe5f4b6b5927b2822cef2ba3bd396;hb=refs%2Fchanges%2F38%2F79338%2F1;hp=8db3ab792e752ab6ed3c2ac12273dfbe825638a7;hpb=8c79df8d4835e2cded87f60d78e5bf05e3cd6b16;p=cli.git diff --git a/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java b/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java index 8db3ab79..dbd24630 100644 --- a/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java +++ b/framework/src/main/java/org/onap/cli/fw/cmd/OnapCommand.java @@ -17,6 +17,7 @@ package org.onap.cli.fw.cmd; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -28,24 +29,31 @@ import org.onap.cli.fw.error.OnapCommandHelpFailed; import org.onap.cli.fw.error.OnapCommandNotInitialized; import org.onap.cli.fw.info.OnapCommandInfo; import org.onap.cli.fw.input.OnapCommandParameter; +import org.onap.cli.fw.input.OnapCommandParameterType; 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.OnapCommandResultType; +import org.onap.cli.fw.schema.OnapCommandSchemaInfo; import org.onap.cli.fw.schema.OnapCommandSchemaLoader; import org.onap.cli.fw.schema.OnapCommandSchemaMerger; +import org.onap.cli.fw.store.OnapCommandArtifactStore; +import org.onap.cli.fw.store.OnapCommandArtifactStore.Artifact; import org.onap.cli.fw.utils.OnapCommandHelperUtils; import org.onap.cli.fw.utils.OnapCommandUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * Oclip Command. * */ public abstract class OnapCommand { - private static Logger LOG = LoggerFactory.getLogger(OnapCommand.class); + private static Logger log = LoggerFactory.getLogger(OnapCommand.class); private String cmdDescription; @@ -63,11 +71,21 @@ public abstract class OnapCommand { protected boolean isInitialzied = false; + private boolean isRpc = false; + + public boolean isRpc() { + return isRpc; + } + + public void setRpc(boolean isRpc) { + this.isRpc = isRpc; + } + protected OnapCommand() { this.addDefaultSchemas(OnapCommandConstants.DEFAULT_PARAMETER_FILE_NAME); } - public List getSchemas() throws OnapCommandException { + public List getSchemas() { List schemas = new ArrayList<>(); schemas.addAll(this.defaultSchemas); schemas.add(this.getSchemaName()); @@ -138,6 +156,33 @@ public abstract class OnapCommand { return this.defaultSchemas; } + public List getArgs() { + List args = new ArrayList<>(); + for (OnapCommandParameter param: this.getParameters()) { + args.add(OnapCommandParameter.printLongOption(param.getName())); + args.add(param.getValue().toString()); + } + + return args; + } + + public String getArgsJson(boolean ignoreDefaults) { + Map args = new HashMap<>(); + + for (OnapCommandParameter param: this.getParameters()) { + if (ignoreDefaults && param.isDefaultParam()) + continue; + + args.put(param.getName(), param.getValue().toString()); + } + + try { + return new ObjectMapper().writeValueAsString(args); + } catch (JsonProcessingException e) { + return "{}"; + } + } + /** * Initialize this command from command schema and assumes schema is already validated. * @@ -149,6 +194,9 @@ public abstract class OnapCommand { return this.initializeSchema(schema, false); } + public List initializeSchema(OnapCommandSchemaInfo schema) throws OnapCommandException { + return this.initializeSchema(schema.getSchemaName(), false); + } public List initializeSchema(String schema, boolean validate) throws OnapCommandException { this.setSchemaName(schema); @@ -178,6 +226,13 @@ public abstract class OnapCommand { } } + protected void preRun() throws OnapCommandException { + log.debug(this.getName() + " PRE-RUN"); + } + + protected void postRun() throws OnapCommandException { + log.debug(this.getName() + " POST-RUN"); + } /** * Oclip command execute with given parameters on service. Before calling this method, its mandatory to set all * parameters value. @@ -190,42 +245,55 @@ public abstract class OnapCommand { throw new OnapCommandNotInitialized(this.getClass().getName()); } - LOG.info("CMD: " + this.getName()); + log.info("CMD: " + this.getName()); Map paramMap = this.getParametersMap(); - LOG.info("INPUT: " + paramMap); + log.info("INPUT: " + paramMap); // -h or --help is always higher precedence !, user can set this value to get help message - if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_HELP).getValue())) { + if ((Boolean)(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_HELP).getValue())) { this.cmdResult.setType(OnapCommandResultType.TEXT); this.cmdResult.setOutput(this.printHelp()); return this.cmdResult; } // -v or --version is next higher precedence !, user can set this value to get help message - if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_VERSION).getValue())) { + if ((Boolean)(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_VERSION).getValue())) { this.cmdResult.setType(OnapCommandResultType.TEXT); this.cmdResult.setOutput(this.printVersion()); return this.cmdResult; } + //set the artifact content path. + for (OnapCommandParameter param: this.getParameters()) { + if (!param.getParameterType().equals(OnapCommandParameterType.BINARY)) + continue; + + if (param.getValue().toString().matches("artifact://*:*")) { + String categoryAndName = param.getValue().toString().replaceFirst("artifact://", ""); + String[] categoryAndNameTokens = categoryAndName.split(":"); + Artifact a = OnapCommandArtifactStore.getStore().getArtifact(categoryAndNameTokens[1], categoryAndNameTokens[0]); + param.setValue(a.getPath()); + } + } + // validate this.validate(); // -f or --format this.cmdResult.setType( 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())) { + if ((Boolean)(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_ATTR_LONG).getValue())) { this.cmdResult.setScope(OnapCommandResultAttributeScope.LONG); } // --no-title - if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE).getValue())) { + if ((Boolean)paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_OUTPUT_NO_TITLE).getValue()) { this.cmdResult.setIncludeTitle(false); } // --debug - if (OnapCommandConstants.BOOLEAN_TRUE.equals(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_DEBUG).getValue())) { + if ((Boolean)(paramMap.get(OnapCommandConstants.DEFAULT_PARAMETER_DEBUG).getValue())) { this.cmdResult.setDebug(true); } @@ -238,10 +306,13 @@ public abstract class OnapCommand { } } + preRun(); + this.run(); - LOG.info("OUTPUT: " + this.cmdResult.getRecords()); + log.info("OUTPUT: " + this.cmdResult.getRecords()); + postRun(); return this.cmdResult; } @@ -270,6 +341,5 @@ public abstract class OnapCommand { public String printHelp() throws OnapCommandHelpFailed { return OnapCommandHelperUtils.help(this); } - // (mrkanag) Add toString for all command, parameter, result, etc objects in JSON format }