/* * Copyright 2004-2006 Sun Microsystems, Inc. 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. Sun designates this * particular file as subject to the "Classpath" exception as provided * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ package sun.tools.jconsole.inspector; import java.io.IOException; import javax.management.*; import javax.swing.Icon; import sun.tools.jconsole.MBeansTab; public class XMBean extends Object { private ObjectName objectName; private Icon icon; private String text; private boolean broadcaster; private MBeanInfo mbeanInfo; private MBeansTab mbeansTab; public XMBean(ObjectName objectName, MBeansTab mbeansTab) throws InstanceNotFoundException, IntrospectionException, ReflectionException, IOException { this.mbeansTab = mbeansTab; setObjectName(objectName); if (MBeanServerDelegate.DELEGATE_NAME.equals(objectName)) { icon = IconManager.MBEANSERVERDELEGATE; } else { icon = IconManager.MBEAN; } this.broadcaster = isBroadcaster(objectName); this.mbeanInfo = getMBeanInfo(objectName); } MBeanServerConnection getMBeanServerConnection() { return mbeansTab.getMBeanServerConnection(); } public boolean isBroadcaster() { return broadcaster; } private boolean isBroadcaster(ObjectName name) { try { return getMBeanServerConnection().isInstanceOf( name, "javax.management.NotificationBroadcaster"); } catch (Exception e) { System.out.println("Error calling isBroadcaster: " + e.getMessage()); } return false; } public Object invoke(String operationName) throws Exception { Object result = getMBeanServerConnection().invoke( getObjectName(), operationName, new Object[0], new String[0]); return result; } public Object invoke(String operationName, Object params[], String sig[]) throws Exception { Object result = getMBeanServerConnection().invoke( getObjectName(), operationName, params, sig); return result; } public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InstanceNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException, IOException { getMBeanServerConnection().setAttribute(getObjectName(), attribute); } public Object getAttribute(String attributeName) throws AttributeNotFoundException, InstanceNotFoundException, MBeanException, ReflectionException, IOException { return getMBeanServerConnection().getAttribute( getObjectName(), attributeName); } public AttributeList getAttributes(String attributeNames[]) throws AttributeNotFoundException, InstanceNotFoundException, MBeanException, ReflectionException, IOException { return getMBeanServerConnection().getAttributes( getObjectName(), attributeNames); } public AttributeList getAttributes(MBeanAttributeInfo attributeNames[]) throws AttributeNotFoundException, InstanceNotFoundException, MBeanException, ReflectionException, IOException { String attributeString[] = new String[attributeNames.length]; for (int i = 0; i < attributeNames.length; i++) { attributeString[i] = attributeNames[i].getName(); } return getAttributes(attributeString); } public ObjectName getObjectName() { return objectName; } private void setObjectName(ObjectName objectName) { this.objectName = objectName; // generate a readable name now String name = getObjectName().getKeyProperty("name"); if (name == null) setText(getObjectName().getDomain()); else setText(name); } public MBeanInfo getMBeanInfo() { return mbeanInfo; } private MBeanInfo getMBeanInfo(ObjectName name) throws InstanceNotFoundException, IntrospectionException, ReflectionException, IOException { return getMBeanServerConnection().getMBeanInfo(name); } public boolean equals(Object o) { if (o instanceof XMBean) { XMBean mbean = (XMBean) o; return getObjectName().equals((mbean).getObjectName()); } return false; } public String getText() { return text; } public void setText(String text) { this.text = text; } public Icon getIcon() { return icon; } public void setIcon(Icon icon) { this.icon = icon; } public String toString() { return getText(); } }