Merge "Minor fixes in md-sal and config."
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / mapping / config / InstanceConfigElementResolved.java
index 6624fc182ebf09021500856bf6bd72cd676a6214..0bb4191bf2f33817d4bd395e3f29c0110139835b 100644 (file)
@@ -9,6 +9,7 @@
 package org.opendaylight.controller.netconf.confignetconfconnector.mapping.config;
 
 import com.google.common.base.Preconditions;
+import com.google.common.collect.Multimap;
 import org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.fromxml.AttributeConfigElement;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfigStrategy;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfigXmlParser;
@@ -24,35 +25,40 @@ public class InstanceConfigElementResolved {
 
     private final EditStrategyType editStrategy;
     private final Map<String, AttributeConfigElement> configuration;
+    private final Multimap<String, String> providedServices;
 
-    public InstanceConfigElementResolved(String strat, Map<String, AttributeConfigElement> configuration) {
-        EditStrategyType valueOf = checkStrategy(strat);
+    public InstanceConfigElementResolved(String currentStrategy, Map<String, AttributeConfigElement> configuration, EditStrategyType defaultStrategy, Multimap<String, String> providedServices) {
+        EditStrategyType valueOf = parseStrategy(currentStrategy, defaultStrategy);
         this.editStrategy = valueOf;
         this.configuration = configuration;
+        this.providedServices = providedServices;
     }
 
-    EditStrategyType checkStrategy(String strat) {
-        EditStrategyType valueOf = EditStrategyType.valueOf(strat);
-        if (EditStrategyType.defaultStrategy().isEnforcing()) {
+    public InstanceConfigElementResolved(Map<String, AttributeConfigElement> configuration, EditStrategyType defaultStrategy, Multimap<String, String> providedServices) {
+        editStrategy = defaultStrategy;
+        this.configuration = configuration;
+        this.providedServices = providedServices;
+    }
+
+
+    static EditStrategyType parseStrategy(String currentStrategy, EditStrategyType defaultStrategy) {
+        EditStrategyType parsedStrategy = EditStrategyType.valueOf(currentStrategy);
+        if (defaultStrategy.isEnforcing()) {
             Preconditions
                     .checkArgument(
-                            valueOf == EditStrategyType.defaultStrategy(),
+                            parsedStrategy == defaultStrategy,
                             "With "
-                                    + EditStrategyType.defaultStrategy()
+                                    + defaultStrategy
                                     + " as "
                                     + EditConfigXmlParser.DEFAULT_OPERATION_KEY
                                     + " operations on module elements are not permitted since the default option is restrictive");
         }
-        return valueOf;
+        return parsedStrategy;
     }
 
-    public InstanceConfigElementResolved(Map<String, AttributeConfigElement> configuration) {
-        editStrategy = EditStrategyType.defaultStrategy();
-        this.configuration = configuration;
-    }
 
     public EditConfigStrategy getEditStrategy() {
-        return editStrategy.getFittingStrategy();
+        return editStrategy.getFittingStrategy(providedServices);
     }
 
     public Map<String, AttributeConfigElement> getConfiguration() {