149 lines · 5.1 KB · Java
RawDownload
/* * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */package sun.management.snmp.jvminstr; // java imports//import java.io.Serializable; import java.lang.management.ClassLoadingMXBean;import java.lang.management.ManagementFactory;// jmx imports//import javax.management.MBeanServer;import com.sun.jmx.snmp.SnmpString;import com.sun.jmx.snmp.SnmpStatusException; // jdmk imports//import com.sun.jmx.snmp.agent.SnmpMib; import sun.management.snmp.jvmmib.JvmClassLoadingMBean;import sun.management.snmp.jvmmib.EnumJvmClassesVerboseLevel;import sun.management.snmp.util.MibLogger; /** * The class is used for implementing the "JvmClassLoading" group. */public class JvmClassLoadingImpl implements JvmClassLoadingMBean {     /**     * Variable for storing the value of "JvmClassesVerboseLevel".     *     * "verbose: if the -verbose:class flag is set.     * silent:  otherwise.     *     * See java.management.ClassLoadingMXBean.isVerbose(),     * java.management.ClassLoadingMXBean.setVerbose()     * "     *     */    static final EnumJvmClassesVerboseLevel JvmClassesVerboseLevelVerbose =        new EnumJvmClassesVerboseLevel("verbose");    static final EnumJvmClassesVerboseLevel JvmClassesVerboseLevelSilent =        new EnumJvmClassesVerboseLevel("silent");     /**     * Constructor for the "JvmClassLoading" group.     * If the group contains a table, the entries created through an     * SNMP SET will not be registered in Java DMK.     */    public JvmClassLoadingImpl(SnmpMib myMib) {    }     /**     * Constructor for the "JvmClassLoading" group.     * If the group contains a table, the entries created through an SNMP SET     * will be AUTOMATICALLY REGISTERED in Java DMK.     */    public JvmClassLoadingImpl(SnmpMib myMib, MBeanServer server) {    }     static ClassLoadingMXBean getClassLoadingMXBean() {        return ManagementFactory.getClassLoadingMXBean();    }     /**     * Getter for the "JvmClassesVerboseLevel" variable.     */    public EnumJvmClassesVerboseLevel getJvmClassesVerboseLevel()        throws SnmpStatusException {        if(getClassLoadingMXBean().isVerbose())            return JvmClassesVerboseLevelVerbose;        else            return JvmClassesVerboseLevelSilent;    }     /**     * Setter for the "JvmClassesVerboseLevel" variable.     */    public void setJvmClassesVerboseLevel(EnumJvmClassesVerboseLevel x)        throws SnmpStatusException {        final boolean verbose;        if (JvmClassesVerboseLevelVerbose.equals(x)) verbose=true;        else if (JvmClassesVerboseLevelSilent.equals(x)) verbose=false;        // Should never happen, this case is handled by        // checkJvmClassesVerboseLevel();        else throw new            SnmpStatusException(SnmpStatusException.snmpRspWrongValue);        getClassLoadingMXBean().setVerbose(verbose);    }     /**     * Checker for the "JvmClassesVerboseLevel" variable.     */    public void checkJvmClassesVerboseLevel(EnumJvmClassesVerboseLevel x)        throws SnmpStatusException {        //        // Add your own checking policy.        //        if (JvmClassesVerboseLevelVerbose.equals(x)) return;        if (JvmClassesVerboseLevelSilent.equals(x))  return;        throw new SnmpStatusException(SnmpStatusException.snmpRspWrongValue);     }     /**     * Getter for the "JvmClassesUnloadedCount" variable.     */    public Long getJvmClassesUnloadedCount() throws SnmpStatusException {        return new Long(getClassLoadingMXBean().getUnloadedClassCount());    }     /**     * Getter for the "JvmClassesTotalLoadedCount" variable.     */    public Long getJvmClassesTotalLoadedCount() throws SnmpStatusException {        return new Long(getClassLoadingMXBean().getTotalLoadedClassCount());    }     /**     * Getter for the "JvmClassesLoadedCount" variable.     */    public Long getJvmClassesLoadedCount() throws SnmpStatusException {        return new Long(getClassLoadingMXBean().getLoadedClassCount());    } }