summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/include/smart_objects/enum_schema_item.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/smart_objects/include/smart_objects/enum_schema_item.h')
-rw-r--r--src/components/smart_objects/include/smart_objects/enum_schema_item.h39
1 files changed, 17 insertions, 22 deletions
diff --git a/src/components/smart_objects/include/smart_objects/enum_schema_item.h b/src/components/smart_objects/include/smart_objects/enum_schema_item.h
index 2c0ae53aed..dbc40b9131 100644
--- a/src/components/smart_objects/include/smart_objects/enum_schema_item.h
+++ b/src/components/smart_objects/include/smart_objects/enum_schema_item.h
@@ -68,19 +68,18 @@ class TEnumSchemaItem : public CDefaultSchemaItem<EnumType> {
* @deprecated
* @brief Validate smart object.
* @param Object Object to validate.
- * @return Errors::ERROR
+ * @return NsSmartObjects::Errors::eType
**/
// DEPRECATED
Errors::eType validate(const SmartObject& Object) OVERRIDE;
/**
* @brief Validate smart object.
* @param Object Object to validate.
- * @param errorMessage string reference to be filled with an appropriate error
- *message if an error occurs
- * @return Errors::ERROR
+ * @param report__ object for reporting errors during validation
+ * @return NsSmartObjects::Errors::eType
**/
Errors::eType validate(const SmartObject& Object,
- std::string& errorMessage) OVERRIDE;
+ rpc::ValidationReport* report__) OVERRIDE;
/**
* @brief Apply schema.
* This implementation checks if enumeration is represented as string
@@ -218,36 +217,32 @@ utils::SharedPtr<TEnumSchemaItem<EnumType> > TEnumSchemaItem<EnumType>::create(
template <typename EnumType>
Errors::eType TEnumSchemaItem<EnumType>::validate(const SmartObject& Object) {
- std::string errorMessage;
- return validate(Object, errorMessage);
+ rpc::ValidationReport report("RPC");
+ return validate(Object, &report);
}
template <typename EnumType>
-Errors::eType TEnumSchemaItem<EnumType>::validate(const SmartObject& Object,
- std::string& errorMessage) {
+Errors::eType TEnumSchemaItem<EnumType>::validate(
+ const SmartObject& Object, rpc::ValidationReport* report__) {
if (SmartType_Integer != Object.getType()) {
- if (!Object.getKey().empty()) {
- errorMessage.assign("Validation failed for " + Object.getKey() + ". ");
- }
-
+ std::string validation_info;
if (SmartType_String == Object.getType()) {
- errorMessage += "Invalid enum value: " + Object.asString();
+ validation_info = "Invalid enum value: " + Object.asString();
} else {
- errorMessage += "Incorrect type, expected: " +
- SmartObject::typeToString(SmartType_Integer) +
- " (enum), got: " +
- SmartObject::typeToString(Object.getType());
+ validation_info = "Incorrect type, expected: " +
+ SmartObject::typeToString(SmartType_Integer) +
+ " (enum), got: " +
+ SmartObject::typeToString(Object.getType());
}
+ report__->set_validation_info(validation_info);
return Errors::INVALID_VALUE;
}
if (mAllowedElements.find(static_cast<EnumType>(Object.asInt())) ==
mAllowedElements.end()) {
- if (!Object.getKey().empty()) {
- errorMessage.assign("Validation failed for " + Object.getKey() + ". ");
- }
std::stringstream stream;
stream << "Invalid enum value: " << Object.asInt();
- errorMessage += stream.str();
+ std::string validation_info = stream.str();
+ report__->set_validation_info(validation_info);
return Errors::OUT_OF_RANGE;
}
return Errors::OK;