Replace json_object_from_file to inputJsonFilie
authorYuta Doi <yuta-d@witz-inc.co.jp>
Thu, 10 May 2018 05:44:21 +0000 (14:44 +0900)
committerYuta Doi <yuta-d@witz-inc.co.jp>
Thu, 10 May 2018 05:44:21 +0000 (14:44 +0900)
and remove unnecessary header

Change-Id: Ia4200a9742d62933328d0518731710413caa1a5c
Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
src/app.cpp
src/json_helper.cpp
src/json_helper.hpp
src/low_can_client.cpp
src/low_can_client.hpp
src/policy_manager/policy_manager.cpp
src/policy_manager/policy_manager.hpp

index 777a07f..bfd6c06 100644 (file)
@@ -1069,9 +1069,9 @@ int App::loadAppDb() {
     }
 
     // Load app.db
-    HMI_DEBUG("wm", "file_name:%s", file_name.c_str());
-    json_object* json_obj = json_object_from_file(file_name.c_str());
-    if (nullptr == json_obj) {
+    json_object* json_obj;
+    int ret = jh::inputJsonFilie(file_name.c_str(), &json_obj);
+    if (0 > ret) {
         HMI_ERROR("wm", "Could not open app.db, so use default role information");
         json_obj = json_tokener_parse(kDefaultAppDb);
     }
index f9b916e..cbbf564 100644 (file)
@@ -15,8 +15,6 @@
  */
 
 
-#include <json-c/json.h>
-#include <json.h>
 #include "json_helper.hpp"
 #include "hmi-debug.h"
 
index 22ec3e6..408a701 100644 (file)
 #ifndef TMCAGLWM_JSON_HELPER_HPP
 #define TMCAGLWM_JSON_HELPER_HPP
 
-#include "result.hpp"
+
 #include "wayland_ivi_wm.hpp"
 #include <json-c/json.h>
-#include <json.hpp>
-
 
-struct json_object;
 
 json_object *to_json(compositor::screen const *s);
 json_object *to_json(compositor::controller::props_map const &s);
index 43d8cfc..451fa24 100644 (file)
@@ -15,8 +15,8 @@
  */
 
 
-#include "json_helper.hpp"
 #include "low_can_client.hpp"
+#include "json_helper.hpp"
 #include "hmi-debug.h"
 
 extern "C" {
index ea441be..04220f5 100644 (file)
@@ -18,6 +18,7 @@
 #define TMCAGLWM_LOW_CAN_CLIENT_HPP
 
 
+#include <string>
 #include <vector>
 #include <json-c/json.h>
 
index 3b0eac6..3ee9459 100644 (file)
@@ -84,7 +84,7 @@ int PolicyManager::checkPolicy(json_object* json_in, json_object** json_out) {
     }
 
     // Get event from json_object
-    const char* event = getStringFromJson(json_in, "event");
+    const char* event = this->getStringFromJson(json_in, "event");
     int event_no = 0;
     if (nullptr != event) {
         // Convert name to number
@@ -93,7 +93,7 @@ int PolicyManager::checkPolicy(json_object* json_in, json_object** json_out) {
     }
 
     // Get role from json_object
-    const char* role = getStringFromJson(json_in, "role");
+    const char* role = this->getStringFromJson(json_in, "role");
     int category_no = 0;
     if (nullptr != role) {
         HMI_DEBUG("wm:pm", "role(%s)", role);
@@ -112,7 +112,7 @@ int PolicyManager::checkPolicy(json_object* json_in, json_object** json_out) {
     }
 
     // Get areat from json_object
-    const char* area = getStringFromJson(json_in, "area");
+    const char* area = this->getStringFromJson(json_in, "area");
     int area_no = 0;
     if (nullptr != area) {
         // Convert name to number
@@ -254,9 +254,9 @@ int PolicyManager::loadRoleDb() {
     }
 
     // Load role.db
-    HMI_DEBUG("wm:pm", "file_name:%s", file_name.c_str());
-    json_object* json_obj = json_object_from_file(file_name.c_str());
-    if (nullptr == json_obj) {
+    json_object* json_obj;
+    int ret = this->inputJsonFilie(file_name.c_str(), &json_obj);
+    if (0 > ret) {
         HMI_ERROR("wm:pm", "Could not open role.db, so use default role information");
         json_obj = json_tokener_parse(kDefaultRoleDb);
     }
@@ -328,6 +328,9 @@ int PolicyManager::loadRoleDb() {
     return 0;
 }
 
+// TODO:
+// This function will be removed because json_helper has same function.
+// json_helper should be library.
 const char* PolicyManager::getStringFromJson(json_object* obj, const char* key) {
     if ((nullptr == obj) || (nullptr == key)) {
         HMI_ERROR("wm:pm", "Argument is nullptr!!!");
@@ -343,19 +346,60 @@ const char* PolicyManager::getStringFromJson(json_object* obj, const char* key)
     return json_object_get_string(tmp);
 }
 
-int PolicyManager::getIntFromJson(json_object* obj, const char* key) {
-    if ((nullptr == obj) || (nullptr == key)) {
-        HMI_ERROR("wm:pm", "Argument is nullptr!!!");
-        return 0;
+// TODO:
+// This function will be removed because json_helper has same function.
+// json_helper should be library.
+int PolicyManager::inputJsonFilie(const char* file, json_object** obj) {
+    const int input_size = 128;
+    int ret = -1;
+
+    if ((nullptr == file) || (nullptr == obj)) {
+        HMI_ERROR("wm:jh", "Argument is nullptr!!!");
+        return ret;
     }
 
-    json_object* tmp;
-    if (!json_object_object_get_ex(obj, key, &tmp)) {
-        HMI_DEBUG("wm:pm", "Not found key \"%s\"", key);
-        return 0;
+    HMI_DEBUG("wm:jh", "Input file: %s", file);
+
+    // Open json file
+    FILE *fp = fopen(file, "rb");
+    if (nullptr == fp) {
+        HMI_ERROR("wm:jh", "Could not open file");
+        return ret;
     }
 
-    return json_object_get_int(tmp);
+    // Parse file data
+    struct json_tokener *tokener = json_tokener_new();
+    enum json_tokener_error json_error;
+    char buffer[input_size];
+    int block_cnt = 1;
+    while (1) {
+        size_t len = fread(buffer, sizeof(char), input_size, fp);
+        *obj = json_tokener_parse_ex(tokener, buffer, len);
+        if (nullptr != *obj) {
+            HMI_DEBUG("wm:jh", "File input is success");
+            ret = 0;
+            break;
+        }
+
+        json_error = json_tokener_get_error(tokener);
+        if ((json_tokener_continue != json_error)
+            || (input_size > len)) {
+            HMI_ERROR("wm:jh", "Failed to parse file (byte:%d err:%s)",
+                      (input_size * block_cnt), json_tokener_error_desc(json_error));
+            HMI_ERROR("wm:jh", "\n%s", buffer);
+            *obj = nullptr;
+            break;
+        }
+        block_cnt++;
+    }
+
+    // Close json file
+    fclose(fp);
+
+    // Free json_tokener
+    json_tokener_free(tokener);
+
+    return ret;
 }
 
 void PolicyManager::addStateToJson(
index e3ee621..b191b10 100644 (file)
@@ -27,6 +27,8 @@ extern "C" {
 }
 } // namespace stm
 
+struct json_object;
+
 class PolicyManager {
 
 public:
@@ -58,10 +60,15 @@ private:
     int loadRoleDb();
 
     const char* getStringFromJson(json_object* obj, const char* key);
-    int getIntFromJson(json_object* obj, const char* key);
+    int inputJsonFilie(const char* file, json_object** obj);
     void addStateToJson(const char* key, int is_changed, const char* state, json_object** json_out);
     std::vector<std::string> parseString(std::string str, char delimiter);
     std::string deleteSpace(std::string str);
 };
 
+
+extern const char* getStringFromJson(json_object* obj, const char* key);
+extern int getIntFromJson(json_object* obj, const char* key);
+
+
 #endif  // TMCAGLWM_POLICY_MANAGER_HPP