001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package javax.management.openmbean;
023:
024: import javax.management.MBeanAttributeInfo;
025: import javax.management.MBeanConstructorInfo;
026: import javax.management.MBeanOperationInfo;
027: import javax.management.MBeanNotificationInfo;
028:
029: /**
030: * An MBean is an OpenMBean when its getMBeanInfo() returns an MBeanInfo
031: * implementing this interface and extending javax.management.MBeanInfo.<p>
032: *
033: * {@link OpenMBeanInfoSupport} is an example of such a class.<p>
034: *
035: * The MBean info classes should be the OpenInfo versions. e.g.
036: * an {@link OpenMBeanAttributeInfo} instead of MBeanAttributeInfo.
037: *
038: * @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
039: *
040: * @version $Revision: 57200 $
041: *
042: */
043: public interface OpenMBeanInfo {
044:
045: // Attributes ----------------------------------------------------
046:
047: // Constructors --------------------------------------------------
048:
049: // Public --------------------------------------------------------
050:
051: /**
052: * Retrieve the fully qualified class name of the open MBean the
053: * implementation of this interface describes.
054: *
055: * @return the fully qualified class name.
056: */
057: String getClassName();
058:
059: /**
060: * Retrieve a human readable description of the open MBean the
061: * implementation of this interface describes.
062: *
063: * @return the description.
064: */
065: String getDescription();
066:
067: /**
068: * Retrieve an array of OpenMBeanAttributeInfos describing each attribute
069: * of the open mbean.<p>
070: *
071: * Each instance should also implement OpenMBeanAttributeInfo
072: *
073: * @return the array of attributes.
074: */
075: MBeanAttributeInfo[] getAttributes();
076:
077: /**
078: * Retrieve an array of OpenMBeanOperationInfos describing each operation
079: * of the open mbean.<p>
080: *
081: * Each instance should also implement OpenMBeanOperationInfo
082: *
083: * @return the array of operations.
084: */
085: MBeanOperationInfo[] getOperations();
086:
087: /**
088: * Retrieve an array of OpenMBeanConstructorInfos describing each constructor
089: * of the open mbean.<p>
090: *
091: * Each instance should also implement OpenMBeanConstructorInfo
092: *
093: * @return the array of constructors.
094: */
095: MBeanConstructorInfo[] getConstructors();
096:
097: /**
098: * Retrieve an array of MBeanNotificationInfos describing each notification
099: * of the open mbean.
100: *
101: * @return the array of notifications.
102: */
103: MBeanNotificationInfo[] getNotifications();
104:
105: /**
106: * Compares an object for equality with the implementing class.<p>
107: *
108: * The object is not null<br>
109: * The object implements the open mbean info interface<br>
110: * The getClassName() methods return strings that are equal<br>
111: * The information objects (attributes, constructors, operations and
112: * notifications) are the equal
113: *
114: * @param obj the object to test
115: * @return true when above is true, false otherwise
116: */
117: boolean equals(Object obj);
118:
119: /**
120: * Generates a hashcode for the implementation.<p>
121: *
122: * The hashcode is the sum of the hashcodes for<br>
123: * getClassName()<br>
124: * java.util.HashSet(java.util.Arrays.asList(getAttributes()).hashCode()<br>
125: * java.util.HashSet(java.util.Arrays.asList(getConstructors()).hashCode()<br>
126: * java.util.HashSet(java.util.Arrays.asList(getOperations()).hashCode()<br>
127: * java.util.HashSet(java.util.Arrays.asList(getNotifications()).hashCode()<br>
128: *
129: * @return the calculated hashcode
130: */
131: int hashCode();
132:
133: /**
134: * A string representation of the open mbean info.<p>
135: *
136: * It is made up of<br>
137: * The implementing class<br>
138: * getClassName()<br>
139: * toString() for each of the info arrays
140: *
141: * @return the string
142: */
143: String toString();
144: }
|