diff --git a/frameworks/jskitsimpl/distributeddata/include/js_field_node.h b/frameworks/jskitsimpl/distributeddata/include/js_field_node.h index 2845c94b07f13117e67218c74256ada7e5efdf76..50f82cf24f941c84666ccaa444de88d1a775e35c 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); @@ -55,4 +54,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/include/js_schema.h b/frameworks/jskitsimpl/distributeddata/include/js_schema.h index 860d3cea539581ccc64bd21b802631ff35f00cda..ec950c1ab8e4f1023b51218cc7e16e64b8c8f0d4 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,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 10a25b9aafd44163002f52e055fc6f7734a5b72f..944fe4652b0bb6df706e7c8f83ad8e4c2f5f9ac1 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 cbf2c5798aba4b2b4aa6b88283556d16c5a552db..78fc864189182af958be3730e2f367a56b46b9b1 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"); @@ -293,4 +280,4 @@ std::string JsFieldNode::Dump() }; return jsNode.dump(); } -} +} \ No newline at end of file diff --git a/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp b/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp index 2d2bf484053470940897a90c234bd363ada3b7a4..1aaeef14361c616c41109e38901dc7c2e0201b1b 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 efea296a9069f175fb28048504fcd1371772f675..5c2fe4eb9af26b240007d3c983c1bab1f08e1d75 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" @@ -883,15 +884,25 @@ 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); - - 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) +{ + return JsSchema::ToJson(env, inner, out); +} + + napi_status JSUtil::SetValue(napi_env env, const DistributedKv::Options& in, napi_value& out) { (void)(env);