summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-08-04 13:02:06 -0400
committerJackLivio <jack@livio.io>2018-08-04 13:02:06 -0400
commitf32ad14bf6f0e435433e899fa1381f5990f5c77d (patch)
treecfc45b2e441a0bb3fb9769a79d66e2b613038f48
parentcbb261bb92c6b8e156bdcf690ee77ee00bd0adf9 (diff)
downloadsdl_core-f32ad14bf6f0e435433e899fa1381f5990f5c77d.tar.gz
Validate correct history item
This is needed in case there are history changes to signature items such as maxLength, maxValue, or default value. Validation will be called for the shcema item with the correct history based on the message version.
-rw-r--r--src/components/smart_objects/src/object_schema_item.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc
index c17a2221db..f9d4f587c5 100644
--- a/src/components/smart_objects/src/object_schema_item.cc
+++ b/src/components/smart_objects/src/object_schema_item.cc
@@ -211,8 +211,19 @@ Errors::eType CObjectSchemaItem::validate(const SmartObject& object,
continue;
}
const SmartObject& field = object.getElement(key);
- const Errors::eType result =
- member.mSchemaItem->validate(field, &report__->ReportSubobject(key), MessageVersion);
+
+ Errors::eType result = Errors::OK;
+ // Check if MessageVersion matches schema version
+ if (member.CheckHistoryFieldVersion(MessageVersion) || member.mHistoryVector.empty()) {
+ result = member.mSchemaItem->validate(field, &report__->ReportSubobject(key), MessageVersion);
+ } else if(member.mHistoryVector.size() > 0){ //Check for history
+ for (uint i=0; i<member.mHistoryVector.size(); i++) {
+ if(member.mHistoryVector[i].CheckHistoryFieldVersion(MessageVersion)) {
+ //Found the correct history schema. Call validate
+ result = member.mHistoryVector[i].mSchemaItem->validate(field, &report__->ReportSubobject(key), MessageVersion);
+ }
+ }
+ }
if (Errors::OK != result) {
return result;
}