Bug 992 - Fix broken netconf xml serialization.
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / mapping / attributes / fromxml / SimpleAttributeReadingStrategy.java
index c5c287ffe2acf7561864dc5044d59eaaebce7bfe..8f6a7cd1e4d2e4f19918d97fdfbb8f928060a696 100644 (file)
@@ -9,78 +9,37 @@
 package org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.fromxml;
 
 import com.google.common.base.Preconditions;
-import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc;
-import org.opendaylight.controller.netconf.util.xml.XmlElement;
-
-import javax.management.openmbean.OpenType;
 import java.util.List;
+import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
+import org.opendaylight.controller.netconf.util.xml.XmlElement;
 
-public class SimpleAttributeReadingStrategy extends AbstractAttributeReadingStrategy<AttributeIfc> {
-
-    public SimpleAttributeReadingStrategy(AttributeIfc attributeIfc) {
-        super(attributeIfc);
-    }
-
-    /**
-     * @param elementOpenType
-     */
-    public SimpleAttributeReadingStrategy(OpenType<?> elementOpenType) {
-        super(new AttributeIfcWrapper(elementOpenType));
+public class SimpleAttributeReadingStrategy extends AbstractAttributeReadingStrategy {
+    public SimpleAttributeReadingStrategy(String nullableDefault) {
+        super(nullableDefault);
     }
 
     @Override
-    AttributeConfigElement readElementHook(List<XmlElement> configNodes) {
+    AttributeConfigElement readElementHook(List<XmlElement> configNodes) throws NetconfDocumentedException {
         XmlElement xmlElement = configNodes.get(0);
         Preconditions.checkState(configNodes.size() == 1, "This element should be present only once " + xmlElement
                 + " but was " + configNodes.size());
 
-        String textContent = xmlElement.getTextContent();
-
-        Preconditions.checkNotNull(textContent, "This element should contain text %s", xmlElement);
-        return AttributeConfigElement.create(getAttributeIfc(), textContent);
+        String textContent = readElementContent(xmlElement);
+        return AttributeConfigElement.create(postprocessNullableDefault(getNullableDefault()),
+                postprocessParsedValue(textContent));
     }
 
-    /**
-     * Wrapper for JavaAttribute inner element attributes (in case JavaAttribute
-     * is array)
-     */
-    static class AttributeIfcWrapper implements AttributeIfc {
-
-        private final OpenType<?> elementOpenType;
-
-        public AttributeIfcWrapper(OpenType<?> elementOpenType) {
-            this.elementOpenType = elementOpenType;
-        }
-
-        @Override
-        public String getAttributeYangName() {
-            return null;
-        }
-
-        @Override
-        public String getNullableDescription() {
-            return null;
-        }
-
-        @Override
-        public String getNullableDefault() {
-            return null;
-        }
-
-        @Override
-        public String getUpperCaseCammelCase() {
-            return null;
-        }
-
-        @Override
-        public String getLowerCaseCammelCase() {
-            return null;
-        }
+    protected String readElementContent(XmlElement xmlElement) throws NetconfDocumentedException {
+        return xmlElement.getTextContent();
+    }
 
-        @Override
-        public OpenType<?> getOpenType() {
-            return elementOpenType;
-        }
+    @Override
+    protected Object postprocessNullableDefault(String nullableDefault) {
+        return nullableDefault;
+    }
 
+    protected Object postprocessParsedValue(String textContent) {
+        return textContent;
     }
+
 }