@Override public MBeanInfo getMBeanInfo() { return metaData().getMBeanInfo(); }
private void collectMBeanAttributeInfos(Map<String, MBeanAttributeInfo> attributeInfos) { // Start with interfaces, overwrite with superClass, then overwrite with local attributes. for (MetaData intf : _interfaces) intf.collectMBeanAttributeInfos(attributeInfos); if (_parent != null) { MBeanAttributeInfo[] parentAttributes = _parent.getMBeanInfo().getAttributes(); for (MBeanAttributeInfo parentAttribute : parentAttributes) attributeInfos.put(parentAttribute.getName(), parentAttribute); } for (Map.Entry<String, AttributeInfo> entry : _attributes.entrySet()) attributeInfos.put(entry.getKey(), entry.getValue()._info); }
private MBeanInfo buildMBeanInfo(Class<?> klass) { ManagedObject managedObject = klass.getAnnotation(ManagedObject.class); String description = managedObject == null ? "" : managedObject.value(); Map<String, MBeanAttributeInfo> attributeInfos = new HashMap<>(); collectMBeanAttributeInfos(attributeInfos); Map<String, MBeanOperationInfo> operationInfos = new HashMap<>(); collectMBeanOperationInfos(operationInfos); MBeanInfo mbeanInfo = _parent == null ? null : _parent.getMBeanInfo(); MBeanAttributeInfo[] attributes = attributeInfos.values().toArray(NO_ATTRIBUTES); MBeanConstructorInfo[] constructors = mbeanInfo == null ? NO_CONSTRUCTORS : mbeanInfo.getConstructors(); MBeanOperationInfo[] operations = operationInfos.values().toArray(NO_OPERATIONS); MBeanNotificationInfo[] notifications = mbeanInfo == null ? NO_NOTIFICATIONS : mbeanInfo.getNotifications(); return new MBeanInfo(klass.getName(), description, attributes, constructors, operations, notifications); }
private void collectMBeanOperationInfos(Map<String, MBeanOperationInfo> operationInfos) { // Start with interfaces, overwrite with superClass, then overwrite with local operations. for (MetaData intf : _interfaces) intf.collectMBeanOperationInfos(operationInfos); if (_parent != null) { MBeanOperationInfo[] parentOperations = _parent.getMBeanInfo().getOperations(); for (MBeanOperationInfo parentOperation : parentOperations) { String signature = signature(parentOperation.getName(), Arrays.stream(parentOperation.getSignature()).map(MBeanParameterInfo::getType).toArray(String[]::new)); operationInfos.put(signature, parentOperation); } } for (Map.Entry<String, OperationInfo> entry : _operations.entrySet()) operationInfos.put(entry.getKey(), entry.getValue()._info); }