From: Robert Varga Date: Fri, 6 Nov 2015 01:52:57 +0000 (+0100) Subject: Cache config QNameModules X-Git-Tag: release/beryllium~185 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=61ae01d240493950e25beffca5c5464c47d66ef7 Cache config QNameModules Use pre-instantiated and cached QNames, so we do not end up wasting space unnecessarily. Change-Id: I7ff7b9a098fbf182770d07ccbd0b9bb60334fb82 Signed-off-by: Robert Varga --- diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ConfigConstants.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ConfigConstants.java index 8cc0ffa165..e585eb2048 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ConfigConstants.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ConfigConstants.java @@ -8,14 +8,21 @@ package org.opendaylight.controller.config.yangjmxgenerator; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; -public class ConfigConstants { +public final class ConfigConstants { private ConfigConstants() { } - public static final String CONFIG_NAMESPACE = "urn:opendaylight:params:xml:ns:yang:controller:config"; + private static final QName DUMMY_CONFIG_QNAME = QName.create( + "urn:opendaylight:params:xml:ns:yang:controller:config", "2013-04-05", "dummy"); + private static final QName DUMM_RPC_QNAME = QName.create( + "urn:ietf:params:xml:ns:yang:rpc-context", "2013-06-17", "dummy"); + private static final QNameModule CONFIG_MOD = QNameModule.cachedReference(DUMMY_CONFIG_QNAME.getModule()); + private static final QNameModule RPC_MOD = QNameModule.cachedReference(DUMM_RPC_QNAME.getModule()); + public static final String CONFIG_NAMESPACE = CONFIG_MOD.getNamespace().toString(); public static final String CONFIG_MODULE = "config"; public static final String CONFIG_THREADS_MODULE = "config-threads"; public static final String IETF_INET_TYPES = "ietf-inet-types"; @@ -32,13 +39,10 @@ public class ConfigConstants { public static final QName RPC_CONTEXT_INSTANCE_EXTENSION_QNAME = createRpcXQName("rpc-context-instance"); public static QName createConfigQName(final String localName) { - // FIXME: pre-construct QNameModule - return QName.create(CONFIG_NAMESPACE, "2013-04-05", localName); + return QName.create(CONFIG_MOD, localName); } public static QName createRpcXQName(final String localName) { - // FIXME: pre-construct QNameModule - return QName.create("urn:ietf:params:xml:ns:yang:rpc-context", - "2013-06-17", localName); + return QName.create(RPC_MOD, localName); } } 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 0199e8cd17..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 @@ -95,13 +95,15 @@ final class ModuleMXBeanEntryBuilder { // 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() { LOG.debug("Generating ModuleMXBeans of {} to package {}", @@ -212,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 @@ -222,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; @@ -315,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(); @@ -379,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(); @@ -394,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<>(); @@ -406,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()) { @@ -420,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) { @@ -455,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)) { @@ -485,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; } @@ -497,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) { @@ -507,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); @@ -531,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; @@ -547,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();