Removed sonar warnings.
[controller.git] / opendaylight / config / config-persister-file-xml-adapter / src / main / java / org / opendaylight / controller / config / persist / storage / file / xml / model / ConfigSnapshot.java
index 41976000ba43d9e0e16ab26f4c2ab0f64020d265..94cd58fc090e54443ad8619517020361149a4454 100644 (file)
@@ -7,43 +7,60 @@
  */
 package org.opendaylight.controller.config.persist.storage.file.xml.model;
 
-import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
-
+import java.util.HashSet;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
-import java.util.SortedSet;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
 
-@XmlRootElement(name = "snapshot")
+@XmlRootElement(name = ConfigSnapshot.SNAPSHOT_ROOT_ELEMENT_NAME)
 public class ConfigSnapshot {
 
-    private String configSnapshot;
-    private SortedSet<String> capabilities;
+    public static final String SNAPSHOT_ROOT_ELEMENT_NAME = "snapshot";
+
+    private String configXml;
+    private SortedSet<String> capabilities = new TreeSet<>();
+    private Set<String> features = new HashSet<>();
 
     ConfigSnapshot(String configXml, SortedSet<String> capabilities) {
-        this.configSnapshot = configXml;
+        this.configXml = configXml;
+        this.capabilities = capabilities;
+    }
+
+    ConfigSnapshot(String configXml, SortedSet<String> capabilities, Set<String> features) {
+        this.configXml = configXml;
         this.capabilities = capabilities;
+        this.features = features;
     }
 
-    public ConfigSnapshot() {
+    ConfigSnapshot() {
     }
 
     public static ConfigSnapshot fromConfigSnapshot(ConfigSnapshotHolder cfg) {
         return new ConfigSnapshot(cfg.getConfigSnapshot(), cfg.getCapabilities());
     }
 
+    public static ConfigSnapshot fromConfigSnapshot(ConfigSnapshotHolder cfg, Set<String> features) {
+        return new ConfigSnapshot(cfg.getConfigSnapshot(), cfg.getCapabilities(), features);
+    }
+
     @XmlAnyElement(SnapshotHandler.class)
     public String getConfigSnapshot() {
-        return configSnapshot;
+        return configXml;
     }
 
     public void setConfigSnapshot(String configSnapshot) {
-        this.configSnapshot = configSnapshot;
+        this.configXml = configSnapshot;
     }
 
     @XmlElement(name = "capability")
     @XmlElementWrapper(name = "required-capabilities")
+    @XmlJavaTypeAdapter(value=StringTrimAdapter.class)
     public SortedSet<String> getCapabilities() {
         return capabilities;
     }
@@ -52,12 +69,25 @@ public class ConfigSnapshot {
         this.capabilities = capabilities;
     }
 
+    @XmlElement(name = "feature")
+    @XmlElementWrapper(name = "features")
+    @XmlJavaTypeAdapter(value=StringTrimAdapter.class)
+    public Set<String> getFeatures() {
+        return features;
+    }
+
+    public void setFeatures(final Set<String> features) {
+        this.features = features;
+    }
+
     @Override
     public String toString() {
-        final StringBuffer sb = new StringBuffer("ConfigSnapshot{");
-        sb.append("configSnapshot='").append(configSnapshot).append('\'');
+        final StringBuilder sb = new StringBuilder("ConfigSnapshot{");
+        sb.append("configSnapshot='").append(configXml).append('\'');
         sb.append(", capabilities=").append(capabilities);
+        sb.append(", features=").append(features);
         sb.append('}');
         return sb.toString();
     }
 }
+