use of org.glassfish.admin.amx.core.AMX_SPI in project Payara by payara.
the class MBeanInfoSupport method getMBeanInfo.
public static <T extends AMX_SPI> MBeanInfo getMBeanInfo(final Class<T> intf) {
final Map<String, Method> getters = new HashMap<String, Method>();
final Map<String, Method> setters = new HashMap<String, Method>();
final Map<String, Method> getterSetters = new HashMap<String, Method>();
final Set<Method> operations = new HashSet<Method>();
findInterfaceMethods(intf, getters, setters, getterSetters, operations);
if (!AMX_SPI.class.isAssignableFrom(intf)) {
findInterfaceMethods(AMX_SPI.class, getters, setters, getterSetters, operations);
}
final List<MBeanAttributeInfo> attrsList = generateMBeanAttributeInfos(getterSetters.values(), getters.values(), setters.values());
final MBeanOperationInfo[] operationInfos = generateMBeanOperationInfos(operations);
// might or might not have metadata
final AMXMBeanMetadata meta = intf.getAnnotation(AMXMBeanMetadata.class);
final boolean globalSingleton = meta != null && meta.globalSingleton();
final boolean singleton = Singleton.class.isAssignableFrom(intf) || globalSingleton || (meta != null && meta.singleton());
final String group = GROUP_OTHER;
final boolean isLeaf = meta != null && meta.leaf();
final boolean supportsAdoption = !isLeaf;
if (isLeaf) {
JMXUtil.remove(attrsList, ATTR_CHILDREN);
}
final Descriptor d = mbeanDescriptor(true, intf, singleton, globalSingleton, group, supportsAdoption, null);
final MBeanAttributeInfo[] attrInfos = new MBeanAttributeInfo[attrsList.size()];
attrsList.toArray(attrInfos);
final MBeanInfo mbeanInfo = new MBeanInfo(intf.getName(), intf.getName(), attrInfos, null, operationInfos, null, d);
return (mbeanInfo);
}
Aggregations