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.ObjectInputStream.GetField;
031: import java.io.ObjectOutputStream;
032: import java.io.ObjectOutputStream.PutField;
033: import java.io.ObjectStreamField;
034: import java.io.IOException;
035:
036: /**
037: * Describes describes a notification emitted by an MBean.
038: */
039: public class MBeanNotificationInfo extends MBeanFeatureInfo implements
040: Serializable, Cloneable {
041: /**
042: * The type of the notification.
043: */
044: private String[] notifTypes = null;
045:
046: /* Serial version UID */
047: private static final long serialVersionUID = 0xca09baa9dd73fd48L;
048:
049: private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField(
050: "types", java.lang.String.class) };
051:
052: /**
053: * Constructs an <CODE>MBeanNotificationInfo</CODE> object.
054: *
055: * @param notifType The event type string (in dot notation).
056: *
057: * @param name The name of the <CODE>Notification</CODE> class.
058: *
059: * @param description A human readable description of the data.
060: */
061: public MBeanNotificationInfo(String[] notifTypes, String name,
062: String description) {
063: super (name, description);
064: this .notifTypes = notifTypes;
065: }
066:
067: /**
068: * Creates and returns a copy of this object.
069: * @return A duplicate copy of this object is created
070: */
071: public Object clone() {
072: String[] clonedntypes = new String[notifTypes.length];
073:
074: for (int i = 0; i < notifTypes.length; i++)
075: clonedntypes[i] = notifTypes[i];
076:
077: return new MBeanNotificationInfo(clonedntypes, getName(),
078: getDescription());
079: }
080:
081: /**
082: * Returns the notification type string of the notification (in dot notation).
083: *
084: * @return A String array of the notification types are returned
085: */
086: public String[] getNotifTypes() {
087: return notifTypes;
088: }
089:
090: /**
091: * Returns a human readable version of the MBeanNotificationInfo instance
092: * @return MBeanNotificationInfo of String type is returned
093: */
094: public String toString() {
095: return (super .toString() + "\n NotifTypes = " + getNotifTypesString());
096: }
097:
098: //------------------------- Private methods ---------------------------//
099:
100: private String getNotifTypesString() {
101: if (notifTypes == null || notifTypes.length == 0)
102: return "null";
103:
104: String toRet = "";
105:
106: for (int i = 0; i < notifTypes.length; i++) {
107: if (i == notifTypes.length - 1)
108: toRet += notifTypes[i];
109: else
110: toRet += notifTypes[i] + ", ";
111: }
112:
113: return toRet;
114: }
115:
116: private void readObject(ObjectInputStream objectinputstream)
117: throws IOException, ClassNotFoundException {
118: ObjectInputStream.GetField getfield = objectinputstream
119: .readFields();
120:
121: try {
122: notifTypes = (String[]) getfield.get("types", "");
123: } catch (Exception exception) {
124: }
125: }
126:
127: private void writeObject(ObjectOutputStream objectoutputstream)
128: throws IOException {
129: ObjectOutputStream.PutField putfield = objectoutputstream
130: .putFields();
131: putfield.put("types", notifTypes);
132: objectoutputstream.writeFields();
133: }
134: }
|