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: * This class is used for representing an object instance; that is,
038: * an object name and class. If the MBean is a Dynamic MBean the class name
039: * should be retrieved from the <CODE>MBeanInfo</CODE> it provides.
040: */
041: public class ObjectInstance implements Serializable {
042: /**
043: * Object name.
044: */
045: private ObjectName name = null;
046:
047: /**
048: * Class name.
049: */
050: private String className = null;
051:
052: private static final ObjectStreamField[] serialPersistentFields = {
053: new ObjectStreamField("name",
054: javax.management.ObjectName.class),
055: new ObjectStreamField("className", java.lang.String.class) };
056:
057: //private static final long serialVersionUID = -4099952623687795850L;
058: private static final long serialVersionUID = 0xc71a0acfad287b76L;
059:
060: /**
061: * Allows an object instance to be created given a string representation of
062: * an object name and the full class name, including the package name.
063: *
064: * @param objectName A string representation of the object name.
065: *
066: * @param className The full class name, including the package name,
067: * of the object instance. If the MBean is a Dynamic MBean
068: * the class name should be retrieved from the
069: * <CODE>MBeanInfo</CODE> it provides.
070: *
071: * @exception MalformedObjectNameException The string passed as a
072: * parameter does not have the right format.
073: */
074: public ObjectInstance(String objectName, String className)
075: throws MalformedObjectNameException {
076: if (objectName == null || className == null)
077: throw new MalformedObjectNameException();
078:
079: this .name = new ObjectName(objectName);
080: this .className = className;
081: }
082:
083: /**
084: * Allows an object instance to be created given an object name and
085: * the full class name, including the package name.
086: *
087: * @param objectName The object name.
088: *
089: * @param className The full class name, including the package name,
090: * of the object instance. If the MBean is a Dynamic MBean
091: * the class name should be retrieved from the
092: * <CODE>MBeanInfo</CODE> it provides.
093: *
094: */
095: public ObjectInstance(ObjectName objectName, String className) {
096: this .name = objectName;
097: this .className = className;
098: }
099:
100: /**
101: * Compares the current object instance with another object instance.
102: *
103: * @param object The object instance that the current object instance is
104: * to be compared with.
105: *
106: * @return True if the two object instances are equal, otherwise false.
107: *
108: * @overrides equals in class java.lang.Object
109: */
110: public boolean equals(Object object) {
111: if (!(object instanceof ObjectInstance))
112: return false;
113:
114: return name.toString().equals(
115: ((ObjectInstance) object).getObjectName().toString());
116: }
117:
118: /**
119: * Returns the object name part.
120: *
121: * @return This reurns the object name
122: */
123: public ObjectName getObjectName() {
124: return name;
125: }
126:
127: /**
128: * Returns the class part.
129: *
130: * @return This returns the class name
131: */
132: public String getClassName() {
133: return className;
134: }
135:
136: /**
137: * Overrides toString() method
138: */
139: public String toString() {
140: return name.toString();
141: }
142:
143: //------------------------- Private methods ---------------------------//
144:
145: private void readObject(ObjectInputStream objectinputstream)
146: throws IOException, ClassNotFoundException {
147: ObjectInputStream.GetField getfield = objectinputstream
148: .readFields();
149:
150: try {
151: name = (ObjectName) getfield.get("name", "");
152: className = (String) getfield.get("className", "");
153: } catch (Exception exception) {
154: }
155: }
156:
157: private void writeObject(ObjectOutputStream objectoutputstream)
158: throws IOException {
159: ObjectOutputStream.PutField putfield = objectoutputstream
160: .putFields();
161: putfield.put("name", name);
162: putfield.put("className", className);
163:
164: objectoutputstream.writeFields();
165: }
166: }
|