001: /**
002: * The XMOJO Project 5
003: * Copyright © 2003 XMOJO.org. All rights reserved.
004:
005: * NO WARRANTY
006:
007: * BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
008: * THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
009: * OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
010: * PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
011: * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
012: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
013: * TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE
014: * LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
015: * REPAIR OR CORRECTION.
016:
017: * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
018: * ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
019: * THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
020: * GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
021: * USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
022: * DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
023: * PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE),
024: * EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
025: * SUCH DAMAGES.
026: **/package javax.management;
027:
028: import java.io.Serializable;
029: import java.io.ObjectInputStream;
030: import java.io.IOException;
031:
032: /**
033: * Allows to discover the management interface exposed by an MBean; that is, the
034: * set of attributes and operations which are available for management operations.
035: */
036: public class MBeanInfo implements Serializable, Cloneable {
037: /**
038: * The MBean qualified name.
039: */
040: private String className = null;
041:
042: /**
043: * The human readable description of the class.
044: */
045: private String description = null;
046:
047: /**
048: * The MBean attribute descriptors.
049: */
050: private MBeanAttributeInfo[] attributes = null;
051:
052: /**
053: * The MBean constructor descriptors.
054: */
055: private MBeanConstructorInfo[] constructors = null;
056:
057: /**
058: * The MBean operation descriptors.
059: */
060: private MBeanOperationInfo[] operations = null;
061:
062: /**
063: * The MBean notification descriptors.
064: */
065: private MBeanNotificationInfo[] notifications = null;
066:
067: /* Serial version UID */
068: private static final long serialVersionUID = 0xa6795e2f085689c9L;
069:
070: /**
071: * Default constructor for constructing an MBeanInfo.
072: */
073: protected MBeanInfo() {
074: }
075:
076: /**
077: * Constructs an <CODE>MBeanInfo</CODE>.
078: *
079: * @param name The name of the Java class of the MBean described
080: * by this MBeanInfo.
081: *
082: * @param description A human readable description of the MBean (optional).
083: *
084: * @param attributes The list of exposed attributes of the MBean.
085: *
086: * @param constructors The list of public constructors of the MBean.
087: *
088: * @param operations The list of operations of the MBean.
089: *
090: * @param notifications The list of notifications emitted by an MBean.
091: */
092: public MBeanInfo(String className, String description,
093: MBeanAttributeInfo[] attributes,
094: MBeanConstructorInfo[] constructors,
095: MBeanOperationInfo[] operations,
096: MBeanNotificationInfo[] notifications) {
097: this .className = className;
098: this .description = description;
099: this .attributes = attributes;
100: this .constructors = constructors;
101: this .operations = operations;
102: this .notifications = notifications;
103: }
104:
105: /**
106: * Creates and returns a copy of this object.
107: * @return A duplicate copy of this object is created
108: */
109: public Object clone() {
110: return new MBeanInfo(className, description, attributes,
111: constructors, operations, notifications);
112: }
113:
114: /**
115: * Returns the MBean Java class name described by this MBeanInfo.
116: *
117: * @return the name of the Java class of the MBean described by this MBeanInfo.
118: */
119: public String getClassName() {
120: return className;
121: }
122:
123: /**
124: * Returns a human readable description of the MBean.
125: *
126: * @return a human readable description of the MBean.
127: */
128: public String getDescription() {
129: return description;
130: }
131:
132: /**
133: * Returns the list of attributes exposed for management.
134: * Each attribute is described by an <CODE>MBeanAttributeInfo</CODE> object.
135: *
136: * @return An array of <CODE>MBeanAttributeInfo</CODE> objects.
137: */
138: public MBeanAttributeInfo[] getAttributes() {
139: if (attributes != null) {
140: return attributes;
141: } else {
142: return new MBeanAttributeInfo[0];
143: }
144: }
145:
146: /**
147: * Returns the list of the public constructors of the MBean. Each
148: * constructor is described by an <CODE>MBeanConstructorInfo</CODE> object.
149: *
150: * @return An array of <CODE>MBeanConstructorInfo</CODE> objects.
151: */
152: public MBeanConstructorInfo[] getConstructors() {
153: if (constructors != null) {
154: return constructors;
155: } else {
156: return new MBeanConstructorInfo[0];
157: }
158: }
159:
160: /**
161: * Returns the list of operations of the MBean.
162: * Each operation is described by an <CODE>MBeanOperationInfo</CODE> object.
163: *
164: * @return An array of <CODE>MBeanOperationInfo</CODE> objects.
165: */
166: public MBeanOperationInfo[] getOperations() {
167: if (operations != null) {
168: return operations;
169: } else {
170: return new MBeanOperationInfo[0];
171: }
172: }
173:
174: /**
175: * Returns the list of the notifications emitted by the MBean. Each
176: * notification is described by an <CODE>MBeanNotificationInfo</CODE> object.
177: *
178: * @return An array of <CODE>MBeanNotificationInfo</CODE> objects.
179: */
180: public MBeanNotificationInfo[] getNotifications() {
181: if (notifications != null) {
182: return notifications;
183: } else {
184: return new MBeanNotificationInfo[0];
185: }
186: }
187:
188: //------------------------- Private methods ---------------------------//
189:
190: private void readObject(ObjectInputStream objectInputStream)
191: throws IOException, ClassNotFoundException {
192: try {
193: objectInputStream.defaultReadObject();
194: } catch (Exception e) {
195: }
196: }
197: }
|