Add exception for profile persist layer 69/12969/1
authorKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Mon, 18 Sep 2017 04:37:17 +0000 (10:07 +0530)
committerKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Mon, 18 Sep 2017 04:38:04 +0000 (10:08 +0530)
CLI-43

Change-Id: I6b2b969cc3a56dbee60d2b9056a6a7f8f793a8b4
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
framework/src/main/java/org/onap/cli/fw/error/OnapCommandLoadProfileFailed.java [new file with mode: 0644]
framework/src/main/java/org/onap/cli/fw/error/OnapCommandPersistProfileFailed.java [new file with mode: 0644]
framework/src/main/java/org/onap/cli/fw/input/cache/OnapCommandParameterCache.java
framework/src/main/java/org/onap/cli/fw/utils/OnapCommandUtils.java
framework/src/test/java/org/onap/cli/fw/OnapCommandRegistrarTest.java
framework/src/test/java/org/onap/cli/fw/error/OnapCommandErrorTest.java
main/src/main/java/org/onap/cli/main/OnapCli.java
main/src/test/java/org/onap/cli/main/utils/OnapCliUtilsTest.java
main/src/test/resources/sample-test-schema.yaml

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 (file)
index 0000000..62fd84f
--- /dev/null
@@ -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 (file)
index 0000000..f49e35c
--- /dev/null
@@ -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);
+    }
+}
index 6ce0917..6f04366 100644 (file)
@@ -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<Param> 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<Param> params = OnapCommandUtils.loadParamFromCache(this.profileName);
+        List<Param> 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());
index 4cde508..639e963 100644 (file)
@@ -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<Param> params, String profileName) {
+    public static void persistParams(List<Param> 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<Param> loadParamFromCache(String profileName) {
+    public static List<Param> loadParamFromCache(String profileName) throws OnapCommandLoadProfileFailed {
         List<Param> 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;
index ecbbf97..d123a87 100644 (file)
@@ -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();
 
     }
 }
index 20402b0..dd42cdc 100644 (file)
@@ -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());
+    }
 }
index 57e39f2..e33e54a 100644 (file)
@@ -74,7 +74,7 @@ public class OnapCli {
                 throwable.printStackTrace();  // NOSONAR
             }
         } catch (OnapCommandException e) {
-            // pass // NOSONAR
+            this.print(e.getCause());
         }
     }
 
index 8870029..622cea5 100644 (file)
@@ -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<OnapCommandParameter> 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<String> 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<OnapCommandParameter> 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<String> expectedList = Arrays.asList(args);
+        Assert.assertNotNull(expectedList.get(1), paramslist.get(0).getValue());
+    }
+
     @Test
     public void testjsonparamsshort() throws OnapCommandException {
         OnapCommandParameter jsonparam = new OnapCommandParameter();
index a4fd856..ac601c8 100644 (file)
@@ -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: