X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Futil%2FConfigRegistryJMXClient.java;h=395e0837c2eabf826a18980f103fa0cc7e375db8;hp=559993f2648ec013791bdcf7167e412fe9a69102;hb=e2f5a1f1f1b917620ba4ade6c024f5ee3d202036;hpb=0e7b83c0739ac579ca6dbf6a3f7992f70eb3000f diff --git a/opendaylight/config/config-util/src/main/java/org/opendaylight/controller/config/util/ConfigRegistryJMXClient.java b/opendaylight/config/config-util/src/main/java/org/opendaylight/controller/config/util/ConfigRegistryJMXClient.java index 559993f264..395e0837c2 100644 --- a/opendaylight/config/config-util/src/main/java/org/opendaylight/controller/config/util/ConfigRegistryJMXClient.java +++ b/opendaylight/config/config-util/src/main/java/org/opendaylight/controller/config/util/ConfigRegistryJMXClient.java @@ -7,12 +7,10 @@ */ package org.opendaylight.controller.config.util; -import org.opendaylight.controller.config.api.ConflictingVersionException; -import org.opendaylight.controller.config.api.ValidationException; -import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.api.jmx.ConfigRegistryMXBean; -import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; - +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; import javax.management.AttributeNotFoundException; import javax.management.InstanceNotFoundException; import javax.management.JMException; @@ -22,29 +20,38 @@ import javax.management.MBeanServer; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.management.ReflectionException; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Set; +import org.opendaylight.controller.config.api.ConflictingVersionException; +import org.opendaylight.controller.config.api.ValidationException; +import org.opendaylight.controller.config.api.jmx.CommitStatus; +import org.opendaylight.controller.config.api.jmx.ConfigRegistryMXBean; +import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; import org.opendaylight.controller.config.api.jmx.ServiceReferenceMXBean; +import org.opendaylight.controller.config.api.jmx.constants.ConfigRegistryConstants; public class ConfigRegistryJMXClient implements ConfigRegistryClient { private final ConfigRegistryMXBean configRegistryMXBeanProxy; private final ObjectName configRegistryON; private final MBeanServer configMBeanServer; - public ConfigRegistryJMXClient(MBeanServer configMBeanServer) { + public ConfigRegistryJMXClient(final MBeanServer configMBeanServer) { + this(configMBeanServer, OBJECT_NAME); + } + + private ConfigRegistryJMXClient(final MBeanServer configMBeanServer, final ObjectName configRegistryON) { this.configMBeanServer = configMBeanServer; - configRegistryON = OBJECT_NAME; - Set searchResult = configMBeanServer.queryMBeans( - configRegistryON, null); - if (!(searchResult.size() == 1)) { + this.configRegistryON = configRegistryON; + Set searchResult = configMBeanServer.queryMBeans(configRegistryON, null); + if (searchResult.size() != 1) { throw new IllegalStateException("Config registry not found"); } configRegistryMXBeanProxy = JMX.newMXBeanProxy(configMBeanServer, configRegistryON, ConfigRegistryMXBean.class, false); } + public static ConfigRegistryJMXClient createWithoutNotifications(final MBeanServer configMBeanServer) { + return new ConfigRegistryJMXClient(configMBeanServer, ConfigRegistryConstants.OBJECT_NAME_NO_NOTIFICATIONS); + } + @Override public ConfigTransactionJMXClient createTransaction() { ObjectName configTransactionControllerON = beginConfig(); @@ -53,7 +60,7 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { @Override public ConfigTransactionJMXClient getConfigTransactionClient( - String transactionName) { + final String transactionName) { ObjectName objectName = ObjectNameUtil .createTransactionControllerON(transactionName); return getConfigTransactionClient(objectName); @@ -61,7 +68,7 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { @Override public ConfigTransactionJMXClient getConfigTransactionClient( - ObjectName objectName) { + final ObjectName objectName) { return new ConfigTransactionJMXClient(configRegistryMXBeanProxy, objectName, configMBeanServer); } @@ -73,21 +80,22 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { * This method will be removed soon. */ @Deprecated - public T newMBeanProxy(ObjectName on, Class clazz) { - on = translateServiceRefIfPossible(on, clazz, configMBeanServer); - return JMX.newMBeanProxy(configMBeanServer, on, clazz); + public T newMBeanProxy(final ObjectName on, final Class clazz) { + ObjectName onObj = translateServiceRefIfPossible(on, clazz, configMBeanServer); + return JMX.newMBeanProxy(configMBeanServer, onObj, clazz); } - static ObjectName translateServiceRefIfPossible(ObjectName on, Class clazz, MBeanServer configMBeanServer) { - if (ObjectNameUtil.isServiceReference(on) && clazz.equals(ServiceReferenceMXBean.class) == false) { - ServiceReferenceMXBean proxy = JMX.newMXBeanProxy(configMBeanServer, on, ServiceReferenceMXBean.class); - on = proxy.getCurrentImplementation(); + static ObjectName translateServiceRefIfPossible(final ObjectName on, final Class clazz, final MBeanServer configMBeanServer) { + ObjectName onObj = on; + if (ObjectNameUtil.isServiceReference(onObj) && !clazz.equals(ServiceReferenceMXBean.class)) { + ServiceReferenceMXBean proxy = JMX.newMXBeanProxy(configMBeanServer, onObj, ServiceReferenceMXBean.class); + onObj = proxy.getCurrentImplementation(); } - return on; + return onObj; } - public T newMXBeanProxy(ObjectName on, Class clazz) { + public T newMXBeanProxy(final ObjectName on, final Class clazz) { return JMX.newMXBeanProxy(configMBeanServer, on, clazz); } @@ -97,7 +105,7 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public CommitStatus commitConfig(ObjectName transactionControllerON) + public CommitStatus commitConfig(final ObjectName transactionControllerON) throws ConflictingVersionException, ValidationException { return configRegistryMXBeanProxy.commitConfig(transactionControllerON); } @@ -112,7 +120,7 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { try { return (Long) configMBeanServer.getAttribute(configRegistryON, "Version"); - } catch (JMException e) { + } catch (final JMException e) { throw new RuntimeException(e); } } @@ -133,18 +141,18 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public Set lookupConfigBeans(String moduleName) { + public Set lookupConfigBeans(final String moduleName) { return configRegistryMXBeanProxy.lookupConfigBeans(moduleName); } @Override - public Set lookupConfigBeans(String moduleName, - String instanceName) { + public Set lookupConfigBeans(final String moduleName, + final String instanceName) { return configRegistryMXBeanProxy.lookupConfigBeans(moduleName, instanceName); } @Override - public ObjectName lookupConfigBean(String moduleName, String instanceName) + public ObjectName lookupConfigBean(final String moduleName, final String instanceName) throws InstanceNotFoundException { return configRegistryMXBeanProxy.lookupConfigBean(moduleName, instanceName); } @@ -155,18 +163,18 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public Set lookupRuntimeBeans(String ifcName, - String instanceName) { + public Set lookupRuntimeBeans(final String ifcName, + final String instanceName) { return configRegistryMXBeanProxy.lookupRuntimeBeans(ifcName, instanceName); } @Override - public void checkConfigBeanExists(ObjectName objectName) throws InstanceNotFoundException { + public void checkConfigBeanExists(final ObjectName objectName) throws InstanceNotFoundException { configRegistryMXBeanProxy.checkConfigBeanExists(objectName); } @Override - public ObjectName lookupConfigBeanByServiceInterfaceName(String serviceInterfaceQName, String refName) { + public ObjectName lookupConfigBeanByServiceInterfaceName(final String serviceInterfaceQName, final String refName) { return configRegistryMXBeanProxy.lookupConfigBeanByServiceInterfaceName(serviceInterfaceQName, refName); } @@ -176,23 +184,23 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public Map lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceQName) { + public Map lookupServiceReferencesByServiceInterfaceName(final String serviceInterfaceQName) { return configRegistryMXBeanProxy.lookupServiceReferencesByServiceInterfaceName(serviceInterfaceQName); } @Override - public Set lookupServiceInterfaceNames(ObjectName objectName) throws InstanceNotFoundException { + public Set lookupServiceInterfaceNames(final ObjectName objectName) throws InstanceNotFoundException { return configRegistryMXBeanProxy.lookupServiceInterfaceNames(objectName); } @Override - public String getServiceInterfaceName(String namespace, String localName) { + public String getServiceInterfaceName(final String namespace, final String localName) { return configRegistryMXBeanProxy.getServiceInterfaceName(namespace, localName); } @Override - public Object invokeMethod(ObjectName on, String name, Object[] params, - String[] signature) { + public Object invokeMethod(final ObjectName on, final String name, final Object[] params, + final String[] signature) { try { return configMBeanServer.invoke(on, name, params, signature); } catch (InstanceNotFoundException | ReflectionException @@ -205,13 +213,13 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public Object getAttributeCurrentValue(ObjectName on, String attributeName) { + public Object getAttributeCurrentValue(final ObjectName on, final String attributeName) { try { return configMBeanServer.getAttribute(on, attributeName); } catch (AttributeNotFoundException | InstanceNotFoundException | MBeanException | ReflectionException e) { throw new RuntimeException("Unable to get attribute " - + attributeName + " for " + on, e); + + attributeName + " for " + on + ". Available beans: " + lookupConfigBeans(), e); } } @@ -221,12 +229,12 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public ObjectName getServiceReference(String serviceInterfaceQName, String refName) throws InstanceNotFoundException { + public ObjectName getServiceReference(final String serviceInterfaceQName, final String refName) throws InstanceNotFoundException { return configRegistryMXBeanProxy.getServiceReference(serviceInterfaceQName, refName); } @Override - public void checkServiceReferenceExists(ObjectName objectName) throws InstanceNotFoundException { + public void checkServiceReferenceExists(final ObjectName objectName) throws InstanceNotFoundException { configRegistryMXBeanProxy.checkServiceReferenceExists(objectName); } }