summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/src/array_schema_item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/smart_objects/src/array_schema_item.cc')
-rw-r--r--src/components/smart_objects/src/array_schema_item.cc28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/components/smart_objects/src/array_schema_item.cc b/src/components/smart_objects/src/array_schema_item.cc
index 105cacb25c..ad341d9b49 100644
--- a/src/components/smart_objects/src/array_schema_item.cc
+++ b/src/components/smart_objects/src/array_schema_item.cc
@@ -41,23 +41,47 @@ utils::SharedPtr<CArraySchemaItem> CArraySchemaItem::create(
return new CArraySchemaItem(ElementSchemaItem, MinSize, MaxSize);
}
-Errors::eType CArraySchemaItem::validate(const SmartObject& Object) {
+Errors::eType CArraySchemaItem::validate(const SmartObject& Object,
+ std::string& errorMessage) {
if (SmartType_Array != Object.getType()) {
+ if (!Object.getKey().empty()) {
+ errorMessage.assign("Validation failed for \"" + Object.getKey() +
+ "\". ");
+ }
+ errorMessage += "Incorrect type, expected: " +
+ SmartObject::typeToString(SmartType_Array) + ", got: " +
+ SmartObject::typeToString(Object.getType());
return Errors::INVALID_VALUE;
}
size_t sizeLimit;
const size_t array_len = Object.length();
if (mMinSize.getValue(sizeLimit) && (array_len < sizeLimit)) {
+ if (!Object.getKey().empty()) {
+ errorMessage.assign("Validation failed for \"" + Object.getKey() +
+ "\". ");
+ }
+ std::stringstream stream;
+ stream << "Got array of size: " << array_len
+ << ", minimum allowed: " << sizeLimit;
+ errorMessage += stream.str();
return Errors::OUT_OF_RANGE;
}
if (mMaxSize.getValue(sizeLimit) && (array_len > sizeLimit)) {
+ if (!Object.getKey().empty()) {
+ errorMessage.assign("Validation failed for \"" + Object.getKey() +
+ "\". ");
+ }
+ std::stringstream stream;
+ stream << "Got array of size: " << array_len
+ << ", maximum allowed: " << sizeLimit;
+ errorMessage += stream.str();
return Errors::OUT_OF_RANGE;
}
for (size_t i = 0u; i < array_len; ++i) {
const Errors::eType result =
- mElementSchemaItem->validate(Object.getElement(i));
+ mElementSchemaItem->validate(Object.getElement(i), errorMessage);
if (Errors::OK != result) {
return result;
}