* Register a MBean with the platform MBean server
*
* @param mbean
- * the mbean interface to register
+ * the mbean object to register
* @param metricName
* name of the JGit metric, will be prefixed with
* "org.eclipse.jgit/"
* @return the registered mbean's object instance
*/
- public static @Nullable ObjectInstance registerMBean(Class mbean,
+ public static @Nullable ObjectInstance registerMBean(Object mbean,
String metricName) {
- boolean register;
+ boolean register = false;
try {
- register = SystemReader.getInstance().getUserConfig().getBoolean(
+ Class<?> interfaces[] = mbean.getClass().getInterfaces();
+ for (Class<?> i : interfaces) {
+ register = SystemReader.getInstance().getUserConfig()
+ .getBoolean(
ConfigConstants.CONFIG_JMX_SECTION,
- mbean.getSimpleName(), false);
+ i.getSimpleName(), false);
+ if (register) {
+ break;
+ }
+ }
} catch (IOException | ConfigInvalidException e) {
LOG.error(e.getMessage(), e);
return null;
}
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
try {
- ObjectName mbeanName = objectName(mbean, metricName);
+ ObjectName mbeanName = objectName(mbean.getClass(), metricName);
if (server.isRegistered(mbeanName)) {
server.unregisterMBean(mbeanName);
}