class YangDefaultDecorator()

in common/configdb.h [280:328]


    class YangDefaultDecorator(object):
        def __init__(self, config_db_connector):
            self.connector = config_db_connector
            self.default_value_provider = DefaultValueProvider()
        # helper methods for append default values to result.
        def _append_default_value(self, table, key, data):
            if data is None or len(data) == 0:
                # empty entry means the entry been deleted
                return data
            serialized_key = self.connector.serialize_key(key)
            defaultValues = self.default_value_provider.getDefaultValues(table, serialized_key)
            for field in defaultValues:
                if field not in data:
                    data[field] = defaultValues[field]
        # override read APIs
        def new_get_entry(self, table, key):
            result = self.connector.get_entry(table, key)
            self._append_default_value(table, key, result)
            return result
        def new_get_table(self, table):
            result = self.connector.get_table(table)
            for key in result:
                self._append_default_value(table, key, result[key])
            return result
        def new_get_config(self):
            result = self.connector.get_config()
            for table in result:
                for key in result[table]:
                    # Can not pass result[table][key] as parameter here, because python will create a copy. re-assign entry to result to bypass this issue.
                    entry = result[table][key]
                    self._append_default_value(table, key, entry)
                    result[table][key] = entry
            return result
        def __getattr__(self, name):
            if name == "get_entry":
                return self.new_get_entry
            elif name == "get_table":
                return self.new_get_table
            elif name == "get_config":
                return self.new_get_config

            originalMethod = self.connector.__getattribute__(name)
            return originalMethod

%}
#endif

class ConfigDBPipeConnector_Native: public ConfigDBConnector_Native
{