FileDocCategorySizeDatePackage
ModelMBeanAttributeInfo.javaAPI DocJava SE 5 API18444Fri Aug 26 14:57:34 BST 2005javax.management.modelmbean

ModelMBeanAttributeInfo

public class ModelMBeanAttributeInfo extends MBeanAttributeInfo implements Cloneable, DescriptorAccess
The 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.

since
1.5

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.

param
name The name of the attribute.
param
description A human readable description of the attribute. Optional.
param
getter The method used for reading the attribute value. May be null if the property is write-only.
param
setter The method used for writing the attribute value. May be null if the attribute is read-only.
exception
IntrospectionException There is a consistency problem in the definition of this attribute.


	                                                                                            	 

	  
				        
				        
				         
	  
		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.

param
name The name of the attribute.
param
description A human readable description of the attribute. Optional.
param
getter The method used for reading the attribute value. May be null if the property is write-only.
param
setter The method used for writing the attribute value. May be null if the attribute is read-only.
param
descriptor An instance of Descriptor containing the appropriate metadata for this instance of the Attribute. If it is null, then a default descriptor will be created. If the descriptor does not contain the field "displayName" this field is added in the descriptor with its default value.
exception
IntrospectionException There is a consistency problem in the definition of this attribute.
exception
RuntimeOperationsException Wraps an IllegalArgumentException. The descriptor is invalid, or descriptor field "name" is not equal to name parameter, or descriptor field "DescriptorType" is not equal to "attribute".


		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.

param
name The name of the attribute
param
type The type or class name of the attribute
param
description A human readable description of the attribute.
param
isReadable True if the attribute has a getter method, false otherwise.
param
isWritable True if the attribute has a setter method, false otherwise.
param
isIs True if the attribute has an "is" getter, false otherwise.


		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.

param
name The name of the attribute
param
type The type or class name of the attribute
param
description A human readable description of the attribute.
param
isReadable True if the attribute has a getter method, false otherwise.
param
isWritable True if the attribute has a setter method, false otherwise.
param
isIs True if the attribute has an "is" getter, false otherwise.
param
descriptor An instance of Descriptor containing the appropriate metadata for this instance of the Attribute. If it is null then a default descriptor will be created. If the descriptor does not contain the field "displayName" this field is added in the descriptor with its default value.
exception
RuntimeOperationsException Wraps an IllegalArgumentException. The descriptor is invalid, or descriptor field "name" is not equal to name parameter, or descriptor field "DescriptorType" is not equal to "attribute".

		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.

param
inInfo the ModelMBeanAttributeInfo to be duplicated

		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.Objectclone()
Creates and returns a new ModelMBeanAttributeInfo which is a duplicate of this ModelMBeanAttributeInfo.

exception
RuntimeOperationsException for illegal value for field Names or field Values. If the descriptor construction fails for any reason, this exception will be thrown.

		if (tracing())
		{
			trace("ModelMBeanAttributeInfo.clone()","Entry");
		}
		return(new ModelMBeanAttributeInfo(this));
	
private javax.management.DescriptorcreateDefaultDescriptor()
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.DescriptorgetDescriptor()
Gets a copy of the associated Descriptor for the ModelMBeanAttributeInfo.

return
Descriptor associated with the ModelMBeanAttributeInfo object.
see
#setDescriptor

		if (tracing())
		{
			trace("ModelMBeanAttributeInfo.getDescriptor()","Entry");
		}
		if (attrDescriptor == null)
		{
			attrDescriptor = createDefaultDescriptor();
		}
		return((Descriptor)attrDescriptor.clone());
	
private booleanisValid(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 voidreadObject(java.io.ObjectInputStream in)
Deserializes a {@link ModelMBeanAttributeInfo} from an {@link ObjectInputStream}.

      // New serial form ignores extra field "currClass"
      in.defaultReadObject();
    
public voidsetDescriptor(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.

param
inDescriptor replaces the Descriptor associated with the ModelMBeanAttributeInfo
exception
RuntimeOperationsException Wraps an IllegalArgumentException for an invalid Descriptor
see
#getDescriptor

		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.StringtoString()
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 voidtrace(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 voidtrace(java.lang.String inMethod, java.lang.String inText)

		trace(currClass, inMethod, inText);
	
private booleantracing()

		//        return false;
		return Trace.isSelected(Trace.LEVEL_TRACE, Trace.INFO_MODELMBEAN);
	
private voidwriteObject(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();
      }