diff --git a/libguh-core/jsonrpc/jsonrpcserver.cpp b/libguh-core/jsonrpc/jsonrpcserver.cpp index 25060cbd..d3bca640 100644 --- a/libguh-core/jsonrpc/jsonrpcserver.cpp +++ b/libguh-core/jsonrpc/jsonrpcserver.cpp @@ -559,8 +559,8 @@ QString JsonRPCServer::formatAssertion(const QString &targetNamespace, const QSt QJsonDocument doc2 = QJsonDocument::fromVariant(data); return QString("\nMethod: %1\nTemplate: %2\nValue: %3") .arg(targetNamespace + "." + method) - .arg(QString(doc.toJson(QJsonDocument::Compact))) - .arg(QString(doc2.toJson(QJsonDocument::Compact))); + .arg(QString(doc.toJson(QJsonDocument::Indented))) + .arg(QString(doc2.toJson(QJsonDocument::Indented))); } void JsonRPCServer::sendNotification(const QVariantMap ¶ms) diff --git a/libguh-core/jsonrpc/jsontypes.cpp b/libguh-core/jsonrpc/jsontypes.cpp index b530288f..5ce22077 100644 --- a/libguh-core/jsonrpc/jsontypes.cpp +++ b/libguh-core/jsonrpc/jsontypes.cpp @@ -152,6 +152,7 @@ void JsonTypes::init() // ParamType s_paramType.insert("id", basicTypeToString(Uuid)); s_paramType.insert("name", basicTypeToString(String)); + s_paramType.insert("displayName", basicTypeToString(String)); s_paramType.insert("type", basicTypeRef()); s_paramType.insert("index", basicTypeToString(Int)); s_paramType.insert("o:defaultValue", basicTypeToString(Variant)); @@ -185,6 +186,7 @@ void JsonTypes::init() // StateType s_stateType.insert("id", basicTypeToString(Uuid)); s_stateType.insert("name", basicTypeToString(String)); + s_stateType.insert("displayName", basicTypeToString(String)); s_stateType.insert("type", basicTypeRef()); s_stateType.insert("index", basicTypeToString(Int)); s_stateType.insert("defaultValue", basicTypeToString(Variant)); @@ -214,6 +216,7 @@ void JsonTypes::init() // EventType s_eventType.insert("id", basicTypeToString(Uuid)); s_eventType.insert("name", basicTypeToString(String)); + s_eventType.insert("displayName", basicTypeToString(String)); s_eventType.insert("index", basicTypeToString(Int)); s_eventType.insert("paramTypes", QVariantList() << paramTypeRef()); s_eventType.insert("o:ruleRelevant", basicTypeToString(Bool)); @@ -231,7 +234,8 @@ void JsonTypes::init() // ActionType s_actionType.insert("id", basicTypeToString(Uuid)); - s_actionType.insert("name", basicTypeToString(Uuid)); + s_actionType.insert("name", basicTypeToString(String)); + s_actionType.insert("displayName", basicTypeToString(String)); s_actionType.insert("index", basicTypeToString(Int)); s_actionType.insert("paramTypes", QVariantList() << paramTypeRef()); @@ -243,17 +247,20 @@ void JsonTypes::init() // Pugin s_plugin.insert("id", basicTypeToString(Uuid)); s_plugin.insert("name", basicTypeToString(String)); + s_plugin.insert("displayName", basicTypeToString(String)); s_plugin.insert("paramTypes", QVariantList() << paramTypeRef()); // Vendor s_vendor.insert("id", basicTypeToString(Uuid)); s_vendor.insert("name", basicTypeToString(String)); + s_vendor.insert("displayName", basicTypeToString(String)); // DeviceClass s_deviceClass.insert("id", basicTypeToString(Uuid)); s_deviceClass.insert("vendorId", basicTypeToString(Uuid)); s_deviceClass.insert("pluginId", basicTypeToString(Uuid)); s_deviceClass.insert("name", basicTypeToString(String)); + s_deviceClass.insert("displayName", basicTypeToString(String)); s_deviceClass.insert("deviceIcon", deviceIconRef()); s_deviceClass.insert("interfaces", QVariantList() << basicTypeToString(String)); s_deviceClass.insert("basicTags", QVariantList() << basicTagRef()); @@ -462,6 +469,7 @@ QVariantMap JsonTypes::packEventType(const EventType &eventType) QVariantMap variant; variant.insert("id", eventType.id()); variant.insert("name", eventType.name()); + variant.insert("displayName", eventType.displayName()); variant.insert("index", eventType.index()); if (!eventType.ruleRelevant()) variant.insert("ruleRelevant", false); @@ -511,6 +519,7 @@ QVariantMap JsonTypes::packActionType(const ActionType &actionType) QVariantMap variantMap; variantMap.insert("id", actionType.id()); variantMap.insert("name", actionType.name()); + variantMap.insert("displayName", actionType.displayName()); variantMap.insert("index", actionType.index()); QVariantList paramTypes; foreach (const ParamType ¶mType, actionType.paramTypes()) @@ -578,6 +587,7 @@ QVariantMap JsonTypes::packStateType(const StateType &stateType) QVariantMap variantMap; variantMap.insert("id", stateType.id()); variantMap.insert("name", stateType.name()); + variantMap.insert("displayName", stateType.displayName()); variantMap.insert("index", stateType.index()); variantMap.insert("type", basicTypeToString(stateType.type())); variantMap.insert("defaultValue", stateType.defaultValue()); @@ -659,6 +669,7 @@ QVariantMap JsonTypes::packParamType(const ParamType ¶mType) QVariantMap variantMap; variantMap.insert("id", paramType.id().toString()); variantMap.insert("name", paramType.name()); + variantMap.insert("displayName", paramType.displayName()); variantMap.insert("type", basicTypeToString(paramType.type())); variantMap.insert("index", paramType.index()); @@ -693,6 +704,7 @@ QVariantMap JsonTypes::packVendor(const Vendor &vendor) QVariantMap variantMap; variantMap.insert("id", vendor.id()); variantMap.insert("name", vendor.name()); + variantMap.insert("displayName", vendor.displayName()); return variantMap; } @@ -700,8 +712,9 @@ QVariantMap JsonTypes::packVendor(const Vendor &vendor) QVariantMap JsonTypes::packDeviceClass(const DeviceClass &deviceClass) { QVariantMap variant; - variant.insert("name", deviceClass.name()); variant.insert("id", deviceClass.id().toString()); + variant.insert("name", deviceClass.name()); + variant.insert("displayName", deviceClass.displayName()); variant.insert("vendorId", deviceClass.vendorId().toString()); variant.insert("pluginId", deviceClass.pluginId().toString()); variant.insert("deviceIcon", s_deviceIcon.at(deviceClass.deviceIcon())); @@ -757,6 +770,7 @@ QVariantMap JsonTypes::packPlugin(DevicePlugin *plugin) QVariantMap pluginMap; pluginMap.insert("id", plugin->pluginId()); pluginMap.insert("name", plugin->pluginName()); + pluginMap.insert("displayName", plugin->pluginDisplayName()); QVariantList params; foreach (const ParamType ¶m, plugin->configurationDescription()) @@ -1581,7 +1595,9 @@ QPair JsonTypes::validateMap(const QVariantMap &templateMap, cons if (map.contains(strippedKey)) { QPair result = validateVariant(templateMap.value(key), map.value(strippedKey)); if (!result.first) { - qCWarning(dcJsonRpc) << "Object not matching template" << templateMap.value(key) << map.value(strippedKey); + QJsonDocument templateDoc = QJsonDocument::fromVariant(templateMap.value(key)); + QJsonDocument mapDoc = QJsonDocument::fromVariant(map.value(strippedKey)); + qCWarning(dcJsonRpc).nospace() << "Object\n" << qUtf8Printable(mapDoc.toJson(QJsonDocument::Indented)) << "not matching template\n" << qUtf8Printable(templateDoc.toJson(QJsonDocument::Indented)); return result; } } diff --git a/libguh/plugin/deviceplugin.cpp b/libguh/plugin/deviceplugin.cpp index f6e5caaf..05551f1a 100644 --- a/libguh/plugin/deviceplugin.cpp +++ b/libguh/plugin/deviceplugin.cpp @@ -620,8 +620,13 @@ void DevicePlugin::loadMetaData() } QVariant::Type t = QVariant::nameToType(st.value("type").toString().toLatin1().data()); + if (t == QVariant::Invalid) { + qCWarning(dcDeviceManager()) << "Invalid StateType type:" << st.value("type").toString(); + broken = true; + break; + } StateType stateType(st.value("id").toString()); - stateType.setName(m_metaData.value("name").toString()); + stateType.setName(st.value("name").toString()); stateType.setDisplayName(translateValue(m_metaData.value("name").toString(), st.value("displayName").toString())); stateType.setIndex(index++); stateType.setType(t); @@ -670,7 +675,7 @@ void DevicePlugin::loadMetaData() if (st.contains("eventRuleRelevant")) eventType.setRuleRelevant(st.value("eventRuleRelevant").toBool()); - eventType.setName(m_metaData.value("name").toString()); + eventType.setName(st.value("name").toString()); eventType.setDisplayName(translateValue(m_metaData.value("name").toString(), st.value("displayNameEvent").toString())); ParamType paramType(ParamTypeId(stateType.id().toString()), st.value("name").toString(), stateType.type()); paramType.setDisplayName(translateValue(m_metaData.value("name").toString(), st.value("displayName").toString())); @@ -686,7 +691,7 @@ void DevicePlugin::loadMetaData() // ActionTypes for writeable StateTypes if (writableState) { ActionType actionType(ActionTypeId(stateType.id().toString())); - actionType.setName(m_metaData.value("name").toString()); + actionType.setName(stateType.name()); actionType.setDisplayName(translateValue(m_metaData.value("name").toString(), st.value("displayNameAction").toString())); actionType.setIndex(stateType.index()); actionType.setParamTypes(QList() << paramType); @@ -707,7 +712,7 @@ void DevicePlugin::loadMetaData() } ActionType actionType(at.value("id").toString()); - actionType.setName(m_metaData.value("name").toString()); + actionType.setName(at.value("name").toString()); actionType.setDisplayName(translateValue(m_metaData.value("name").toString(), at.value("displayName").toString())); actionType.setIndex(index++); QPair > paramVerification = parseParamTypes(at.value("paramTypes").toArray()); @@ -734,8 +739,8 @@ void DevicePlugin::loadMetaData() } EventType eventType(et.value("id").toString()); - eventType.setName(m_metaData.value("name").toString()); - eventType.setDisplayName(translateValue(m_metaData.value("name").toString(), translateValue(m_metaData.value("displayName").toString(), et.value("name").toString()))); + eventType.setName(et.value("name").toString()); + eventType.setDisplayName(translateValue(m_metaData.value("name").toString(), et.value("displayName").toString())); eventType.setIndex(index++); if (et.contains("ruleRelevant")) eventType.setRuleRelevant(et.value("ruleRelevant").toBool());