dos2unix
This commit is contained in:
		
							parent
							
								
									7a5288278c
								
							
						
					
					
						commit
						7ef48da327
					
				@ -1,334 +1,334 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
					 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
				
			||||||
 * This file is part of SIGAR.
 | 
					 * This file is part of SIGAR.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
					 * SIGAR is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * it under the terms version 2 of the GNU General Public License as
 | 
					 * it under the terms version 2 of the GNU General Public License as
 | 
				
			||||||
 * published by the Free Software Foundation. This program is distributed
 | 
					 * published by the Free Software Foundation. This program is distributed
 | 
				
			||||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
					 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
				
			||||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
					 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
				
			||||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
					 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
				
			||||||
 * details.
 | 
					 * details.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 * along with this program; if not, write to the Free Software
 | 
					 * along with this program; if not, write to the Free Software
 | 
				
			||||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
					 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
				
			||||||
 * USA.
 | 
					 * USA.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.hyperic.sigar.jmx;
 | 
					package org.hyperic.sigar.jmx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.management.Attribute;
 | 
					import javax.management.Attribute;
 | 
				
			||||||
import javax.management.AttributeNotFoundException;
 | 
					import javax.management.AttributeNotFoundException;
 | 
				
			||||||
import javax.management.MBeanAttributeInfo;
 | 
					import javax.management.MBeanAttributeInfo;
 | 
				
			||||||
import javax.management.MBeanConstructorInfo;
 | 
					import javax.management.MBeanConstructorInfo;
 | 
				
			||||||
import javax.management.MBeanInfo;
 | 
					import javax.management.MBeanInfo;
 | 
				
			||||||
import javax.management.MBeanParameterInfo;
 | 
					import javax.management.MBeanParameterInfo;
 | 
				
			||||||
import javax.management.ReflectionException;
 | 
					import javax.management.ReflectionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.hyperic.sigar.Sigar;
 | 
					import org.hyperic.sigar.Sigar;
 | 
				
			||||||
