ModelMBeanAttributeInfopublic class ModelMBeanAttributeInfo extends MBeanAttributeInfo implements Cloneable, DescriptorAccessThe ModelMBeanAttributeInfo object describes an attribute of the ModelMBean.
It is a subclass of MBeanAttributeInfo with the addition of an associated Descriptor
and an implementation of the DescriptorAccess interface.
The fields in the descriptor are defined, but not limited to, the following:
name : attribute name
descriptorType : must be "attribute"
value : current value for attribute
default : default value for attribute
displayName : name of attribute to be used in displays
getMethod : name of operation descriptor for get method
setMethod : name of operation descriptor for set method
protocolMap : object which implements the Descriptor interface: mappings must be appropriate for the attribute
and entries can be updated or augmented at runtime.
persistPolicy : OnUpdate|OnTimer|NoMoreOftenThan|Always|Never
persistPeriod : seconds - frequency of persist cycle. Used when persistPolicy is"OnTimer" or "NoMoreOftenThan".
currencyTimeLimit : how long value is valid, <0 never, =0 always, >0 seconds
lastUpdatedTimeStamp : when value was set
visibility : 1-4 where 1: always visible 4: rarely visible
presentationString : xml formatted string to allow presentation of data
The default descriptor contains the name, descriptorType and displayName fields.
Note: because of inconsistencies in previous versions of
this specification, it is recommended not to use negative or zero
values for currencyTimeLimit . To indicate that a
cached value is never valid, omit the
currencyTimeLimit field. To indicate that it is
always valid, use a very large number for this field. |
Fields Summary |
---|
private static final long | oldSerialVersionUID | private static final long | newSerialVersionUID | private static final ObjectStreamField[] | oldSerialPersistentFields | private static final ObjectStreamField[] | newSerialPersistentFields | private static final long | serialVersionUID | private static final ObjectStreamField[] | serialPersistentFields | private static boolean | compat | private Descriptor | attrDescriptor | private static final String | currClass |
Constructors Summary |
---|
public ModelMBeanAttributeInfo(String name, String description, Method getter, Method setter)Constructs a ModelMBeanAttributeInfo object with a default descriptor.
super(name, description, getter, setter);
if (tracing())
{
trace("ModelMBeanAttributeInfo(" + name + ",String,Method,Method)","Entry");
}
attrDescriptor = createDefaultDescriptor();
// put getter and setter methods in operations list
// create default descriptor
| public ModelMBeanAttributeInfo(String name, String description, Method getter, Method setter, Descriptor descriptor)Constructs a ModelMBeanAttributeInfo object.
super(name, description, getter, setter);
// put getter and setter methods in operations list
if (tracing())
{
trace("ModelMBeanAttributeInfo(" + name + ", String, Method, Method, Descriptor)","Entry");
}
if (descriptor == null)
{
attrDescriptor = createDefaultDescriptor();
} else
{
if (isValid(descriptor))
{
attrDescriptor = (Descriptor) descriptor.clone();
} else
{
throw new RuntimeOperationsException(new IllegalArgumentException("Invalid descriptor passed in parameter"), ("Exception occured in ModelMBeanAttributeInfo constructor"));
}
}
| public ModelMBeanAttributeInfo(String name, String type, String description, boolean isReadable, boolean isWritable, boolean isIs)Constructs a ModelMBeanAttributeInfo object with a default descriptor.
super(name, type, description, isReadable, isWritable, isIs);
// create default descriptor
if (tracing())
{
trace("ModelMBeanAttributeInfo(" + name + ",String,String,boolean,boolean)","Entry");
}
attrDescriptor = createDefaultDescriptor();
| public ModelMBeanAttributeInfo(String name, String type, String description, boolean isReadable, boolean isWritable, boolean isIs, Descriptor descriptor)Constructs a ModelMBeanAttributeInfo object with a default descriptor.
super(name, type, description, isReadable, isWritable, isIs);
if (tracing())
{
trace("ModelMBeanAttributeInfo(" + name + ",String,String,boolean,boolean,Descriptor)","Entry");
}
if (descriptor == null)
{
attrDescriptor = createDefaultDescriptor();
} else
{
if (isValid(descriptor))
{
attrDescriptor = (Descriptor) descriptor.clone();
} else
{
throw new RuntimeOperationsException(new IllegalArgumentException("Invalid descriptor passed in parameter"), ("Exception occured in ModelMBeanAttributeInfo constructor"));
}
}
| public ModelMBeanAttributeInfo(ModelMBeanAttributeInfo inInfo)Constructs a new ModelMBeanAttributeInfo object from this ModelMBeanAttributeInfo Object.
A default descriptor will be created.
super(inInfo.getName(),
inInfo.getType(),
inInfo.getDescription(),
inInfo.isReadable(),
inInfo.isWritable(),
inInfo.isIs());
if (tracing())
{
trace("ModelMBeanAttributeInfo(ModelMBeanAttributeInfo)","Entry");
}
Descriptor newDesc = inInfo.getDescriptor();
//Descriptor newDesc = inInfo.attrDescriptor;
if ((newDesc != null) && (isValid(newDesc)))
{
attrDescriptor = newDesc;
} else
{
attrDescriptor = createDefaultDescriptor();
}
|
Methods Summary |
---|
public java.lang.Object | clone()Creates and returns a new ModelMBeanAttributeInfo which is a duplicate of this ModelMBeanAttributeInfo.
if (tracing())
{
trace("ModelMBeanAttributeInfo.clone()","Entry");
}
return(new ModelMBeanAttributeInfo(this));
| private javax.management.Descriptor | createDefaultDescriptor()Creates and returns a Descriptor with default values set:
descriptorType=attribute,name=this.getName(),displayName=this.getName(),
persistPolicy=never,visibility=1
if (tracing())
{
trace("ModelMBeanAttributeInfo.createDefaultDescriptor()","Entry");
}
return new DescriptorSupport(
new String[] {"descriptorType=attribute",
("name=" + this.getName()),
("displayName=" + this.getName())
});
| public javax.management.Descriptor | getDescriptor()Gets a copy of the associated Descriptor for the
ModelMBeanAttributeInfo.
if (tracing())
{
trace("ModelMBeanAttributeInfo.getDescriptor()","Entry");
}
if (attrDescriptor == null)
{
attrDescriptor = createDefaultDescriptor();
}
return((Descriptor)attrDescriptor.clone());
| private boolean | isValid(javax.management.Descriptor inDesc)Tests that the descriptor is valid and adds appropriate default fields not already
specified. Field values must be correct for field names.
Descriptor must have the same name as the attribute,the descriptorType field must be "attribute",
The following fields will be defaulted if they are not already set:
displayName=this.getName(),persistPolicy=never,visibility=1
// name and descriptor type must be correct
// add in displayName, persistPolicy, visibility if they apply
boolean results=true;
String badField="none";
if (inDesc == null)
{
badField="nullDescriptor";
results = false;
}
else if (!inDesc.isValid())
{ // checks for empty descriptors, null,
// checks for empty name and descriptorType adn valid values for fields.
badField="inValidDescriptor";
results = false;
}
else if (! ((String)inDesc.getFieldValue("name")).equalsIgnoreCase(this.getName()))
{
badField="name";
results = false;
} else
{
if (! ((String)inDesc.getFieldValue("descriptorType")).equalsIgnoreCase("attribute"))
{
badField="desriptorType";
results = false;
} else if ((inDesc.getFieldValue("displayName")) == null)
{
inDesc.setField("displayName",this.getName());
}
}
if (tracing()) trace("isValid()",("Returning " + results + ": Invalid field is " + badField));
return results;
| private void | readObject(java.io.ObjectInputStream in)Deserializes a {@link ModelMBeanAttributeInfo} from an {@link ObjectInputStream}.
// New serial form ignores extra field "currClass"
in.defaultReadObject();
| public void | setDescriptor(javax.management.Descriptor inDescriptor)Sets associated Descriptor (full replace) for the
ModelMBeanAttributeDescriptor. If the new Descriptor is
null, then the associated Descriptor reverts to a default
descriptor. The Descriptor is validated before it is
assigned. If the new Descriptor is invalid, then a
RuntimeOperationsException wrapping an
IllegalArgumentException is thrown.
if (inDescriptor != null) {
if (tracing()) {
trace("ModelMBeanAttributeInfo.setDescriptor()","Executed for " + inDescriptor.toString());
}
}
if (inDescriptor == null) {
if (tracing()) {
trace("ModelMBeanAttributeInfo.setDescriptor()",
"Received null for new descriptor value, setting descriptor to default values");
}
attrDescriptor = createDefaultDescriptor();
}
else {
if (isValid(inDescriptor)) {
attrDescriptor = (Descriptor) inDescriptor.clone();
}
else {
throw new RuntimeOperationsException(new IllegalArgumentException("Invalid descriptor passed in parameter"),
("Exception occured in ModelMBeanAttributeInfo setDescriptor"));
}
}
| public java.lang.String | toString()Returns a human-readable version of the
ModelMBeanAttributeInfo instance.
return
"ModelMBeanAttributeInfo: " + this.getName() +
" ; Description: " + this.getDescription() +
" ; Types: " + this.getType() +
" ; isReadable: " + this.isReadable() +
" ; isWritable: " + this.isWritable() +
" ; Descriptor: " + this.getDescriptor();
| private void | trace(java.lang.String inClass, java.lang.String inMethod, java.lang.String inText)
// System.out.println("TRACE: " + inClass + ":" + inMethod + ": " + inText);
Trace.send(Trace.LEVEL_TRACE, Trace.INFO_MODELMBEAN, inClass,
inMethod, Integer.toHexString(this.hashCode()) + " " + inText);
| private void | trace(java.lang.String inMethod, java.lang.String inText)
trace(currClass, inMethod, inText);
| private boolean | tracing()
// return false;
return Trace.isSelected(Trace.LEVEL_TRACE, Trace.INFO_MODELMBEAN);
| private void | writeObject(java.io.ObjectOutputStream out)Serializes a {@link ModelMBeanAttributeInfo} to an {@link ObjectOutputStream}.
if (compat)
{
// Serializes this instance in the old serial form
//
ObjectOutputStream.PutField fields = out.putFields();
fields.put("attrDescriptor", attrDescriptor);
fields.put("currClass", currClass);
out.writeFields();
}
else
{
// Serializes this instance in the new serial form
//
out.defaultWriteObject();
}
|
|