X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fmapping%2Fattributes%2Ftoxml%2FObjectXmlWriter.java;h=a174e9a25160e8aa3d52ab66891c9d1314e58185;hb=03abf047ba966c53f4901d36ae5198156d66dc05;hp=43d8db61783d0fc3d9aabaed1ddc6ee2fe7d0653;hpb=545b424ba9278d7aee12b9a6173e23c1b1d39dd3;p=controller.git diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectXmlWriter.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectXmlWriter.java index 43d8db6178..a174e9a251 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectXmlWriter.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectXmlWriter.java @@ -10,11 +10,16 @@ package org.opendaylight.controller.netconf.confignetconfconnector.mapping.attri import com.google.common.base.Preconditions; import com.google.common.collect.Maps; -import org.opendaylight.controller.config.yangjmxgenerator.attribute.*; +import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc; +import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListAttribute; +import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListDependenciesAttribute; +import org.opendaylight.controller.config.yangjmxgenerator.attribute.TOAttribute; import org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.AttributeIfcSwitchStatement; import org.w3c.dom.Document; import javax.management.openmbean.ArrayType; +import javax.management.openmbean.CompositeType; +import javax.management.openmbean.OpenType; import javax.management.openmbean.SimpleType; import java.util.Map; import java.util.Map.Entry; @@ -48,28 +53,38 @@ public class ObjectXmlWriter extends AttributeIfcSwitchStatement openType) { + return new SimpleBinaryAttributeWritingStrategy(document, key); + } - if (attributeIfc.getOpenType() instanceof SimpleType) - return new SimpleAttributeWritingStrategy(document, key); - else if (attributeIfc.getOpenType() instanceof ArrayType) { - AttributeWritingStrategy innerStrategy = new SimpleAttributeWritingStrategy(document, key); - return new ArrayAttributeWritingStrategy(innerStrategy); - } - throw new IllegalStateException(JavaAttribute.class + " can only provide open type " + SimpleType.class - + " or " + ArrayType.class); + @Override + protected AttributeWritingStrategy caseJavaSimpleAttribute(SimpleType openType) { + return new SimpleAttributeWritingStrategy(document, key); + } + + @Override + protected AttributeWritingStrategy caseJavaArrayAttribute(ArrayType openType) { + AttributeWritingStrategy innerStrategy = new SimpleAttributeWritingStrategy(document, key); + return new ArrayAttributeWritingStrategy(innerStrategy); + } + + @Override + protected AttributeWritingStrategy caseJavaCompositeAttribute(CompositeType openType) { + return new SimpleCompositeAttributeWritingStrategy(document, key); } @Override - protected AttributeWritingStrategy caseDependencyAttribute(DependencyAttribute attributeIfc) { + protected AttributeWritingStrategy caseDependencyAttribute(SimpleType openType) { return new ObjectNameAttributeWritingStrategy(document, key); } @Override - protected AttributeWritingStrategy caseTOAttribute(TOAttribute attributeIfc) { + protected AttributeWritingStrategy caseTOAttribute(CompositeType openType) { + Preconditions.checkState(lastAttribute instanceof TOAttribute); + Map innerStrats = Maps.newHashMap(); String currentKey = key; - for (Entry innerAttrEntry : attributeIfc.getYangPropertiesToTypesMap().entrySet()) { + for (Entry innerAttrEntry : ((TOAttribute) lastAttribute).getYangPropertiesToTypesMap().entrySet()) { AttributeWritingStrategy innerStrategy = prepareWritingStrategy(innerAttrEntry.getKey(), innerAttrEntry.getValue(), document); @@ -80,9 +95,18 @@ public class ObjectXmlWriter extends AttributeIfcSwitchStatement openType) { + Preconditions.checkState(lastAttribute instanceof ListAttribute); + AttributeIfc innerAttribute = ((ListAttribute) lastAttribute).getInnerAttribute(); + + AttributeWritingStrategy innerStrategy = prepareWritingStrategy(key, innerAttribute, document); + return new ArrayAttributeWritingStrategy(innerStrategy); + } + + @Override + protected AttributeWritingStrategy caseListDependeciesAttribute(ArrayType openType) { + Preconditions.checkState(lastAttribute instanceof ListDependenciesAttribute); + AttributeWritingStrategy innerStrategy = caseDependencyAttribute(SimpleType.OBJECTNAME); return new ArrayAttributeWritingStrategy(innerStrategy); }