X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2Fimpl%2FConfigTransactionLookupRegistry.java;h=f9a5acffad044b448b52eefc857a7b62e39ae96c;hb=81674d6fd50b419b868d0851062e23f34b34557d;hp=5d1f0b39760b3453a0e1fc9f6b34f0bd15a939d3;hpb=404d4fc52adf17bad6b53aaeedf59d1db85780bc;p=controller.git diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionLookupRegistry.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionLookupRegistry.java index 5d1f0b3976..f9a5acffad 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionLookupRegistry.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionLookupRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2013, 2017 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -7,40 +7,49 @@ */ package org.opendaylight.controller.config.manager.impl; +import java.io.Closeable; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import javax.management.InstanceAlreadyExistsException; +import javax.management.InstanceNotFoundException; +import javax.management.ObjectName; import org.opendaylight.controller.config.api.LookupRegistry; import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; import org.opendaylight.controller.config.manager.impl.jmx.TransactionJMXRegistrator; import org.opendaylight.controller.config.manager.impl.jmx.TransactionModuleJMXRegistrator; import org.opendaylight.controller.config.manager.impl.util.LookupBeansUtil; - -import javax.management.InstanceAlreadyExistsException; -import javax.management.InstanceNotFoundException; -import javax.management.ObjectName; -import java.io.Closeable; -import java.util.Set; +import org.opendaylight.controller.config.manager.impl.util.ModuleQNameUtil; +import org.opendaylight.controller.config.spi.ModuleFactory; +import org.osgi.framework.BundleContext; /** - * Responsible for creating TransactionJMXRegistrator, registering transaction and all its beans, - * lookup of beans, closing of TransactionJMXRegistrator. + * Responsible for creating TransactionJMXRegistrator, registering transaction + * and all its beans, lookup of beans, closing of TransactionJMXRegistrator. */ -class ConfigTransactionLookupRegistry implements LookupRegistry, Closeable { +class ConfigTransactionLookupRegistry implements LookupRegistry, Closeable { private final TransactionJMXRegistrator transactionJMXRegistrator; private final TransactionIdentifier transactionIdentifier; private final TransactionModuleJMXRegistrator txModuleJMXRegistrator; + private final Map> allCurrentFactories; + + interface TransactionJMXRegistratorFactory { + TransactionJMXRegistrator create(); + } - ConfigTransactionLookupRegistry(TransactionIdentifier transactionIdentifier, - TransactionJMXRegistratorFactory factory) { + ConfigTransactionLookupRegistry(final TransactionIdentifier transactionIdentifier, + final TransactionJMXRegistratorFactory factory, + final Map> allCurrentFactories) { this.transactionIdentifier = transactionIdentifier; this.transactionJMXRegistrator = factory.create(); this.txModuleJMXRegistrator = transactionJMXRegistrator.createTransactionModuleJMXRegistrator(); + this.allCurrentFactories = allCurrentFactories; } - private void checkTransactionName(ObjectName objectName) { - String foundTransactionName = ObjectNameUtil - .getTransactionName(objectName); - if (transactionIdentifier.getName().equals(foundTransactionName) == false) { - throw new IllegalArgumentException("Wrong transaction name " - + objectName); + private void checkTransactionName(final ObjectName objectName) { + String foundTransactionName = ObjectNameUtil.getTransactionName(objectName); + if (!transactionIdentifier.getName().equals(foundTransactionName)) { + throw new IllegalArgumentException("Wrong transaction name " + objectName); } } @@ -56,7 +65,7 @@ class ConfigTransactionLookupRegistry implements LookupRegistry, Closeable { * {@inheritDoc} */ @Override - public Set lookupConfigBeans(String moduleName) { + public Set lookupConfigBeans(final String moduleName) { return lookupConfigBeans(moduleName, "*"); } @@ -64,29 +73,29 @@ class ConfigTransactionLookupRegistry implements LookupRegistry, Closeable { * {@inheritDoc} */ @Override - public ObjectName lookupConfigBean(String moduleName, String instanceName) - throws InstanceNotFoundException { - return LookupBeansUtil.lookupConfigBean(this, moduleName, instanceName); + public Set lookupConfigBeans(final String moduleName, final String instanceName) { + ObjectName namePattern = ObjectNameUtil.createModulePattern(moduleName, instanceName, + transactionIdentifier.getName()); + return txModuleJMXRegistrator.queryNames(namePattern, null); } /** * {@inheritDoc} */ @Override - public Set lookupConfigBeans(String moduleName, - String instanceName) { - ObjectName namePattern = ObjectNameUtil.createModulePattern(moduleName, - instanceName, transactionIdentifier.getName()); - return txModuleJMXRegistrator.queryNames(namePattern, null); + public ObjectName lookupConfigBean(final String moduleName, final String instanceName) + throws InstanceNotFoundException { + return LookupBeansUtil.lookupConfigBean(this, moduleName, instanceName); } @Override - public void checkConfigBeanExists(ObjectName objectName) throws InstanceNotFoundException { + public void checkConfigBeanExists(final ObjectName objectName) throws InstanceNotFoundException { ObjectNameUtil.checkDomain(objectName); ObjectNameUtil.checkType(objectName, ObjectNameUtil.TYPE_MODULE); checkTransactionName(objectName); // make sure exactly one match is found: - LookupBeansUtil.lookupConfigBean(this, ObjectNameUtil.getFactoryName(objectName), ObjectNameUtil.getInstanceName(objectName)); + LookupBeansUtil.lookupConfigBean(this, ObjectNameUtil.getFactoryName(objectName), + ObjectNameUtil.getInstanceName(objectName)); } TransactionIdentifier getTransactionIdentifier() { @@ -97,15 +106,42 @@ class ConfigTransactionLookupRegistry implements LookupRegistry, Closeable { return txModuleJMXRegistrator; } + @Override public void close() { transactionJMXRegistrator.close(); } - public void registerMBean(ConfigTransactionControllerInternal transactionController, ObjectName controllerObjectName) throws InstanceAlreadyExistsException { + public void registerMBean(final ConfigTransactionControllerInternal transactionController, + final ObjectName controllerObjectName) throws InstanceAlreadyExistsException { transactionJMXRegistrator.registerMBean(transactionController, controllerObjectName); } -} -interface TransactionJMXRegistratorFactory { - TransactionJMXRegistrator create(); + @Override + public Set getAvailableModuleFactoryQNames() { + return ModuleQNameUtil.getQNames(allCurrentFactories); + } + + /** + * {@inheritDoc} + */ + @Override + public Set lookupRuntimeBeans() { + return lookupRuntimeBeans("*", "*"); + } + + /** + * {@inheritDoc} + */ + @Override + public Set lookupRuntimeBeans(final String moduleName, final String instanceName) { + String finalModuleName = moduleName == null ? "*" : moduleName; + String finalInstanceName = instanceName == null ? "*" : instanceName; + ObjectName namePattern = ObjectNameUtil.createRuntimeBeanPattern(finalModuleName, finalInstanceName); + return transactionJMXRegistrator.queryNames(namePattern, null); + } + + @Override + public String toString() { + return "ConfigTransactionLookupRegistry{" + "transactionIdentifier=" + transactionIdentifier + '}'; + } }