utils-json: refactoring
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 11 Feb 2016 15:14:16 +0000 (16:14 +0100)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 11 Feb 2016 15:14:16 +0000 (16:14 +0100)
Change-Id: Ie8b49279e727afdbce7b9ea74c767d560c93af32
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afm-run.c
src/afm-system-daemon.c
src/utils-json.c
src/utils-json.h

index b9e1e7c..4e002e0 100644 (file)
@@ -244,14 +244,14 @@ static int fill_launch_desc(struct json_object *appli, struct afm_launch_desc *d
        json_object *pub;
 
        /* main items */
-       if(!j_object(appli, "public", &pub)
-       || !j_string(appli, "path", &desc->path)
-       || !j_string(appli, "id", &desc->tag)
-       || !j_string(appli, "content", &desc->content)
-       || !j_string(appli, "type", &desc->type)
-       || !j_string(pub, "name", &desc->name)
-       || !j_integer(pub, "width", &desc->width)
-       || !j_integer(pub, "height", &desc->height)) {
+       if(!j_read_object_at(appli, "public", &pub)
+       || !j_read_string_at(appli, "path", &desc->path)
+       || !j_read_string_at(appli, "id", &desc->tag)
+       || !j_read_string_at(appli, "content", &desc->content)
+       || !j_read_string_at(appli, "type", &desc->type)
+       || !j_read_string_at(pub, "name", &desc->name)
+       || !j_read_integer_at(pub, "width", &desc->width)
+       || !j_read_integer_at(pub, "height", &desc->height)) {
                errno = EINVAL;
                return -1;
        }
index 65e7e33..6a242ea 100644 (file)
@@ -82,10 +82,10 @@ static void on_install(struct jreq *jreq, struct json_object *req)
                force = 0;
                break;
        case json_type_object:
-               wgtfile = j_get_string(req, "wgt", NULL);
+               wgtfile = j_string_at(req, "wgt", NULL);
                if (wgtfile != NULL) {
-                       root = j_get_string(req, "root", rootdir);
-                       force = j_get_boolean(req, "force", 0);
+                       root = j_string_at(req, "root", rootdir);
+                       force = j_boolean_at(req, "force", 0);
                        break;
                }
        default:
@@ -127,9 +127,9 @@ static void on_uninstall(struct jreq *jreq, struct json_object *req)
                root = rootdir;
                break;
        case json_type_object:
-               idaver = j_get_string(req, "id", NULL);
+               idaver = j_string_at(req, "id", NULL);
                if (idaver != NULL) {
-                       root = j_get_string(req, "root", rootdir);
+                       root = j_string_at(req, "root", rootdir);
                        break;
                }
        default:
index 82908f4..3af2a4c 100644 (file)
 
 #include "utils-json.h"
 
-int j_object(struct json_object *obj, const char *key, struct json_object **value)
+int j_read_string(struct json_object *obj, const char **value)
+{
+       return j_is_string(obj) && (*value = json_object_get_string(obj)) != NULL;
+}
+
+int j_read_boolean(struct json_object *obj, int *value)
+{
+       return j_is_boolean(obj) && ((*value = (int)json_object_get_boolean(obj)), 1);
+}
+
+int j_read_integer(struct json_object *obj, int *value)
+{
+       return j_is_integer(obj) && ((*value = (int)json_object_get_int(obj)), 1);
+}
+
+const char *j_string(struct json_object *obj, const char *defval)
+{
+       return j_is_string(obj) ? json_object_get_string(obj) : defval;
+}
+
+int j_boolean(struct json_object *obj, int defval)
+{
+       return j_is_boolean(obj) ? json_object_get_boolean(obj) : defval;
+}
+
+int j_integer(struct json_object *obj, int defval)
+{
+       return j_is_integer(obj) ? json_object_get_int(obj) : defval;
+}
+
+int j_read_object_at(struct json_object *obj, const char *key, struct json_object **value)
 {
        return json_object_object_get_ex(obj, key, value);
 }
 
-int j_string(struct json_object *obj, const char *key, const char **value)
+int j_read_string_at(struct json_object *obj, const char *key, const char **value)
 {
        json_object *data;
-       return j_object(obj, key, &data)
-               && json_object_get_type(data) == json_type_string
-               && (*value = json_object_get_string(data)) != NULL;
+       return j_read_object_at(obj, key, &data) && j_read_string(data, value);
 }
 
-int j_boolean(struct json_object *obj, const char *key, int *value)
+int j_read_boolean_at(struct json_object *obj, const char *key, int *value)
 {
        json_object *data;
-       return json_object_object_get_ex(obj, key, &data)
-               && json_object_get_type(data) == json_type_boolean
-               && ((*value = (int)json_object_get_boolean(data)), 1);
+       return j_read_object_at(obj, key, &data) && j_read_boolean(data, value);
 }
 
-int j_integer(struct json_object *obj, const char *key, int *value)
+int j_read_integer_at(struct json_object *obj, const char *key, int *value)
 {
        json_object *data;
-       return json_object_object_get_ex(obj, key, &data)
-               && json_object_get_type(data) == json_type_int
-               && ((*value = (int)json_object_get_int(data)), 1);
+       return j_read_object_at(obj, key, &data) && j_read_integer(data, value);
 }
 
-const char *j_get_string(struct json_object *obj, const char *key, const char *defval)
+const char *j_string_at(struct json_object *obj, const char *key, const char *defval)
 {
-       struct json_object *o;
-       return json_object_object_get_ex(obj, key, &o)
-               && json_object_get_type(o) == json_type_string
-                       ? json_object_get_string(o) : defval;
+       struct json_object *data;
+       return j_read_object_at(obj, key, &data) ? j_string(data, defval) : defval;
 }
 
-int j_get_boolean(struct json_object *obj, const char *key, int defval)
+int j_boolean_at(struct json_object *obj, const char *key, int defval)
 {
-       struct json_object *o;
-       return json_object_object_get_ex(obj, key, &o)
-               && json_object_get_type(o) == json_type_boolean
-                       ? json_object_get_boolean(o) : defval;
+       struct json_object *data;
+       return j_read_object_at(obj, key, &data) ? j_boolean(data, defval) : defval;
 }
 
-int j_get_integer(struct json_object *obj, const char *key, int defval)
+int j_integer_at(struct json_object *obj, const char *key, int defval)
 {
-       struct json_object *o;
-       return json_object_object_get_ex(obj, key, &o)
-               && json_object_get_type(o) == json_type_int
-                       ? json_object_get_int(o) : defval;
+       struct json_object *data;
+       return j_read_object_at(obj, key, &data) ? j_integer(data, defval) : defval;
 }
 
 int j_add(struct json_object *obj, const char *key, struct json_object *val)
index 9778347..5b8ebec 100644 (file)
  limitations under the License.
 */
 
-int j_object(struct json_object *obj, const char *key, struct json_object **value);
-int j_string(struct json_object *obj, const char *key, const char **value);
-int j_boolean(struct json_object *obj, const char *key, int *value);
-int j_integer(struct json_object *obj, const char *key, int *value);
-
-extern const char *j_get_string(struct json_object *obj, const char *key, const char *defval);
-extern int j_get_boolean(struct json_object *obj, const char *key, int defval);
-extern int j_get_integer(struct json_object *obj, const char *key, int defval);
+#define j_is_string(o)         (json_object_get_type(o) == json_type_string)
+#define j_is_boolean(o)                (json_object_get_type(o) == json_type_boolean)
+#define j_is_integer(o)                (json_object_get_type(o) == json_type_int)
+
+extern int j_read_string(struct json_object *obj, const char **value);
+extern int j_read_boolean(struct json_object *obj, int *value);
+extern int j_read_integer(struct json_object *obj, int *value);
+
+extern const char *j_string(struct json_object *obj, const char *defval);
+extern int j_boolean(struct json_object *obj, int defval);
+extern int j_integer(struct json_object *obj, int defval);
+
+extern int j_read_object_at(struct json_object *obj, const char *key, struct json_object **value);
+extern int j_read_string_at(struct json_object *obj, const char *key, const char **value);
+extern int j_read_boolean_at(struct json_object *obj, const char *key, int *value);
+extern int j_read_integer_at(struct json_object *obj, const char *key, int *value);
+
+extern const char *j_string_at(struct json_object *obj, const char *key, const char *defval);
+extern int j_boolean_at(struct json_object *obj, const char *key, int defval);
+extern int j_integer_at(struct json_object *obj, const char *key, int defval);
 
 extern int j_add(struct json_object *obj, const char *key, struct json_object *val);
 extern int j_add_string(struct json_object *obj, const char *key, const char *val);