1686862fbSopenharmony_ci/* 2686862fbSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3686862fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4686862fbSopenharmony_ci * you may not use this file except in compliance with the License. 5686862fbSopenharmony_ci * You may obtain a copy of the License at 6686862fbSopenharmony_ci * 7686862fbSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8686862fbSopenharmony_ci * 9686862fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10686862fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11686862fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12686862fbSopenharmony_ci * See the License for the specific language governing permissions and 13686862fbSopenharmony_ci * limitations under the License. 14686862fbSopenharmony_ci */ 15686862fbSopenharmony_ci 16686862fbSopenharmony_ci#include "mission/distributed_bundle_info.h" 17686862fbSopenharmony_ci 18686862fbSopenharmony_ci#include "mission/json_util.h" 19686862fbSopenharmony_ci#include "nlohmann/json.hpp" 20686862fbSopenharmony_ci#include "parcel_helper.h" 21686862fbSopenharmony_ci#include "parcel_macro.h" 22686862fbSopenharmony_ci#include "string_ex.h" 23686862fbSopenharmony_ci 24686862fbSopenharmony_cinamespace OHOS { 25686862fbSopenharmony_cinamespace DistributedSchedule { 26686862fbSopenharmony_cinamespace { 27686862fbSopenharmony_ciconst std::string TAG = "dmsBundleInfo"; 28686862fbSopenharmony_ciconst std::string JSON_KEY_VERSION = "version"; 29686862fbSopenharmony_ciconst std::string JSON_KEY_VERSION_CODE = "versionCode"; 30686862fbSopenharmony_ciconst std::string JSON_KEY_COMPATIBLE_VERSION_CODE = "compatibleVersionCode"; 31686862fbSopenharmony_ciconst std::string JSON_KEY_VERSION_NAME = "versionName"; 32686862fbSopenharmony_ciconst std::string JSON_KEY_MIN_COMPATIBLE_VERSION = "minCompatibleVersion"; 33686862fbSopenharmony_ciconst std::string JSON_KEY_TARGET_VERSION_CODE = "targetVersionCode"; 34686862fbSopenharmony_ciconst std::string JSON_KEY_APP_ID = "appId"; 35686862fbSopenharmony_ciconst std::string JSON_KEY_ENABLED = "enabled"; 36686862fbSopenharmony_ciconst std::string JSON_KEY_BUNDLE_NAME_ID = "bundleNameId"; 37686862fbSopenharmony_ciconst std::string JSON_KEY_UPDATE_TIME = "updateTime"; 38686862fbSopenharmony_ciconst std::string JSON_KEY_DEVELOPER_ID = "developerId"; 39686862fbSopenharmony_ciconst std::string JSON_KEY_DMS_ABILITY_INFOS = "dmsAbilityInfos"; 40686862fbSopenharmony_ciconst std::string JSON_KEY_DMS_ABILITY_NAME = "abilityName"; 41686862fbSopenharmony_ciconst std::string JSON_KEY_DMS_CONTINUETYPE = "continueType"; 42686862fbSopenharmony_ciconst std::string JSON_KEY_DMS_CONTINUETYPEID = "continueTypeId"; 43686862fbSopenharmony_ciconst std::string JSON_KEY_DMS_USERID = "userIdArr"; 44686862fbSopenharmony_ciconst std::string JSON_KEY_DMS_MODULENAME = "moduleName"; 45686862fbSopenharmony_ciconst std::string JSON_KEY_DMS_MAX_BUNDLENAME_ID = "maxBundleNameId"; 46686862fbSopenharmony_ci} 47686862fbSopenharmony_ci 48686862fbSopenharmony_cibool PublicRecordsInfo::ReadFromParcel(Parcel &parcel) 49686862fbSopenharmony_ci{ 50686862fbSopenharmony_ci maxBundleNameId = parcel.ReadUint16(); 51686862fbSopenharmony_ci return true; 52686862fbSopenharmony_ci} 53686862fbSopenharmony_ci 54686862fbSopenharmony_cibool PublicRecordsInfo::Marshalling(Parcel &parcel) const 55686862fbSopenharmony_ci{ 56686862fbSopenharmony_ci parcel.WriteUint16(maxBundleNameId); 57686862fbSopenharmony_ci return true; 58686862fbSopenharmony_ci} 59686862fbSopenharmony_ci 60686862fbSopenharmony_ciPublicRecordsInfo *PublicRecordsInfo::Unmarshalling(Parcel &parcel) 61686862fbSopenharmony_ci{ 62686862fbSopenharmony_ci PublicRecordsInfo *info = new (std::nothrow) PublicRecordsInfo(); 63686862fbSopenharmony_ci if (info != nullptr && !info->ReadFromParcel(parcel)) { 64686862fbSopenharmony_ci APP_LOGW("read from parcel failed"); 65686862fbSopenharmony_ci delete info; 66686862fbSopenharmony_ci info = nullptr; 67686862fbSopenharmony_ci } 68686862fbSopenharmony_ci return info; 69686862fbSopenharmony_ci} 70686862fbSopenharmony_ci 71686862fbSopenharmony_cistd::string PublicRecordsInfo::ToString() const 72686862fbSopenharmony_ci{ 73686862fbSopenharmony_ci nlohmann::json jsonObject; 74686862fbSopenharmony_ci jsonObject[JSON_KEY_DMS_MAX_BUNDLENAME_ID] = maxBundleNameId; 75686862fbSopenharmony_ci return jsonObject.dump(); 76686862fbSopenharmony_ci} 77686862fbSopenharmony_ci 78686862fbSopenharmony_civoid to_json(nlohmann::json &jsonObject, const PublicRecordsInfo &publicRecordsInfo) 79686862fbSopenharmony_ci{ 80686862fbSopenharmony_ci APP_LOGI("call"); 81686862fbSopenharmony_ci jsonObject = nlohmann::json { 82686862fbSopenharmony_ci {JSON_KEY_DMS_MAX_BUNDLENAME_ID, publicRecordsInfo.maxBundleNameId}, 83686862fbSopenharmony_ci }; 84686862fbSopenharmony_ci APP_LOGI("end"); 85686862fbSopenharmony_ci} 86686862fbSopenharmony_ci 87686862fbSopenharmony_civoid from_json(const nlohmann::json &jsonObject, PublicRecordsInfo &publicRecordsInfo) 88686862fbSopenharmony_ci{ 89686862fbSopenharmony_ci APP_LOGI("call"); 90686862fbSopenharmony_ci const auto &jsonObjectEnd = jsonObject.end(); 91686862fbSopenharmony_ci int32_t parseResult = ERR_OK; 92686862fbSopenharmony_ci GetValueIfFindKey<uint16_t>(jsonObject, 93686862fbSopenharmony_ci jsonObjectEnd, 94686862fbSopenharmony_ci JSON_KEY_DMS_CONTINUETYPEID, 95686862fbSopenharmony_ci publicRecordsInfo.maxBundleNameId, 96686862fbSopenharmony_ci JsonType::NUMBER, 97686862fbSopenharmony_ci false, 98686862fbSopenharmony_ci parseResult, 99686862fbSopenharmony_ci ArrayType::NOT_ARRAY); 100686862fbSopenharmony_ci if (parseResult != ERR_OK) { 101686862fbSopenharmony_ci APP_LOGE("read PublicRecordsInfo from jsonObject error, error code : %{public}d", parseResult); 102686862fbSopenharmony_ci } 103686862fbSopenharmony_ci APP_LOGI("end"); 104686862fbSopenharmony_ci} 105686862fbSopenharmony_ci 106686862fbSopenharmony_cibool PublicRecordsInfo::FromJsonString(const std::string &jsonString) 107686862fbSopenharmony_ci{ 108686862fbSopenharmony_ci nlohmann::json jsonObject = nlohmann::json::parse(jsonString, nullptr, false); 109686862fbSopenharmony_ci if (jsonObject.is_discarded()) { 110686862fbSopenharmony_ci return false; 111686862fbSopenharmony_ci } 112686862fbSopenharmony_ci const auto &jsonObjectEnd = jsonObject.end(); 113686862fbSopenharmony_ci int32_t parseResult = ERR_OK; 114686862fbSopenharmony_ci GetValueIfFindKey<uint16_t>(jsonObject, jsonObjectEnd, JSON_KEY_DMS_MAX_BUNDLENAME_ID, maxBundleNameId, 115686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 116686862fbSopenharmony_ci return parseResult == ERR_OK; 117686862fbSopenharmony_ci} 118686862fbSopenharmony_ci 119686862fbSopenharmony_cibool DmsAbilityInfo::ReadFromParcel(Parcel &parcel) 120686862fbSopenharmony_ci{ 121686862fbSopenharmony_ci abilityName = Str16ToStr8(parcel.ReadString16()); 122686862fbSopenharmony_ci 123686862fbSopenharmony_ci int32_t continueTypeSize; 124686862fbSopenharmony_ci READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, continueTypeSize); 125686862fbSopenharmony_ci CONTAINER_SECURITY_VERIFY(parcel, continueTypeSize, &continueType); 126686862fbSopenharmony_ci for (auto i = 0; i < continueTypeSize; i++) { 127686862fbSopenharmony_ci continueType.emplace_back(Str16ToStr8(parcel.ReadString16())); 128686862fbSopenharmony_ci } 129686862fbSopenharmony_ci 130686862fbSopenharmony_ci int32_t continueTypeIdSize; 131686862fbSopenharmony_ci READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, continueTypeIdSize); 132686862fbSopenharmony_ci CONTAINER_SECURITY_VERIFY(parcel, continueTypeIdSize, &continueTypeId); 133686862fbSopenharmony_ci for (auto i = 0; i < continueTypeIdSize; i++) { 134686862fbSopenharmony_ci continueTypeId.emplace_back(parcel.ReadUint8()); 135686862fbSopenharmony_ci } 136686862fbSopenharmony_ci moduleName = Str16ToStr8(parcel.ReadString16()); 137686862fbSopenharmony_ci return true; 138686862fbSopenharmony_ci} 139686862fbSopenharmony_ci 140686862fbSopenharmony_cibool DmsAbilityInfo::Marshalling(Parcel &parcel) const 141686862fbSopenharmony_ci{ 142686862fbSopenharmony_ci parcel.WriteString16(Str8ToStr16(abilityName)); 143686862fbSopenharmony_ci for (auto &ele : continueType) { 144686862fbSopenharmony_ci parcel.WriteString16(Str8ToStr16(ele)); 145686862fbSopenharmony_ci } 146686862fbSopenharmony_ci for (auto &ele : continueTypeId) { 147686862fbSopenharmony_ci parcel.WriteUint8(ele); 148686862fbSopenharmony_ci } 149686862fbSopenharmony_ci parcel.WriteString16(Str8ToStr16(moduleName)); 150686862fbSopenharmony_ci return true; 151686862fbSopenharmony_ci} 152686862fbSopenharmony_ci 153686862fbSopenharmony_ciDmsAbilityInfo *DmsAbilityInfo::Unmarshalling(Parcel &parcel) 154686862fbSopenharmony_ci{ 155686862fbSopenharmony_ci DmsAbilityInfo *info = new (std::nothrow) DmsAbilityInfo(); 156686862fbSopenharmony_ci if (info != nullptr && !info->ReadFromParcel(parcel)) { 157686862fbSopenharmony_ci APP_LOGW("read from parcel failed"); 158686862fbSopenharmony_ci delete info; 159686862fbSopenharmony_ci info = nullptr; 160686862fbSopenharmony_ci } 161686862fbSopenharmony_ci return info; 162686862fbSopenharmony_ci} 163686862fbSopenharmony_ci 164686862fbSopenharmony_civoid to_json(nlohmann::json &jsonObject, const DmsAbilityInfo &dmsAbilityInfo) 165686862fbSopenharmony_ci{ 166686862fbSopenharmony_ci jsonObject = nlohmann::json { 167686862fbSopenharmony_ci {JSON_KEY_DMS_ABILITY_NAME, dmsAbilityInfo.abilityName}, 168686862fbSopenharmony_ci {JSON_KEY_DMS_CONTINUETYPE, dmsAbilityInfo.continueType}, 169686862fbSopenharmony_ci {JSON_KEY_DMS_CONTINUETYPEID, dmsAbilityInfo.continueTypeId}, 170686862fbSopenharmony_ci {JSON_KEY_DMS_MODULENAME, dmsAbilityInfo.moduleName} 171686862fbSopenharmony_ci }; 172686862fbSopenharmony_ci} 173686862fbSopenharmony_ci 174686862fbSopenharmony_civoid from_json(const nlohmann::json &jsonObject, DmsAbilityInfo &dmsAbilityInfo) 175686862fbSopenharmony_ci{ 176686862fbSopenharmony_ci const auto &jsonObjectEnd = jsonObject.end(); 177686862fbSopenharmony_ci int32_t parseResult = ERR_OK; 178686862fbSopenharmony_ci GetValueIfFindKey<std::string>(jsonObject, 179686862fbSopenharmony_ci jsonObjectEnd, 180686862fbSopenharmony_ci JSON_KEY_DMS_ABILITY_NAME, 181686862fbSopenharmony_ci dmsAbilityInfo.abilityName, 182686862fbSopenharmony_ci JsonType::STRING, 183686862fbSopenharmony_ci false, 184686862fbSopenharmony_ci parseResult, 185686862fbSopenharmony_ci ArrayType::NOT_ARRAY); 186686862fbSopenharmony_ci GetValueIfFindKey<std::vector<std::string>>(jsonObject, 187686862fbSopenharmony_ci jsonObjectEnd, 188686862fbSopenharmony_ci JSON_KEY_DMS_CONTINUETYPE, 189686862fbSopenharmony_ci dmsAbilityInfo.continueType, 190686862fbSopenharmony_ci JsonType::ARRAY, 191686862fbSopenharmony_ci false, 192686862fbSopenharmony_ci parseResult, 193686862fbSopenharmony_ci ArrayType::STRING); 194686862fbSopenharmony_ci GetValueIfFindKey<std::vector<uint8_t>>(jsonObject, 195686862fbSopenharmony_ci jsonObjectEnd, 196686862fbSopenharmony_ci JSON_KEY_DMS_CONTINUETYPEID, 197686862fbSopenharmony_ci dmsAbilityInfo.continueTypeId, 198686862fbSopenharmony_ci JsonType::ARRAY, 199686862fbSopenharmony_ci false, 200686862fbSopenharmony_ci parseResult, 201686862fbSopenharmony_ci ArrayType::NUMBER); 202686862fbSopenharmony_ci GetValueIfFindKey<std::string>(jsonObject, 203686862fbSopenharmony_ci jsonObjectEnd, 204686862fbSopenharmony_ci JSON_KEY_DMS_MODULENAME, 205686862fbSopenharmony_ci dmsAbilityInfo.moduleName, 206686862fbSopenharmony_ci JsonType::STRING, 207686862fbSopenharmony_ci false, 208686862fbSopenharmony_ci parseResult, 209686862fbSopenharmony_ci ArrayType::NOT_ARRAY); 210686862fbSopenharmony_ci if (parseResult != ERR_OK) { 211686862fbSopenharmony_ci APP_LOGE("read module moduleInfo from jsonObject error, error code : %{public}d", parseResult); 212686862fbSopenharmony_ci } 213686862fbSopenharmony_ci} 214686862fbSopenharmony_ci 215686862fbSopenharmony_cibool DmsBundleInfo::ReadFromParcel(Parcel &parcel) 216686862fbSopenharmony_ci{ 217686862fbSopenharmony_ci version = parcel.ReadUint32(); 218686862fbSopenharmony_ci versionCode = parcel.ReadUint32(); 219686862fbSopenharmony_ci compatibleVersionCode = parcel.ReadUint32(); 220686862fbSopenharmony_ci minCompatibleVersion = parcel.ReadUint32(); 221686862fbSopenharmony_ci targetVersionCode = parcel.ReadUint32(); 222686862fbSopenharmony_ci bundleName = Str16ToStr8(parcel.ReadString16()); 223686862fbSopenharmony_ci versionName = Str16ToStr8(parcel.ReadString16()); 224686862fbSopenharmony_ci appId = Str16ToStr8(parcel.ReadString16()); 225686862fbSopenharmony_ci enabled = parcel.ReadBool(); 226686862fbSopenharmony_ci bundleNameId = parcel.ReadUint16(); 227686862fbSopenharmony_ci updateTime = parcel.ReadInt64(); 228686862fbSopenharmony_ci developerId = Str16ToStr8(parcel.ReadString16()); 229686862fbSopenharmony_ci uint32_t abilityInfosSize; 230686862fbSopenharmony_ci READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Uint32, parcel, abilityInfosSize); 231686862fbSopenharmony_ci CONTAINER_SECURITY_VERIFY(parcel, abilityInfosSize, &dmsAbilityInfos); 232686862fbSopenharmony_ci for (uint32_t i = 0; i < abilityInfosSize; i++) { 233686862fbSopenharmony_ci std::unique_ptr<DmsAbilityInfo> dmsAbilityInfo(parcel.ReadParcelable<DmsAbilityInfo>()); 234686862fbSopenharmony_ci if (!dmsAbilityInfo) { 235686862fbSopenharmony_ci APP_LOGE("ReadParcelable<DmsAbilityInfo> failed"); 236686862fbSopenharmony_ci return false; 237686862fbSopenharmony_ci } 238686862fbSopenharmony_ci dmsAbilityInfos.emplace_back(*dmsAbilityInfo); 239686862fbSopenharmony_ci } 240686862fbSopenharmony_ci uint32_t userIdArrSize; 241686862fbSopenharmony_ci READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Uint32, parcel, userIdArrSize); 242686862fbSopenharmony_ci CONTAINER_SECURITY_VERIFY(parcel, userIdArrSize, &userIdArr); 243686862fbSopenharmony_ci for (uint32_t i = 0; i < userIdArrSize; i++) { 244686862fbSopenharmony_ci uint8_t userId = parcel.ReadUint8(); 245686862fbSopenharmony_ci userIdArr.emplace_back(userId); 246686862fbSopenharmony_ci } 247686862fbSopenharmony_ci return true; 248686862fbSopenharmony_ci} 249686862fbSopenharmony_ci 250686862fbSopenharmony_cibool DmsBundleInfo::Marshalling(Parcel &parcel) const 251686862fbSopenharmony_ci{ 252686862fbSopenharmony_ci parcel.WriteUint32(version); 253686862fbSopenharmony_ci parcel.WriteUint32(versionCode); 254686862fbSopenharmony_ci parcel.WriteUint32(compatibleVersionCode); 255686862fbSopenharmony_ci parcel.WriteUint32(minCompatibleVersion); 256686862fbSopenharmony_ci parcel.WriteUint32(targetVersionCode); 257686862fbSopenharmony_ci parcel.WriteString16(Str8ToStr16(bundleName)); 258686862fbSopenharmony_ci parcel.WriteString16(Str8ToStr16(versionName)); 259686862fbSopenharmony_ci parcel.WriteString16(Str8ToStr16(appId)); 260686862fbSopenharmony_ci parcel.WriteBool(enabled); 261686862fbSopenharmony_ci parcel.WriteUint16(bundleNameId); 262686862fbSopenharmony_ci parcel.WriteInt64(updateTime); 263686862fbSopenharmony_ci for (auto &dmsAbilityInfo : dmsAbilityInfos) { 264686862fbSopenharmony_ci (parcel).WriteParcelable(&dmsAbilityInfo); 265686862fbSopenharmony_ci } 266686862fbSopenharmony_ci for (auto userId : userIdArr) { 267686862fbSopenharmony_ci (parcel).WriteUint8(userId); 268686862fbSopenharmony_ci } 269686862fbSopenharmony_ci return true; 270686862fbSopenharmony_ci} 271686862fbSopenharmony_ci 272686862fbSopenharmony_ciDmsBundleInfo *DmsBundleInfo::Unmarshalling(Parcel &parcel) 273686862fbSopenharmony_ci{ 274686862fbSopenharmony_ci DmsBundleInfo *info = new (std::nothrow) DmsBundleInfo(); 275686862fbSopenharmony_ci if (info != nullptr && !info->ReadFromParcel(parcel)) { 276686862fbSopenharmony_ci delete info; 277686862fbSopenharmony_ci info = nullptr; 278686862fbSopenharmony_ci } 279686862fbSopenharmony_ci return info; 280686862fbSopenharmony_ci} 281686862fbSopenharmony_ci 282686862fbSopenharmony_cistd::string DmsBundleInfo::ToString() const 283686862fbSopenharmony_ci{ 284686862fbSopenharmony_ci nlohmann::json jsonObject; 285686862fbSopenharmony_ci jsonObject[JSON_KEY_VERSION] = version; 286686862fbSopenharmony_ci jsonObject[AppExecFwk::Constants::BUNDLE_NAME] = bundleName; 287686862fbSopenharmony_ci jsonObject[JSON_KEY_VERSION_CODE] = versionCode; 288686862fbSopenharmony_ci jsonObject[JSON_KEY_VERSION_NAME] = versionName; 289686862fbSopenharmony_ci jsonObject[JSON_KEY_COMPATIBLE_VERSION_CODE] = compatibleVersionCode; 290686862fbSopenharmony_ci jsonObject[JSON_KEY_MIN_COMPATIBLE_VERSION] = minCompatibleVersion; 291686862fbSopenharmony_ci jsonObject[JSON_KEY_TARGET_VERSION_CODE] = targetVersionCode; 292686862fbSopenharmony_ci jsonObject[JSON_KEY_APP_ID] = appId; 293686862fbSopenharmony_ci jsonObject[JSON_KEY_ENABLED] = enabled; 294686862fbSopenharmony_ci jsonObject[JSON_KEY_BUNDLE_NAME_ID] = bundleNameId; 295686862fbSopenharmony_ci jsonObject[JSON_KEY_UPDATE_TIME] = updateTime; 296686862fbSopenharmony_ci jsonObject[JSON_KEY_DEVELOPER_ID] = developerId; 297686862fbSopenharmony_ci jsonObject[JSON_KEY_DMS_ABILITY_INFOS] = dmsAbilityInfos; 298686862fbSopenharmony_ci jsonObject[JSON_KEY_DMS_USERID] = userIdArr; 299686862fbSopenharmony_ci return jsonObject.dump(); 300686862fbSopenharmony_ci} 301686862fbSopenharmony_ci 302686862fbSopenharmony_cibool DmsBundleInfo::FromJsonString(const std::string &jsonString) 303686862fbSopenharmony_ci{ 304686862fbSopenharmony_ci nlohmann::json jsonObject = nlohmann::json::parse(jsonString, nullptr, false); 305686862fbSopenharmony_ci if (jsonObject.is_discarded()) { 306686862fbSopenharmony_ci return false; 307686862fbSopenharmony_ci } 308686862fbSopenharmony_ci 309686862fbSopenharmony_ci const auto &jsonObjectEnd = jsonObject.end(); 310686862fbSopenharmony_ci int32_t parseResult = ERR_OK; 311686862fbSopenharmony_ci GetValueIfFindKey<uint32_t>(jsonObject, jsonObjectEnd, JSON_KEY_VERSION, version, 312686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 313686862fbSopenharmony_ci GetValueIfFindKey<std::string>(jsonObject, jsonObjectEnd, AppExecFwk::Constants::BUNDLE_NAME, bundleName, 314686862fbSopenharmony_ci JsonType::STRING, false, parseResult, ArrayType::NOT_ARRAY); 315686862fbSopenharmony_ci GetValueIfFindKey<uint32_t>(jsonObject, jsonObjectEnd, JSON_KEY_VERSION_CODE, versionCode, 316686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 317686862fbSopenharmony_ci GetValueIfFindKey<uint32_t>(jsonObject, jsonObjectEnd, JSON_KEY_COMPATIBLE_VERSION_CODE, compatibleVersionCode, 318686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 319686862fbSopenharmony_ci GetValueIfFindKey<std::string>(jsonObject, jsonObjectEnd, JSON_KEY_VERSION_NAME, versionName, 320686862fbSopenharmony_ci JsonType::STRING, false, parseResult, ArrayType::NOT_ARRAY); 321686862fbSopenharmony_ci GetValueIfFindKey<uint32_t>(jsonObject, jsonObjectEnd, JSON_KEY_MIN_COMPATIBLE_VERSION, minCompatibleVersion, 322686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 323686862fbSopenharmony_ci GetValueIfFindKey<uint32_t>(jsonObject, jsonObjectEnd, JSON_KEY_TARGET_VERSION_CODE, targetVersionCode, 324686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 325686862fbSopenharmony_ci GetValueIfFindKey<std::string>(jsonObject, jsonObjectEnd, JSON_KEY_APP_ID, appId, 326686862fbSopenharmony_ci JsonType::STRING, false, parseResult, ArrayType::NOT_ARRAY); 327686862fbSopenharmony_ci GetValueIfFindKey<bool>(jsonObject, jsonObjectEnd, JSON_KEY_ENABLED, enabled, 328686862fbSopenharmony_ci JsonType::BOOLEAN, false, parseResult, ArrayType::NOT_ARRAY); 329686862fbSopenharmony_ci GetValueIfFindKey<uint16_t>(jsonObject, jsonObjectEnd, JSON_KEY_BUNDLE_NAME_ID, bundleNameId, 330686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 331686862fbSopenharmony_ci GetValueIfFindKey<int64_t>(jsonObject, jsonObjectEnd, JSON_KEY_UPDATE_TIME, updateTime, 332686862fbSopenharmony_ci JsonType::NUMBER, false, parseResult, ArrayType::NOT_ARRAY); 333686862fbSopenharmony_ci GetValueIfFindKey<std::string>(jsonObject, jsonObjectEnd, JSON_KEY_DEVELOPER_ID, developerId, 334686862fbSopenharmony_ci JsonType::STRING, false, parseResult, ArrayType::NOT_ARRAY); 335686862fbSopenharmony_ci GetValueIfFindKey<std::vector<DmsAbilityInfo>>(jsonObject, jsonObjectEnd, JSON_KEY_DMS_ABILITY_INFOS, 336686862fbSopenharmony_ci dmsAbilityInfos, JsonType::ARRAY, false, parseResult, ArrayType::OBJECT); 337686862fbSopenharmony_ci GetValueIfFindKey<std::vector<uint8_t>>(jsonObject, jsonObjectEnd, JSON_KEY_DMS_USERID, userIdArr, 338686862fbSopenharmony_ci JsonType::ARRAY, false, parseResult, ArrayType::NUMBER); 339686862fbSopenharmony_ci return parseResult == ERR_OK; 340686862fbSopenharmony_ci} 341686862fbSopenharmony_ci} // namespace DistributedSchedule 342686862fbSopenharmony_ci} // namespace OHOS