Set error code for getParsedJson API

This commit updates getParsedJson API to set error codes in case of
error. This helps caller of the API to take action based on the error
code returned from the API.

Change-Id: I0b88806bbc2201ae162e1714613fa6a9bfe3df9d
Signed-off-by: Rekha Aparna <vrekhaaparna@ibm.com>
diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp
index 63989dc..a80957d 100644
--- a/vpd-manager/src/worker.cpp
+++ b/vpd-manager/src/worker.cpp
@@ -42,7 +42,17 @@
 
         try
         {
-            m_parsedJson = jsonUtility::getParsedJson(m_configJsonPath);
+            uint16_t l_errCode = 0;
+            m_parsedJson =
+                jsonUtility::getParsedJson(m_configJsonPath, l_errCode);
+
+            if (l_errCode)
+            {
+                throw std::runtime_error(
+                    "JSON parsing failed for file [ " + m_configJsonPath +
+                    " ], error : " +
+                    vpdSpecificUtility::getErrCodeMsg(l_errCode));
+            }
 
             // check for mandatory fields at this point itself.
             if (!m_parsedJson.contains("frus"))
@@ -373,12 +383,17 @@
             "No system JSON found corresponding to IM read from VPD.");
     }
 
-    // re-parse the JSON once appropriate JSON has been selected.
-    m_parsedJson = jsonUtility::getParsedJson(systemJson);
+    uint16_t l_errCode = 0;
 
-    if (m_parsedJson.empty())
+    // re-parse the JSON once appropriate JSON has been selected.
+    m_parsedJson = jsonUtility::getParsedJson(systemJson, l_errCode);
+
+    if (l_errCode)
     {
-        throw(JsonException("Json parsing failed", systemJson));
+        throw(JsonException(
+            "JSON parsing failed for file [ " + systemJson +
+                " ], error : " + vpdSpecificUtility::getErrCodeMsg(l_errCode),
+            systemJson));
     }
 
     std::string devTreeFromJson;
@@ -1594,16 +1609,21 @@
 {
     try
     {
+        uint16_t l_errCode = 0;
         std::string l_backupAndRestoreCfgFilePath =
             m_parsedJson.value("backupRestoreConfigPath", "");
 
         nlohmann::json l_backupAndRestoreCfgJsonObj =
-            jsonUtility::getParsedJson(l_backupAndRestoreCfgFilePath);
+            jsonUtility::getParsedJson(l_backupAndRestoreCfgFilePath,
+                                       l_errCode);
 
-        if (l_backupAndRestoreCfgJsonObj.empty())
+        if (l_errCode)
         {
-            throw JsonException("JSON parsing failed",
-                                l_backupAndRestoreCfgFilePath);
+            throw JsonException(
+                "JSON parsing failed for file [ " +
+                    l_backupAndRestoreCfgFilePath + " ], error : " +
+                    vpdSpecificUtility::getErrCodeMsg(l_errCode),
+                l_backupAndRestoreCfgFilePath);
         }
 
         // check if either of "source" or "destination" has inventory path.