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;
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> T newMBeanProxy(ObjectName on, Class<T> 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> T newMXBeanProxy(ObjectName on, Class<T> clazz) {
return JMX.newMXBeanProxy(configMBeanServer, on, clazz);
}
}
@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
}
@Override
- public Map<String, ObjectName> lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceName) {
- return configRegistryMXBeanProxy.lookupServiceReferencesByServiceInterfaceName(serviceInterfaceName);
+ public Map<String, ObjectName> lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceQName) {
+ return configRegistryMXBeanProxy.lookupServiceReferencesByServiceInterfaceName(serviceInterfaceQName);
}
@Override
public Set<String> 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);
+ }
}