30 if (metadataJsonFileName.isEmpty()) {
35 QJsonDocument jsonDoc;
38 qCWarning(CompInfoGeneralLog) <<
"Metadata json file open failed: compid:" <<
compId <<
errorString;
44 qCWarning(CompInfoGeneralLog) <<
"Metadata json schema validation failed: compid:" <<
compId << schemaError;
47 QJsonObject jsonObj = jsonDoc.object();
49 QList<JsonParsing::KeyValidateInfo> keyInfoList = {
51 { _jsonMetadataTypesKey, QJsonValue::Array,
true },
54 qCWarning(CompInfoGeneralLog) <<
"Metadata json validation failed: compid:" <<
compId <<
errorString;
60 qCWarning(CompInfoGeneralLog) <<
"Metadata json unsupported version" << version;
64 QJsonArray rgSupportedTypes = jsonObj[_jsonMetadataTypesKey].toArray();
65 for (QJsonValue typeValue : rgSupportedTypes) {
66 int metadataType = typeValue[
"type"].toInt(-1);
67 if (metadataType == -1)
70 uris.uriMetaData = typeValue[
"uri"].toString();
71 uris.crcMetaData = typeValue[
"fileCrc"].toVariant().toLongLong();
72 uris.crcMetaDataValid = typeValue.toObject().contains(
"fileCrc");
73 uris.uriMetaDataFallback = typeValue[
"uriFallback"].toString();
74 uris.crcMetaDataFallback = typeValue[
"fileCrcFallback"].toVariant().toLongLong();
75 uris.crcMetaDataFallbackValid = typeValue.toObject().contains(
"fileCrcFallback");
76 uris.uriTranslation = typeValue[
"translationUri"].toString();
77 uris.uriTranslationFallback = typeValue[
"translationUriFallback"].toString();
79 if (uris.uriMetaData.isEmpty() || !uris.crcMetaDataValid) {
82 qCDebug(CompInfoGeneralLog) <<
"Metadata missing fields: type:uri:crcValid" << metadataType <<
83 uris.uriMetaData << uris.crcMetaDataValid;
87 _supportedTypes[(COMP_METADATA_TYPE)metadataType] = uris;
88 qCDebug(CompInfoGeneralLog) <<
"Metadata type : uri : crc" << metadataType << uris.uriMetaData << uris.crcMetaData;
bool validateKeys(const QJsonObject &jsonObject, const QList< KeyValidateInfo > &keyInfo, QString &errorString)
Validates that all required keys are present and that listed keys have the expected type.
bool isJsonFile(const QByteArray &bytes, QJsonDocument &jsonDoc, QString &errorString)
Determines whether an in-memory byte buffer contains parseable JSON content.