package etm.core.jmx; import etm.core.aggregation.Aggregate; import etm.core.util.Log; import etm.core.util.LogAdapter; import javax.management.InstanceAlreadyExistsException; import javax.management.JMException; import javax.management.MBeanServer; import javax.management.ObjectName; import java.util.Hashtable; /** * Helper class for Jmx related classes. * * @author void.fm * @version $Revision$ * @since 1.2.2 */ class JmxSupport { private static final LogAdapter LOG = Log.getLog(JmxSupport.class); protected void registerMBean(MBeanServer mbeanServer, ObjectName objectName, Object object, boolean overwrite) throws JMException { try { mbeanServer.registerMBean(object, objectName); } catch (InstanceAlreadyExistsException e) { if (overwrite) { mbeanServer.unregisterMBean(objectName); mbeanServer.registerMBean(object, objectName); } else { LOG.warn("Error registering EtmMonitor MBean. An instance called " + objectName + " already exists."); } } } protected ObjectName calculateObjectName(String measurementDomain, Aggregate aAggregate) throws JMException { char[] chars = aAggregate.getName().toCharArray(); for (int i = 0; i < chars.length; i++) { switch (chars[i]) { case ':': case ',': case ';': chars[i] = '_'; break; default: // don't do anything } } Hashtable map = new Hashtable(); map.put("type", "Measurement"); map.put("name", new String(chars)); return new ObjectName(measurementDomain, map); } }