From 0913fbbb97fefbab53d0dd54a8b87d6a3a6cebc2 Mon Sep 17 00:00:00 2001 From: yangliu Date: Mon, 14 Feb 2022 11:38:26 +0800 Subject: [PATCH 1/3] modify schema and fieldNode api Signed-off-by: yangliu --- .../distributeddata/include/js_field_node.h | 1 - .../distributeddata/include/js_schema.h | 4 ++-- .../jskitsimpl/distributeddata/include/js_util.h | 3 +++ .../distributeddata/src/js_field_node.cpp | 12 ------------ .../jskitsimpl/distributeddata/src/js_schema.cpp | 12 ------------ .../jskitsimpl/distributeddata/src/js_util.cpp | 15 +++++++++++++-- 6 files changed, 18 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..7fed99f2f 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); + + 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,7 +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, diff --git a/frameworks/jskitsimpl/distributeddata/include/js_util.h b/frameworks/jskitsimpl/distributeddata/include/js_util.h index 10a25b9aa..58eac5c45 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_util.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_util.h @@ -24,6 +24,7 @@ #include "napi/native_node_api.h" namespace OHOS::DistributedData { +class JsSchema; class JSUtil final { public: enum { @@ -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..bc0803398 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) @@ -120,18 +119,7 @@ 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) { diff --git a/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp b/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp index 2d2bf4840..a6f98efb5 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,18 +79,7 @@ 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) -{ - 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; -} 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..8a82bbac6 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,14 +885,24 @@ 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); options.securityLevel = level; return napi_ok; } +napi_status JSUtil::GetValue(napi_env env, napi_value inner, JsSchema*& out) +{ + ZLOGD("napi_value -> JsSchema* "); + return JSUtil::Unwrap(env, inner, (void**)(&out), JsSchema::Constructor(env)); +} + + napi_status JSUtil::SetValue(napi_env env, const DistributedKv::Options& in, napi_value& out) { (void)(env); -- Gitee From b26f3a122118c61593fc944e39471dae2dcfccd6 Mon Sep 17 00:00:00 2001 From: yangliu Date: Mon, 14 Feb 2022 21:18:44 +0800 Subject: [PATCH 2/3] modify code problems Signed-off-by: yangliu --- .../distributeddata/include/js_field_node.h | 3 ++- .../distributeddata/src/js_field_node.cpp | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/frameworks/jskitsimpl/distributeddata/include/js_field_node.h b/frameworks/jskitsimpl/distributeddata/include/js_field_node.h index 693c499a7..3503a95c4 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_field_node.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_field_node.h @@ -36,6 +36,7 @@ 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); @@ -54,4 +55,4 @@ private: bool isNullable = false; }; } -#endif // OHOS_FIELD_NODE_H +#endif // OHOS_FIELD_NODE_H \ No newline at end of file diff --git a/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp b/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp index bc0803398..647ca63c7 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp @@ -61,6 +61,7 @@ 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) @@ -119,7 +120,18 @@ 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) { @@ -281,4 +293,4 @@ std::string JsFieldNode::Dump() }; return jsNode.dump(); } -} +} \ No newline at end of file -- Gitee From 33305de515dc4e5a8a2fc23bca3be07de398f321 Mon Sep 17 00:00:00 2001 From: yangliu Date: Mon, 14 Feb 2022 21:28:31 +0800 Subject: [PATCH 3/3] update code Signed-off-by: yangliu --- .../distributeddata/include/js_field_node.h | 1 - .../jskitsimpl/distributeddata/include/js_schema.h | 2 +- .../jskitsimpl/distributeddata/include/js_util.h | 2 +- .../distributeddata/src/js_field_node.cpp | 13 ------------- .../jskitsimpl/distributeddata/src/js_schema.cpp | 6 +++++- .../jskitsimpl/distributeddata/src/js_util.cpp | 14 +++++++------- 6 files changed, 14 insertions(+), 24 deletions(-) diff --git a/frameworks/jskitsimpl/distributeddata/include/js_field_node.h b/frameworks/jskitsimpl/distributeddata/include/js_field_node.h index 3503a95c4..50f82cf24 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 7fed99f2f..ec950c1ab 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_schema.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_schema.h @@ -29,7 +29,7 @@ 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 GetRootNode(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 58eac5c45..944fe4652 100644 --- a/frameworks/jskitsimpl/distributeddata/include/js_util.h +++ b/frameworks/jskitsimpl/distributeddata/include/js_util.h @@ -24,7 +24,6 @@ #include "napi/native_node_api.h" namespace OHOS::DistributedData { -class JsSchema; class JSUtil final { public: enum { @@ -37,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; diff --git a/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp b/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp index 647ca63c7..78fc86418 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 a6f98efb5..1aaeef143 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp @@ -79,7 +79,11 @@ napi_value JsSchema::New(napi_env env, napi_callback_info info) return ctxt->self; } - +napi_status JsSchema::ToJson(napi_env env, napi_value inner, JsSchema*& out) +{ + 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 8a82bbac6..5c2fe4eb9 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_util.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_util.cpp @@ -884,12 +884,13 @@ napi_status JSUtil::GetValue(napi_env env, napi_value in, DistributedKv::Options int32_t kvStoreType = 0; GetNamedProperty(env, in, "kvStoreType", kvStoreType); options.kvStoreType = static_cast(kvStoreType); + + JsSchema *jsSchema = nullptr; + napi_status status = GetNamedProperty(env, in, "schema", jsSchema); + if(status == napi_ok){ + options.schema = jsSchema->Dump(); + } - 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); options.securityLevel = level; @@ -898,8 +899,7 @@ napi_status JSUtil::GetValue(napi_env env, napi_value in, DistributedKv::Options napi_status JSUtil::GetValue(napi_env env, napi_value inner, JsSchema*& out) { - ZLOGD("napi_value -> JsSchema* "); - return JSUtil::Unwrap(env, inner, (void**)(&out), JsSchema::Constructor(env)); + return JsSchema::ToJson(env, inner, out); } -- Gitee