org.infinispan.factories.components.JmxOperationMetadata Maven / Gradle / Ivy
package org.infinispan.factories.components;
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Arrays;
import org.infinispan.jmx.annotations.ManagedOperation;
import org.infinispan.jmx.annotations.Parameter;
/**
* Persistable and cacheable metadata for JMX operations
*
* @author Manik Surtani
* @since 5.1
*/
public class JmxOperationMetadata implements Serializable {
private final String methodName;
private final String operationName;
private final JmxOperationParameter[] methodParameters;
private final String description;
private final String returnType;
public JmxOperationMetadata(Method m) {
methodName = m.getName();
returnType = m.getReturnType().getName();
Class>[] params = m.getParameterTypes();
Annotation[][] annots = m.getParameterAnnotations();
methodParameters = new JmxOperationParameter[params.length];
for (int i = 0; i < params.length; i++) {
Parameter annot = null;
for (int j = 0; j < annots[i].length; j++) {
if (annots[i][j] instanceof Parameter) {
annot = (Parameter) annots[i][j];
break;
}
}
if (annot == null) {
methodParameters[i] = new JmxOperationParameter("p" + i, params[i].getName(), null);
} else {
methodParameters[i] = new JmxOperationParameter(annot.name(), params[i].getName(), annot.description());
}
}
ManagedOperation mo = m.getAnnotation(ManagedOperation.class);
operationName = mo != null ? (mo.name().isEmpty() ? methodName : mo.name()) : methodName;
description = mo != null ? mo.description() : null;
}
public String getDescription() {
return description;
}
public String getOperationName() {
return operationName;
}
public String getMethodName() {
return methodName;
}
public JmxOperationParameter[] getMethodParameters() {
return methodParameters;
}
public String getReturnType() {
return returnType;
}
@Override
public String toString() {
return "JmxOperationMetadata{" +
"methodName='" + methodName + '\'' +
", methodParameters=" + (methodParameters == null ? null : Arrays.asList(methodParameters)) +
", description='" + description + '\'' +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy