X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fmapping%2Fattributes%2Ffromxml%2FObjectXmlReader.java;h=bc3c74a88f218aa01ad82a97976ee704df8d1f86;hp=8663de73657ef812e4e0bacd8407ccf231039dc3;hb=bab3649670c33b3b12a49c59fc1c5cabcbcb924e;hpb=a92d9d6a21a0f6ca8d2153795721f500eaf29ee9 diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectXmlReader.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectXmlReader.java index 8663de7365..bc3c74a88f 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectXmlReader.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectXmlReader.java @@ -8,11 +8,15 @@ package org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.fromxml; +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.TOAttribute; import org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.AttributeIfcSwitchStatement; import javax.management.openmbean.ArrayType; +import javax.management.openmbean.CompositeType; import javax.management.openmbean.SimpleType; import java.util.Map; import java.util.Map.Entry; @@ -37,26 +41,33 @@ public class ObjectXmlReader extends AttributeIfcSwitchStatement) - return new SimpleAttributeReadingStrategy(attributeIfc); - else if (attributeIfc.getOpenType() instanceof ArrayType) { - SimpleAttributeReadingStrategy innerStrategy = new SimpleAttributeReadingStrategy( - ((ArrayType) attributeIfc.getOpenType()).getElementOpenType()); - return new ArrayAttributeReadingStrategy(attributeIfc, innerStrategy); - } - throw new IllegalStateException(JavaAttribute.class + " can only provide open type " + SimpleType.class - + " or " + ArrayType.class); + public AttributeReadingStrategy caseJavaSimpleAttribute(SimpleType openType) { + return new SimpleAttributeReadingStrategy(lastAttribute.getNullableDefault()); + } + + @Override + public AttributeReadingStrategy caseJavaArrayAttribute(ArrayType openType) { + SimpleAttributeReadingStrategy innerStrategy = new SimpleAttributeReadingStrategy(lastAttribute.getNullableDefault()); + return new ArrayAttributeReadingStrategy(lastAttribute.getNullableDefault(), innerStrategy); } @Override - protected AttributeReadingStrategy caseDependencyAttribute(DependencyAttribute attributeIfc) { - return new ObjectNameAttributeReadingStrategy(attributeIfc); + public AttributeReadingStrategy caseJavaCompositeAttribute(CompositeType openType) { + Preconditions.checkState(openType.keySet().size() == 1, "Unexpected number of elements for open type %s, should be 1", openType); + String mappingKey = openType.keySet().iterator().next(); + return new SimpleCompositeAttributeReadingStrategy(lastAttribute.getNullableDefault(), mappingKey); } @Override - protected AttributeReadingStrategy caseTOAttribute(TOAttribute attributeIfc) { - Map inner = attributeIfc.getYangPropertiesToTypesMap(); + protected AttributeReadingStrategy caseDependencyAttribute(SimpleType openType) { + return new ObjectNameAttributeReadingStrategy(lastAttribute.getNullableDefault()); + } + + @Override + protected AttributeReadingStrategy caseTOAttribute(CompositeType openType) { + Preconditions.checkState(lastAttribute instanceof TOAttribute); + Map inner = ((TOAttribute)lastAttribute).getYangPropertiesToTypesMap(); + Map innerStrategies = Maps.newHashMap(); for (Entry innerAttrEntry : inner.entrySet()) { @@ -65,14 +76,14 @@ public class ObjectXmlReader extends AttributeIfcSwitchStatement openType) { + Preconditions.checkState(lastAttribute instanceof ListAttribute); + AttributeReadingStrategy innerStrategy = prepareReadingStrategy(key, ((ListAttribute) lastAttribute).getInnerAttribute()); + return new ArrayAttributeReadingStrategy(lastAttribute.getNullableDefault(), innerStrategy); } }