summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/src/object_schema_item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/smart_objects/src/object_schema_item.cc')
-rw-r--r--src/components/smart_objects/src/object_schema_item.cc40
1 files changed, 23 insertions, 17 deletions
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc
index 8f572e427..f2cc3eac4 100644
--- a/src/components/smart_objects/src/object_schema_item.cc
+++ b/src/components/smart_objects/src/object_schema_item.cc
@@ -87,25 +87,14 @@ Errors::eType CObjectSchemaItem::validate(const SmartObject& object) {
return Errors::OK;
}
-void CObjectSchemaItem::applySchema(SmartObject& Object) {
+void CObjectSchemaItem::applySchema(SmartObject& Object,
+ const bool RemoveFakeParameters) {
if (SmartType_Map != Object.getType()) {
return;
}
- for (SmartMap::const_iterator it = Object.map_begin(); it != Object.map_end(); ) {
- const std::string& key = it->first;
- if (mMembers.end() == mMembers.find(key)
- // FIXME(EZamakhov): Remove illegal usage of filed in AM
- && key.compare(connection_key) != 0
- && key.compare(binary_data) != 0
- && key.compare(app_id) != 0
- ) {
- ++it;
- // FIXME(DK): remove fake params. There are error responses with params
- // Object.erase(key);
- } else {
- it++;
- }
+ if (RemoveFakeParameters) {
+ RemoveFakeParams(Object);
}
SmartObject default_value;
@@ -115,10 +104,10 @@ void CObjectSchemaItem::applySchema(SmartObject& Object) {
if (!Object.keyExists(key)) {
if (member.mSchemaItem->setDefaultValue(default_value)) {
Object[key] = default_value;
- member.mSchemaItem->applySchema(Object[key]);
+ member.mSchemaItem->applySchema(Object[key], RemoveFakeParameters);
}
} else {
- member.mSchemaItem->applySchema(Object[key]);
+ member.mSchemaItem->applySchema(Object[key], RemoveFakeParameters);
}
}
}
@@ -169,5 +158,22 @@ size_t CObjectSchemaItem::GetMemberSize() {
CObjectSchemaItem::CObjectSchemaItem(const Members& members)
: mMembers(members) {}
+void CObjectSchemaItem::RemoveFakeParams(SmartObject& Object) {
+ for (SmartMap::const_iterator it = Object.map_begin(); it != Object.map_end(); ) {
+ const std::string& key = it->first;
+ if (mMembers.end() == mMembers.find(key)
+ // FIXME(EZamakhov): Remove illegal usage of filed in AM
+ && key.compare(connection_key) != 0
+ && key.compare(binary_data) != 0
+ && key.compare(app_id) != 0
+ ) {
+ ++it;
+ Object.erase(key);
+ } else {
+ it++;
+ }
+ }
+}
+
} // namespace NsSmartObjects
} // namespace NsSmartDeviceLink