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=04d37416e3f3cd5b96dbc998ba1b93604e28c4ab;hp=f99d378b6f3e9175be67fed5284827d0ff50b4db;hb=61ae01d240493950e25beffca5c5464c47d66ef7;hpb=531621aac4cff9d39cbd8668a53bdeba8a0e6d81 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 f99d378b6f..04d37416e3 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 @@ -11,14 +11,12 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static java.lang.String.format; import static org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants.createConfigQName; - import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.Collections2; import com.google.common.collect.Maps; import com.google.common.collect.Sets; - import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -27,9 +25,7 @@ import java.util.Objects; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; - import javax.annotation.Nullable; - import org.opendaylight.controller.config.yangjmxgenerator.attribute.AbstractDependencyAttribute; import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc; import org.opendaylight.controller.config.yangjmxgenerator.attribute.DependencyAttribute; @@ -93,22 +89,24 @@ final class ModuleMXBeanEntryBuilder { return this; } - private static final Logger LOGGER = LoggerFactory + private static final Logger LOG = LoggerFactory .getLogger(ModuleMXBeanEntryBuilder.class); // TODO: the XPath should be parsed by code generator IMO private static final String MAGIC_STRING = "MAGIC_STRING"; private static final String MODULE_CONDITION_XPATH_TEMPLATE = "^/MAGIC_STRING:modules/MAGIC_STRING:module/MAGIC_STRING:type\\s*=\\s*['\"](.+)['\"]$"; - private static final SchemaPath EXPECTED_CONFIGURATION_AUGMENTATION_SCHEMA_PATH = SchemaPath.create(true, - createConfigQName("modules"), createConfigQName("module"), createConfigQName("configuration")); - private static final SchemaPath EXPECTED_STATE_AUGMENTATION_SCHEMA_PATH = SchemaPath.create(true, - createConfigQName("modules"), createConfigQName("module"), createConfigQName("state")); - private static final Pattern PREFIX_COLON_LOCAL_NAME = Pattern - .compile("^(.+):(.+)$"); + private static final SchemaPath AUGMENT_SCHEMAPATH = SchemaPath.create(true, + createConfigQName("modules"), createConfigQName("module")); + + private static final SchemaPath EXPECTED_CONFIGURATION_AUGMENTATION_SCHEMA_PATH = + AUGMENT_SCHEMAPATH.createChild(createConfigQName("configuration")); + private static final SchemaPath EXPECTED_STATE_AUGMENTATION_SCHEMA_PATH = + AUGMENT_SCHEMAPATH.createChild(createConfigQName("state")); + private static final Pattern PREFIX_COLON_LOCAL_NAME = Pattern.compile("^(.+):(.+)$"); public Map build() { - LOGGER.debug("Generating ModuleMXBeans of {} to package {}", + LOG.debug("Generating ModuleMXBeans of {} to package {}", currentModule.getNamespace(), packageName); String configModulePrefix; @@ -146,7 +144,7 @@ final class ModuleMXBeanEntryBuilder { checkAttributeNamesUniqueness(uniqueGeneratedClassesNames, result); checkUnaugumentedIdentities(unaugmentedModuleIdentities); - LOGGER.debug("Number of ModuleMXBeans to be generated: {}", result.size()); + LOG.debug("Number of ModuleMXBeans to be generated: {}", result.size()); return result; } @@ -166,7 +164,7 @@ final class ModuleMXBeanEntryBuilder { private static void checkUnaugumentedIdentities(final Map unaugmentedModuleIdentities) { if (unaugmentedModuleIdentities.size() > 0) { - LOGGER.warn("Augmentation not found for all currentModule identities: {}", + LOG.warn("Augmentation not found for all currentModule identities: {}", unaugmentedModuleIdentities.keySet()); } } @@ -190,7 +188,7 @@ final class ModuleMXBeanEntryBuilder { + identityLocalName); } else { moduleIdentities.put(identityLocalName, id); - LOGGER.debug("Found identity {}", identityLocalName); + LOG.debug("Found identity {}", identityLocalName); } // validation check on unknown schema nodes boolean providedServiceWasSet = false; @@ -216,7 +214,7 @@ final class ModuleMXBeanEntryBuilder { return moduleIdentities; } - private Collection castChildNodesToChoiceCases(final Collection childNodes) { + private static Collection castChildNodesToChoiceCases(final Collection childNodes) { return Collections2.transform(childNodes, new Function() { @Nullable @Override @@ -226,7 +224,7 @@ final class ModuleMXBeanEntryBuilder { }); } - private boolean areAllChildrenChoiceCaseNodes(final Iterable childNodes) { + private static boolean areAllChildrenChoiceCaseNodes(final Iterable childNodes) { for (DataSchemaNode childNode : childNodes) { if (childNode instanceof ChoiceCaseNode == false) { return false; @@ -253,15 +251,10 @@ final class ModuleMXBeanEntryBuilder { String moduleLocalNameFromXPath = matcher.group(1); IdentitySchemaNode moduleIdentity = moduleIdentities.get(moduleLocalNameFromXPath); unaugmentedModuleIdentities.remove(moduleLocalNameFromXPath); - checkState(moduleIdentity != null, "Cannot find identity " + moduleLocalNameFromXPath - + " matching augmentation " + augmentation); + checkState(moduleIdentity != null, "Cannot find identity %s matching augmentation %s", moduleLocalNameFromXPath, augmentation); Map providedServices = findProvidedServices(moduleIdentity, currentModule, qNamesToSIEs, schemaContext); - if (moduleIdentity == null) { - throw new IllegalStateException("Cannot find identity specified by augmentation xpath constraint: " - + moduleLocalNameFromXPath + " of " + augmentation); - } String javaNamePrefix = TypeProviderWrapper.findJavaNamePrefix(moduleIdentity); Map yangToAttributes = null; @@ -271,12 +264,12 @@ final class ModuleMXBeanEntryBuilder { HAS_CHILDREN_AND_QNAME dataNodeContainer = getDataNodeContainer(choiceCaseNode); if (EXPECTED_CONFIGURATION_AUGMENTATION_SCHEMA_PATH.equals(augmentation.getTargetPath())) { - LOGGER.debug("Parsing configuration of {}", moduleLocalNameFromXPath); + LOG.debug("Parsing configuration of {}", moduleLocalNameFromXPath); yangToAttributes = fillConfiguration(dataNodeContainer, currentModule, typeProviderWrapper, qNamesToSIEs, schemaContext, packageName); checkUniqueAttributesWithGeneratedClass(uniqueGeneratedClassesNames, when.getQName(), yangToAttributes); } else if (EXPECTED_STATE_AUGMENTATION_SCHEMA_PATH.equals(augmentation.getTargetPath())) { - LOGGER.debug("Parsing state of {}", moduleLocalNameFromXPath); + LOG.debug("Parsing state of {}", moduleLocalNameFromXPath); try { runtimeBeans = fillRuntimeBeans(dataNodeContainer, currentModule, typeProviderWrapper, packageName, moduleLocalNameFromXPath, javaNamePrefix); @@ -309,9 +302,9 @@ final class ModuleMXBeanEntryBuilder { " both state and configuration"); } else { ModuleMXBeanEntry.ModuleMXBeanEntryInitial initial = new ModuleMXBeanEntry.ModuleMXBeanEntryInitialBuilder() - .setIdSchemaNode(moduleIdentity).setPackageName(packageName).setJavaNamePrefix(javaNamePrefix) - .setNamespace(currentModule.getNamespace().toString()).setqName(ModuleUtil.getQName(currentModule)) - .build(); + .setIdSchemaNode(moduleIdentity).setPackageName(packageName).setJavaNamePrefix(javaNamePrefix) + .setNamespace(currentModule.getNamespace().toString()).setqName(ModuleUtil.getQName(currentModule)) + .build(); // construct ModuleMXBeanEntry ModuleMXBeanEntry moduleMXBeanEntry = new ModuleMXBeanEntry(initial, yangToAttributes, providedServices, @@ -324,7 +317,7 @@ final class ModuleMXBeanEntryBuilder { } } - private void checkUniqueRuntimeBeansGeneratedClasses(final Map uniqueGeneratedClassesNames, + private static void checkUniqueRuntimeBeansGeneratedClasses(final Map uniqueGeneratedClassesNames, final DataSchemaNode when, final Collection runtimeBeans) { for (RuntimeBeanEntry runtimeBean : runtimeBeans) { final String javaNameOfRuntimeMXBean = runtimeBean.getJavaNameOfRuntimeMXBean(); @@ -349,7 +342,7 @@ final class ModuleMXBeanEntryBuilder { } } - private void checkUniqueAttributesWithGeneratedClass(final Map uniqueGeneratedClassNames, + private static void checkUniqueAttributesWithGeneratedClass(final Map uniqueGeneratedClassNames, final QName parentQName, final Map yangToAttributes) { for (Map.Entry attr : yangToAttributes.entrySet()) { if (attr.getValue() instanceof TOAttribute) { @@ -362,7 +355,7 @@ final class ModuleMXBeanEntryBuilder { } } - private void checkUniqueTOAttr(final Map uniqueGeneratedClassNames, final QName parentQName, final TOAttribute attr) { + private static void checkUniqueTOAttr(final Map uniqueGeneratedClassNames, final QName parentQName, final TOAttribute attr) { final String upperCaseCamelCase = attr.getUpperCaseCammelCase(); if (uniqueGeneratedClassNames.containsKey(upperCaseCamelCase)) { QName firstDefinedQName = uniqueGeneratedClassNames.get(upperCaseCamelCase); @@ -377,7 +370,7 @@ final class ModuleMXBeanEntryBuilder { final String javaNamePrefix) { return RuntimeBeanEntry.extractClassNameToRuntimeBeanMap(packageName, dataNodeContainer, moduleLocalNameFromXPath, - typeProviderWrapper, javaNamePrefix, currentModule).values(); + typeProviderWrapper, javaNamePrefix, currentModule, schemaContext).values(); } @@ -388,7 +381,7 @@ final class ModuleMXBeanEntryBuilder { * @param choiceCaseNode state or configuration case statement * @return either choiceCaseNode or its only child container */ - private HAS_CHILDREN_AND_QNAME getDataNodeContainer(final ChoiceCaseNode choiceCaseNode) { + private static HAS_CHILDREN_AND_QNAME getDataNodeContainer(final ChoiceCaseNode choiceCaseNode) { Collection childNodes = choiceCaseNode.getChildNodes(); if (childNodes.size() == 1) { DataSchemaNode onlyChild = childNodes.iterator().next(); @@ -403,7 +396,7 @@ final class ModuleMXBeanEntryBuilder { return (HAS_CHILDREN_AND_QNAME) choiceCaseNode; } - private Map fillConfiguration(final DataNodeContainer dataNodeContainer, final Module currentModule, + private static Map fillConfiguration(final DataNodeContainer dataNodeContainer, final Module currentModule, final TypeProviderWrapper typeProviderWrapper, final Map qNamesToSIEs, final SchemaContext schemaContext, final String packageName) { Map yangToAttributes = new HashMap<>(); @@ -415,7 +408,7 @@ final class ModuleMXBeanEntryBuilder { return yangToAttributes; } - private Map findProvidedServices(final IdentitySchemaNode moduleIdentity, final Module currentModule, + private static Map findProvidedServices(final IdentitySchemaNode moduleIdentity, final Module currentModule, final Map qNamesToSIEs, final SchemaContext schemaContext) { Map result = new HashMap<>(); for (UnknownSchemaNode unknownNode : moduleIdentity.getUnknownSchemaNodes()) { @@ -429,7 +422,7 @@ final class ModuleMXBeanEntryBuilder { return result; } - private AttributeIfc getAttributeValue(final DataSchemaNode attrNode, final Module currentModule, + private static AttributeIfc getAttributeValue(final DataSchemaNode attrNode, final Module currentModule, final Map qNamesToSIEs, final TypeProviderWrapper typeProviderWrapper, final SchemaContext schemaContext, final String packageName) { @@ -464,7 +457,7 @@ final class ModuleMXBeanEntryBuilder { } } - private Optional extractDependency(final DataNodeContainer dataNodeContainer, + private static Optional extractDependency(final DataNodeContainer dataNodeContainer, final DataSchemaNode attrNode, final Module currentModule, final Map qNamesToSIEs, final SchemaContext schemaContext) { if (isDependencyContainer(dataNodeContainer)) { @@ -494,7 +487,7 @@ final class ModuleMXBeanEntryBuilder { return Optional.absent(); } - private boolean isDependencyContainer(final DataNodeContainer dataNodeContainer) { + private static boolean isDependencyContainer(final DataNodeContainer dataNodeContainer) { if(dataNodeContainer.getUses().size() != 1) { return false; } @@ -506,7 +499,7 @@ final class ModuleMXBeanEntryBuilder { return getChildNodeSizeWithoutUses(dataNodeContainer) == 0; } - private int getChildNodeSizeWithoutUses(final DataNodeContainer csn) { + private static int getChildNodeSizeWithoutUses(final DataNodeContainer csn) { int result = 0; for (DataSchemaNode dsn : csn.getChildNodes()) { if (dsn.isAddedByUses() == false) { @@ -516,7 +509,7 @@ final class ModuleMXBeanEntryBuilder { return result; } - private ServiceInterfaceEntry findSIE(final String prefixAndIdentityLocalName, final Module currentModule, + private static ServiceInterfaceEntry findSIE(final String prefixAndIdentityLocalName, final Module currentModule, final Map qNamesToSIEs, final SchemaContext schemaContext) { Matcher m = PREFIX_COLON_LOCAL_NAME.matcher(prefixAndIdentityLocalName); @@ -540,7 +533,7 @@ final class ModuleMXBeanEntryBuilder { return sie; } - private ModuleImport findModuleImport(final Module module, final String prefix) { + private static ModuleImport findModuleImport(final Module module, final String prefix) { for (ModuleImport moduleImport : module.getImports()) { if (moduleImport.getPrefix().equals(prefix)) { return moduleImport; @@ -556,7 +549,7 @@ final class ModuleMXBeanEntryBuilder { return pattern.matcher(whenConstraint.toString()); } - String getConfigModulePrefixFromImport(final Module currentModule) { + private static String getConfigModulePrefixFromImport(final Module currentModule) { for (ModuleImport currentImport : currentModule.getImports()) { if (currentImport.getModuleName().equals(ConfigConstants.CONFIG_MODULE)) { return currentImport.getPrefix();