X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2FModuleMXBeanEntryBuilder.java;h=e9f0ac817675d90a9c9257456d0f9c03c7106719;hp=d8c5a56fb7a7561de457894180ad1a1b418b7f57;hb=b0d599b64c095cbeacff04933ff7b99951fdd45e;hpb=03ee21b4d6ae3dd6fd3a6991253e877dc96fabf5 diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryBuilder.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryBuilder.java index d8c5a56fb7..e9f0ac8176 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryBuilder.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryBuilder.java @@ -38,6 +38,7 @@ import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListAttribu import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListDependenciesAttribute; import org.opendaylight.controller.config.yangjmxgenerator.attribute.TOAttribute; import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.NameConflictException; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.ServiceRef; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; @@ -130,7 +131,7 @@ final class ModuleMXBeanEntryBuilder { Map result = new HashMap<>(); for (AugmentationSchema augmentation : currentModule.getAugmentations()) { - Set childNodes = augmentation.getChildNodes(); + Collection childNodes = augmentation.getChildNodes(); if (areAllChildrenChoiceCaseNodes(childNodes)) { for (ChoiceCaseNode childCase : castChildNodesToChoiceCases(childNodes)) { // TODO refactor, extract to standalone builder class @@ -215,7 +216,7 @@ final class ModuleMXBeanEntryBuilder { return moduleIdentities; } - private Collection castChildNodesToChoiceCases(final Set childNodes) { + private Collection castChildNodesToChoiceCases(final Collection childNodes) { return Collections2.transform(childNodes, new Function() { @Nullable @Override @@ -225,7 +226,7 @@ final class ModuleMXBeanEntryBuilder { }); } - private boolean areAllChildrenChoiceCaseNodes(final Set childNodes) { + private boolean areAllChildrenChoiceCaseNodes(final Iterable childNodes) { for (DataSchemaNode childNode : childNodes) { if (childNode instanceof ChoiceCaseNode == false) { return false; @@ -388,7 +389,7 @@ final class ModuleMXBeanEntryBuilder { * @return either choiceCaseNode or its only child container */ private HAS_CHILDREN_AND_QNAME getDataNodeContainer(final ChoiceCaseNode choiceCaseNode) { - Set childNodes = choiceCaseNode.getChildNodes(); + Collection childNodes = choiceCaseNode.getChildNodes(); if (childNodes.size() == 1) { DataSchemaNode onlyChild = childNodes.iterator().next(); if (onlyChild instanceof ContainerSchemaNode) { @@ -406,8 +407,7 @@ final class ModuleMXBeanEntryBuilder { final TypeProviderWrapper typeProviderWrapper, final Map qNamesToSIEs, final SchemaContext schemaContext, final String packageName) { Map yangToAttributes = new HashMap<>(); - Set childNodes = dataNodeContainer.getChildNodes(); - for (DataSchemaNode attrNode : childNodes) { + for (DataSchemaNode attrNode : dataNodeContainer.getChildNodes()) { AttributeIfc attributeValue = getAttributeValue(attrNode, currentModule, qNamesToSIEs, typeProviderWrapper, schemaContext, packageName); yangToAttributes.put(attributeValue.getAttributeYangName(), attributeValue); @@ -467,7 +467,7 @@ final class ModuleMXBeanEntryBuilder { private Optional extractDependency(final DataNodeContainer dataNodeContainer, final DataSchemaNode attrNode, final Module currentModule, final Map qNamesToSIEs, final SchemaContext schemaContext) { - if (dataNodeContainer.getUses().size() == 1 && getChildNodeSizeWithoutUses(dataNodeContainer) == 0) { + if (isDependencyContainer(dataNodeContainer)) { // reference UsesNode usesNode = dataNodeContainer.getUses().iterator().next(); checkState(usesNode.getRefines().size() == 1, "Unexpected 'refine' child node size of " + dataNodeContainer); @@ -494,6 +494,18 @@ final class ModuleMXBeanEntryBuilder { return Optional.absent(); } + private boolean isDependencyContainer(final DataNodeContainer dataNodeContainer) { + if(dataNodeContainer.getUses().size() != 1) { + return false; + } + UsesNode onlyUses = dataNodeContainer.getUses().iterator().next(); + if(onlyUses.getGroupingPath().getLastComponent().equals(ServiceRef.QNAME) == false) { + return false; + } + + return getChildNodeSizeWithoutUses(dataNodeContainer) == 0; + } + private int getChildNodeSizeWithoutUses(final DataNodeContainer csn) { int result = 0; for (DataSchemaNode dsn : csn.getChildNodes()) {