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%2Fresolving%2FObjectResolver.java;h=4a4281a55e04489beb1a8ed9360a457ec9899dad;hb=8720a3f3498bbc6fab675431f4200d26641a8ec8;hp=c321164cf6b29c02548d9239787de2686d26e521;hpb=4f4df9918bc2d1447393edac6fbf3a2d4f9d9186;p=controller.git diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectResolver.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectResolver.java index c321164cf6..4a4281a55e 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectResolver.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectResolver.java @@ -12,9 +12,10 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Maps; 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.opendaylight.controller.netconf.confignetconfconnector.mapping.config.Services; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ServiceRegistryWrapper; import javax.management.openmbean.ArrayType; import javax.management.openmbean.CompositeType; @@ -25,9 +26,9 @@ import java.util.Map.Entry; public class ObjectResolver extends AttributeIfcSwitchStatement>> { - private final Services serviceTracker; + private final ServiceRegistryWrapper serviceTracker; - public ObjectResolver(Services serviceTracker) { + public ObjectResolver(ServiceRegistryWrapper serviceTracker) { this.serviceTracker = serviceTracker; } @@ -71,13 +72,30 @@ public class ObjectResolver extends AttributeIfcSwitchStatement> caseJavaCompositeAttribute(CompositeType openType) { Map>> innerMap = Maps.newHashMap(); - Map yangToJmxMapping = Maps.newHashMap(); + + fillMappingForComposite(openType, innerMap, yangToJmxMapping); + return new CompositeAttributeResolvingStrategy(innerMap, openType, yangToJmxMapping); + } + + private void fillMappingForComposite(CompositeType openType, Map>> innerMap, Map yangToJmxMapping) { for (String innerAttributeKey : openType.keySet()) { innerMap.put(innerAttributeKey, caseJavaAttribute(openType.getType(innerAttributeKey))); yangToJmxMapping.put(innerAttributeKey, innerAttributeKey); } - return new CompositeAttributeResolvingStrategy(innerMap, openType, yangToJmxMapping); + } + + @Override + protected AttributeResolvingStrategy> caseJavaUnionAttribute(OpenType openType) { + + Preconditions.checkState(openType instanceof CompositeType, "Unexpected open type, expected %s but was %s"); + CompositeType compositeType = (CompositeType) openType; + + Map>> innerMap = Maps.newHashMap(); + Map yangToJmxMapping = Maps.newHashMap(); + fillMappingForComposite(compositeType, innerMap, yangToJmxMapping); + + return new UnionCompositeAttributeResolvingStrategy(innerMap, compositeType, yangToJmxMapping); } @Override @@ -88,8 +106,8 @@ public class ObjectResolver extends AttributeIfcSwitchStatement> caseTOAttribute(CompositeType openType) { - Preconditions.checkState(lastAttribute instanceof TOAttribute); - TOAttribute toAttribute = (TOAttribute) lastAttribute; + Preconditions.checkState(getLastAttribute() instanceof TOAttribute); + TOAttribute toAttribute = (TOAttribute) getLastAttribute(); Map>> innerMap = Maps.newHashMap(); @@ -104,9 +122,15 @@ public class ObjectResolver extends AttributeIfcSwitchStatement> caseListAttribute(ArrayType openType) { - Preconditions.checkState(lastAttribute instanceof ListAttribute); - AttributeIfc innerAttribute = ((ListAttribute) lastAttribute).getInnerAttribute(); + Preconditions.checkState(getLastAttribute() instanceof ListAttribute); + AttributeIfc innerAttribute = ((ListAttribute) getLastAttribute()).getInnerAttribute(); return new ArrayAttributeResolvingStrategy(prepareStrategy(innerAttribute), openType); } + @Override + protected AttributeResolvingStrategy> caseListDependeciesAttribute(ArrayType openType) { + Preconditions.checkState(getLastAttribute() instanceof ListDependenciesAttribute); + return new ArrayAttributeResolvingStrategy(caseDependencyAttribute(SimpleType.OBJECTNAME), openType); + } + }