OpenMBeanConstructorInfoSupportpublic class OpenMBeanConstructorInfoSupport extends MBeanConstructorInfo implements OpenMBeanConstructorInfoDescribes a constructor of an Open MBean. |
Fields Summary |
---|
static final long | serialVersionUID | private transient Integer | myHashCode | private transient String | myToString |
Constructors Summary |
---|
public OpenMBeanConstructorInfoSupport(String name, String description, OpenMBeanParameterInfo[] signature)Constructs an {@code OpenMBeanConstructorInfoSupport}
instance, which describes the constructor of a class of open
MBeans with the specified {@code name}, {@code description} and
{@code signature}.
The {@code signature} array parameter is internally copied,
so that subsequent changes to the array referenced by {@code
signature} have no effect on this instance.
this(name, description, signature, (Descriptor) null);
| public OpenMBeanConstructorInfoSupport(String name, String description, OpenMBeanParameterInfo[] signature, Descriptor descriptor)Constructs an {@code OpenMBeanConstructorInfoSupport}
instance, which describes the constructor of a class of open
MBeans with the specified {@code name}, {@code description},
{@code signature}, and {@code descriptor}.
The {@code signature} array parameter is internally copied,
so that subsequent changes to the array referenced by {@code
signature} have no effect on this instance.
super(name,
description,
arrayCopyCast(signature), // may throw an ArrayStoreException
descriptor);
// check parameters that should not be null or empty
// (unfortunately it is not done in superclass :-( ! )
//
if (name == null || name.trim().equals("")) {
throw new IllegalArgumentException("Argument name cannot be " +
"null or empty");
}
if (description == null || description.trim().equals("")) {
throw new IllegalArgumentException("Argument description cannot " +
"be null or empty");
}
|
Methods Summary |
---|
private static javax.management.MBeanParameterInfo[] | arrayCopyCast(javax.management.openmbean.OpenMBeanParameterInfo[] src)
if (src == null)
return null;
MBeanParameterInfo[] dst = new MBeanParameterInfo[src.length];
System.arraycopy(src, 0, dst, 0, src.length);
// may throw an ArrayStoreException
return dst;
| public boolean | equals(java.lang.Object obj)Compares the specified {@code obj} parameter with this
{@code OpenMBeanConstructorInfoSupport} instance for
equality.
Returns {@code true} if and only if all of the following
statements are true:
- {@code obj} is non null,
- {@code obj} also implements the {@code
OpenMBeanConstructorInfo} interface,
- their names are equal
- their signatures are equal.
This ensures that this {@code equals} method works properly for
{@code obj} parameters which are different implementations of
the {@code OpenMBeanConstructorInfo} interface.
// if obj is null, return false
//
if (obj == null) {
return false;
}
// if obj is not a OpenMBeanConstructorInfo, return false
//
OpenMBeanConstructorInfo other;
try {
other = (OpenMBeanConstructorInfo) obj;
} catch (ClassCastException e) {
return false;
}
// Now, really test for equality between this
// OpenMBeanConstructorInfo implementation and the other:
//
// their Name should be equal
if ( ! this.getName().equals(other.getName()) ) {
return false;
}
// their Signatures should be equal
if ( ! Arrays.equals(this.getSignature(), other.getSignature()) ) {
return false;
}
// All tests for equality were successfull
//
return true;
| public int | hashCode()Returns the hash code value for this {@code
OpenMBeanConstructorInfoSupport} instance.
The hash code of an {@code OpenMBeanConstructorInfoSupport}
instance is the sum of the hash codes of all elements of
information used in {@code equals} comparisons (ie: its name
and signature, where the signature hashCode is calculated by a
call to {@code
java.util.Arrays.asList(this.getSignature).hashCode()}).
This ensures that {@code t1.equals(t2)} implies that {@code
t1.hashCode()==t2.hashCode()} for any two {@code
OpenMBeanConstructorInfoSupport} instances {@code t1} and
{@code t2}, as required by the general contract of the method
{@link Object#hashCode() Object.hashCode()}.
However, note that another instance of a class implementing
the {@code OpenMBeanConstructorInfo} interface may be equal to
this {@code OpenMBeanConstructorInfoSupport} instance as
defined by {@link #equals(java.lang.Object)}, but may have a
different hash code if it is calculated differently.
As {@code OpenMBeanConstructorInfoSupport} instances are
immutable, the hash code for this instance is calculated once,
on the first call to {@code hashCode}, and then the same value
is returned for subsequent calls.
// Calculate the hash code value if it has not yet been done
// (ie 1st call to hashCode())
//
if (myHashCode == null) {
int value = 0;
value += this.getName().hashCode();
value += Arrays.asList(this.getSignature()).hashCode();
myHashCode = new Integer(value);
}
// return always the same hash code for this instance (immutable)
//
return myHashCode.intValue();
| public java.lang.String | toString()Returns a string representation of this {@code
OpenMBeanConstructorInfoSupport} instance.
The string representation consists of the name of this class
(ie {@code
javax.management.openmbean.OpenMBeanConstructorInfoSupport}),
the name and signature of the described constructor and the
string representation of its descriptor.
As {@code OpenMBeanConstructorInfoSupport} instances are
immutable, the string representation for this instance is
calculated once, on the first call to {@code toString}, and
then the same value is returned for subsequent calls.
// Calculate the string value if it has not yet been done (ie
// 1st call to toString())
//
if (myToString == null) {
myToString = new StringBuffer()
.append(this.getClass().getName())
.append("(name=")
.append(this.getName())
.append(",signature=")
.append(Arrays.asList(this.getSignature()).toString())
.append(",descriptor=")
.append(this.getDescriptor())
.append(")")
.toString();
}
// return always the same string representation for this
// instance (immutable)
//
return myToString;
|
|