import org.hyperic.sigar.SigarException;
 | 
					import org.hyperic.sigar.SigarException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Sigar JMX MBean implementation for the <code>Cpu</code> information
 | 
					 * Sigar JMX MBean implementation for the <code>Cpu</code> information
 | 
				
			||||||
 * package. Provides an OpenMBean conform implementation.
 | 
					 * package. Provides an OpenMBean conform implementation.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * @author Bjoern Martin
 | 
					 * @author Bjoern Martin
 | 
				
			||||||
 * @since 1.5
 | 
					 * @since 1.5
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class SigarCpu extends AbstractMBean {
 | 
					public class SigarCpu extends AbstractMBean {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String MBEAN_TYPE = "CpuList";
 | 
					    private static final String MBEAN_TYPE = "CpuList";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanInfo MBEAN_INFO;
 | 
					    private static final MBeanInfo MBEAN_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_CPUINDEX;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_IDLE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_IDLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_NICE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_NICE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_SYS;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_SYS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_TOTAL;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_TOTAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_USER;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_USER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_WAIT;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_WAIT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX_SIGAR;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static MBeanParameterInfo MBEAN_PARAM_CPUINDEX;
 | 
					    private static MBeanParameterInfo MBEAN_PARAM_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
					    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
        MBEAN_ATTR_CPUINDEX = new MBeanAttributeInfo("CpuIndex", "int",
 | 
					        MBEAN_ATTR_CPUINDEX = new MBeanAttributeInfo("CpuIndex", "int",
 | 
				
			||||||
                "The index of the CPU, typically starting at 0", true, false,
 | 
					                "The index of the CPU, typically starting at 0", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_IDLE = new MBeanAttributeInfo("Idle", "long",
 | 
					        MBEAN_ATTR_IDLE = new MBeanAttributeInfo("Idle", "long",
 | 
				
			||||||
                "The idle time of the CPU, in [ms]", true, false, false);
 | 
					                "The idle time of the CPU, in [ms]", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_NICE = new MBeanAttributeInfo("Nice", "long",
 | 
					        MBEAN_ATTR_NICE = new MBeanAttributeInfo("Nice", "long",
 | 
				
			||||||
                "The time of the CPU spent on nice priority, in [ms]", true,
 | 
					                "The time of the CPU spent on nice priority, in [ms]", true,
 | 
				
			||||||
                false, false);
 | 
					                false, false);
 | 
				
			||||||
        MBEAN_ATTR_SYS = new MBeanAttributeInfo("Sys", "long",
 | 
					        MBEAN_ATTR_SYS = new MBeanAttributeInfo("Sys", "long",
 | 
				
			||||||
                "The time of the CPU used by the system, in [ms]", true, false,
 | 
					                "The time of the CPU used by the system, in [ms]", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_TOTAL = new MBeanAttributeInfo("Total", "long",
 | 
					        MBEAN_ATTR_TOTAL = new MBeanAttributeInfo("Total", "long",
 | 
				
			||||||
                "The total time of the CPU, in [ms]", true, false, false);
 | 
					                "The total time of the CPU, in [ms]", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_USER = new MBeanAttributeInfo("User", "long",
 | 
					        MBEAN_ATTR_USER = new MBeanAttributeInfo("User", "long",
 | 
				
			||||||
                "The time of the CPU used by user processes, in [ms]", true,
 | 
					                "The time of the CPU used by user processes, in [ms]", true,
 | 
				
			||||||
                false, false);
 | 
					                false, false);
 | 
				
			||||||
        MBEAN_ATTR_WAIT = new MBeanAttributeInfo("Wait", "long",
 | 
					        MBEAN_ATTR_WAIT = new MBeanAttributeInfo("Wait", "long",
 | 
				
			||||||
                "The time the CPU had to wait for data to be loaded, in [ms]",
 | 
					                "The time the CPU had to wait for data to be loaded, in [ms]",
 | 
				
			||||||
                true, false, false);
 | 
					                true, false, false);
 | 
				
			||||||
        MBEAN_PARAM_CPUINDEX = new MBeanParameterInfo("cpuIndex", "int",
 | 
					        MBEAN_PARAM_CPUINDEX = new MBeanParameterInfo("cpuIndex", "int",
 | 
				
			||||||
                "The index of the CPU to read data for. Must be >= 0 "
 | 
					                "The index of the CPU to read data for. Must be >= 0 "
 | 
				
			||||||
                        + "and not exceed the CPU count of the system");
 | 
					                        + "and not exceed the CPU count of the system");
 | 
				
			||||||
        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
					        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
				
			||||||
                .getName(), "The Sigar instance to use to fetch data from");
 | 
					                .getName(), "The Sigar instance to use to fetch data from");
 | 
				
			||||||
        MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(SigarCpu.class
 | 
					        MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(SigarCpu.class
 | 
				
			||||||
                .getName(),
 | 
					                .getName(),
 | 
				
			||||||
                "Creates a new instance for the CPU index specified, "
 | 
					                "Creates a new instance for the CPU index specified, "
 | 
				
			||||||
                        + "using a new Sigar instance to fetch the data. "
 | 
					                        + "using a new Sigar instance to fetch the data. "
 | 
				
			||||||
                        + "Fails if the CPU index is out of range.",
 | 
					                        + "Fails if the CPU index is out of range.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_CPUINDEX });
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_CPUINDEX });
 | 
				
			||||||
        MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
 | 
					        MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
 | 
				
			||||||
                SigarCpu.class.getName(),
 | 
					                SigarCpu.class.getName(),
 | 
				
			||||||
                "Creates a new instance for the CPU index specified, "
 | 
					                "Creates a new instance for the CPU index specified, "
 | 
				
			||||||
                        + "using the Sigar instance specified to fetch the data. "
 | 
					                        + "using the Sigar instance specified to fetch the data. "
 | 
				
			||||||
                        + "Fails if the CPU index is out of range.",
 | 
					                        + "Fails if the CPU index is out of range.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR,
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR,
 | 
				
			||||||
                        MBEAN_PARAM_CPUINDEX });
 | 
					                        MBEAN_PARAM_CPUINDEX });
 | 
				
			||||||
        MBEAN_INFO = new MBeanInfo(
 | 
					        MBEAN_INFO = new MBeanInfo(
 | 
				
			||||||
                SigarCpu.class.getName(),
 | 
					                SigarCpu.class.getName(),
 | 
				
			||||||
                "Sigar CPU MBean. Provides raw timing data for a single "
 | 
					                "Sigar CPU MBean. Provides raw timing data for a single "
 | 
				
			||||||
                        + "CPU. The data is cached for 500ms, meaning each request "
 | 
					                        + "CPU. The data is cached for 500ms, meaning each request "
 | 
				
			||||||
                        + "(and as a result each block request to all parameters) "
 | 
					                        + "(and as a result each block request to all parameters) "
 | 
				
			||||||
                        + "within half a second is satisfied from the same dataset.",
 | 
					                        + "within half a second is satisfied from the same dataset.",
 | 
				
			||||||
                new MBeanAttributeInfo[] { MBEAN_ATTR_CPUINDEX,
 | 
					                new MBeanAttributeInfo[] { MBEAN_ATTR_CPUINDEX,
 | 
				
			||||||
                        MBEAN_ATTR_IDLE, MBEAN_ATTR_NICE, MBEAN_ATTR_SYS,
 | 
					                        MBEAN_ATTR_IDLE, MBEAN_ATTR_NICE, MBEAN_ATTR_SYS,
 | 
				
			||||||
                        MBEAN_ATTR_TOTAL, MBEAN_ATTR_USER, MBEAN_ATTR_WAIT },
 | 
					                        MBEAN_ATTR_TOTAL, MBEAN_ATTR_USER, MBEAN_ATTR_WAIT },
 | 
				
			||||||
                new MBeanConstructorInfo[] { MBEAN_CONSTR_CPUINDEX,
 | 
					                new MBeanConstructorInfo[] { MBEAN_CONSTR_CPUINDEX,
 | 
				
			||||||
                        MBEAN_CONSTR_CPUINDEX_SIGAR }, null, null);
 | 
					                        MBEAN_CONSTR_CPUINDEX_SIGAR }, null, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Index of the CPU processed by the instance.
 | 
					     * Index of the CPU processed by the instance.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private final int cpuIndex;
 | 
					    private final int cpuIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an
 | 
					     * Object name this instance will give itself when being registered to an
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private final String objectName;
 | 
					    private final String objectName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance for the CPU index specified, using a new Sigar
 | 
					     * Creates a new instance for the CPU index specified, using a new Sigar
 | 
				
			||||||
     * instance to fetch the data. Fails if the CPU index is out of range.
 | 
					     * instance to fetch the data. Fails if the CPU index is out of range.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param cpuIndex 
 | 
					     * @param cpuIndex 
 | 
				
			||||||
     *      The index of the CPU to read data for. Must be <code>>= 0</code> 
 | 
					     *      The index of the CPU to read data for. Must be <code>>= 0</code> 
 | 
				
			||||||
     *      and not exceed the CPU count of the system.
 | 
					     *      and not exceed the CPU count of the system.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException
 | 
					     * @throws IllegalArgumentException
 | 
				
			||||||
     *      If the CPU index is out of range or an unexpected Sigar error
 | 
					     *      If the CPU index is out of range or an unexpected Sigar error
 | 
				
			||||||
     *      occurs.
 | 
					     *      occurs.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarCpu(int cpuIndex) throws IllegalArgumentException {
 | 
					    public SigarCpu(int cpuIndex) throws IllegalArgumentException {
 | 
				
			||||||
        this(new Sigar(), cpuIndex);
 | 
					        this(new Sigar(), cpuIndex);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance for the CPU index specified, using the Sigar
 | 
					     * Creates a new instance for the CPU index specified, using the Sigar
 | 
				
			||||||
     * instance specified to fetch the data. Fails if the CPU index is out of
 | 
					     * instance specified to fetch the data. Fails if the CPU index is out of
 | 
				
			||||||
     * range.
 | 
					     * range.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param sigar
 | 
					     * @param sigar
 | 
				
			||||||
     *            The Sigar instance to use to fetch data from
 | 
					     *            The Sigar instance to use to fetch data from
 | 
				
			||||||
     * @param cpuIndex
 | 
					     * @param cpuIndex
 | 
				
			||||||
     *            The index of the CPU to read data for. Must be
 | 
					     *            The index of the CPU to read data for. Must be
 | 
				
			||||||
     *            <code>>= 0</code> and not exceed the CPU count of the
 | 
					     *            <code>>= 0</code> and not exceed the CPU count of the
 | 
				
			||||||
     *            system.
 | 
					     *            system.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException
 | 
					     * @throws IllegalArgumentException
 | 
				
			||||||
     *             If the CPU index is out of range or an unexpected Sigar error
 | 
					     *             If the CPU index is out of range or an unexpected Sigar error
 | 
				
			||||||
     *             occurs
 | 
					     *             occurs
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarCpu(Sigar sigar, int cpuIndex) throws IllegalArgumentException {
 | 
					    public SigarCpu(Sigar sigar, int cpuIndex) throws IllegalArgumentException {
 | 
				
			||||||
        super(sigar, CACHED_500MS);
 | 
					        super(sigar, CACHED_500MS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // check index
 | 
					        // check index
 | 
				
			||||||
        if (cpuIndex < 0)
 | 
					        if (cpuIndex < 0)
 | 
				
			||||||
            throw new IllegalArgumentException(
 | 
					            throw new IllegalArgumentException(
 | 
				
			||||||
                    "CPU index has to be non-negative: " + cpuIndex);
 | 
					                    "CPU index has to be non-negative: " + cpuIndex);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            int cpuCount;
 | 
					            int cpuCount;
 | 
				
			||||||
            if ((cpuCount = sigar.getCpuList().length) < cpuIndex)
 | 
					            if ((cpuCount = sigar.getCpuList().length) < cpuIndex)
 | 
				
			||||||
                throw new IllegalArgumentException(
 | 
					                throw new IllegalArgumentException(
 | 
				
			||||||
                        "CPU index out of range (found " + cpuCount
 | 
					                        "CPU index out of range (found " + cpuCount
 | 
				
			||||||
                                + " CPU(s)): " + cpuIndex);
 | 
					                                + " CPU(s)): " + cpuIndex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // all fine
 | 
					        // all fine
 | 
				
			||||||
        this.cpuIndex = cpuIndex;
 | 
					        this.cpuIndex = cpuIndex;
 | 
				
			||||||
        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
					        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
				
			||||||
                + "=Cpu,"
 | 
					                + "=Cpu,"
 | 
				
			||||||
                + MBEAN_ATTR_CPUINDEX.getName().substring(0, 1).toLowerCase()
 | 
					                + MBEAN_ATTR_CPUINDEX.getName().substring(0, 1).toLowerCase()
 | 
				
			||||||
                + MBEAN_ATTR_CPUINDEX.getName().substring(1) + "=" + cpuIndex;
 | 
					                + MBEAN_ATTR_CPUINDEX.getName().substring(1) + "=" + cpuIndex;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an
 | 
					     * Object name this instance will give itself when being registered to an
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String getObjectName() {
 | 
					    public String getObjectName() {
 | 
				
			||||||
        return this.objectName;
 | 
					        return this.objectName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The index of the CPU, typically starting at 0
 | 
					     * @return The index of the CPU, typically starting at 0
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int getCpuIndex() {
 | 
					    public int getCpuIndex() {
 | 
				
			||||||
        return this.cpuIndex;
 | 
					        return this.cpuIndex;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The idle time of the CPU, in [ms]
 | 
					     * @return The idle time of the CPU, in [ms]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getIdle() {
 | 
					    public long getIdle() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuList()[this.cpuIndex].getIdle();
 | 
					            return sigar.getCpuList()[this.cpuIndex].getIdle();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time of the CPU spent on nice priority, in [ms]
 | 
					     * @return The time of the CPU spent on nice priority, in [ms]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getNice() {
 | 
					    public long getNice() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuList()[this.cpuIndex].getNice();
 | 
					            return sigar.getCpuList()[this.cpuIndex].getNice();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time of the CPU used by the system, in [ms]
 | 
					     * @return The time of the CPU used by the system, in [ms]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getSys() {
 | 
					    public long getSys() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuList()[this.cpuIndex].getSys();
 | 
					            return sigar.getCpuList()[this.cpuIndex].getSys();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The total time of the CPU, in [ms]
 | 
					     * @return The total time of the CPU, in [ms]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getTotal() {
 | 
					    public long getTotal() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuList()[this.cpuIndex].getTotal();
 | 
					            return sigar.getCpuList()[this.cpuIndex].getTotal();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time of the CPU used by user processes, in [ms]
 | 
					     * @return The time of the CPU used by user processes, in [ms]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getUser() {
 | 
					    public long getUser() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuList()[this.cpuIndex].getUser();
 | 
					            return sigar.getCpuList()[this.cpuIndex].getUser();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time the CPU had to wait for data to be loaded, in [ms]
 | 
					     * @return The time the CPU had to wait for data to be loaded, in [ms]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getWait() {
 | 
					    public long getWait() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuList()[this.cpuIndex].getWait();
 | 
					            return sigar.getCpuList()[this.cpuIndex].getWait();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
    // Implementation of the DynamicMBean interface
 | 
					    // Implementation of the DynamicMBean interface
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @see DynamicMBean#getAttribute(String)
 | 
					     * @see DynamicMBean#getAttribute(String)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object getAttribute(String attr) throws AttributeNotFoundException {
 | 
					    public Object getAttribute(String attr) throws AttributeNotFoundException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (MBEAN_ATTR_CPUINDEX.getName().equals(attr)) {
 | 
					        if (MBEAN_ATTR_CPUINDEX.getName().equals(attr)) {
 | 
				
			||||||
            return new Integer(getCpuIndex());
 | 
					            return new Integer(getCpuIndex());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_IDLE.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_IDLE.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getIdle());
 | 
					            return new Long(getIdle());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_NICE.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_NICE.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getNice());
 | 
					            return new Long(getNice());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_SYS.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_SYS.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getSys());
 | 
					            return new Long(getSys());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_TOTAL.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_TOTAL.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getTotal());
 | 
					            return new Long(getTotal());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_USER.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_USER.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getUser());
 | 
					            return new Long(getUser());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_WAIT.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_WAIT.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getWait());
 | 
					            return new Long(getWait());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new AttributeNotFoundException(attr);
 | 
					            throw new AttributeNotFoundException(attr);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @see DynamicMBean#setAttribute(Attribute)
 | 
					     * @see DynamicMBean#setAttribute(Attribute)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
					    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
				
			||||||
        throw new AttributeNotFoundException(attr.getName());
 | 
					        throw new AttributeNotFoundException(attr.getName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @see DynamicMBean#invoke(String, Object[], String[])
 | 
					     * @see DynamicMBean#invoke(String, Object[], String[])
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
					    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
				
			||||||
            throws ReflectionException {
 | 
					            throws ReflectionException {
 | 
				
			||||||
        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
					        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
				
			||||||
                actionName);
 | 
					                actionName);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @see DynamicMBean#getMBeanInfo()
 | 
					     * @see DynamicMBean#getMBeanInfo()
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public MBeanInfo getMBeanInfo() {
 | 
					    public MBeanInfo getMBeanInfo() {
 | 
				
			||||||
        return MBEAN_INFO;
 | 
					        return MBEAN_INFO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,286 +1,286 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
					 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
				
			||||||
 * This file is part of SIGAR.
 | 
					 * This file is part of SIGAR.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
					 * SIGAR is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * it under the terms version 2 of the GNU General Public License as
 | 
					 * it under the terms version 2 of the GNU General Public License as
 | 
				
			||||||
 * published by the Free Software Foundation. This program is distributed
 | 
					 * published by the Free Software Foundation. This program is distributed
 | 
				
			||||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
					 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
				
			||||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
					 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
				
			||||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
					 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
				
			||||||
 * details.
 | 
					 * details.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 * along with this program; if not, write to the Free Software
 | 
					 * along with this program; if not, write to the Free Software
 | 
				
			||||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
					 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
				
			||||||
 * USA.
 | 
					 * USA.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.hyperic.sigar.jmx;
 | 
					package org.hyperic.sigar.jmx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.management.Attribute;
 | 
					import javax.management.Attribute;
 | 
				
			||||||
import javax.management.AttributeNotFoundException;
 | 
					import javax.management.AttributeNotFoundException;
 | 
				
			||||||
import javax.management.MBeanAttributeInfo;
 | 
					import javax.management.MBeanAttributeInfo;
 | 
				
			||||||
import javax.management.MBeanConstructorInfo;
 | 
					import javax.management.MBeanConstructorInfo;
 | 
				
			||||||
import javax.management.MBeanInfo;
 | 
					import javax.management.MBeanInfo;
 | 
				
			||||||
import javax.management.MBeanParameterInfo;
 | 
					import javax.management.MBeanParameterInfo;
 | 
				
			||||||
import javax.management.ReflectionException;
 | 
					import javax.management.ReflectionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.hyperic.sigar.Sigar;
 | 
					import org.hyperic.sigar.Sigar;
 | 
				
			||||||
import org.hyperic.sigar.SigarException;
 | 
					import org.hyperic.sigar.SigarException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Sigar JMX MBean implementation for the <code>CpuInfo</code> information 
 | 
					 * Sigar JMX MBean implementation for the <code>CpuInfo</code> information 
 | 
				
			||||||
 * package. Provides an OpenMBean conform implementation.
 | 
					 * package. Provides an OpenMBean conform implementation.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * @author Bjoern Martin
 | 
					 * @author Bjoern Martin
 | 
				
			||||||
 * @since 1.5
 | 
					 * @since 1.5
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class SigarCpuInfo extends AbstractMBean {
 | 
					public class SigarCpuInfo extends AbstractMBean {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String MBEAN_TYPE = "CpuInfoList";
 | 
					    private static final String MBEAN_TYPE = "CpuInfoList";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanInfo MBEAN_INFO;
 | 
					    private static final MBeanInfo MBEAN_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_CPUINDEX;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_CACHESIZE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_CACHESIZE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_MHZ;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_MHZ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_MODEL;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_MODEL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_VENDOR;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_VENDOR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX_SIGAR;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanParameterInfo MBEAN_PARAM_CPUINDEX;
 | 
					    private static final MBeanParameterInfo MBEAN_PARAM_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
					    private static final MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
        MBEAN_ATTR_CPUINDEX = new MBeanAttributeInfo("CpuIndex", "int",
 | 
					        MBEAN_ATTR_CPUINDEX = new MBeanAttributeInfo("CpuIndex", "int",
 | 
				
			||||||
                "The index of the CPU, typically starting at 0", true, false,
 | 
					                "The index of the CPU, typically starting at 0", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_CACHESIZE = new MBeanAttributeInfo("CacheSize", "long",
 | 
					        MBEAN_ATTR_CACHESIZE = new MBeanAttributeInfo("CacheSize", "long",
 | 
				
			||||||
                "The cache size of the CPU, in [byte]", true, false, false);
 | 
					                "The cache size of the CPU, in [byte]", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_MHZ = new MBeanAttributeInfo("Mhz", "int",
 | 
					        MBEAN_ATTR_MHZ = new MBeanAttributeInfo("Mhz", "int",
 | 
				
			||||||
                "The clock speed of the CPU, in [MHz]", true, false, false);
 | 
					                "The clock speed of the CPU, in [MHz]", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_MODEL = new MBeanAttributeInfo("Model", "java.lang.String",
 | 
					        MBEAN_ATTR_MODEL = new MBeanAttributeInfo("Model", "java.lang.String",
 | 
				
			||||||
                "The CPU model reported", true, false, false);
 | 
					                "The CPU model reported", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_VENDOR = new MBeanAttributeInfo("Vendor",
 | 
					        MBEAN_ATTR_VENDOR = new MBeanAttributeInfo("Vendor",
 | 
				
			||||||
                "java.lang.String", "The CPU vendor reported", true, false,
 | 
					                "java.lang.String", "The CPU vendor reported", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_PARAM_CPUINDEX = new MBeanParameterInfo("cpuIndex", "int",
 | 
					        MBEAN_PARAM_CPUINDEX = new MBeanParameterInfo("cpuIndex", "int",
 | 
				
			||||||
                "The index of the CPU to read data for. Must be >= 0 "
 | 
					                "The index of the CPU to read data for. Must be >= 0 "
 | 
				
			||||||
                        + "and not exceed the CPU count of the system");
 | 
					                        + "and not exceed the CPU count of the system");
 | 
				
			||||||
        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
					        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
				
			||||||
                .getName(), "The Sigar instance to use to fetch data from");
 | 
					                .getName(), "The Sigar instance to use to fetch data from");
 | 
				
			||||||
        MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(SigarCpuInfo.class
 | 
					        MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(SigarCpuInfo.class
 | 
				
			||||||
                .getName(),
 | 
					                .getName(),
 | 
				
			||||||
                "Creates a new instance for the CPU index specified, "
 | 
					                "Creates a new instance for the CPU index specified, "
 | 
				
			||||||
                        + "using a new Sigar instance to fetch the data. "
 | 
					                        + "using a new Sigar instance to fetch the data. "
 | 
				
			||||||
                        + "Fails if the CPU index is out of range.",
 | 
					                        + "Fails if the CPU index is out of range.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_CPUINDEX });
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_CPUINDEX });
 | 
				
			||||||
        MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
 | 
					        MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
 | 
				
			||||||
                SigarCpuInfo.class.getName(),
 | 
					                SigarCpuInfo.class.getName(),
 | 
				
			||||||
                "Creates a new instance for the CPU index specified, "
 | 
					                "Creates a new instance for the CPU index specified, "
 | 
				
			||||||
                        + "using the Sigar instance specified to fetch the data. "
 | 
					                        + "using the Sigar instance specified to fetch the data. "
 | 
				
			||||||
                        + "Fails if the CPU index is out of range.",
 | 
					                        + "Fails if the CPU index is out of range.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR,
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR,
 | 
				
			||||||
                        MBEAN_PARAM_CPUINDEX });
 | 
					                        MBEAN_PARAM_CPUINDEX });
 | 
				
			||||||
        MBEAN_INFO = new MBeanInfo(
 | 
					        MBEAN_INFO = new MBeanInfo(
 | 
				
			||||||
                SigarCpuInfo.class.getName(),
 | 
					                SigarCpuInfo.class.getName(),
 | 
				
			||||||
                "Sigar CPU Info MBean, provides overall information for a "
 | 
					                "Sigar CPU Info MBean, provides overall information for a "
 | 
				
			||||||
                        + "single CPU. This information only changes if, for example, "
 | 
					                        + "single CPU. This information only changes if, for example, "
 | 
				
			||||||
                        + "a CPU is reducing its clock frequency or shutting down "
 | 
					                        + "a CPU is reducing its clock frequency or shutting down "
 | 
				
			||||||
                        + "part of its cache. Subsequent requests are satisfied from "
 | 
					                        + "part of its cache. Subsequent requests are satisfied from "
 | 
				
			||||||
                        + "within a cache that invalidates after 30 seconds.",
 | 
					                        + "within a cache that invalidates after 30 seconds.",
 | 
				
			||||||
                new MBeanAttributeInfo[] { MBEAN_ATTR_CPUINDEX,
 | 
					                new MBeanAttributeInfo[] { MBEAN_ATTR_CPUINDEX,
 | 
				
			||||||
                        MBEAN_ATTR_CACHESIZE, MBEAN_ATTR_MHZ, MBEAN_ATTR_MODEL,
 | 
					                        MBEAN_ATTR_CACHESIZE, MBEAN_ATTR_MHZ, MBEAN_ATTR_MODEL,
 | 
				
			||||||
                        MBEAN_ATTR_VENDOR }, new MBeanConstructorInfo[] {
 | 
					                        MBEAN_ATTR_VENDOR }, new MBeanConstructorInfo[] {
 | 
				
			||||||
                        MBEAN_CONSTR_CPUINDEX, MBEAN_CONSTR_CPUINDEX_SIGAR },
 | 
					                        MBEAN_CONSTR_CPUINDEX, MBEAN_CONSTR_CPUINDEX_SIGAR },
 | 
				
			||||||
                null, null);
 | 
					                null, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Index of the CPU processed by the instance.
 | 
					     * Index of the CPU processed by the instance.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private int cpuIndex;
 | 
					    private int cpuIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an 
 | 
					     * Object name this instance will give itself when being registered to an 
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String objectName;
 | 
					    private String objectName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance for the CPU index specified, using a new Sigar 
 | 
					     * Creates a new instance for the CPU index specified, using a new Sigar 
 | 
				
			||||||
     * instance to fetch the data. Fails if the CPU index is out of range.
 | 
					     * instance to fetch the data. Fails if the CPU index is out of range.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
					     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
				
			||||||
     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
					     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
					     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
				
			||||||
     *         an unexpected Sigar error occurs
 | 
					     *         an unexpected Sigar error occurs
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarCpuInfo(int index) throws IllegalArgumentException {
 | 
					    public SigarCpuInfo(int index) throws IllegalArgumentException {
 | 
				
			||||||
        this(new Sigar(), index);
 | 
					        this(new Sigar(), index);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance for the CPU index specified, using the Sigar 
 | 
					     * Creates a new instance for the CPU index specified, using the Sigar 
 | 
				
			||||||
     * instance specified to fetch the data. Fails if the CPU index is out 
 | 
					     * instance specified to fetch the data. Fails if the CPU index is out 
 | 
				
			||||||
     * of range.
 | 
					     * of range.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param sigar The Sigar instance to use to fetch data from
 | 
					     * @param sigar The Sigar instance to use to fetch data from
 | 
				
			||||||
     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
					     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
				
			||||||
     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
					     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
					     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
				
			||||||
     *         an unexpected Sigar error occurs
 | 
					     *         an unexpected Sigar error occurs
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarCpuInfo(Sigar sigar, int index) {
 | 
					    public SigarCpuInfo(Sigar sigar, int index) {
 | 
				
			||||||
        super(sigar, DEFAULT);
 | 
					        super(sigar, DEFAULT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // check index
 | 
					        // check index
 | 
				
			||||||
        if (index < 0)
 | 
					        if (index < 0)
 | 
				
			||||||
            throw new IllegalArgumentException(
 | 
					            throw new IllegalArgumentException(
 | 
				
			||||||
                    "CPU index has to be non-negative: " + index);
 | 
					                    "CPU index has to be non-negative: " + index);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            int cpuCount;
 | 
					            int cpuCount;
 | 
				
			||||||
            if ((cpuCount = sigar.getCpuInfoList().length) < index)
 | 
					            if ((cpuCount = sigar.getCpuInfoList().length) < index)
 | 
				
			||||||
                throw new IllegalArgumentException(
 | 
					                throw new IllegalArgumentException(
 | 
				
			||||||
                        "CPU index out of range (found " + cpuCount
 | 
					                        "CPU index out of range (found " + cpuCount
 | 
				
			||||||
                                + " CPU(s)): " + index);
 | 
					                                + " CPU(s)): " + index);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // all fine
 | 
					        // all fine
 | 
				
			||||||
        this.cpuIndex = index;
 | 
					        this.cpuIndex = index;
 | 
				
			||||||
        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
					        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
				
			||||||
                + "=CpuInfo,"
 | 
					                + "=CpuInfo,"
 | 
				
			||||||
                + MBEAN_ATTR_CPUINDEX.getName().substring(0, 1).toLowerCase()
 | 
					                + MBEAN_ATTR_CPUINDEX.getName().substring(0, 1).toLowerCase()
 | 
				
			||||||
                + MBEAN_ATTR_CPUINDEX.getName().substring(1) + "=" + cpuIndex;
 | 
					                + MBEAN_ATTR_CPUINDEX.getName().substring(1) + "=" + cpuIndex;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an 
 | 
					     * Object name this instance will give itself when being registered to an 
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String getObjectName() {
 | 
					    public String getObjectName() {
 | 
				
			||||||
        return this.objectName;
 | 
					        return this.objectName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** 
 | 
					    /** 
 | 
				
			||||||
     * @return The index of the CPU, typically starting at 0
 | 
					     * @return The index of the CPU, typically starting at 0
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int getCpuIndex() {
 | 
					    public int getCpuIndex() {
 | 
				
			||||||
        return this.cpuIndex;
 | 
					        return this.cpuIndex;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The cache size of the CPU, in [byte]
 | 
					     * @return The cache size of the CPU, in [byte]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getCacheSize() {
 | 
					    public long getCacheSize() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuInfoList()[this.cpuIndex].getCacheSize();
 | 
					            return sigar.getCpuInfoList()[this.cpuIndex].getCacheSize();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The clock speed of the CPU, in [MHz]
 | 
					     * @return The clock speed of the CPU, in [MHz]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int getMhz() {
 | 
					    public int getMhz() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuInfoList()[this.cpuIndex].getMhz();
 | 
					            return sigar.getCpuInfoList()[this.cpuIndex].getMhz();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The CPU model reported
 | 
					     * @return The CPU model reported
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String getModel() {
 | 
					    public String getModel() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuInfoList()[this.cpuIndex].getModel();
 | 
					            return sigar.getCpuInfoList()[this.cpuIndex].getModel();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The CPU vendor reported
 | 
					     * @return The CPU vendor reported
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String getVendor() {
 | 
					    public String getVendor() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuInfoList()[this.cpuIndex].getVendor();
 | 
					            return sigar.getCpuInfoList()[this.cpuIndex].getVendor();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
    // Implementation of the DynamicMBean interface
 | 
					    // Implementation of the DynamicMBean interface
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#getAttribute(String)
 | 
					     * @see DynamicMBean#getAttribute(String)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object getAttribute(String attr) throws AttributeNotFoundException {
 | 
					    public Object getAttribute(String attr) throws AttributeNotFoundException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (MBEAN_ATTR_CACHESIZE.getName().equals(attr)) {
 | 
					        if (MBEAN_ATTR_CACHESIZE.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getCacheSize());
 | 
					            return new Long(getCacheSize());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_CPUINDEX.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_CPUINDEX.getName().equals(attr)) {
 | 
				
			||||||
            return new Integer(getCpuIndex());
 | 
					            return new Integer(getCpuIndex());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_MHZ.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_MHZ.getName().equals(attr)) {
 | 
				
			||||||
            return new Integer(getMhz());
 | 
					            return new Integer(getMhz());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_MODEL.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_MODEL.getName().equals(attr)) {
 | 
				
			||||||
            return getModel();
 | 
					            return getModel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_VENDOR.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_VENDOR.getName().equals(attr)) {
 | 
				
			||||||
            return getVendor();
 | 
					            return getVendor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new AttributeNotFoundException(attr);
 | 
					            throw new AttributeNotFoundException(attr);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#setAttribute(Attribute)
 | 
					     * @see DynamicMBean#setAttribute(Attribute)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
					    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
				
			||||||
        throw new AttributeNotFoundException(attr.getName());
 | 
					        throw new AttributeNotFoundException(attr.getName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#invoke(String, Object[], String[])
 | 
					     * @see DynamicMBean#invoke(String, Object[], String[])
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
					    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
				
			||||||
            throws ReflectionException {
 | 
					            throws ReflectionException {
 | 
				
			||||||
        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
					        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
				
			||||||
                actionName);
 | 
					                actionName);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#getMBeanInfo()
 | 
					     * @see DynamicMBean#getMBeanInfo()
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public MBeanInfo getMBeanInfo() {
 | 
					    public MBeanInfo getMBeanInfo() {
 | 
				
			||||||
        return MBEAN_INFO;
 | 
					        return MBEAN_INFO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,333 +1,333 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
					 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
				
			||||||
 * This file is part of SIGAR.
 | 
					 * This file is part of SIGAR.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
					 * SIGAR is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * it under the terms version 2 of the GNU General Public License as
 | 
					 * it under the terms version 2 of the GNU General Public License as
 | 
				
			||||||
 * published by the Free Software Foundation. This program is distributed
 | 
					 * published by the Free Software Foundation. This program is distributed
 | 
				
			||||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
					 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
				
			||||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
					 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
				
			||||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
					 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
				
			||||||
 * details.
 | 
					 * details.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 * along with this program; if not, write to the Free Software
 | 
					 * along with this program; if not, write to the Free Software
 | 
				
			||||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
					 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
				
			||||||
 * USA.
 | 
					 * USA.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.hyperic.sigar.jmx;
 | 
					package org.hyperic.sigar.jmx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.management.Attribute;
 | 
					import javax.management.Attribute;
 | 
				
			||||||
import javax.management.AttributeNotFoundException;
 | 
					import javax.management.AttributeNotFoundException;
 | 
				
			||||||
import javax.management.MBeanAttributeInfo;
 | 
					import javax.management.MBeanAttributeInfo;
 | 
				
			||||||
import javax.management.MBeanConstructorInfo;
 | 
					import javax.management.MBeanConstructorInfo;
 | 
				
			||||||
import javax.management.MBeanInfo;
 | 
					import javax.management.MBeanInfo;
 | 
				
			||||||
import javax.management.MBeanParameterInfo;
 | 
					import javax.management.MBeanParameterInfo;
 | 
				
			||||||
import javax.management.ReflectionException;
 | 
					import javax.management.ReflectionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.hyperic.sigar.Sigar;
 | 
					import org.hyperic.sigar.Sigar;
 | 
				
			||||||
import org.hyperic.sigar.SigarException;
 | 
					import org.hyperic.sigar.SigarException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * <p>Sigar JMX MBean implementation for the <code>CpuPerc</code> information 
 | 
					 * <p>Sigar JMX MBean implementation for the <code>CpuPerc</code> information 
 | 
				
			||||||
 * package. Provides an OpenMBean conform implementation.</p>
 | 
					 * package. Provides an OpenMBean conform implementation.</p>
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * @author Bjoern Martin
 | 
					 * @author Bjoern Martin
 | 
				
			||||||
 * @since 1.5
 | 
					 * @since 1.5
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class SigarCpuPerc extends AbstractMBean {
 | 
					public class SigarCpuPerc extends AbstractMBean {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String MBEAN_TYPE = "CpuPercList";
 | 
					    private static final String MBEAN_TYPE = "CpuPercList";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanInfo MBEAN_INFO;
 | 
					    private static final MBeanInfo MBEAN_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_CPUINDEX;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_COMBINED;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_COMBINED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_IDLE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_IDLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_NICE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_NICE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_SYS;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_SYS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_USER;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_USER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_WAIT;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_WAIT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX_SIGAR;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_CPUINDEX_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static MBeanParameterInfo MBEAN_PARAM_CPUINDEX;
 | 
					    private static MBeanParameterInfo MBEAN_PARAM_CPUINDEX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
					    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
        MBEAN_ATTR_CPUINDEX = new MBeanAttributeInfo("CpuIndex", "int",
 | 
					        MBEAN_ATTR_CPUINDEX = new MBeanAttributeInfo("CpuIndex", "int",
 | 
				
			||||||
                "The index of the CPU, typically starting at 0", true, false,
 | 
					                "The index of the CPU, typically starting at 0", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_COMBINED = new MBeanAttributeInfo("Combined", "double",
 | 
					        MBEAN_ATTR_COMBINED = new MBeanAttributeInfo("Combined", "double",
 | 
				
			||||||
                "The total time of the CPU, as a fraction of 1", true, false,
 | 
					                "The total time of the CPU, as a fraction of 1", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_IDLE = new MBeanAttributeInfo("Idle", "double",
 | 
					        MBEAN_ATTR_IDLE = new MBeanAttributeInfo("Idle", "double",
 | 
				
			||||||
                "The idle time of the CPU, as a fraction of 1", true, false,
 | 
					                "The idle time of the CPU, as a fraction of 1", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_NICE = new MBeanAttributeInfo(
 | 
					        MBEAN_ATTR_NICE = new MBeanAttributeInfo(
 | 
				
			||||||
                "Nice",
 | 
					                "Nice",
 | 
				
			||||||
                "double",
 | 
					                "double",
 | 
				
			||||||
                "The time of the CPU spent on nice priority, as a fraction of 1",
 | 
					                "The time of the CPU spent on nice priority, as a fraction of 1",
 | 
				
			||||||
                true, false, false);
 | 
					                true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_SYS = new MBeanAttributeInfo("Sys", "double",
 | 
					        MBEAN_ATTR_SYS = new MBeanAttributeInfo("Sys", "double",
 | 
				
			||||||
                "The time of the CPU used by the system, as a fraction of 1",
 | 
					                "The time of the CPU used by the system, as a fraction of 1",
 | 
				
			||||||
                true, false, false);
 | 
					                true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_USER = new MBeanAttributeInfo(
 | 
					        MBEAN_ATTR_USER = new MBeanAttributeInfo(
 | 
				
			||||||
                "User",
 | 
					                "User",
 | 
				
			||||||
                "double",
 | 
					                "double",
 | 
				
			||||||
                "The time of the CPU used by user processes, as a fraction of 1",
 | 
					                "The time of the CPU used by user processes, as a fraction of 1",
 | 
				
			||||||
                true, false, false);
 | 
					                true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_WAIT = new MBeanAttributeInfo(
 | 
					        MBEAN_ATTR_WAIT = new MBeanAttributeInfo(
 | 
				
			||||||
                "Wait",
 | 
					                "Wait",
 | 
				
			||||||
                "double",
 | 
					                "double",
 | 
				
			||||||
                "The time the CPU had to wait for data to be loaded, as a fraction of 1",
 | 
					                "The time the CPU had to wait for data to be loaded, as a fraction of 1",
 | 
				
			||||||
                true, false, false);
 | 
					                true, false, false);
 | 
				
			||||||
        MBEAN_PARAM_CPUINDEX = new MBeanParameterInfo("cpuIndex", "int",
 | 
					        MBEAN_PARAM_CPUINDEX = new MBeanParameterInfo("cpuIndex", "int",
 | 
				
			||||||
                "The index of the CPU to read data for. Must be >= 0 "
 | 
					                "The index of the CPU to read data for. Must be >= 0 "
 | 
				
			||||||
                        + "and not exceed the CPU count of the system");
 | 
					                        + "and not exceed the CPU count of the system");
 | 
				
			||||||
        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
					        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
				
			||||||
                .getName(), "The Sigar instance to use to fetch data from");
 | 
					                .getName(), "The Sigar instance to use to fetch data from");
 | 
				
			||||||
        MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(SigarCpuPerc.class
 | 
					        MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(SigarCpuPerc.class
 | 
				
			||||||
                .getName(),
 | 
					                .getName(),
 | 
				
			||||||
                "Creates a new instance for the CPU index specified, "
 | 
					                "Creates a new instance for the CPU index specified, "
 | 
				
			||||||
                        + "using a new Sigar instance to fetch the data. "
 | 
					                        + "using a new Sigar instance to fetch the data. "
 | 
				
			||||||
                        + "Fails if the CPU index is out of range.",
 | 
					                        + "Fails if the CPU index is out of range.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_CPUINDEX });
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_CPUINDEX });
 | 
				
			||||||
        MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
 | 
					        MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
 | 
				
			||||||
                SigarCpuPerc.class.getName(),
 | 
					                SigarCpuPerc.class.getName(),
 | 
				
			||||||
                "Creates a new instance for the CPU index specified, "
 | 
					                "Creates a new instance for the CPU index specified, "
 | 
				
			||||||
                        + "using the Sigar instance specified to fetch the data. "
 | 
					                        + "using the Sigar instance specified to fetch the data. "
 | 
				
			||||||
                        + "Fails if the CPU index is out of range.",
 | 
					                        + "Fails if the CPU index is out of range.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR,
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR,
 | 
				
			||||||
                        MBEAN_PARAM_CPUINDEX });
 | 
					                        MBEAN_PARAM_CPUINDEX });
 | 
				
			||||||
        MBEAN_INFO = new MBeanInfo(
 | 
					        MBEAN_INFO = new MBeanInfo(
 | 
				
			||||||
                SigarCpuPerc.class.getName(),
 | 
					                SigarCpuPerc.class.getName(),
 | 
				
			||||||
                "Sigar CPU MBean. Provides percentage data for a single "
 | 
					                "Sigar CPU MBean. Provides percentage data for a single "
 | 
				
			||||||
                        + "CPU, averaged over the timeframe between the last and "
 | 
					                        + "CPU, averaged over the timeframe between the last and "
 | 
				
			||||||
                        + "the current measurement point. Two measurement points "
 | 
					                        + "the current measurement point. Two measurement points "
 | 
				
			||||||
                        + "can be as close as 5 seconds, meaning subsequent requests "
 | 
					                        + "can be as close as 5 seconds, meaning subsequent requests "
 | 
				
			||||||
                        + "for data within 5 seconds after the last executed call "
 | 
					                        + "for data within 5 seconds after the last executed call "
 | 
				
			||||||
                        + "will be satisfied from cached data.",
 | 
					                        + "will be satisfied from cached data.",
 | 
				
			||||||
                new MBeanAttributeInfo[] { MBEAN_ATTR_CPUINDEX,
 | 
					                new MBeanAttributeInfo[] { MBEAN_ATTR_CPUINDEX,
 | 
				
			||||||
                        MBEAN_ATTR_COMBINED, MBEAN_ATTR_IDLE, MBEAN_ATTR_NICE,
 | 
					                        MBEAN_ATTR_COMBINED, MBEAN_ATTR_IDLE, MBEAN_ATTR_NICE,
 | 
				
			||||||
                        MBEAN_ATTR_SYS, MBEAN_ATTR_USER, MBEAN_ATTR_WAIT },
 | 
					                        MBEAN_ATTR_SYS, MBEAN_ATTR_USER, MBEAN_ATTR_WAIT },
 | 
				
			||||||
                new MBeanConstructorInfo[] { MBEAN_CONSTR_CPUINDEX,
 | 
					                new MBeanConstructorInfo[] { MBEAN_CONSTR_CPUINDEX,
 | 
				
			||||||
                        MBEAN_CONSTR_CPUINDEX_SIGAR }, null, null);
 | 
					                        MBEAN_CONSTR_CPUINDEX_SIGAR }, null, null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Index of the CPU processed by the instance.
 | 
					     * Index of the CPU processed by the instance.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private int cpuIndex;
 | 
					    private int cpuIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an 
 | 
					     * Object name this instance will give itself when being registered to an 
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String objectName;
 | 
					    private String objectName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance for the CPU index specified, using a new Sigar 
 | 
					     * Creates a new instance for the CPU index specified, using a new Sigar 
 | 
				
			||||||
     * instance to fetch the data. Fails if the CPU index is out of range.
 | 
					     * instance to fetch the data. Fails if the CPU index is out of range.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
					     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
				
			||||||
     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
					     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
					     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
				
			||||||
     *         an unexpected Sigar error occurs
 | 
					     *         an unexpected Sigar error occurs
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarCpuPerc(int index) {
 | 
					    public SigarCpuPerc(int index) {
 | 
				
			||||||
        this(new Sigar(), index);
 | 
					        this(new Sigar(), index);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance for the CPU index specified, using the Sigar 
 | 
					     * Creates a new instance for the CPU index specified, using the Sigar 
 | 
				
			||||||
     * instance specified to fetch the data. Fails if the CPU index is out 
 | 
					     * instance specified to fetch the data. Fails if the CPU index is out 
 | 
				
			||||||
     * of range.
 | 
					     * of range.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param sigar The Sigar instance to use to fetch data from
 | 
					     * @param sigar The Sigar instance to use to fetch data from
 | 
				
			||||||
     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
					     * @param cpuIndex The index of the CPU to read data for. Must be 
 | 
				
			||||||
     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
					     *         <code>>= 0</code> and not exceed the CPU count of the system.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
					     * @throws IllegalArgumentException If the CPU index is out of range or 
 | 
				
			||||||
     *         an unexpected Sigar error occurs
 | 
					     *         an unexpected Sigar error occurs
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarCpuPerc(Sigar sigar, int index) {
 | 
					    public SigarCpuPerc(Sigar sigar, int index) {
 | 
				
			||||||
        super(sigar, CACHED_5SEC);
 | 
					        super(sigar, CACHED_5SEC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // check index
 | 
					        // check index
 | 
				
			||||||
        if (index < 0)
 | 
					        if (index < 0)
 | 
				
			||||||
            throw new IllegalArgumentException(
 | 
					            throw new IllegalArgumentException(
 | 
				
			||||||
                    "CPU index has to be non-negative: " + index);
 | 
					                    "CPU index has to be non-negative: " + index);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            int cpuCount;
 | 
					            int cpuCount;
 | 
				
			||||||
            if ((cpuCount = sigar.getCpuPercList().length) < index)
 | 
					            if ((cpuCount = sigar.getCpuPercList().length) < index)
 | 
				
			||||||
                throw new IllegalArgumentException(
 | 
					                throw new IllegalArgumentException(
 | 
				
			||||||
                        "CPU index out of range (found " + cpuCount
 | 
					                        "CPU index out of range (found " + cpuCount
 | 
				
			||||||
                                + " CPU(s)): " + index);
 | 
					                                + " CPU(s)): " + index);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // all fine
 | 
					        // all fine
 | 
				
			||||||
        this.cpuIndex = index;
 | 
					        this.cpuIndex = index;
 | 
				
			||||||
        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
					        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
				
			||||||
                + "=CpuPerc,"
 | 
					                + "=CpuPerc,"
 | 
				
			||||||
                + MBEAN_ATTR_CPUINDEX.getName().substring(0, 1).toLowerCase()
 | 
					                + MBEAN_ATTR_CPUINDEX.getName().substring(0, 1).toLowerCase()
 | 
				
			||||||
                + MBEAN_ATTR_CPUINDEX.getName().substring(1) + "=" + cpuIndex;
 | 
					                + MBEAN_ATTR_CPUINDEX.getName().substring(1) + "=" + cpuIndex;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an 
 | 
					     * Object name this instance will give itself when being registered to an 
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String getObjectName() {
 | 
					    public String getObjectName() {
 | 
				
			||||||
        return this.objectName;
 | 
					        return this.objectName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** 
 | 
					    /** 
 | 
				
			||||||
     * @return The index of the CPU, typically starting at 0
 | 
					     * @return The index of the CPU, typically starting at 0
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public int getCpuIndex() {
 | 
					    public int getCpuIndex() {
 | 
				
			||||||
        return this.cpuIndex;
 | 
					        return this.cpuIndex;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The total time of the CPU, as a fraction of 1
 | 
					     * @return The total time of the CPU, as a fraction of 1
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getCombined() {
 | 
					    public double getCombined() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuPercList()[this.cpuIndex].getCombined();
 | 
					            return sigar.getCpuPercList()[this.cpuIndex].getCombined();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The idle time of the CPU, as a fraction of 1
 | 
					     * @return The idle time of the CPU, as a fraction of 1
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getIdle() {
 | 
					    public double getIdle() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuPercList()[this.cpuIndex].getIdle();
 | 
					            return sigar.getCpuPercList()[this.cpuIndex].getIdle();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time of the CPU spent on nice priority, as a fraction of 1
 | 
					     * @return The time of the CPU spent on nice priority, as a fraction of 1
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getNice() {
 | 
					    public double getNice() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuPercList()[this.cpuIndex].getNice();
 | 
					            return sigar.getCpuPercList()[this.cpuIndex].getNice();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time of the CPU used by the system, as a fraction of 1
 | 
					     * @return The time of the CPU used by the system, as a fraction of 1
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getSys() {
 | 
					    public double getSys() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuPercList()[this.cpuIndex].getSys();
 | 
					            return sigar.getCpuPercList()[this.cpuIndex].getSys();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time of the CPU used by user processes, as a fraction of 1
 | 
					     * @return The time of the CPU used by user processes, as a fraction of 1
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getUser() {
 | 
					    public double getUser() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuPercList()[this.cpuIndex].getUser();
 | 
					            return sigar.getCpuPercList()[this.cpuIndex].getUser();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The time the CPU had to wait for data to be loaded, as a fraction of 1
 | 
					     * @return The time the CPU had to wait for data to be loaded, as a fraction of 1
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public double getWait() {
 | 
					    public double getWait() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getCpuPercList()[this.cpuIndex].getWait();
 | 
					            return sigar.getCpuPercList()[this.cpuIndex].getWait();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
    // Implementation of the DynamicMBean interface
 | 
					    // Implementation of the DynamicMBean interface
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#getAttribute(String)
 | 
					     * @see DynamicMBean#getAttribute(String)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object getAttribute(String attr) throws AttributeNotFoundException {
 | 
					    public Object getAttribute(String attr) throws AttributeNotFoundException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (MBEAN_ATTR_COMBINED.getName().equals(attr)) {
 | 
					        if (MBEAN_ATTR_COMBINED.getName().equals(attr)) {
 | 
				
			||||||
            return new Double(getCombined());
 | 
					            return new Double(getCombined());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_CPUINDEX.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_CPUINDEX.getName().equals(attr)) {
 | 
				
			||||||
            return new Integer(getCpuIndex());
 | 
					            return new Integer(getCpuIndex());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_IDLE.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_IDLE.getName().equals(attr)) {
 | 
				
			||||||
            return new Double(getIdle());
 | 
					            return new Double(getIdle());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_NICE.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_NICE.getName().equals(attr)) {
 | 
				
			||||||
            return new Double(getNice());
 | 
					            return new Double(getNice());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_SYS.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_SYS.getName().equals(attr)) {
 | 
				
			||||||
            return new Double(getSys());
 | 
					            return new Double(getSys());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_USER.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_USER.getName().equals(attr)) {
 | 
				
			||||||
            return new Double(getUser());
 | 
					            return new Double(getUser());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_WAIT.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_WAIT.getName().equals(attr)) {
 | 
				
			||||||
            return new Double(getWait());
 | 
					            return new Double(getWait());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new AttributeNotFoundException(attr);
 | 
					            throw new AttributeNotFoundException(attr);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#setAttribute(Attribute)
 | 
					     * @see DynamicMBean#setAttribute(Attribute)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
					    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
				
			||||||
        throw new AttributeNotFoundException(attr.getName());
 | 
					        throw new AttributeNotFoundException(attr.getName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#invoke(String, Object[], String[])
 | 
					     * @see DynamicMBean#invoke(String, Object[], String[])
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
					    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
				
			||||||
            throws ReflectionException {
 | 
					            throws ReflectionException {
 | 
				
			||||||
        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
					        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
				
			||||||
                actionName);
 | 
					                actionName);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see DynamicMBean#getMBeanInfo()
 | 
					     * @see DynamicMBean#getMBeanInfo()
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public MBeanInfo getMBeanInfo() {
 | 
					    public MBeanInfo getMBeanInfo() {
 | 
				
			||||||
        return MBEAN_INFO;
 | 
					        return MBEAN_INFO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,251 +1,251 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
					 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
				
			||||||
 * This file is part of SIGAR.
 | 
					 * This file is part of SIGAR.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
					 * SIGAR is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * it under the terms version 2 of the GNU General Public License as
 | 
					 * it under the terms version 2 of the GNU General Public License as
 | 
				
			||||||
 * published by the Free Software Foundation. This program is distributed
 | 
					 * published by the Free Software Foundation. This program is distributed
 | 
				
			||||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
					 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
				
			||||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
					 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
				
			||||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
					 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
				
			||||||
 * details.
 | 
					 * details.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 * along with this program; if not, write to the Free Software
 | 
					 * along with this program; if not, write to the Free Software
 | 
				
			||||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
					 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
				
			||||||
 * USA.
 | 
					 * USA.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.hyperic.sigar.jmx;
 | 
					package org.hyperic.sigar.jmx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.management.Attribute;
 | 
					import javax.management.Attribute;
 | 
				
			||||||
import javax.management.AttributeNotFoundException;
 | 
					import javax.management.AttributeNotFoundException;
 | 
				
			||||||
import javax.management.MBeanAttributeInfo;
 | 
					import javax.management.MBeanAttributeInfo;
 | 
				
			||||||
import javax.management.MBeanConstructorInfo;
 | 
					import javax.management.MBeanConstructorInfo;
 | 
				
			||||||
import javax.management.MBeanException;
 | 
					import javax.management.MBeanException;
 | 
				
			||||||
import javax.management.MBeanInfo;
 | 
					import javax.management.MBeanInfo;
 | 
				
			||||||
import javax.management.MBeanParameterInfo;
 | 
					import javax.management.MBeanParameterInfo;
 | 
				
			||||||
import javax.management.ReflectionException;
 | 
					import javax.management.ReflectionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.hyperic.sigar.Sigar;
 | 
					import org.hyperic.sigar.Sigar;
 | 
				
			||||||
import org.hyperic.sigar.SigarException;
 | 
					import org.hyperic.sigar.SigarException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Sigar JMX MBean implementation for the <code>Mem</code> information
 | 
					 * Sigar JMX MBean implementation for the <code>Mem</code> information
 | 
				
			||||||
 * package. Provides an OpenMBean conform implementation.
 | 
					 * package. Provides an OpenMBean conform implementation.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * @author Bjoern Martin
 | 
					 * @author Bjoern Martin
 | 
				
			||||||
 * @since 1.5
 | 
					 * @since 1.5
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class SigarMem extends AbstractMBean {
 | 
					public class SigarMem extends AbstractMBean {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String MBEAN_TYPE = "Mem";
 | 
					    private static final String MBEAN_TYPE = "Mem";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanInfo MBEAN_INFO;
 | 
					    private static final MBeanInfo MBEAN_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_ACTUAL_FREE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_ACTUAL_FREE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_ACTUAL_USED;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_ACTUAL_USED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_FREE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_FREE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_RAM;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_RAM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_TOTAL;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_TOTAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_USED;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_USED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_SIGAR;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
					    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
        MBEAN_ATTR_ACTUAL_FREE = new MBeanAttributeInfo("ActualFree", "long",
 | 
					        MBEAN_ATTR_ACTUAL_FREE = new MBeanAttributeInfo("ActualFree", "long",
 | 
				
			||||||
                "TODO add proper description here", true, false, false);
 | 
					                "TODO add proper description here", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_ACTUAL_USED = new MBeanAttributeInfo("ActualUsed", "long",
 | 
					        MBEAN_ATTR_ACTUAL_USED = new MBeanAttributeInfo("ActualUsed", "long",
 | 
				
			||||||
                "TODO add proper description here", true, false, false);
 | 
					                "TODO add proper description here", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_FREE = new MBeanAttributeInfo("Free", "long",
 | 
					        MBEAN_ATTR_FREE = new MBeanAttributeInfo("Free", "long",
 | 
				
			||||||
                "TODO add proper description here", true, false, false);
 | 
					                "TODO add proper description here", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_RAM = new MBeanAttributeInfo("Ram", "long",
 | 
					        MBEAN_ATTR_RAM = new MBeanAttributeInfo("Ram", "long",
 | 
				
			||||||
                "TODO add proper description here", true, false, false);
 | 
					                "TODO add proper description here", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_TOTAL = new MBeanAttributeInfo("Total", "long",
 | 
					        MBEAN_ATTR_TOTAL = new MBeanAttributeInfo("Total", "long",
 | 
				
			||||||
                "TODO add proper description here", true, false, false);
 | 
					                "TODO add proper description here", true, false, false);
 | 
				
			||||||
        MBEAN_ATTR_USED = new MBeanAttributeInfo("Used", "long",
 | 
					        MBEAN_ATTR_USED = new MBeanAttributeInfo("Used", "long",
 | 
				
			||||||
                "TODO add proper description here", true, false, false);
 | 
					                "TODO add proper description here", true, false, false);
 | 
				
			||||||
        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
					        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
				
			||||||
                .getName(), "The Sigar instance to use to fetch data from");
 | 
					                .getName(), "The Sigar instance to use to fetch data from");
 | 
				
			||||||
        MBEAN_CONSTR_SIGAR = new MBeanConstructorInfo(SigarMem.class.getName(),
 | 
					        MBEAN_CONSTR_SIGAR = new MBeanConstructorInfo(SigarMem.class.getName(),
 | 
				
			||||||
                "Creates a new instance, using the Sigar instance "
 | 
					                "Creates a new instance, using the Sigar instance "
 | 
				
			||||||
                        + "specified to fetch the data.",
 | 
					                        + "specified to fetch the data.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR });
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR });
 | 
				
			||||||
        MBEAN_INFO = new MBeanInfo(
 | 
					        MBEAN_INFO = new MBeanInfo(
 | 
				
			||||||
                SigarMem.class.getName(),
 | 
					                SigarMem.class.getName(),
 | 
				
			||||||
                "Sigar Memory MBean, provides raw data for the physical "
 | 
					                "Sigar Memory MBean, provides raw data for the physical "
 | 
				
			||||||
                        + "memory installed on the system. Uses an internal cache "
 | 
					                        + "memory installed on the system. Uses an internal cache "
 | 
				
			||||||
                        + "that invalidates within 500ms, allowing for bulk request "
 | 
					                        + "that invalidates within 500ms, allowing for bulk request "
 | 
				
			||||||
                        + "being satisfied with a single dataset fetch.",
 | 
					                        + "being satisfied with a single dataset fetch.",
 | 
				
			||||||
                new MBeanAttributeInfo[] { MBEAN_ATTR_ACTUAL_FREE,
 | 
					                new MBeanAttributeInfo[] { MBEAN_ATTR_ACTUAL_FREE,
 | 
				
			||||||
                        MBEAN_ATTR_ACTUAL_USED, MBEAN_ATTR_FREE,
 | 
					                        MBEAN_ATTR_ACTUAL_USED, MBEAN_ATTR_FREE,
 | 
				
			||||||
                        MBEAN_ATTR_RAM, MBEAN_ATTR_TOTAL, MBEAN_ATTR_USED },
 | 
					                        MBEAN_ATTR_RAM, MBEAN_ATTR_TOTAL, MBEAN_ATTR_USED },
 | 
				
			||||||
                new MBeanConstructorInfo[] { MBEAN_CONSTR_SIGAR }, null, null);
 | 
					                new MBeanConstructorInfo[] { MBEAN_CONSTR_SIGAR }, null, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an
 | 
					     * Object name this instance will give itself when being registered to an
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private final String objectName;
 | 
					    private final String objectName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance, using the Sigar instance specified to fetch the
 | 
					     * Creates a new instance, using the Sigar instance specified to fetch the
 | 
				
			||||||
     * data.
 | 
					     * data.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param sigar
 | 
					     * @param sigar
 | 
				
			||||||
     *            The Sigar instance to use to fetch data from
 | 
					     *            The Sigar instance to use to fetch data from
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException
 | 
					     * @throws IllegalArgumentException
 | 
				
			||||||
     *             If an unexpected Sigar error occurs
 | 
					     *             If an unexpected Sigar error occurs
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarMem(Sigar sigar) throws IllegalArgumentException {
 | 
					    public SigarMem(Sigar sigar) throws IllegalArgumentException {
 | 
				
			||||||
        super(sigar, CACHED_500MS);
 | 
					        super(sigar, CACHED_500MS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
					        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
				
			||||||
                + "=Memory";
 | 
					                + "=Memory";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an
 | 
					     * Object name this instance will give itself when being registered to an
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String getObjectName() {
 | 
					    public String getObjectName() {
 | 
				
			||||||
        return this.objectName;
 | 
					        return this.objectName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The actual amount of free physical memory, in [bytes]
 | 
					     * @return The actual amount of free physical memory, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getActualFree() {
 | 
					    public long getActualFree() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getMem().getActualFree();
 | 
					            return sigar.getMem().getActualFree();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The actual amount of physical memory used, in [bytes]
 | 
					     * @return The actual amount of physical memory used, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getActualUsed() {
 | 
					    public long getActualUsed() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getMem().getActualUsed();
 | 
					            return sigar.getMem().getActualUsed();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The amount of free physical memory, in [bytes]
 | 
					     * @return The amount of free physical memory, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getFree() {
 | 
					    public long getFree() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getMem().getFree();
 | 
					            return sigar.getMem().getFree();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The amount of physical memory, in [bytes]
 | 
					     * @return The amount of physical memory, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getRam() {
 | 
					    public long getRam() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getMem().getRam();
 | 
					            return sigar.getMem().getRam();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The total amount of physical memory, in [bytes]
 | 
					     * @return The total amount of physical memory, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getTotal() {
 | 
					    public long getTotal() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getMem().getTotal();
 | 
					            return sigar.getMem().getTotal();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The amount of physical memory in use, in [bytes]
 | 
					     * @return The amount of physical memory in use, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getUsed() {
 | 
					    public long getUsed() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getMem().getUsed();
 | 
					            return sigar.getMem().getUsed();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
    // Implementation of the DynamicMBean interface
 | 
					    // Implementation of the DynamicMBean interface
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @see javax.management.DynamicMBean#getAttribute(java.lang.String)
 | 
					     * @see javax.management.DynamicMBean#getAttribute(java.lang.String)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object getAttribute(String attr) throws AttributeNotFoundException,
 | 
					    public Object getAttribute(String attr) throws AttributeNotFoundException,
 | 
				
			||||||
            MBeanException, ReflectionException {
 | 
					            MBeanException, ReflectionException {
 | 
				
			||||||
        if (MBEAN_ATTR_ACTUAL_FREE.getName().equals(attr)) {
 | 
					        if (MBEAN_ATTR_ACTUAL_FREE.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getActualFree());
 | 
					            return new Long(getActualFree());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_ACTUAL_USED.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_ACTUAL_USED.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getActualUsed());
 | 
					            return new Long(getActualUsed());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_FREE.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_FREE.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getFree());
 | 
					            return new Long(getFree());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_RAM.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_RAM.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getRam());
 | 
					            return new Long(getRam());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_TOTAL.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_TOTAL.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getTotal());
 | 
					            return new Long(getTotal());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_USED.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_USED.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getUsed());
 | 
					            return new Long(getUsed());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new AttributeNotFoundException(attr);
 | 
					            throw new AttributeNotFoundException(attr);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see javax.management.DynamicMBean#setAttribute(javax.management.Attribute)
 | 
					     * @see javax.management.DynamicMBean#setAttribute(javax.management.Attribute)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
					    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
				
			||||||
        throw new AttributeNotFoundException(attr.getName());
 | 
					        throw new AttributeNotFoundException(attr.getName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see javax.management.DynamicMBean#invoke(java.lang.String,
 | 
					     * @see javax.management.DynamicMBean#invoke(java.lang.String,
 | 
				
			||||||
     *      java.lang.Object[], java.lang.String[])
 | 
					     *      java.lang.Object[], java.lang.String[])
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
					    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
				
			||||||
            throws ReflectionException {
 | 
					            throws ReflectionException {
 | 
				
			||||||
        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
					        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
				
			||||||
                actionName);
 | 
					                actionName);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see javax.management.DynamicMBean#getMBeanInfo()
 | 
					     * @see javax.management.DynamicMBean#getMBeanInfo()
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public MBeanInfo getMBeanInfo() {
 | 
					    public MBeanInfo getMBeanInfo() {
 | 
				
			||||||
        return MBEAN_INFO;
 | 
					        return MBEAN_INFO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,199 +1,199 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
					 * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
 | 
				
			||||||
 * This file is part of SIGAR.
 | 
					 * This file is part of SIGAR.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
					 * SIGAR is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * it under the terms version 2 of the GNU General Public License as
 | 
					 * it under the terms version 2 of the GNU General Public License as
 | 
				
			||||||
 * published by the Free Software Foundation. This program is distributed
 | 
					 * published by the Free Software Foundation. This program is distributed
 | 
				
			||||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
					 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
				
			||||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
					 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
				
			||||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
					 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
				
			||||||
 * details.
 | 
					 * details.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 * along with this program; if not, write to the Free Software
 | 
					 * along with this program; if not, write to the Free Software
 | 
				
			||||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
					 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
				
			||||||
 * USA.
 | 
					 * USA.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package org.hyperic.sigar.jmx;
 | 
					package org.hyperic.sigar.jmx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.management.Attribute;
 | 
					import javax.management.Attribute;
 | 
				
			||||||
import javax.management.AttributeNotFoundException;
 | 
					import javax.management.AttributeNotFoundException;
 | 
				
			||||||
import javax.management.MBeanAttributeInfo;
 | 
					import javax.management.MBeanAttributeInfo;
 | 
				
			||||||
import javax.management.MBeanConstructorInfo;
 | 
					import javax.management.MBeanConstructorInfo;
 | 
				
			||||||
import javax.management.MBeanException;
 | 
					import javax.management.MBeanException;
 | 
				
			||||||
import javax.management.MBeanInfo;
 | 
					import javax.management.MBeanInfo;
 | 
				
			||||||
import javax.management.MBeanParameterInfo;
 | 
					import javax.management.MBeanParameterInfo;
 | 
				
			||||||
import javax.management.ReflectionException;
 | 
					import javax.management.ReflectionException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.hyperic.sigar.Sigar;
 | 
					import org.hyperic.sigar.Sigar;
 | 
				
			||||||
import org.hyperic.sigar.SigarException;
 | 
					import org.hyperic.sigar.SigarException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Sigar JMX MBean implementation for the <code>Swap</code> information
 | 
					 * Sigar JMX MBean implementation for the <code>Swap</code> information
 | 
				
			||||||
 * package. Provides an OpenMBean conform implementation.
 | 
					 * package. Provides an OpenMBean conform implementation.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * @author Bjoern Martin
 | 
					 * @author Bjoern Martin
 | 
				
			||||||
 * @since 1.5
 | 
					 * @since 1.5
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class SigarSwap extends AbstractMBean {
 | 
					public class SigarSwap extends AbstractMBean {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String MBEAN_TYPE = "Swap";
 | 
					    private static final String MBEAN_TYPE = "Swap";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanInfo MBEAN_INFO;
 | 
					    private static final MBeanInfo MBEAN_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_FREE;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_FREE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_TOTAL;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_TOTAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanAttributeInfo MBEAN_ATTR_USED;
 | 
					    private static final MBeanAttributeInfo MBEAN_ATTR_USED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final MBeanConstructorInfo MBEAN_CONSTR_SIGAR;
 | 
					    private static final MBeanConstructorInfo MBEAN_CONSTR_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
					    private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
        MBEAN_ATTR_FREE = new MBeanAttributeInfo("Free", "long",
 | 
					        MBEAN_ATTR_FREE = new MBeanAttributeInfo("Free", "long",
 | 
				
			||||||
                "The amount of free swap memory, in [bytes]", true, false,
 | 
					                "The amount of free swap memory, in [bytes]", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_TOTAL = new MBeanAttributeInfo("Total", "long",
 | 
					        MBEAN_ATTR_TOTAL = new MBeanAttributeInfo("Total", "long",
 | 
				
			||||||
                "The total amount of swap memory, in [bytes]", true, false,
 | 
					                "The total amount of swap memory, in [bytes]", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_ATTR_USED = new MBeanAttributeInfo("Used", "long",
 | 
					        MBEAN_ATTR_USED = new MBeanAttributeInfo("Used", "long",
 | 
				
			||||||
                "The amount of swap memory in use, in [bytes]", true, false,
 | 
					                "The amount of swap memory in use, in [bytes]", true, false,
 | 
				
			||||||
                false);
 | 
					                false);
 | 
				
			||||||
        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
					        MBEAN_PARAM_SIGAR = new MBeanParameterInfo("sigar", Sigar.class
 | 
				
			||||||
                .getName(), "The Sigar instance to use to fetch data from");
 | 
					                .getName(), "The Sigar instance to use to fetch data from");
 | 
				
			||||||
        MBEAN_CONSTR_SIGAR = new MBeanConstructorInfo(
 | 
					        MBEAN_CONSTR_SIGAR = new MBeanConstructorInfo(
 | 
				
			||||||
                SigarSwap.class.getName(),
 | 
					                SigarSwap.class.getName(),
 | 
				
			||||||
                "Creates a new instance, using the Sigar instance "
 | 
					                "Creates a new instance, using the Sigar instance "
 | 
				
			||||||
                        + "specified to fetch the data.",
 | 
					                        + "specified to fetch the data.",
 | 
				
			||||||
                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR });
 | 
					                new MBeanParameterInfo[] { MBEAN_PARAM_SIGAR });
 | 
				
			||||||
        MBEAN_INFO = new MBeanInfo(
 | 
					        MBEAN_INFO = new MBeanInfo(
 | 
				
			||||||
                SigarSwap.class.getName(),
 | 
					                SigarSwap.class.getName(),
 | 
				
			||||||
                "Sigar Swap MBean, provides raw data for the swap memory "
 | 
					                "Sigar Swap MBean, provides raw data for the swap memory "
 | 
				
			||||||
                        + "configured on the system. Uses an internal cache that "
 | 
					                        + "configured on the system. Uses an internal cache that "
 | 
				
			||||||
                        + "invalidates within 5 seconds.",
 | 
					                        + "invalidates within 5 seconds.",
 | 
				
			||||||
                new MBeanAttributeInfo[] { MBEAN_ATTR_FREE, MBEAN_ATTR_TOTAL,
 | 
					                new MBeanAttributeInfo[] { MBEAN_ATTR_FREE, MBEAN_ATTR_TOTAL,
 | 
				
			||||||
                        MBEAN_ATTR_USED },
 | 
					                        MBEAN_ATTR_USED },
 | 
				
			||||||
                new MBeanConstructorInfo[] { MBEAN_CONSTR_SIGAR }, null, null);
 | 
					                new MBeanConstructorInfo[] { MBEAN_CONSTR_SIGAR }, null, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an
 | 
					     * Object name this instance will give itself when being registered to an
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private final String objectName;
 | 
					    private final String objectName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new instance, using the Sigar instance specified to fetch the
 | 
					     * Creates a new instance, using the Sigar instance specified to fetch the
 | 
				
			||||||
     * data.
 | 
					     * data.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @param sigar
 | 
					     * @param sigar
 | 
				
			||||||
     *            The Sigar instance to use to fetch data from
 | 
					     *            The Sigar instance to use to fetch data from
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @throws IllegalArgumentException
 | 
					     * @throws IllegalArgumentException
 | 
				
			||||||
     *             If an unexpected Sigar error occurs
 | 
					     *             If an unexpected Sigar error occurs
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public SigarSwap(Sigar sigar) throws IllegalArgumentException {
 | 
					    public SigarSwap(Sigar sigar) throws IllegalArgumentException {
 | 
				
			||||||
        super(sigar, CACHED_5SEC);
 | 
					        super(sigar, CACHED_5SEC);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
					        this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
 | 
				
			||||||
                + "=Swap";
 | 
					                + "=Swap";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Object name this instance will give itself when being registered to an
 | 
					     * Object name this instance will give itself when being registered to an
 | 
				
			||||||
     * MBeanServer.
 | 
					     * MBeanServer.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String getObjectName() {
 | 
					    public String getObjectName() {
 | 
				
			||||||
        return this.objectName;
 | 
					        return this.objectName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The amount of free swap memory, in [bytes]
 | 
					     * @return The amount of free swap memory, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getFree() {
 | 
					    public long getFree() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getSwap().getFree();
 | 
					            return sigar.getSwap().getFree();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The total amount of swap memory, in [bytes]
 | 
					     * @return The total amount of swap memory, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getTotal() {
 | 
					    public long getTotal() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getSwap().getTotal();
 | 
					            return sigar.getSwap().getTotal();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return The amount of swap memory in use, in [bytes]
 | 
					     * @return The amount of swap memory in use, in [bytes]
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public long getUsed() {
 | 
					    public long getUsed() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            return sigar.getSwap().getUsed();
 | 
					            return sigar.getSwap().getUsed();
 | 
				
			||||||
        } catch (SigarException e) {
 | 
					        } catch (SigarException e) {
 | 
				
			||||||
            throw unexpectedError(MBEAN_TYPE, e);
 | 
					            throw unexpectedError(MBEAN_TYPE, e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
    // Implementation of the DynamicMBean interface
 | 
					    // Implementation of the DynamicMBean interface
 | 
				
			||||||
    // -------
 | 
					    // -------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
     * @see javax.management.DynamicMBean#getAttribute(java.lang.String)
 | 
					     * @see javax.management.DynamicMBean#getAttribute(java.lang.String)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object getAttribute(String attr) throws AttributeNotFoundException,
 | 
					    public Object getAttribute(String attr) throws AttributeNotFoundException,
 | 
				
			||||||
            MBeanException, ReflectionException {
 | 
					            MBeanException, ReflectionException {
 | 
				
			||||||
        if (MBEAN_ATTR_FREE.getName().equals(attr)) {
 | 
					        if (MBEAN_ATTR_FREE.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getFree());
 | 
					            return new Long(getFree());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_TOTAL.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_TOTAL.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getTotal());
 | 
					            return new Long(getTotal());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (MBEAN_ATTR_USED.getName().equals(attr)) {
 | 
					        } else if (MBEAN_ATTR_USED.getName().equals(attr)) {
 | 
				
			||||||
            return new Long(getUsed());
 | 
					            return new Long(getUsed());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new AttributeNotFoundException(attr);
 | 
					            throw new AttributeNotFoundException(attr);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see javax.management.DynamicMBean#setAttribute(javax.management.Attribute)
 | 
					     * @see javax.management.DynamicMBean#setAttribute(javax.management.Attribute)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
					    public void setAttribute(Attribute attr) throws AttributeNotFoundException {
 | 
				
			||||||
        throw new AttributeNotFoundException(attr.getName());
 | 
					        throw new AttributeNotFoundException(attr.getName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see javax.management.DynamicMBean#invoke(java.lang.String,
 | 
					     * @see javax.management.DynamicMBean#invoke(java.lang.String,
 | 
				
			||||||
     *      java.lang.Object[], java.lang.String[])
 | 
					     *      java.lang.Object[], java.lang.String[])
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
					    public Object invoke(String actionName, Object[] params, String[] signature)
 | 
				
			||||||
            throws ReflectionException {
 | 
					            throws ReflectionException {
 | 
				
			||||||
        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
					        throw new ReflectionException(new NoSuchMethodException(actionName),
 | 
				
			||||||
                actionName);
 | 
					                actionName);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * (non-Javadoc)
 | 
					     * (non-Javadoc)
 | 
				
			||||||
     * @see javax.management.DynamicMBean#getMBeanInfo()
 | 
					     * @see javax.management.DynamicMBean#getMBeanInfo()
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public MBeanInfo getMBeanInfo() {
 | 
					    public MBeanInfo getMBeanInfo() {
 | 
				
			||||||
        return MBEAN_INFO;
 | 
					        return MBEAN_INFO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user