X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Futil%2FConfigRegistryJMXClient.java;h=11f64e959b450eec42b744c8cfdabd3d91d66594;hb=139937c2e646894af6a9b2b8a8a1047c6ef82485;hp=8badb75f05c26f0082f00b627eedd91836bd28d5;hpb=d1ab4c3ea79bcd74e02aa9334bc660cb7fc6d037;p=controller.git 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 8badb75f05..11f64e959b 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 @@ -26,6 +26,7 @@ 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 configRegistryMXBeanProxy; @@ -65,10 +66,28 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { 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) { - return JMX.newMBeanProxy(configMBeanServer, on, clazz); + ObjectName onObj = translateServiceRefIfPossible(on, clazz, configMBeanServer); + return JMX.newMBeanProxy(configMBeanServer, onObj, clazz); } + static ObjectName translateServiceRefIfPossible(ObjectName on, Class clazz, MBeanServer configMBeanServer) { + ObjectName onObj = on; + if (ObjectNameUtil.isServiceReference(onObj) && clazz.equals(ServiceReferenceMXBean.class) == false) { + ServiceReferenceMXBean proxy = JMX.newMXBeanProxy(configMBeanServer, onObj, ServiceReferenceMXBean.class); + onObj = proxy.getCurrentImplementation(); + } + return onObj; + } + + public T newMXBeanProxy(ObjectName on, Class clazz) { return JMX.newMXBeanProxy(configMBeanServer, on, clazz); } @@ -148,8 +167,8 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public ObjectName lookupConfigBeanByServiceInterfaceName(String serviceInterfaceName, String refName) { - return configRegistryMXBeanProxy.lookupConfigBeanByServiceInterfaceName(serviceInterfaceName, refName); + public ObjectName lookupConfigBeanByServiceInterfaceName(String serviceInterfaceQName, String refName) { + return configRegistryMXBeanProxy.lookupConfigBeanByServiceInterfaceName(serviceInterfaceQName, refName); } @Override @@ -158,8 +177,8 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { } @Override - public Map lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceName) { - return configRegistryMXBeanProxy.lookupServiceReferencesByServiceInterfaceName(serviceInterfaceName); + public Map lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceQName) { + return configRegistryMXBeanProxy.lookupServiceReferencesByServiceInterfaceName(serviceInterfaceQName); } @Override @@ -201,4 +220,14 @@ public class ConfigRegistryJMXClient implements ConfigRegistryClient { 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); + } }