From 51d9c30a93b839211a4ee1d41c5e3569a442cbdd Mon Sep 17 00:00:00 2001 From: wellinleo Date: Tue, 22 Feb 2022 21:01:14 +0800 Subject: [PATCH 1/3] modify schema and fieldNode api Signed-off-by: wellinleo --- .../distributeddata/include/js_field_node.h | 1 - .../jskitsimpl/distributeddata/include/js_schema.h | 5 ++--- .../jskitsimpl/distributeddata/include/js_util.h | 3 +++ .../distributeddata/src/js_field_node.cpp | 13 ------------- .../jskitsimpl/distributeddata/src/js_schema.cpp | 14 +++----------- .../jskitsimpl/distributeddata/src/js_util.cpp | 12 +++++++++++- 6 files changed, 19 insertions(+), 29 deletions(-) diff --git a/frameworks/jskitsimpl/distributeddata/include/js_field_node.h b/frameworks/jskitsimpl/distributeddata/include/js_field_node.h index 2845c94b0..693c499a7 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_field_node.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_field_node.h @@ -36,7 +36,6 @@ public: private: static napi_value AppendChild(napi_env env, napi_callback_info info); - static napi_value ToJson(napi_env env, napi_callback_info info); static napi_value GetDefaultValue(napi_env env, napi_callback_info info); static napi_value SetDefaultValue(napi_env env, napi_callback_info info); static napi_value GetNullable(napi_env env, napi_callback_info info); diff --git a/frameworks/jskitsimpl/distributeddata/include/js_schema.h b/frameworks/jskitsimpl/distributeddata/include/js_schema.h index 860d3cea5..b08f77a36 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_schema.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_schema.h @@ -29,8 +29,9 @@ public: static napi_value Constructor(napi_env env); static napi_value New(napi_env env, napi_callback_info info); + static napi_status ToJson(napi_env env, napi_value inner, JsSchema*& out); + std::string Dump(); private: - static napi_value ToJson(napi_env env, napi_callback_info info); static napi_value GetRootNode(napi_env env, napi_callback_info info); static napi_value SetRootNode(napi_env env, napi_callback_info info); static napi_value GetMode(napi_env env, napi_callback_info info); @@ -40,8 +41,6 @@ private: static napi_value GetIndexes(napi_env env, napi_callback_info info); static napi_value SetIndexes(napi_env env, napi_callback_info info); - std::string Dump(); - enum { SCHEMA_MODE_SLOPPY, SCHEMA_MODE_STRICT, diff --git a/frameworks/jskitsimpl/distributeddata/include/js_util.h b/frameworks/jskitsimpl/distributeddata/include/js_util.h index 10a25b9aa..26267df29 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_util.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_util.h @@ -36,6 +36,7 @@ public: DOUBLE = 5, INVALID = 255 }; + using JsSchema = class JsSchema; using Blob = OHOS::DistributedKv::Blob; using ChangeNotification = OHOS::DistributedKv::ChangeNotification; using Options = OHOS::DistributedKv::Options; @@ -133,6 +134,8 @@ public: /* napi_value <-> std::map */ static napi_status GetValue(napi_env env, napi_value in, std::map& out); static napi_status SetValue(napi_env env, const std::map& in, napi_value& out); + + static napi_status GetValue(napi_env env, napi_value in, JsSchema*& out); /* napi_get_named_property wrapper */ template diff --git a/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp b/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp index cbf2c5798..a0f06ef2c 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp @@ -120,19 +120,6 @@ napi_value JsFieldNode::AppendChild(napi_env env, napi_callback_info info) return ctxt->output; } -napi_value JsFieldNode::ToJson(napi_env env, napi_callback_info info) -{ - ZLOGD("FieldNode::ToJson"); - auto ctxt = std::make_shared(); - ctxt->GetCbInfoSync(env, info); - NAPI_ASSERT(env, ctxt->status == napi_ok, "invalid arguments!"); - - auto fieldNode = reinterpret_cast(ctxt->native); - std::string js = fieldNode->Dump(); - JSUtil::SetValue(env, js, ctxt->output); - return ctxt->output; -} - napi_value JsFieldNode::GetDefaultValue(napi_env env, napi_callback_info info) { ZLOGD("FieldNode::GetDefaultValue"); diff --git a/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp b/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp index 2d2bf4840..1aaeef143 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp @@ -50,7 +50,6 @@ napi_value JsSchema::Constructor(napi_env env) { ZLOGD("Init JsSchema"); const napi_property_descriptor properties[] = { - DECLARE_NAPI_FUNCTION("toJsonString", JsSchema::ToJson), DECLARE_NAPI_GETTER_SETTER("root", JsSchema::GetRootNode, JsSchema::SetRootNode), DECLARE_NAPI_GETTER_SETTER("indexes", JsSchema::GetIndexes, JsSchema::SetIndexes), DECLARE_NAPI_GETTER_SETTER("mode", JsSchema::GetMode, JsSchema::SetMode), @@ -80,17 +79,10 @@ napi_value JsSchema::New(napi_env env, napi_callback_info info) return ctxt->self; } -napi_value JsSchema::ToJson(napi_env env, napi_callback_info info) +napi_status JsSchema::ToJson(napi_env env, napi_value inner, JsSchema*& out) { - ZLOGD("Schema::New"); - auto ctxt = std::make_shared(); - ctxt->GetCbInfoSync(env, info); - NAPI_ASSERT(env, ctxt->status == napi_ok, "invalid arguments!"); - - auto schema = reinterpret_cast(ctxt->native); - auto json = schema->Dump(); - JSUtil::SetValue(env, json, ctxt->output); - return ctxt->output; + ZLOGD("Schema::ToJson"); + return JSUtil::Unwrap(env, inner, (void**)(&out), JsSchema::Constructor(env)); } napi_value JsSchema::GetRootNode(napi_env env, napi_callback_info info) diff --git a/frameworks/jskitsimpl/distributeddata/src/js_util.cpp b/frameworks/jskitsimpl/distributeddata/src/js_util.cpp index efea296a9..de032abe7 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_util.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_util.cpp @@ -17,6 +17,7 @@ #include #include +#include "js_schema.h" #include "log_print.h" #include "napi_queue.h" @@ -884,7 +885,11 @@ napi_status JSUtil::GetValue(napi_env env, napi_value in, DistributedKv::Options GetNamedProperty(env, in, "kvStoreType", kvStoreType); options.kvStoreType = static_cast(kvStoreType); - GetNamedProperty(env, in, "schema", options.schema); + JsSchema *jsSchema = nullptr; + napi_status status = GetNamedProperty(env, in, "schema", jsSchema); + if(status == napi_ok){ + options.schema = jsSchema->Dump(); + } int32_t level = 0; GetNamedProperty(env, in, "securityLevel", level); @@ -892,6 +897,11 @@ napi_status JSUtil::GetValue(napi_env env, napi_value in, DistributedKv::Options return napi_ok; } +napi_status JSUtil::GetValue(napi_env env, napi_value inner, JsSchema*& out) +{ + return JsSchema::ToJson(env, inner, out); +} + napi_status JSUtil::SetValue(napi_env env, const DistributedKv::Options& in, napi_value& out) { (void)(env); -- Gitee From 25611d8d1dd98c8c0fd01f794ca1d7db51c4433e Mon Sep 17 00:00:00 2001 From: wellinleo Date: Tue, 22 Feb 2022 21:05:04 +0800 Subject: [PATCH 2/3] fix code format Signed-off-by: wellinleo --- frameworks/jskitsimpl/distributeddata/include/js_schema.h | 5 +++-- frameworks/jskitsimpl/distributeddata/include/js_util.h | 6 +++--- frameworks/jskitsimpl/distributeddata/src/js_util.cpp | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/frameworks/jskitsimpl/distributeddata/include/js_schema.h b/frameworks/jskitsimpl/distributeddata/include/js_schema.h index b08f77a36..961de71b0 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_schema.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_schema.h @@ -29,8 +29,9 @@ public: static napi_value Constructor(napi_env env); static napi_value New(napi_env env, napi_callback_info info); - static napi_status ToJson(napi_env env, napi_value inner, JsSchema*& out); - std::string Dump(); + + static napi_status ToJson(napi_env env, napi_value inner, JsSchema*& out); + std::string Dump(); private: static napi_value GetRootNode(napi_env env, napi_callback_info info); static napi_value SetRootNode(napi_env env, napi_callback_info info); diff --git a/frameworks/jskitsimpl/distributeddata/include/js_util.h b/frameworks/jskitsimpl/distributeddata/include/js_util.h index 26267df29..d6c2d003d 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_util.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_util.h @@ -36,7 +36,7 @@ public: DOUBLE = 5, INVALID = 255 }; - using JsSchema = class JsSchema; + using JsSchema = class JsSchema; using Blob = OHOS::DistributedKv::Blob; using ChangeNotification = OHOS::DistributedKv::ChangeNotification; using Options = OHOS::DistributedKv::Options; @@ -134,8 +134,8 @@ public: /* napi_value <-> std::map */ static napi_status GetValue(napi_env env, napi_value in, std::map& out); static napi_status SetValue(napi_env env, const std::map& in, napi_value& out); - - static napi_status GetValue(napi_env env, napi_value in, JsSchema*& out); + + static napi_status GetValue(napi_env env, napi_value in, JsSchema*& out); /* napi_get_named_property wrapper */ template diff --git a/frameworks/jskitsimpl/distributeddata/src/js_util.cpp b/frameworks/jskitsimpl/distributeddata/src/js_util.cpp index de032abe7..9a92202f2 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_util.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_util.cpp @@ -887,7 +887,7 @@ napi_status JSUtil::GetValue(napi_env env, napi_value in, DistributedKv::Options JsSchema *jsSchema = nullptr; napi_status status = GetNamedProperty(env, in, "schema", jsSchema); - if(status == napi_ok){ + if (status == napi_ok) { options.schema = jsSchema->Dump(); } -- Gitee From 865a4ef674a310b5db98c96624a18211c3f6f65b Mon Sep 17 00:00:00 2001 From: wellinleo Date: Tue, 22 Feb 2022 21:22:02 +0800 Subject: [PATCH 3/3] fix build error Signed-off-by: wellinleo --- frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp b/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp index a0f06ef2c..ea5b8b230 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp @@ -61,7 +61,6 @@ napi_value JsFieldNode::Constructor(napi_env env) { const napi_property_descriptor properties[] = { DECLARE_NAPI_FUNCTION("appendChild", JsFieldNode::AppendChild), - DECLARE_NAPI_FUNCTION("toJson", JsFieldNode::ToJson), DECLARE_NAPI_GETTER_SETTER("default", JsFieldNode::GetDefaultValue, JsFieldNode::SetDefaultValue), DECLARE_NAPI_GETTER_SETTER("nullable", JsFieldNode::GetNullable, JsFieldNode::SetNullable), DECLARE_NAPI_GETTER_SETTER("type", JsFieldNode::GetValueType, JsFieldNode::SetValueType) -- Gitee