From 1a4b4030e10b53ffc80d977908cd6097d843f7a8 Mon Sep 17 00:00:00 2001 From: Kanagaraj Manickam k00365106 Date: Mon, 18 Sep 2017 10:07:17 +0530 Subject: Add exception for profile persist layer CLI-43 Change-Id: I6b2b969cc3a56dbee60d2b9056a6a7f8f793a8b4 Signed-off-by: Kanagaraj Manickam k00365106 --- .../cli/fw/error/OnapCommandLoadProfileFailed.java | 33 ++++++++++++++++++++++ .../fw/error/OnapCommandPersistProfileFailed.java | 33 ++++++++++++++++++++++ .../fw/input/cache/OnapCommandParameterCache.java | 18 ++++++++++-- .../org/onap/cli/fw/utils/OnapCommandUtils.java | 14 +++++---- .../org/onap/cli/fw/OnapCommandRegistrarTest.java | 15 ++++++++-- .../onap/cli/fw/error/OnapCommandErrorTest.java | 15 ++++++++++ main/src/main/java/org/onap/cli/main/OnapCli.java | 2 +- .../org/onap/cli/main/utils/OnapCliUtilsTest.java | 31 ++++++++++++++++++++ main/src/test/resources/sample-test-schema.yaml | 6 ++++ 9 files changed, 155 insertions(+), 12 deletions(-) create mode 100644 framework/src/main/java/org/onap/cli/fw/error/OnapCommandLoadProfileFailed.java create mode 100644 framework/src/main/java/org/onap/cli/fw/error/OnapCommandPersistProfileFailed.java diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandLoadProfileFailed.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandLoadProfileFailed.java new file mode 100644 index 00000000..62fd84fa --- /dev/null +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandLoadProfileFailed.java @@ -0,0 +1,33 @@ +/* + * Copyright 2017 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.cli.fw.error; + +/** + * Command profile persistence failed. + * + */ +public class OnapCommandLoadProfileFailed extends OnapCommandException { + + private static final long serialVersionUID = 8580121615330415123L; + + /** + * Command result empty. + */ + public OnapCommandLoadProfileFailed(String error) { + super("0x1301", "Failed to load profile details, " + error); + } +} diff --git a/framework/src/main/java/org/onap/cli/fw/error/OnapCommandPersistProfileFailed.java b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandPersistProfileFailed.java new file mode 100644 index 00000000..f49e35c6 --- /dev/null +++ b/framework/src/main/java/org/onap/cli/fw/error/OnapCommandPersistProfileFailed.java @@ -0,0 +1,33 @@ +/* + * Copyright 2017 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.cli.fw.error; + +/** + * Command profile persistence failed. + * + */ +public class OnapCommandPersistProfileFailed extends OnapCommandException { + + private static final long serialVersionUID = 8580121615330415123L; + + /** + * Command result empty. + */ + public OnapCommandPersistProfileFailed(String error) { + super("0x1302", "Failed to persist profile details, " + error); + } +} diff --git a/framework/src/main/java/org/onap/cli/fw/input/cache/OnapCommandParameterCache.java b/framework/src/main/java/org/onap/cli/fw/input/cache/OnapCommandParameterCache.java index 6ce09179..6f043665 100644 --- a/framework/src/main/java/org/onap/cli/fw/input/cache/OnapCommandParameterCache.java +++ b/framework/src/main/java/org/onap/cli/fw/input/cache/OnapCommandParameterCache.java @@ -22,6 +22,8 @@ import java.util.List; import java.util.Map; import org.onap.cli.fw.conf.Constants; +import org.onap.cli.fw.error.OnapCommandLoadProfileFailed; +import org.onap.cli.fw.error.OnapCommandPersistProfileFailed; import org.onap.cli.fw.utils.OnapCommandUtils; public class OnapCommandParameterCache { @@ -32,6 +34,8 @@ public class OnapCommandParameterCache { private String profileName = Constants.PARAM_CACHE_FILE_NAME; + private boolean isLastPersistFailed = false; + private OnapCommandParameterCache() { } @@ -77,6 +81,7 @@ public class OnapCommandParameterCache { private void persist() { List params = new ArrayList<>(); + for (String p: this.paramCache.keySet()) { for (String name: this.paramCache.get(p).keySet()) { @@ -89,11 +94,20 @@ public class OnapCommandParameterCache { } } - OnapCommandUtils.persistParams(params, this.profileName); + try { + OnapCommandUtils.persistParams(params, this.profileName); + } catch (OnapCommandPersistProfileFailed e) { + isLastPersistFailed = true; + } } private void load() { - List params = OnapCommandUtils.loadParamFromCache(this.profileName); + List params; + try { + params = OnapCommandUtils.loadParamFromCache(this.profileName); + } catch (OnapCommandLoadProfileFailed e) { + params = new ArrayList<>(); + } for (Param p : params) { this.add(p.getProduct(), p.getName(), p.getValue()); diff --git a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java index 4cde5088..639e9636 100644 --- a/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java +++ b/framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java @@ -23,6 +23,8 @@ import static org.onap.cli.fw.conf.Constants.AUTH_VALUES; import static org.onap.cli.fw.conf.Constants.BODY; import static org.onap.cli.fw.conf.Constants.BOOLEAN_VALUE; import static org.onap.cli.fw.conf.Constants.CLIENT; +import static org.onap.cli.fw.conf.Constants.DATA_DIRECTORY; +import static org.onap.cli.fw.conf.Constants.DATA_DIRECTORY_JSON_PATTERN; import static org.onap.cli.fw.conf.Constants.DEAFULT_PARAMETER_HOST_URL; import static org.onap.cli.fw.conf.Constants.DEAFULT_PARAMETER_PASS_WORD; import static org.onap.cli.fw.conf.Constants.DEAFULT_PARAMETER_USERNAME; @@ -36,8 +38,6 @@ import static org.onap.cli.fw.conf.Constants.DIRECTION; import static org.onap.cli.fw.conf.Constants.ENTITY; import static org.onap.cli.fw.conf.Constants.EXCEPTION; import static org.onap.cli.fw.conf.Constants.EXECUTOR; -import static org.onap.cli.fw.conf.Constants.DATA_DIRECTORY; -import static org.onap.cli.fw.conf.Constants.DATA_DIRECTORY_JSON_PATTERN; import static org.onap.cli.fw.conf.Constants.EXTERNAL_DISCOVERY_FILE; import static org.onap.cli.fw.conf.Constants.EXTERNAL_SCHEMA_DIRECTORY; import static org.onap.cli.fw.conf.Constants.EXTERNAL_SCHEMA_PATH_PATERN; @@ -125,9 +125,11 @@ import org.onap.cli.fw.error.OnapCommandInvalidPrintDirection; import org.onap.cli.fw.error.OnapCommandInvalidResultAttributeScope; import org.onap.cli.fw.error.OnapCommandInvalidSchema; import org.onap.cli.fw.error.OnapCommandInvalidSchemaVersion; +import org.onap.cli.fw.error.OnapCommandLoadProfileFailed; import org.onap.cli.fw.error.OnapCommandParameterNameConflict; import org.onap.cli.fw.error.OnapCommandParameterNotFound; import org.onap.cli.fw.error.OnapCommandParameterOptionConflict; +import org.onap.cli.fw.error.OnapCommandPersistProfileFailed; import org.onap.cli.fw.error.OnapCommandResultEmpty; import org.onap.cli.fw.error.OnapCommandResultMapProcessingFailed; import org.onap.cli.fw.error.OnapCommandSchemaNotFound; @@ -1626,7 +1628,7 @@ public class OnapCommandUtils { } } - public static void persistParams(List params, String profileName) { + public static void persistParams(List params, String profileName) throws OnapCommandPersistProfileFailed { if (params != null) { try { Resource[] resources = getExternalResources(DATA_DIRECTORY); @@ -1637,7 +1639,7 @@ public class OnapCommandUtils { mapper.writerWithDefaultPrettyPrinter().writeValue(file, params); } } catch (IOException e1) { - // pass // NOSONAR + throw new OnapCommandPersistProfileFailed(e1.getMessage()); } } } @@ -1700,7 +1702,7 @@ public class OnapCommandUtils { return schemas; } - public static List loadParamFromCache(String profileName) { + public static List loadParamFromCache(String profileName) throws OnapCommandLoadProfileFailed { List params = new ArrayList<>(); try { @@ -1713,7 +1715,7 @@ public class OnapCommandUtils { params.addAll(Arrays.asList(list)); } } catch (IOException e) { - // pass // NOSONAR + throw new OnapCommandLoadProfileFailed(e.getMessage()); } return params; diff --git a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java index ecbbf972..d123a875 100644 --- a/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java +++ b/framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java @@ -141,15 +141,24 @@ public class OnapCommandRegistrarTest { } @Test - public void testParamCache() throws OnapCommandException { + public void testCoverageScope() throws OnapCommandException { + OnapCommandRegistrar.getRegistrar().setProfile("test"); OnapCommandRegistrar.getRegistrar().addParamCache("a", "b"); OnapCommandRegistrar.getRegistrar().getParamCache(); - OnapCommandRegistrar.getRegistrar().getAvailableProductVersions(); + OnapCommandRegistrar.getRegistrar().removeParamCache("a"); + OnapCommandRegistrar.getRegistrar().setDevMode(true); OnapCommandRegistrar.getRegistrar().isDevMode(); + OnapCommandRegistrar.getRegistrar().isInteractiveMode(); - OnapCommandRegistrar.getRegistrar().getEnabledProductVersion(); + OnapCommandRegistrar.getRegistrar().setInteractiveMode(false); + OnapCommandRegistrar.getRegistrar().setEnabledProductVersion("cli-1.0"); + OnapCommandRegistrar.getRegistrar().getEnabledProductVersion(); + OnapCommandRegistrar.getRegistrar().getAvailableProductVersions(); + OnapCommandRegistrar.getRegistrar().listCommandsForEnabledProductVersion(); + + OnapCommandRegistrar.getRegistrar().listCommandInfo(); } } diff --git a/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java b/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java index 20402b0d..dd42cdc5 100644 --- a/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java +++ b/framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java @@ -269,4 +269,19 @@ public class OnapCommandErrorTest { assertEquals("0x0013::Command does not support the output format Format", failed.getMessage()); } + + @Test + public void onapProfilePersistTest() { + OnapCommandPersistProfileFailed failed = new OnapCommandPersistProfileFailed("error"); + + assertEquals("0x1302::Failed to persist profile details, error", failed.getMessage()); + } + + + @Test + public void onapProfileLoadTest() { + OnapCommandLoadProfileFailed failed = new OnapCommandLoadProfileFailed("error"); + + assertEquals("0x1301::Failed to load profile details, error", failed.getMessage()); + } } diff --git a/main/src/main/java/org/onap/cli/main/OnapCli.java b/main/src/main/java/org/onap/cli/main/OnapCli.java index 57e39f20..e33e54ac 100644 --- a/main/src/main/java/org/onap/cli/main/OnapCli.java +++ b/main/src/main/java/org/onap/cli/main/OnapCli.java @@ -74,7 +74,7 @@ public class OnapCli { throwable.printStackTrace(); // NOSONAR } } catch (OnapCommandException e) { - // pass // NOSONAR + this.print(e.getCause()); } } diff --git a/main/src/test/java/org/onap/cli/main/utils/OnapCliUtilsTest.java b/main/src/test/java/org/onap/cli/main/utils/OnapCliUtilsTest.java index 8870029b..622cea5f 100644 --- a/main/src/test/java/org/onap/cli/main/utils/OnapCliUtilsTest.java +++ b/main/src/test/java/org/onap/cli/main/utils/OnapCliUtilsTest.java @@ -118,6 +118,37 @@ public class OnapCliUtilsTest { Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue()); } + @Test + public void testTextparamslong() throws OnapCommandException { + OnapCommandParameter boolparam = new OnapCommandParameter(); + boolparam.setLongOption("text-param"); + boolparam.setName("text-param"); + List paramslist = new ArrayList<>(); + paramslist.add(boolparam); + String[] args = new String[] { "sample-create", "--text-param" , "text"}; + + boolparam.setParameterType(ParameterType.TEXT); + OnapCliUtils.populateParams(paramslist, Arrays.asList(args)); + List expectedList = Arrays.asList(args); + Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue()); + + } + + @Test + public void testTextparamsshort() throws OnapCommandException { + OnapCommandParameter boolparam = new OnapCommandParameter(); + boolparam.setShortOption("e"); + boolparam.setName("text-param"); + List paramslist = new ArrayList<>(); + paramslist.add(boolparam); + String[] args = new String[] { "sample-create", "-e" , "text"}; + + boolparam.setParameterType(ParameterType.TEXT); + OnapCliUtils.populateParams(paramslist, Arrays.asList(args)); + List expectedList = Arrays.asList(args); + Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue()); + } + @Test public void testjsonparamsshort() throws OnapCommandException { OnapCommandParameter jsonparam = new OnapCommandParameter(); diff --git a/main/src/test/resources/sample-test-schema.yaml b/main/src/test/resources/sample-test-schema.yaml index a4fd8563..ac601c86 100644 --- a/main/src/test/resources/sample-test-schema.yaml +++ b/main/src/test/resources/sample-test-schema.yaml @@ -67,6 +67,12 @@ parameters: description: Onap positional args, if no short option and no long option given for it is_optional: false default_value: http://localhost:8082/file.txt + - name: text-param + type: text + description: Onap text file location param + long_option: text-param + short_option: e + is_optional: false results: direction: portrait attributes: -- cgit 1.2.3-korg