aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuta Doi <yuta-d@witz-inc.co.jp>2018-05-10 14:44:21 +0900
committerYuta Doi <yuta-d@witz-inc.co.jp>2018-05-10 14:44:21 +0900
commit6ecd550833c47819bf0df7dc9df848dea67f2b28 (patch)
tree18350e61e8bbe389c9e6864ce0d88d7a2299a30c
parent2ea71aa957634ce69681ae34abace0566d52b744 (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>
-rw-r--r--src/app.cpp6
-rw-r--r--src/json_helper.cpp2
-rw-r--r--src/json_helper.hpp5
-rw-r--r--src/low_can_client.cpp2
-rw-r--r--src/low_can_client.hpp1
-rw-r--r--src/policy_manager/policy_manager.cpp74
-rw-r--r--src/policy_manager/policy_manager.hpp9
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