Merge "Resolve Bug:853 - remove groovy from config code generator."
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / operations / editconfig / EditStrategyType.java
index 676467553bb61c5c46e380c8b8e33331778ea141..6b81603dcd01cdffa0ce3d4b5c9486fc66db2b8d 100644 (file)
@@ -9,11 +9,12 @@
 package org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig;
 
 import com.google.common.collect.Multimap;
+import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
+import org.opendaylight.controller.netconf.confignetconfconnector.exception.OperationNotPermittedException;
 
 import java.util.EnumSet;
 import java.util.Set;
 
-//FIXME: make thread safe
 public enum EditStrategyType {
     // can be default
     merge, replace, none,
@@ -41,7 +42,22 @@ 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) {
         switch (this) {
         case merge:
@@ -49,7 +65,7 @@ public enum EditStrategyType {
         case replace:
             return new ReplaceEditConfigStrategy(providedServices);
         case delete:
-            return new DeleteEditConfigStrategy(providedServices);
+            return new DeleteEditConfigStrategy();
         case remove:
             return new RemoveEditConfigStrategy();
         case none: