Bug 451 - Fix netconf exception handling
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / mapping / config / ModuleElementDefinition.java
index 9111701ba01d08e604d255da904846dae202839f..d1c3ebeb0d212f52805f8200636c4dae8b6be8b5 100644 (file)
@@ -8,10 +8,13 @@
 
 package org.opendaylight.controller.netconf.confignetconfconnector.mapping.config;
 
+import org.opendaylight.controller.netconf.confignetconfconnector.exception.OperationNotPermittedException;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfigStrategy;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditStrategyType;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.MissingInstanceHandlingStrategy;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.NoneEditConfigStrategy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ModuleElementDefinition {
 
@@ -20,13 +23,24 @@ public class ModuleElementDefinition {
 
     private final String instanceName;
     private final EditStrategyType editStrategy;
+    private static final Logger logger = LoggerFactory.getLogger(ModuleElementDefinition.class);
 
     public ModuleElementDefinition(String instanceName, String currentStrategy, EditStrategyType defaultStrategy) {
         this.instanceName = instanceName;
+        EditStrategyType _edStrategy = null;
+        try {
+            _edStrategy = InstanceConfigElementResolved.parseStrategy(currentStrategy, defaultStrategy);
+        } catch (OperationNotPermittedException e) {
+            _edStrategy = defaultStrategy;
+            logger.warn("Operation not permitted on current strategy {} while default strategy is {}. Element definition strategy set to default.",
+                    currentStrategy,
+                    defaultStrategy,
+                    e);
+        }
         if (currentStrategy == null || currentStrategy.isEmpty())
-            this.editStrategy = defaultStrategy;
-        else
-            this.editStrategy = InstanceConfigElementResolved.parseStrategy(currentStrategy, defaultStrategy);
+            _edStrategy = defaultStrategy;
+
+        this.editStrategy = _edStrategy;
     }
 
     public String getInstanceName() {