protected void registerMBeanProperties()

in src/main/java/org/apache/sling/commons/metrics/internal/JmxExporterFactory.java [120:146]


    protected void registerMBeanProperties(ObjectName objectname) throws InstanceNotFoundException, ReflectionException, IntrospectionException {
        MBeanInfo info = server.getMBeanInfo(objectname);
        MBeanAttributeInfo[] attributes = info.getAttributes();
        for (MBeanAttributeInfo attr : attributes) {
            LOG.debug("Checking mbean = {}, name = {}, type={}",objectname, attr.getName(), attr.getType());
            
            Supplier<?> supplier = null;
            if ("int".equals(attr.getType())) {
                supplier = getSupplier(objectname, attr.getName(),0);
            } else if ("long".equals(attr.getType())) {
                supplier = getSupplier(objectname, attr.getName(),0L);
            } else if ("java.lang.String".equals(attr.getType())) {
                supplier = getSupplier(objectname,attr.getName(),"");
            } else if ("double".equals(attr.getType())) {
                supplier = getSupplier(objectname,attr.getName(), Double.valueOf(0.0));
            } else if ("boolean".equals(attr.getType())) {
                supplier = getSupplier(objectname,attr.getName(), Boolean.FALSE);
            }
            
            if (supplier != null) {
                String metricName = toMetricName(objectname, attr.getName());
                LOG.info("Registering metric {} from MBean (objectname=[{}], name={}, type={})", 
                        metricName, objectname, attr.getName(), attr.getType());
                metrics.gauge(metricName, supplier);
            }
        }
    }