+++ /dev/null
-/*
- * 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-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 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.
- */
-class ConfigTransactionLookupRegistry implements LookupRegistry, Closeable {
- private final TransactionJMXRegistrator transactionJMXRegistrator;
- private final TransactionIdentifier transactionIdentifier;
- private final TransactionModuleJMXRegistrator txModuleJMXRegistrator;
- private final Map<String, Map.Entry<ModuleFactory, BundleContext>> allCurrentFactories;
-
- interface TransactionJMXRegistratorFactory {
- TransactionJMXRegistrator create();
- }
-
- ConfigTransactionLookupRegistry(final TransactionIdentifier transactionIdentifier,
- final TransactionJMXRegistratorFactory factory,
- final Map<String, Entry<ModuleFactory, BundleContext>> allCurrentFactories) {
- this.transactionIdentifier = transactionIdentifier;
- this.transactionJMXRegistrator = factory.create();
- this.txModuleJMXRegistrator = transactionJMXRegistrator.createTransactionModuleJMXRegistrator();
- this.allCurrentFactories = allCurrentFactories;
- }
-
- private void checkTransactionName(final ObjectName objectName) {
- String foundTransactionName = ObjectNameUtil.getTransactionName(objectName);
- if (!transactionIdentifier.getName().equals(foundTransactionName)) {
- throw new IllegalArgumentException("Wrong transaction name " + objectName);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Set<ObjectName> lookupConfigBeans() {
- return lookupConfigBeans("*", "*");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Set<ObjectName> lookupConfigBeans(final String moduleName) {
- return lookupConfigBeans(moduleName, "*");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Set<ObjectName> lookupConfigBeans(final String moduleName, final String instanceName) {
- ObjectName namePattern = ObjectNameUtil.createModulePattern(moduleName, instanceName,
- transactionIdentifier.getName());
- return txModuleJMXRegistrator.queryNames(namePattern, null);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ObjectName lookupConfigBean(final String moduleName, final String instanceName)
- throws InstanceNotFoundException {
- return LookupBeansUtil.lookupConfigBean(this, moduleName, instanceName);
- }
-
- @Override
- 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));
- }
-
- TransactionIdentifier getTransactionIdentifier() {
- return transactionIdentifier;
- }
-
- TransactionModuleJMXRegistrator getTxModuleJMXRegistrator() {
- return txModuleJMXRegistrator;
- }
-
- @Override
- public void close() {
- transactionJMXRegistrator.close();
- }
-
- public void registerMBean(final ConfigTransactionControllerInternal transactionController,
- final ObjectName controllerObjectName) throws InstanceAlreadyExistsException {
- transactionJMXRegistrator.registerMBean(transactionController, controllerObjectName);
- }
-
- @Override
- public Set<String> getAvailableModuleFactoryQNames() {
- return ModuleQNameUtil.getQNames(allCurrentFactories);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Set<ObjectName> lookupRuntimeBeans() {
- return lookupRuntimeBeans("*", "*");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Set<ObjectName> 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 + '}';
- }
-}