From 0d579d2a207e049ce9027a435ed0d9a64fed0fe7 Mon Sep 17 00:00:00 2001 From: Tomek Mrugalski Date: Thu, 22 Dec 2016 16:36:28 +0100 Subject: [PATCH] [5039] Element::getMutableMap implemented --- src/bin/dhcp4/json_config_parser.cc | 5 +---- src/bin/dhcp6/json_config_parser.cc | 9 ++------- src/lib/cc/data.cc | 9 +++++++++ src/lib/cc/data.h | 6 ++++++ 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index 6a4c352342..2109c7b8f2 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -567,10 +567,7 @@ configureDhcp4Server(Dhcpv4Srv&, isc::data::ConstElementPtr config_set) { // This is a way to convert ConstElementPtr to ElementPtr. // We need a config that can be edited, because we will insert // default values and will insert derived values as well. - std::map values; - config_set->getValue(values); - ElementPtr mutable_cfg(new MapElement()); - mutable_cfg->setValue(values); + ElementPtr mutable_cfg = Element::getMutableMap(config_set); // Set all default values if not specified by the user. SimpleParser4::setAllDefaults(mutable_cfg); diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index ee9ea6a98e..9a6c8483eb 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -840,10 +840,7 @@ configureDhcp6Server(Dhcpv6Srv&, isc::data::ConstElementPtr config_set) { // This is a way to convert ConstElementPtr to ElementPtr. // We need a config that can be edited, because we will insert // default values and will insert derived values as well. - std::map values; - config_set->getValue(values); - ElementPtr mutable_cfg(new MapElement()); - mutable_cfg->setValue(values); + ElementPtr mutable_cfg = Element::getMutableMap(config_set); SimpleParser6::setAllDefaults(mutable_cfg); @@ -881,9 +878,7 @@ configureDhcp6Server(Dhcpv6Srv&, isc::data::ConstElementPtr config_set) { subnet_parser = parser; } else if (config_pair.first == "lease-database") { leases_parser = parser; - } /* else if (config_pair.first == "option-data") { - option_parser = parser; - } */ else if (config_pair.first == "hooks-libraries") { + } else if (config_pair.first == "hooks-libraries") { // Executing the commit will alter currently loaded hooks // libraries. Check if the supplied libraries are valid, // but defer the commit until after everything else has diff --git a/src/lib/cc/data.cc b/src/lib/cc/data.cc index 89042b9e2e..6430fb6dee 100644 --- a/src/lib/cc/data.cc +++ b/src/lib/cc/data.cc @@ -1079,5 +1079,14 @@ void Element::preprocess(std::istream& in, std::stringstream& out) { } } +ElementPtr Element::getMutableMap(ConstElementPtr& const_map) { + std::map values; + const_map->getValue(values); + ElementPtr mutable_map(new MapElement()); + mutable_map->setValue(values); + + return (mutable_map); +} + } } diff --git a/src/lib/cc/data.h b/src/lib/cc/data.h index f1a08fca40..c4b985689c 100644 --- a/src/lib/cc/data.h +++ b/src/lib/cc/data.h @@ -523,6 +523,12 @@ public: /// \return ElementPtr with the data that is parsed. static ElementPtr fromWire(const std::string& s); //@} + + /// @brief Creates mutable map based on const map + /// + /// @param const_map const map to be used as a donor + /// @return mutable map + static ElementPtr getMutableMap(ConstElementPtr& const_map); }; /// Notes: IntElement type is changed to int64_t. -- 2.47.3