use of voldemort.annotations.jmx.JmxSetter in project voldemort by voldemort.
the class JmxUtils method extractOperationInfo.
/**
* Extract all operations and attributes from the given object that have
* been annotated with the Jmx annotation. Operations are all methods that
* are marked with the JmxOperation annotation.
*
* @param object The object to process
* @return An array of operations taken from the object
*/
public static ModelMBeanOperationInfo[] extractOperationInfo(Object object) {
ArrayList<ModelMBeanOperationInfo> infos = new ArrayList<ModelMBeanOperationInfo>();
for (Method m : object.getClass().getMethods()) {
JmxOperation jmxOperation = m.getAnnotation(JmxOperation.class);
JmxGetter jmxGetter = m.getAnnotation(JmxGetter.class);
JmxSetter jmxSetter = m.getAnnotation(JmxSetter.class);
if (jmxOperation != null || jmxGetter != null || jmxSetter != null) {
String description = "";
int visibility = 1;
int impact = MBeanOperationInfo.UNKNOWN;
if (jmxOperation != null) {
description = jmxOperation.description();
impact = jmxOperation.impact();
} else if (jmxGetter != null) {
description = jmxGetter.description();
impact = MBeanOperationInfo.INFO;
visibility = 4;
} else if (jmxSetter != null) {
description = jmxSetter.description();
impact = MBeanOperationInfo.ACTION;
visibility = 4;
}
ModelMBeanOperationInfo info = new ModelMBeanOperationInfo(m.getName(), description, extractParameterInfo(m), m.getReturnType().getName(), impact);
info.getDescriptor().setField("visibility", Integer.toString(visibility));
infos.add(info);
}
}
return infos.toArray(new ModelMBeanOperationInfo[infos.size()]);
}
use of voldemort.annotations.jmx.JmxSetter in project voldemort by voldemort.
the class JmxUtils method extractAttributeInfo.
/**
* Extract all operations from the given object that have been annotated
* with the Jmx annotation. Operations are all methods that are marked with
* the JMX annotation and are not getters and setters (which are extracted
* as attributes).
*
* @param object The object to process
* @return An array of attributes taken from the object
*/
public static ModelMBeanAttributeInfo[] extractAttributeInfo(Object object) {
Map<String, Method> getters = new HashMap<String, Method>();
Map<String, Method> setters = new HashMap<String, Method>();
Map<String, String> descriptions = new HashMap<String, String>();
for (Method m : object.getClass().getMethods()) {
JmxGetter getter = m.getAnnotation(JmxGetter.class);
if (getter != null) {
getters.put(getter.name(), m);
descriptions.put(getter.name(), getter.description());
}
JmxSetter setter = m.getAnnotation(JmxSetter.class);
if (setter != null) {
setters.put(setter.name(), m);
descriptions.put(setter.name(), setter.description());
}
}
Set<String> attributes = new HashSet<String>(getters.keySet());
attributes.addAll(setters.keySet());
List<ModelMBeanAttributeInfo> infos = new ArrayList<ModelMBeanAttributeInfo>();
for (String name : attributes) {
try {
Method getter = getters.get(name);
Method setter = setters.get(name);
ModelMBeanAttributeInfo info = new ModelMBeanAttributeInfo(name, descriptions.get(name), getter, setter);
Descriptor descriptor = info.getDescriptor();
if (getter != null)
descriptor.setField("getMethod", getter.getName());
if (setter != null)
descriptor.setField("setMethod", setter.getName());
info.setDescriptor(descriptor);
infos.add(info);
} catch (IntrospectionException e) {
throw new VoldemortException(e);
}
}
return infos.toArray(new ModelMBeanAttributeInfo[infos.size()]);
}
Aggregations