Browse Source

[5039] Element::getMutableMap implemented

Tomek Mrugalski 8 years ago
parent
commit
0d579d2a20

+ 1 - 4
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.
         // This is a way to convert ConstElementPtr to ElementPtr.
         // We need a config that can be edited, because we will insert
         // We need a config that can be edited, because we will insert
         // default values and will insert derived values as well.
         // default values and will insert derived values as well.
-        std::map<std::string, ConstElementPtr> 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.
         // Set all default values if not specified by the user.
         SimpleParser4::setAllDefaults(mutable_cfg);
         SimpleParser4::setAllDefaults(mutable_cfg);

+ 2 - 7
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.
         // This is a way to convert ConstElementPtr to ElementPtr.
         // We need a config that can be edited, because we will insert
         // We need a config that can be edited, because we will insert
         // default values and will insert derived values as well.
         // default values and will insert derived values as well.
-        std::map<std::string, ConstElementPtr> 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);
         SimpleParser6::setAllDefaults(mutable_cfg);
 
 
@@ -881,9 +878,7 @@ configureDhcp6Server(Dhcpv6Srv&, isc::data::ConstElementPtr config_set) {
                 subnet_parser = parser;
                 subnet_parser = parser;
             } else if (config_pair.first == "lease-database") {
             } else if (config_pair.first == "lease-database") {
                 leases_parser = parser;
                 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
                 // Executing the commit will alter currently loaded hooks
                 // libraries. Check if the supplied libraries are valid,
                 // libraries. Check if the supplied libraries are valid,
                 // but defer the commit until after everything else has
                 // but defer the commit until after everything else has

+ 9 - 0
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<std::string, ConstElementPtr> values;
+    const_map->getValue(values);
+    ElementPtr mutable_map(new MapElement());
+    mutable_map->setValue(values);
+
+    return (mutable_map);
+}
+
 }
 }
 }
 }

+ 6 - 0
src/lib/cc/data.h

@@ -523,6 +523,12 @@ public:
     /// \return ElementPtr with the data that is parsed.
     /// \return ElementPtr with the data that is parsed.
     static ElementPtr fromWire(const std::string& s);
     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.
 /// Notes: IntElement type is changed to int64_t.