org.crsh.text.renderers.MBeanInfoRenderer Maven / Gradle / Ivy
The newest version!
package org.crsh.text.renderers;
import org.crsh.text.Color;
import org.crsh.text.Decoration;
import org.crsh.text.LineRenderer;
import org.crsh.text.Renderer;
import org.crsh.text.ui.LabelElement;
import org.crsh.text.ui.Overflow;
import org.crsh.text.ui.RowElement;
import org.crsh.text.ui.TableElement;
import org.crsh.text.ui.TreeElement;
import javax.management.Descriptor;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author Julien Viet
*/
public class MBeanInfoRenderer extends Renderer {
@Override
public Class getType() {
return MBeanInfo.class;
}
@Override
public LineRenderer renderer(Iterator stream) {
List renderers = new ArrayList();
while (stream.hasNext()) {
MBeanInfo info = stream.next();
//
TreeElement root = new TreeElement(info.getClassName());
// Descriptor
TableElement descriptor = new TableElement().
overflow(Overflow.HIDDEN).
rightCellPadding(1);
Descriptor descriptorInfo = info.getDescriptor();
if (descriptorInfo != null) {
for (String fieldName : descriptorInfo.getFieldNames()) {
String fieldValue = String.valueOf(descriptorInfo.getFieldValue(fieldName));
descriptor.row(fieldName, fieldValue);
}
}
// Attributes
TableElement attributes = new TableElement().
overflow(Overflow.HIDDEN).
rightCellPadding(1).
add(new RowElement().style(Decoration.bold.fg(Color.black).bg(Color.white)).add("NAME", "TYPE", "DESCRIPTION"));
for (MBeanAttributeInfo attributeInfo : info.getAttributes()) {
attributes.row(attributeInfo.getName(), attributeInfo.getType(), attributeInfo.getDescription());
}
// Operations
TreeElement operations = new TreeElement("Operations");
for (MBeanOperationInfo operationInfo : info.getOperations()) {
TableElement signature = new TableElement().
overflow(Overflow.HIDDEN).
rightCellPadding(1);
MBeanParameterInfo[] parameterInfos = operationInfo.getSignature();
for (MBeanParameterInfo parameterInfo : parameterInfos) {
signature.row(parameterInfo.getName(), parameterInfo.getType(), parameterInfo.getDescription());
}
TreeElement operation = new TreeElement(operationInfo.getName());
String impact;
switch (operationInfo.getImpact()) {
case MBeanOperationInfo.ACTION:
impact = "ACTION";
break;
case MBeanOperationInfo.INFO:
impact = "INFO";
break;
case MBeanOperationInfo.ACTION_INFO:
impact = "ACTION_INFO";
break;
default:
impact = "UNKNOWN";
}
operation.addChild(new TableElement().
add(
new RowElement().add("Type: ", operationInfo.getReturnType()),
new RowElement().add("Description: ", operationInfo.getDescription()),
new RowElement().add("Impact: ", impact),
new RowElement().add(new LabelElement("Signature: "), signature)
)
);
operations.addChild(operation);
}
//
root.addChild(
new TableElement().leftCellPadding(1).overflow(Overflow.HIDDEN).
row("ClassName", info.getClassName()).
row("Description", info.getDescription()
)
);
root.addChild(new TreeElement("Descriptor").addChild(descriptor));
root.addChild(new TreeElement("Attributes").addChild(attributes));
root.addChild(operations);
//
renderers.add(root.renderer());
}
return LineRenderer.vertical(renderers);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy