diff options
author | Yuta Doi <yuta-d@witz-inc.co.jp> | 2018-05-10 14:44:21 +0900 |
---|---|---|
committer | Yuta Doi <yuta-d@witz-inc.co.jp> | 2018-05-10 14:44:21 +0900 |
commit | 6ecd550833c47819bf0df7dc9df848dea67f2b28 (patch) | |
tree | 18350e61e8bbe389c9e6864ce0d88d7a2299a30c /src | |
parent | 2ea71aa957634ce69681ae34abace0566d52b744 (diff) |
Replace json_object_from_file to inputJsonFilie
and remove unnecessary header
Change-Id: Ia4200a9742d62933328d0518731710413caa1a5c
Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
Diffstat (limited to 'src')
-rw-r--r-- | src/app.cpp | 6 | ||||
-rw-r--r-- | src/json_helper.cpp | 2 | ||||
-rw-r--r-- | src/json_helper.hpp | 5 | ||||
-rw-r--r-- | src/low_can_client.cpp | 2 | ||||
-rw-r--r-- | src/low_can_client.hpp | 1 | ||||
-rw-r--r-- | src/policy_manager/policy_manager.cpp | 74 | ||||
-rw-r--r-- | 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 <json-c/json.h> -#include <json.h> #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 <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); 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 <string> #include <vector> #include <json-c/json.h> 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<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 |