Bug-6346: Allow over-ride of non-module capabilities
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / listener / UserPreferences.java
index 640e41cb29a63166bea8bca6c09ddf084aefc29d..10742e0b5c4d4047c6c1150738b9335c58d70f86 100644 (file)
@@ -15,26 +15,46 @@ import javax.annotation.Nonnull;
 public class UserPreferences {
 
     private final NetconfSessionPreferences sessionPreferences;
-    private final boolean override;
+    private final boolean overrideModuleCapabilities;
+    private final boolean overrideNonModuleCapabilities;
+
+    public UserPreferences(@Nonnull final NetconfSessionPreferences sessionPreferences,
+            boolean overrideModuleCapabilities, boolean overrideNonModuleCapabilities) {
+
+        if (overrideModuleCapabilities && (sessionPreferences.getModuleBasedCaps() == null
+                || sessionPreferences.getModuleBasedCaps().isEmpty())) {
+            throw new IllegalStateException(
+                    "Override module based capabilities flag set true but module based capabilities list is empty.");
+        }
+        if (overrideNonModuleCapabilities && (sessionPreferences.getNonModuleCaps() == null
+                || sessionPreferences.getNonModuleCaps().isEmpty())) {
+            throw new IllegalStateException(
+                    "Override non-module based capabilities set true but non-module based capabilities list is empty.");
+        }
 
-    public UserPreferences(@Nonnull final NetconfSessionPreferences sessionPreferences, boolean override) {
         this.sessionPreferences = sessionPreferences;
-        this.override = override;
+        this.overrideModuleCapabilities = overrideModuleCapabilities;
+        this.overrideNonModuleCapabilities = overrideNonModuleCapabilities;
     }
 
     public NetconfSessionPreferences getSessionPreferences() {
         return sessionPreferences;
     }
 
-    public boolean isOverride() {
-        return override;
+    public boolean moduleBasedCapsOverrided() {
+        return overrideModuleCapabilities;
+    }
+
+    public boolean nonModuleBasedCapsOverrided() {
+        return overrideNonModuleCapabilities;
     }
 
     @Override
     public String toString() {
         final StringBuffer sb = new StringBuffer("UserPreferences{");
         sb.append("sessionPreferences=").append(sessionPreferences);
-        sb.append(", override=").append(override);
+        sb.append(", overrideModuleCapabilities=").append(overrideModuleCapabilities);
+        sb.append(", overrideNonModuleCapabilities=").append(overrideNonModuleCapabilities);
         sb.append('}');
         return sb.toString();
     }