summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/include/smart_objects/number_schema_item.h
diff options
context:
space:
mode:
authorJacob Keeler <jacob.keeler@livioradio.com>2017-05-04 12:18:40 -0400
committerJacob Keeler <jacob.keeler@livioradio.com>2017-05-04 12:18:40 -0400
commit884e897941a600c11b7fcfa3d8cf59ce15eb3571 (patch)
tree1d5b0d1abbdcdd7c2661a59b3c10b6110fbf53a3 /src/components/smart_objects/include/smart_objects/number_schema_item.h
parentdc9732721e1690159fb56e0b5f5e9d643c9a9d44 (diff)
downloadsdl_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.h31
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;