DomainsCommand.java

package org.cyclopsgroup.jmxterm.cmd;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.cyclopsgroup.jcli.annotation.Cli;
import org.cyclopsgroup.jmxterm.Command;
import org.cyclopsgroup.jmxterm.Session;
import org.cyclopsgroup.jmxterm.io.RuntimeIOException;

/**
 * List domains for JMX connection
 *
 * @author <a href="mailto:jiaqi.guo@gmail.com">Jiaqi Guo</a>
 */
@Cli(name = "domains", description = "List all available domain names")
public class DomainsCommand extends Command {
  /**
   * Gets list of domains for current JMX connection.
   *
   * @param session The current session.
   * @return List of available domain names.
   */
  static List<String> getCandidateDomains(Session session) {
    String[] domains;
    try {
      domains = session.getConnection().getServerConnection().getDomains();
    } catch (IOException e) {
      throw new RuntimeIOException("Couldn't get candate domains", e);
    }
    List<String> result = new ArrayList<String>(Arrays.asList(domains));
    Collections.sort(result);
    return result;
  }

  @Override
  public void execute() throws IOException {
    Session session = getSession();

    session.output.printMessage("following domains are available");
    for (String domain : getCandidateDomains(session)) {
      session.output.println(domain);
    }
  }
}