⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metadataimpl.java

📁 JAVA的一些源码 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
💻 JAVA
字号:
/* * @(#)MetaDataImpl.java	1.28 03/12/19 *  * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.jmx.mbeanserver;// java importimport java.lang.reflect.Method;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.util.Hashtable;import java.util.Iterator;import java.io.PrintWriter;import java.io.StringWriter;// RI importimport javax.management.* ; import com.sun.jmx.trace.Trace; /** * The MetaData class provides local access to the metadata service in * an agent. * * @since 1.5 * @since.unbundled JMX RI 1.2 */public class MetaDataImpl implements MetaData {    /** The name of this class to be used for tracing */    private final static String dbgTag = "MetaDataImpl";    /** MetaData for DynamicMBeans **/    private final DynamicMetaDataImpl  dynamic;    private final StandardMetaDataImpl standard;    /**     * The MBeanInstantiator associated to the MetaData     */    protected final MBeanInstantiator instantiator;    // Not sure we need this...    private final class PrivateStandardMeta extends StandardMetaDataImpl {	PrivateStandardMeta() {	    super();	}	// public synchronized void testCompliance(Class c) {	//    MetaDataImpl.this.testStrictCompliance(c);	// }	protected Class findClass(String className, ClassLoader loader) 	    throws ReflectionException {	    return MetaDataImpl.this.findClass(className,loader);	}	protected Class[] findSignatureClasses(String[] signature, 					       ClassLoader loader) 	    throws ReflectionException {	    return MetaDataImpl.this.findSignatureClasses(signature,loader);	}	    }    // Not sure we need this...    private final class PrivateDynamicMeta extends DynamicMetaDataImpl {	PrivateDynamicMeta() {	    super();	}	// public synchronized void testCompliance(Class c) {	//    MetaDataImpl.this.testStrictCompliance(c);	// }	protected Class findClass(String className, ClassLoader loader) 	    throws ReflectionException {	    return MetaDataImpl.this.findClass(className,loader);	}	protected Class[] findSignatureClasses(String[] signature, 					       ClassLoader loader) 	    throws ReflectionException {	    return MetaDataImpl.this.findSignatureClasses(signature,loader);	}	    }    /**     * Creates a Metadata Service.     * @param instantiator The MBeanInstantiator that will be used to     *        take care of class loading issues.     *        This parameter may not be null.     * @exception IllegalArgumentException if the instantiator is null.     */    public MetaDataImpl(MBeanInstantiator instantiator)  {	if (instantiator == null) throw new 	    IllegalArgumentException("instantiator must not be null.");	this.instantiator = instantiator;	this.dynamic  = new PrivateDynamicMeta();	this.standard = new PrivateStandardMeta();	// ------------------------------ 	// ------------------------------     }     protected MetaData getMetaData(Class c) {	if (DynamicMBean.class.isAssignableFrom(c)) 	    return dynamic;	else	    return standard;    }    protected MetaData getMetaData(Object moi) {	if (moi instanceof DynamicMBean) 	    return dynamic;	else	    return standard;    }    /**      * This methods tests if the MBean is JMX compliant     */        public synchronized void testCompliance(Class c) 	throws NotCompliantMBeanException {	final  MetaData meta = getMetaData(c);	meta.testCompliance(c);    }      /**      * This methods returns the MBean interface of an MBean     */        public Class getMBeanInterfaceFromClass(Class c) {	return standard.getMBeanInterfaceFromClass(c);    }        /**     * This method discovers the attributes and operations that an MBean      * exposes for management.     *     * @param beanClass The class to be analyzed.     *     * @return  An instance of MBeanInfo allowing to retrieve all methods     *          and operations of this class.     *     * @exception IntrospectionException if an exception occurs during     *            introspection.     * @exception NotCompliantMBeanException if the MBean class is not     *            MBean compliant.     *     */    public MBeanInfo getMBeanInfoFromClass(Class beanClass) 	throws IntrospectionException, NotCompliantMBeanException {	return standard.getMBeanInfoFromClass(beanClass);    }            //---------------------------------------------------------------------    //    // From the MetaData interface    //    //---------------------------------------------------------------------    public final String getMBeanClassName(Object moi) 	throws IntrospectionException, NotCompliantMBeanException {	final  MetaData meta = getMetaData(moi);	return meta.getMBeanClassName(moi);    }    public final MBeanInfo getMBeanInfo(Object moi) 	throws IntrospectionException {	final  MetaData meta = getMetaData(moi);	return meta.getMBeanInfo(moi);    }    public final Object getAttribute(Object instance, String attribute)  	throws MBeanException, AttributeNotFoundException, 	       ReflectionException {		final  MetaData meta = getMetaData(instance);	return meta.getAttribute(instance,attribute);    }    public final AttributeList getAttributes(Object instance, 					     String[] attributes) 	throws ReflectionException {	final  MetaData meta = getMetaData(instance);	return meta.getAttributes(instance, attributes);    }    public final AttributeList setAttributes(Object instance, 				       AttributeList attributes) 	throws ReflectionException {		final  MetaData meta = getMetaData(instance);	return meta.setAttributes(instance,attributes);    }        public final Object setAttribute(Object instance, Attribute attribute) 	throws AttributeNotFoundException, InvalidAttributeValueException, 	       MBeanException, ReflectionException {	final  MetaData meta = getMetaData(instance);	return meta.setAttribute(instance,attribute);    }    public final Object invoke(Object instance, String operationName, 			 Object params[], String signature[]) 	throws  MBeanException, ReflectionException {        if (operationName == null) {	    final RuntimeException r = 	      new IllegalArgumentException("Operation name cannot be null");            throw new RuntimeOperationsException(r,               "Exception occured trying to invoke the operation on the MBean");        } 	final  MetaData meta = getMetaData(instance);	return meta.invoke(instance,operationName,params,signature);    }    public boolean isInstanceOf(Object instance, String className) 	throws ReflectionException {	// XXX revisit here: ModelMBean ???	final MetaData meta  = getMetaData(instance);	return meta.isInstanceOf(instance,className);    }    public ObjectName preRegisterInvoker(Object moi, ObjectName name, 					 MBeanServer mbs) 	throws InstanceAlreadyExistsException, MBeanRegistrationException {   	if (!(moi instanceof MBeanRegistration)) return name;	final MetaData meta  = getMetaData(moi);	return meta.preRegisterInvoker(moi,name,mbs);    }       public void postRegisterInvoker(Object moi, boolean registrationDone) {	if (!(moi instanceof MBeanRegistration)) return;	final MetaData meta  = getMetaData(moi);	meta.postRegisterInvoker(moi,registrationDone);    }        public void preDeregisterInvoker(Object moi) 	throws MBeanRegistrationException {	if (!(moi instanceof MBeanRegistration)) return;	final MetaData meta  = getMetaData(moi);	meta.preDeregisterInvoker(moi);    }      public void postDeregisterInvoker(Object moi) {	if (!(moi instanceof MBeanRegistration)) return;	final MetaData meta  = getMetaData(moi);	meta.postDeregisterInvoker(moi);    }    /**     * Find a class using the specified ClassLoader.     **/    protected Class findClass(String className, ClassLoader loader) 	throws ReflectionException {	return instantiator.findClass(className, loader);    }    /**     * Find the classes from a signature using the specified ClassLoader.     **/    protected Class[] findSignatureClasses(String[] signature, 					   ClassLoader loader) 	throws ReflectionException {	return ((signature == null)?null:		instantiator.findSignatureClasses(signature,loader));    }    // TRACES & DEBUG    //---------------        private static boolean isTraceOn() {        return Trace.isSelected(Trace.LEVEL_TRACE, Trace.INFO_MBEANSERVER);    }    private static void trace(String clz, String func, String info) {        Trace.send(Trace.LEVEL_TRACE, Trace.INFO_MBEANSERVER, clz, func, info);    }        private static void trace(String func, String info) {        trace(dbgTag, func, info);    }        private static boolean isDebugOn() {        return Trace.isSelected(Trace.LEVEL_DEBUG, Trace.INFO_MBEANSERVER);    }        private static void debug(String clz, String func, String info) {        Trace.send(Trace.LEVEL_DEBUG, Trace.INFO_MBEANSERVER, clz, func, info);    }        private static void debug(String func, String info) {        debug(dbgTag, func, info);    }        private static void debugX(String func,Throwable e) {	if (isDebugOn()) {	    final StringWriter s = new StringWriter();	    e.printStackTrace(new PrintWriter(s));	    final String stack = s.toString();	    	    debug(dbgTag,func,"Exception caught in "+ func+"(): "+e);	    debug(dbgTag,func,stack);		    // java.lang.System.err.println("**** Exception caught in "+	    // 			     func+"(): "+e);	    // java.lang.System.err.println(stack);	}    }     }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -