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.lang.reflect.Constructor;
029: import java.io.Serializable;
030:
031: /**
032: * Describes a constructor exposed by an MBean.
033: */
034: public class MBeanConstructorInfo extends MBeanFeatureInfo implements
035: Serializable, Cloneable {
036: /**
037: * The signature of the method, that is, the class names of the arguments.
038: */
039: private MBeanParameterInfo[] signature = null;
040:
041: /**
042: * The constructor.
043: */
044: private transient java.lang.reflect.Constructor constructor = null;
045:
046: /* Serial version UID */
047: private static final long serialVersionUID = 4433990064191844427L;
048:
049: /**
050: * Constructs an <CODE>MBeanConstructorInfo</CODE> object.
051: *
052: * @param description A human readable description of the operation.
053: * @param constructor The <CODE>java.lang.reflect.Constructor</CODE> object describing the MBean constructor.
054: */
055: public MBeanConstructorInfo(String description,
056: Constructor constructor) {
057: super (constructor.getName(), description);
058: this .constructor = constructor;
059: this .signature = constructMBeanParameterInfo(constructor
060: .getParameterTypes());
061: }
062:
063: /**
064: * Constructs an <CODE>MBeanConstructorInfo</CODE> object.
065: *
066: * @param name The name of the constructor.
067: *
068: * @param description A human readable description of the constructor.
069: *
070: * @param signature <CODE>MBeanParameterInfo</CODE> objects describing
071: * the parameters(arguments) of the constructor.
072: */
073: public MBeanConstructorInfo(String name, String description,
074: MBeanParameterInfo[] signature) {
075: super (name, description);
076: this .signature = signature;
077: }
078:
079: /**
080: * Returns the signature of the method, that is, information on
081: * the operations arguments.
082: *
083: * @return A MBeanParameterInfo array is returned which describes
084: * the parameters of the constructor
085: */
086: public MBeanParameterInfo[] getSignature() {
087: return signature;
088: }
089:
090: /**
091: * Creates and returns a copy of this object.
092: *
093: * @return A duplicate copy of this object is created
094: */
095: public Object clone() {
096: MBeanParameterInfo[] clonedSig = new MBeanParameterInfo[signature.length];
097:
098: for (int i = 0; i < signature.length; i++)
099: clonedSig[i] = (MBeanParameterInfo) signature[i].clone();
100:
101: return new MBeanConstructorInfo(getName(), getDescription(),
102: clonedSig);
103: }
104:
105: /**
106: * Returns a human readable version of the MBeanConstructorInfo instance
107: *
108: * @return String format of MBeanConstructorInfo is returned
109: */
110: public String toString() {
111: return (super .toString() + "\n Signature = " + getSignatureString());
112: }
113:
114: //------------------------- Private methods ---------------------------//
115:
116: private String getSignatureString() {
117: if (signature == null)
118: return "null";
119:
120: String toRet = "";
121:
122: for (int i = 0; i < signature.length; i++)
123: toRet = (toRet + " [param" + (i + 1) + " = "
124: + signature[i].toString() + "]\n");
125:
126: return toRet;
127: }
128:
129: private MBeanParameterInfo[] constructMBeanParameterInfo(
130: Class[] params) {
131: int size = params.length;
132: MBeanParameterInfo[] mbParams = new MBeanParameterInfo[size];
133:
134: for (int i = 0; i < size; i++) {
135: mbParams[i] = new MBeanParameterInfo("", params[i]
136: .getName(), "");
137: }
138:
139: return mbParams;
140: }
141: }
|