Package org.cyclopsgroup.jmxterm.cmd

Source Code of org.cyclopsgroup.jmxterm.cmd.DomainCommand

package org.cyclopsgroup.jmxterm.cmd;

import java.io.IOException;
import java.util.HashSet;
import java.util.List;

import org.apache.commons.lang.Validate;
import org.cyclopsgroup.jcli.annotation.Argument;
import org.cyclopsgroup.jcli.annotation.Cli;
import org.cyclopsgroup.jmxterm.Command;
import org.cyclopsgroup.jmxterm.Session;
import org.cyclopsgroup.jmxterm.SyntaxUtils;

/**
* Get or set current selected domain
*
* @author <a href="mailto:jiaqi.guo@gmail.com">Jiaqi Guo</a>
*/
@Cli( name = "domain", description = "Display or set current selected domain. ", note = "With a parameter, parameter defined domain is selected, otherwise it displays current selected domain."
    + " eg. domain java.lang" )
public class DomainCommand
    extends Command
{
    /**
     * Get domain name from given domain expression
     *
     * @param domain Domain expression, which can be a name or NULL
     * @param session Current JMX session
     * @return String name of domain coming from given parameter or current session
     * @throws IOException
     */
    static String getDomainName( String domain, Session session )
        throws IOException
    {
        Validate.notNull( session, "Session can't be NULL" );
        Validate.isTrue( session.getConnection() != null, "Session isn't opened" );
        if ( domain == null )
        {
            return session.getDomain();
        }
        if ( SyntaxUtils.isNull( domain ) )
        {
            return null;
        }
        HashSet<String> domains = new HashSet<String>( DomainsCommand.getCandidateDomains( session ) );
        if ( !domains.contains( domain ) )
        {
            throw new IllegalArgumentException( "Domain " + domain + " doesn't exist, check your spelling" );
        }
        return domain;
    }

    private String domain;

    /**
     * @inheritDoc
     */
    @Override
    public List<String> doSuggestArgument()
        throws IOException
    {
        return DomainsCommand.getCandidateDomains( getSession() );
    }

    /**
     * @inheritDoc
     */
    @Override
    public void execute()
        throws IOException
    {
        Session session = getSession();
        if ( domain == null )
        {
            if ( session.getDomain() == null )
            {
                session.output.printMessage( "domain is not set" );
                session.output.println( SyntaxUtils.NULL );
            }
            else
            {
                session.output.printMessage( "domain = " + session.getDomain() );
                session.output.println( session.getDomain() );
            }
            return;
        }
        String domainName = getDomainName( domain, session );
        if ( domainName == null )
        {
            session.unsetDomain();
            session.output.printMessage( "domain is unset" );
        }
        else
        {
            session.setDomain( domainName );
            session.output.printMessage( "domain is set to " + session.getDomain() );
        }
    }

    /**
     * @param domain Domain to select
     */
    @Argument( displayName = "domain", description = "Name of domain to set" )
    public final void setDomain( String domain )
    {
        this.domain = domain;
    }
}
TOP

Related Classes of org.cyclopsgroup.jmxterm.cmd.DomainCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.