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=559993f2648ec013791bdcf7167e412fe9a69102;hp=3a1efaeaaf1992163e794f950f1f48b743c64204;hb=f32ff81642b317eedcb973f7cdf0ffc9642bcf3e;hpb=9fb64948564e252018f9b1e13e7cea2c92f991aa 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 3a1efaeaaf..559993f264 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,9 +7,11 @@ */ package org.opendaylight.controller.config.util; -import java.util.Arrays; -import java.util.List; -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 javax.management.AttributeNotFoundException; import javax.management.InstanceNotFoundException; @@ -20,15 +22,14 @@ import javax.management.MBeanServer; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.management.ReflectionException; - -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 org.opendaylight.controller.config.api.jmx.ServiceReferenceMXBean; public class ConfigRegistryJMXClient implements ConfigRegistryClient { - private final ConfigRegistryMXBean configRegistryProxy; + private final ConfigRegistryMXBean configRegistryMXBeanProxy; private final ObjectName configRegistryON; private final MBeanServer configMBeanServer; @@ -40,7 +41,7 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { if (!(searchResult.size() == 1)) { throw new IllegalStateException("Config registry not found"); } - configRegistryProxy = JMX.newMXBeanProxy(configMBeanServer, configRegistryON, ConfigRegistryMXBean.class, + configRegistryMXBeanProxy = JMX.newMXBeanProxy(configMBeanServer, configRegistryON, ConfigRegistryMXBean.class, false); } @@ -61,32 +62,49 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { @Override public ConfigTransactionJMXClient getConfigTransactionClient( ObjectName objectName) { - return new ConfigTransactionJMXClient(configRegistryProxy, objectName, + return new ConfigTransactionJMXClient(configRegistryMXBeanProxy, objectName, configMBeanServer); } + /** + * Usage of this method indicates error as config JMX uses solely MXBeans. + * Use {@link #newMXBeanProxy(javax.management.ObjectName, Class)} + * or {@link JMX#newMBeanProxy(javax.management.MBeanServerConnection, javax.management.ObjectName, Class)} + * 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); } + 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(); + } + return on; + } + + public T newMXBeanProxy(ObjectName on, Class clazz) { return JMX.newMXBeanProxy(configMBeanServer, on, clazz); } @Override public ObjectName beginConfig() { - return configRegistryProxy.beginConfig(); + return configRegistryMXBeanProxy.beginConfig(); } @Override public CommitStatus commitConfig(ObjectName transactionControllerON) throws ConflictingVersionException, ValidationException { - return configRegistryProxy.commitConfig(transactionControllerON); + return configRegistryMXBeanProxy.commitConfig(transactionControllerON); } @Override public List getOpenConfigs() { - return configRegistryProxy.getOpenConfigs(); + return configRegistryMXBeanProxy.getOpenConfigs(); } @Override @@ -101,45 +119,75 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { @Override public Set getAvailableModuleNames() { - return configRegistryProxy.getAvailableModuleNames(); + return configRegistryMXBeanProxy.getAvailableModuleNames(); } @Override public boolean isHealthy() { - return configRegistryProxy.isHealthy(); + return configRegistryMXBeanProxy.isHealthy(); } @Override public Set lookupConfigBeans() { - return configRegistryProxy.lookupConfigBeans(); + return configRegistryMXBeanProxy.lookupConfigBeans(); } @Override public Set lookupConfigBeans(String moduleName) { - return configRegistryProxy.lookupConfigBeans(moduleName); + return configRegistryMXBeanProxy.lookupConfigBeans(moduleName); } @Override public Set lookupConfigBeans(String moduleName, String instanceName) { - return configRegistryProxy.lookupConfigBeans(moduleName, instanceName); + return configRegistryMXBeanProxy.lookupConfigBeans(moduleName, instanceName); } @Override public ObjectName lookupConfigBean(String moduleName, String instanceName) throws InstanceNotFoundException { - return configRegistryProxy.lookupConfigBean(moduleName, instanceName); + return configRegistryMXBeanProxy.lookupConfigBean(moduleName, instanceName); } @Override public Set lookupRuntimeBeans() { - return configRegistryProxy.lookupRuntimeBeans(); + return configRegistryMXBeanProxy.lookupRuntimeBeans(); } @Override public Set lookupRuntimeBeans(String ifcName, String instanceName) { - return configRegistryProxy.lookupRuntimeBeans(ifcName, instanceName); + return configRegistryMXBeanProxy.lookupRuntimeBeans(ifcName, instanceName); + } + + @Override + public void checkConfigBeanExists(ObjectName objectName) throws InstanceNotFoundException { + configRegistryMXBeanProxy.checkConfigBeanExists(objectName); + } + + @Override + public ObjectName lookupConfigBeanByServiceInterfaceName(String serviceInterfaceQName, String refName) { + return configRegistryMXBeanProxy.lookupConfigBeanByServiceInterfaceName(serviceInterfaceQName, refName); + } + + @Override + public Map> getServiceMapping() { + return configRegistryMXBeanProxy.getServiceMapping(); + } + + @Override + public Map lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceQName) { + return configRegistryMXBeanProxy.lookupServiceReferencesByServiceInterfaceName(serviceInterfaceQName); + } + + @Override + public Set lookupServiceInterfaceNames(ObjectName objectName) throws InstanceNotFoundException { + return configRegistryMXBeanProxy.lookupServiceInterfaceNames(objectName); + } + + @Override + public String getServiceInterfaceName(String namespace, String localName) { + return configRegistryMXBeanProxy.getServiceInterfaceName(namespace, localName); } @Override @@ -167,4 +215,18 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } } + @Override + public Set getAvailableModuleFactoryQNames() { + return configRegistryMXBeanProxy.getAvailableModuleFactoryQNames(); + } + + @Override + public ObjectName getServiceReference(String serviceInterfaceQName, String refName) throws InstanceNotFoundException { + return configRegistryMXBeanProxy.getServiceReference(serviceInterfaceQName, refName); + } + + @Override + public void checkServiceReferenceExists(ObjectName objectName) throws InstanceNotFoundException { + configRegistryMXBeanProxy.checkServiceReferenceExists(objectName); + } }