BUG-3675 Support non-prefixed identityrefs in config subsystem
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / operations / editconfig / EditStrategyType.java
index cb03342a1e1febf8d883b1a47ac271ade2c96637..25d772f4ac565c5ecd4d1e84c1b98d302b810f52 100644 (file)
@@ -10,8 +10,9 @@ package org.opendaylight.controller.netconf.confignetconfconnector.operations.ed
 
 import java.util.EnumSet;
 import java.util.Set;
+import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
+import org.opendaylight.controller.netconf.confignetconfconnector.exception.OperationNotPermittedException;
 
-//FIXME: make thread safe
 public enum EditStrategyType {
     // can be default
     merge, replace, none,
@@ -39,7 +40,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() {
         switch (this) {
         case merge: