From 6ecd550833c47819bf0df7dc9df848dea67f2b28 Mon Sep 17 00:00:00 2001 From: Yuta Doi Date: Thu, 10 May 2018 14:44:21 +0900 Subject: Replace json_object_from_file to inputJsonFilie and remove unnecessary header Change-Id: Ia4200a9742d62933328d0518731710413caa1a5c Signed-off-by: Yuta Doi --- src/app.cpp | 6 +-- src/json_helper.cpp | 2 - src/json_helper.hpp | 5 +-- src/low_can_client.cpp | 2 +- src/low_can_client.hpp | 1 + src/policy_manager/policy_manager.cpp | 74 ++++++++++++++++++++++++++++------- src/policy_manager/policy_manager.hpp | 9 ++++- 7 files changed, 73 insertions(+), 26 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index 777a07f..bfd6c06 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -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); } diff --git a/src/json_helper.cpp b/src/json_helper.cpp index f9b916e..cbbf564 100644 --- a/src/json_helper.cpp +++ b/src/json_helper.cpp @@ -15,8 +15,6 @@ */ -#include -#include #include "json_helper.hpp" #include "hmi-debug.h" diff --git a/src/json_helper.hpp b/src/json_helper.hpp index 22ec3e6..408a701 100644 --- a/src/json_helper.hpp +++ b/src/json_helper.hpp @@ -17,13 +17,10 @@ #ifndef TMCAGLWM_JSON_HELPER_HPP #define TMCAGLWM_JSON_HELPER_HPP -#include "result.hpp" + #include "wayland_ivi_wm.hpp" #include -#include - -struct json_object; json_object *to_json(compositor::screen const *s); json_object *to_json(compositor::controller::props_map const &s); diff --git a/src/low_can_client.cpp b/src/low_can_client.cpp index 43d8cfc..451fa24 100644 --- a/src/low_can_client.cpp +++ b/src/low_can_client.cpp @@ -15,8 +15,8 @@ */ -#include "json_helper.hpp" #include "low_can_client.hpp" +#include "json_helper.hpp" #include "hmi-debug.h" extern "C" { diff --git a/src/low_can_client.hpp b/src/low_can_client.hpp index ea441be..04220f5 100644 --- a/src/low_can_client.hpp +++ b/src/low_can_client.hpp @@ -18,6 +18,7 @@ #define TMCAGLWM_LOW_CAN_CLIENT_HPP +#include #include #include diff --git a/src/policy_manager/policy_manager.cpp b/src/policy_manager/policy_manager.cpp index 3b0eac6..3ee9459 100644 --- a/src/policy_manager/policy_manager.cpp +++ b/src/policy_manager/policy_manager.cpp @@ -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( diff --git a/src/policy_manager/policy_manager.hpp b/src/policy_manager/policy_manager.hpp index e3ee621..b191b10 100644 --- a/src/policy_manager/policy_manager.hpp +++ b/src/policy_manager/policy_manager.hpp @@ -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 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 -- cgit 1.2.3-korg