use of org.opendaylight.controller.config.yangjmxgenerator.attribute.AbstractDependencyAttribute in project controller by opendaylight.
the class ModuleMXBeanEntryBuilder method extractDependency.
private static Optional<? extends AbstractDependencyAttribute> extractDependency(final DataNodeContainer dataNodeContainer, final DataSchemaNode attrNode, final Module currentModule, final Map<QName, ServiceInterfaceEntry> qNamesToSIEs, final SchemaContext schemaContext) {
if (isDependencyContainer(dataNodeContainer)) {
// reference
UsesNode usesNode = dataNodeContainer.getUses().iterator().next();
for (SchemaNode refineNode : usesNode.getRefines().values()) {
// this will ignore name nodes, since they are not needed here
if (TYPE.equals(refineNode.getQName().getLocalName())) {
checkState(refineNode.getUnknownSchemaNodes().size() == 1, "Unexpected unknown schema node size of " + refineNode);
UnknownSchemaNode requiredIdentity = refineNode.getUnknownSchemaNodes().iterator().next();
checkState(ConfigConstants.REQUIRED_IDENTITY_EXTENSION_QNAME.equals(requiredIdentity.getNodeType()), "Unexpected language extension " + requiredIdentity);
String prefixAndIdentityLocalName = requiredIdentity.getNodeParameter();
// import should point to a module
ServiceInterfaceEntry serviceInterfaceEntry = findSIE(prefixAndIdentityLocalName, currentModule, qNamesToSIEs, schemaContext);
LeafSchemaNode refine = (LeafSchemaNode) usesNode.getRefines().values().iterator().next();
boolean mandatory = refine.isMandatory();
AbstractDependencyAttribute reference;
if (dataNodeContainer instanceof ContainerSchemaNode) {
reference = new DependencyAttribute(attrNode, serviceInterfaceEntry, mandatory, attrNode.getDescription().orElse(null));
} else {
reference = new ListDependenciesAttribute(attrNode, serviceInterfaceEntry, mandatory, attrNode.getDescription().orElse(null));
}
return Optional.of(reference);
}
}
}
return Optional.absent();
}
Aggregations