diff options
author | Jacob Keeler <jacob.keeler@livioradio.com> | 2017-05-04 12:18:40 -0400 |
---|---|---|
committer | Jacob Keeler <jacob.keeler@livioradio.com> | 2017-05-04 12:18:40 -0400 |
commit | 884e897941a600c11b7fcfa3d8cf59ce15eb3571 (patch) | |
tree | 1d5b0d1abbdcdd7c2661a59b3c10b6110fbf53a3 /src/components/smart_objects/include/smart_objects/number_schema_item.h | |
parent | dc9732721e1690159fb56e0b5f5e9d643c9a9d44 (diff) | |
download | sdl_core-884e897941a600c11b7fcfa3d8cf59ce15eb3571.tar.gz |
Invalid data responses now return useful error messages in `info` field
Diffstat (limited to 'src/components/smart_objects/include/smart_objects/number_schema_item.h')
-rw-r--r-- | src/components/smart_objects/include/smart_objects/number_schema_item.h | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/components/smart_objects/include/smart_objects/number_schema_item.h b/src/components/smart_objects/include/smart_objects/number_schema_item.h index 01d6c08daa..70e75938ed 100644 --- a/src/components/smart_objects/include/smart_objects/number_schema_item.h +++ b/src/components/smart_objects/include/smart_objects/number_schema_item.h @@ -69,7 +69,8 @@ class TNumberSchemaItem : public CDefaultSchemaItem<NumberType> { * @param Object Object to validate. * @return NsSmartObjects::Errors::eType **/ - Errors::eType validate(const SmartObject& Object) OVERRIDE; + Errors::eType validate(const SmartObject& Object, + std::string& errorMessage) OVERRIDE; private: /** @@ -127,8 +128,18 @@ bool TNumberSchemaItem<NumberType>::isValidNumberType(SmartType type) { template <typename NumberType> Errors::eType TNumberSchemaItem<NumberType>::validate( - const SmartObject& Object) { + const SmartObject& Object, std::string& errorMessage) { if (!isValidNumberType(Object.getType())) { + if (!Object.getKey().empty()) { + errorMessage.assign("Validation failed for \"" + Object.getKey() + + "\". "); + } + SmartType expectedType = (typeid(double) == typeid(Object.getType())) + ? SmartType_Double + : SmartType_Integer; + errorMessage += "Incorrect type, expected: " + + SmartObject::typeToString(expectedType) + ", got: " + + SmartObject::typeToString(Object.getType()); return Errors::INVALID_VALUE; } NumberType value(0); @@ -148,10 +159,26 @@ Errors::eType TNumberSchemaItem<NumberType>::validate( NumberType rangeLimit; if (mMinValue.getValue(rangeLimit) && (value < rangeLimit)) { + if (!Object.getKey().empty()) { + errorMessage.assign("Validation failed for \"" + Object.getKey() + + "\". "); + } + std::stringstream stream; + stream << "Value too small, got: " << value + << ", minimum allowed: " << rangeLimit; + errorMessage += stream.str(); return Errors::OUT_OF_RANGE; } if (mMaxValue.getValue(rangeLimit) && (value > rangeLimit)) { + if (!Object.getKey().empty()) { + errorMessage.assign("Validation failed for \"" + Object.getKey() + + "\". "); + } + std::stringstream stream; + stream << "Value too large, got: " << value + << ", maximum allowed: " << rangeLimit; + errorMessage += stream.str(); return Errors::OUT_OF_RANGE; } return Errors::OK; |