Remove yang-test
[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..05372dd105f8e1057d7ffa70bbd220c5779e7c22 100644 (file)
@@ -7,57 +7,86 @@
  */
 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(final String configXml, final SortedSet<String> capabilities) {
+        this.configXml = configXml;
+        this.capabilities = capabilities;
+    }
 
-    ConfigSnapshot(String configXml, SortedSet<String> capabilities) {
-        this.configSnapshot = configXml;
+    ConfigSnapshot(final String configXml, final SortedSet<String> capabilities, final Set<String> features) {
+        this.configXml = configXml;
         this.capabilities = capabilities;
+        this.features = features;
     }
 
-    public ConfigSnapshot() {
+    ConfigSnapshot() {
     }
 
-    public static ConfigSnapshot fromConfigSnapshot(ConfigSnapshotHolder cfg) {
+    public static ConfigSnapshot fromConfigSnapshot(final ConfigSnapshotHolder cfg) {
         return new ConfigSnapshot(cfg.getConfigSnapshot(), cfg.getCapabilities());
     }
 
+    public static ConfigSnapshot fromConfigSnapshot(final ConfigSnapshotHolder cfg, final 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;
+    public void setConfigSnapshot(final String configSnapshot) {
+        this.configXml = configSnapshot;
     }
 
     @XmlElement(name = "capability")
     @XmlElementWrapper(name = "required-capabilities")
+    @XmlJavaTypeAdapter(value=StringTrimAdapter.class)
     public SortedSet<String> getCapabilities() {
         return capabilities;
     }
 
-    public void setCapabilities(SortedSet<String> capabilities) {
+    public void setCapabilities(final SortedSet<String> capabilities) {
         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('\'');
-        sb.append(", capabilities=").append(capabilities);
-        sb.append('}');
-        return sb.toString();
+        return "ConfigSnapshot{"
+                + "configSnapshot='" + configXml + '\''
+                + ", capabilities=" + capabilities
+                + ", features=" + features +
+                '}';
     }
 }
+