javax.management
Interface Descriptor
- Cloneable, Serializable
Provides metadata for a management element as a series
of fields, formed from name-value pairs. Descriptors
are usually attached to one of the
Info
classes, such as
MBeanAttributeInfo
.
Field names are not case-sensitive, but are case-preserving
(in that the same use of case will be returned by
getFields()
and
getFieldNames()
).
The type of the value should match the type returned
by the
getType()
method of the associated
Info
object. In the case of
MXBean
s,
this should be the mapped type returned by the mapping rules.
The contents of a descriptor may be immutable, in which
case, attempts to change the contents of the descriptor
will cause an exception to be thrown. Immutable descriptors
are usually instances or subclasses of
ImmutableDescriptor
,
while mutable descriptors are usually instances or subclasses
of
javax.management.modelmbean.DescriptorSupport
.
A series of field names are predefined, but additional
ones can be added as needed. Predefined names never include
a period ('.'), and so additional names may safely avoid
conflicts by including this character. It is recommended that
additional names make use of the same syntax as Java package
names e.g.
gnu.classpath.ImportantMetadata
.
The predefined names are as follows:
| Name | Type | Used In | Meaning |
defaultValue | Object | MBeanAttributeInfo ,
MBeanParameterInfo | Default value for an attribute
or parameter. |
deprecated | String | Any | The annotated element
has been deprecated. Conventially, the field's value takes the form
of the version in which the element was deprecated, followed by an
explaination. |
descriptionResourceBundleBaseName | String | Any | The base name for the bundle in which the descriptionResourceKey
can be found. |
descriptionResourceKey | String | Any | The name of the resource key which contains a localized description of
this element. |
enabled | String | MBeanAttributeInfo ,
MBeanNotificationInfo , MBeanOperationInfo | Specifies whether the annotated element is currently enabled or
not, via a value of either "true" or "false" .
|
immutableInfo | String | MBeanInfo | If the value of this field is "true" , this means that
the annotated element will not change and thus may be cached. |
infoTimeout | String or Long | MBeanInfo | If this field is present, and non-zero, it will contain a value
in milliseconds for which the value of the annotated element will
remain unchanged, allowing it to be safely cached for that period. |
interfaceClassName | String | MBeanInfo | The Java interface name associated with the bean, as returned
by Class.getName() . |
legalValues | Set<?> | MBeanAttributeInfo ,
MBeanParameterInfo | Legal values for an attribute
or parameter. |
maxValue | Object | | MBeanAttributeInfo ,
MBeanParameterInfo | Maximum legal value for an attribute
or parameter. |
metricType | String | MBeanAttributeInfo ,
MBeanOperationInfo | Specifies the type of metric represented
by the annotated element. This will be either "counter"
(an increasing value, which will only be reset and never decrease)
or "gauge" (an increasing and decreasing value). |
minValue | Object | MBeanAttributeInfo ,
MBeanParameterInfo | Minimum legal value for an attribute
or parameter. |
mxbean | String | MBeanInfo | Specifies whether the annotated element is an MXBean or
not, via a value of either "true" or "false" .
|
openType | OpenType | MBeanAttributeInfo , MBeanOperationInfo | MBeanNotificationInfo
MBeanParameterInfo
Specifies the open type of the attribute or parameter, the return
value of the operation or the user data of the notification respectively.
This is present on Open*Info instances and for MXBean s. |
originalType | String | MBeanAttributeInfo ,
MBeanOperationInfo , MBeanParameterInfo | The original Java type of an element which has been converted
to another type according to the MXBean typing rules.
For example, MemoryType becomes a
String after conversion. This field would contain
"java.lang.management.MemoryType" to represent the
earlier type of an element with the converted type. |
severity | Integer or String | MBeanNotificationInfo | Represents the severity
of the notification, ranging from 1 (most severe) to 6 (least
severe), with 0 representing unknown severity. |
since | String | Any | The version in which this field was introduced. |
units | String | MBeanAttributeInfo ,
MBeanOperationInfo , MBeanParameterInfo | The units used by the value of an attribute or parameter,
or the return value of an operation, such as "bytes" ,
"milliseconds" or "kilogrammes" .
|
Some names are also defined as part of the Model MBeans package.
See
javax.management.modelmbean.ModelMBeanInfo
.
Object | clone() - Returns a clone of this descriptor, which can then be modified
independently of this descriptor.
|
boolean | equals(Object obj) -
Returns true if this descriptor is equivalent to the
supplied object.
|
String[] | getFieldNames() - Returns the field names of the descriptor.
|
Object | getFieldValue(String name) - Returns the value of the specified field, or
null
if no value is present for the given field name.
|
Object[] | getFieldValues(java.lang.String... names) - Returns the values corresponding to the fields named in
the specified array, in the same order.
|
String[] | getFields() -
Returns all the field name and value pairs, in the
form
name=value .
|
int | hashCode() -
Returns the hash code of the descriptor.
|
boolean | isValid() - Returns true if all the fields have legal values, given
their names.
|
void | removeField(String name) - Removes a field from the descriptor.
|
void | setField(String name, Object value) - Attempts to set the specified field to the supplied
value.
|
void | setFields(String[] names, Object[] values) - Sets the field named in the first array to the corresponding
value specified in the second.
|
clone
public Object clone()
throws RuntimeOperationsException
Returns a clone of this descriptor, which can then be modified
independently of this descriptor. If the descriptor is
immutable, it is sufficient to return this instance.
- clone in interface Object
- a clone of this descriptor.
equals
public boolean equals(Object obj)
Returns true if this descriptor is equivalent to the
supplied object. This is true if the following holds:
- The given object is also a
Descriptor
. - Has the same field names, independent of case.
- Has the same values, based on the following:
- If one value is
null
, the other must be. - If one value is a primitive array, the other must be a
primitive array of the same type with the same elements.
- If one value is an
Object
array, the other
must be and Arrays.deepEquals(Object[],Object[])
must return true. - Otherwise,
Object.equals(Object)
must return true.
- equals in interface Object
obj
- the object to compare according to the above.
getFieldNames
public String[] getFieldNames()
Returns the field names of the descriptor. If the
descriptor is empty, an empty array is returned.
- the field names as an array of Strings.
getFieldValue
public Object getFieldValue(String name)
Returns the value of the specified field, or null
if no value is present for the given field name.
- the value of the field, or
null
if there
is no value present.
getFieldValues
public Object[] getFieldValues(java.lang.String... names)
Returns the values corresponding to the fields named in
the specified array, in the same order. If an empty
array is supplied, an empty array is returned. A value
of
null
leads to behaviour equivalent to
getFields()
. Field values are obtained as specified
in
getFieldValue(String)
, with
null
being returned if the field is not present. This applies
even if the given field name is
null
or
the empty string.
names
- an array of field names whose values should
be returned.
- the values of the specified fields.
getFields
public String[] getFields()
Returns all the field name and value pairs, in the
form
name=value
. The value is converted
to a String as follows:
- If the value is a String, it is used as is.
- If the value is
null
, the printed
value will be empty. - Otherwise, the value will be converted to a
String using its
Object.toString()
method,
and included as "(" + string + ")"
.
If the descriptor is empty, an empty array is returned.
- the field names and values as an array of Strings.
hashCode
public int hashCode()
Returns the hash code of the descriptor. The hashcode
is computed as the sum of the hashcodes for each field,
which in turn is calculated as the sum of
the hashcode of the name,
n
, computed
using
n.toLowerCase().hashCode()
, and the
hashcode of the value,
v
, computed
using:
- If
v
is null
, then the
hash code is 0. - If
v
is a primitive array, then the
hash code is computed using the appropriate method
from Arrays
. - If
v
is an Object
array, then the hash code is computed using the
Arrays.deepHashCode(Object[])
method. - Otherwise, the hashcode is equal to
v.hashCode()
.
- hashCode in interface Object
- a hashcode for this descriptor.
isValid
public boolean isValid()
throws RuntimeOperationsException
Returns true if all the fields have legal values, given
their names. Validity is determined by the implementation.
- true if the values are legal.
removeField
public void removeField(String name)
Removes a field from the descriptor. If the field name
is illegal or not found, this method fails silently.
name
- the name of the field to remove.
setField
public void setField(String name,
Object value)
throws RuntimeOperationsException
Attempts to set the specified field to the supplied
value. If the field does not exist, it will be created.
If the field value given is invalid, then an exception will
be thrown. Validity is determined by the implementation
of the descriptor.
name
- the field to set. Can not be null
or empty.value
- the value to use, the validity of which is
determined by the implementation.
setFields
public void setFields(String[] names,
Object[] values)
Sets the field named in the first array to the corresponding
value specified in the second. The array sizes must match.
Empty arrays have no effect. An invalid value will cause
an exception to be thrown.
names
- the names of the fields to change. Neither
the array or its elements may be null
.values
- the values to use. The array must not be
null
. The value of the elements
depends on the validity constraints of the
implementation.
Descriptor.java -- Metadata container.
Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.