diff options
author | JackLivio <jack@livio.io> | 2018-08-04 13:02:06 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2018-08-04 13:02:06 -0400 |
commit | f32ad14bf6f0e435433e899fa1381f5990f5c77d (patch) | |
tree | cfc45b2e441a0bb3fb9769a79d66e2b613038f48 | |
parent | cbb261bb92c6b8e156bdcf690ee77ee00bd0adf9 (diff) | |
download | sdl_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.cc | 15 |
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; } |