AboutCommand.java
package org.cyclopsgroup.jmxterm.cmd;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import javax.management.JMException;
import org.apache.commons.configuration2.Configuration;
import org.cyclopsgroup.jcli.annotation.Cli;
import org.cyclopsgroup.jcli.annotation.Option;
import org.cyclopsgroup.jmxterm.Command;
import org.cyclopsgroup.jmxterm.Session;
import org.cyclopsgroup.jmxterm.io.ValueOutputFormat;
import org.cyclopsgroup.jmxterm.utils.ConfigurationUtils;
/**
* Command to show about page
*
* @author <a href="mailto:jiaqi.guo@gmail.com">Jiaqi Guo</a>
*/
@Cli(name = "about", description = "Display about page")
public class AboutCommand extends Command {
private boolean showDescription;
@Override
public void execute() throws IOException, JMException {
Session session = getSession();
// output predefined about properties
Configuration props =
ConfigurationUtils.loadFromOverlappingResources(
"META-INF/cyclopsgroup/jmxterm.properties", getClass().getClassLoader());
ValueOutputFormat format = new ValueOutputFormat(2, showDescription, true);
Configuration subset = props.subset("jmxterm.about");
for (Iterator<String> iterator = subset.getKeys(); iterator.hasNext(); ) {
String key = iterator.next();
format.printExpression(session.output, key, subset.getProperty(key), null);
}
// output Java runtime properties
for (Map.Entry<Object, Object> entry : System.getProperties().entrySet()) {
String keyName = entry.toString();
if (keyName.startsWith("java.")) {
format.printExpression(session.output, keyName, entry.getValue(), null);
}
}
}
/**
* @param showDescription True to show detail description
*/
@Option(name = "s", longName = "show", description = "Show detail description")
public final void setShowDescription(boolean showDescription) {
this.showDescription = showDescription;
}
}