Merge "BUG-624 make netconf tcp address optional in config.ini with default value...
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / operations / editconfig / EditStrategyType.java
index 06560b2d2724d2efb7996736649a2d90219e168c..25d772f4ac565c5ecd4d1e84c1b98d302b810f52 100644 (file)
@@ -8,10 +8,10 @@
 
 package org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig;
 
-import com.google.common.collect.Multimap;
-
 import java.util.EnumSet;
 import java.util.Set;
+import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
+import org.opendaylight.controller.netconf.confignetconfconnector.exception.OperationNotPermittedException;
 
 public enum EditStrategyType {
     // can be default
@@ -40,15 +40,30 @@ public enum EditStrategyType {
                     + this);
         }
     }
+    public static void compareParsedStrategyToDefaultEnforcing(EditStrategyType parsedStrategy,
+                                                                  EditStrategyType defaultStrategy) throws OperationNotPermittedException {
+        if (defaultStrategy.isEnforcing()) {
+            if (parsedStrategy != defaultStrategy){
+                throw new OperationNotPermittedException(String.format("With "
+                        + defaultStrategy
+                        + " as "
+                        + EditConfigXmlParser.DEFAULT_OPERATION_KEY
+                        + " operations on module elements are not permitted since the default option is restrictive"),
+                        NetconfDocumentedException.ErrorType.application,
+                        NetconfDocumentedException.ErrorTag.operation_failed,
+                        NetconfDocumentedException.ErrorSeverity.error);
+            }
+        }
 
-    public EditConfigStrategy getFittingStrategy(Multimap<String, String> providedServices) {
+    }
+    public EditConfigStrategy getFittingStrategy() {
         switch (this) {
         case merge:
-            return new MergeEditConfigStrategy(providedServices);
+            return new MergeEditConfigStrategy();
         case replace:
-            return new ReplaceEditConfigStrategy(providedServices);
+            return new ReplaceEditConfigStrategy();
         case delete:
-            return new DeleteEditConfigStrategy(providedServices);
+            return new DeleteEditConfigStrategy();
         case remove:
             return new RemoveEditConfigStrategy();
         case none: