summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/src/object_schema_item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/smart_objects/src/object_schema_item.cc')
-rw-r--r--src/components/smart_objects/src/object_schema_item.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc
index f0c17faaea..2bed3d9a26 100644
--- a/src/components/smart_objects/src/object_schema_item.cc
+++ b/src/components/smart_objects/src/object_schema_item.cc
@@ -57,7 +57,18 @@ utils::SharedPtr<CObjectSchemaItem> CObjectSchemaItem::create(
}
Errors::eType CObjectSchemaItem::validate(const SmartObject& object) {
+ rpc::ValidationReport report("RPC");
+ return validate(object, &report);
+}
+
+Errors::eType CObjectSchemaItem::validate(const SmartObject& object,
+ rpc::ValidationReport* report__) {
if (SmartType_Map != object.getType()) {
+ std::string validation_info = "Incorrect type, expected: " +
+ SmartObject::typeToString(SmartType_Map) +
+ ", got: " +
+ SmartObject::typeToString(object.getType());
+ report__->set_validation_info(validation_info);
return Errors::INVALID_VALUE;
}
@@ -71,12 +82,15 @@ Errors::eType CObjectSchemaItem::validate(const SmartObject& object) {
std::set<std::string>::const_iterator key_it = object_keys.find(key);
if (object_keys.end() == key_it) {
if (member.mIsMandatory) {
+ std::string validation_info = "Missing mandatory parameter: " + key;
+ report__->set_validation_info(validation_info);
return Errors::MISSING_MANDATORY_PARAMETER;
}
continue;
}
const SmartObject& field = object.getElement(key);
- const Errors::eType result = member.mSchemaItem->validate(field);
+ const Errors::eType result =
+ member.mSchemaItem->validate(field, &report__->ReportSubobject(key));
if (Errors::OK != result) {
return result;
}