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

ModelMBeanOperationInfo

public class ModelMBeanOperationInfo extends MBeanOperationInfo implements DescriptorAccess
The ModelMBeanOperationInfo object describes a management operation of the ModelMBean. It is a subclass of MBeanOperationInfo 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 : operation name
descriptorType : must be "operation"
class : class where method is defined (fully qualified)
role : must be "operation", "getter", or "setter
targetObject : object on which to execute this method
targetType : type of object reference for targetObject. Can be: ObjectReference | Handle | EJBHandle | IOR | RMIReference.
value : cached value for operation
currencyTimeLimit : how long cached value is valid
lastUpdatedTimeStamp : when cached value was set
visibility : 1-4 where 1: always visible 4: rarely visible
presentationString : xml formatted string to describe how to present operation
The default descriptor will have name, descriptorType, displayName and role fields set.

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
operationDescriptor
private static final String
currClass
Constructors Summary
public ModelMBeanOperationInfo(String description, Method operationMethod)
Constructs a ModelMBeanOperationInfo object with a default descriptor.

param
operationMethod The java.lang.reflect.Method object describing the MBean operation.
param
description A human readable description of the operation.


	                          	 

	  
				        
	
		super(description, operationMethod);
		// create default descriptor
		if (tracing())
		{
			trace("ModelMBeanOperationInfo(String,Method)","Executed");
		}
		operationDescriptor = createDefaultDescriptor();


	
public ModelMBeanOperationInfo(String description, Method operationMethod, Descriptor descriptor)
Constructs a ModelMBeanOperationInfo object.

param
operationMethod The java.lang.reflect.Method object describing the MBean operation.
param
description A human readable description of the operation.
param
descriptor An instance of Descriptor containing the appropriate metadata for this instance of the ModelMBeanOperationInfo. If it is null a default descriptor will be created. If the descriptor does not contain the fields "displayName" or "role" these fields are added in the descriptor with their default values.
exception
RuntimeOperationsException Wraps an IllegalArgumentException. The descriptor is invalid, or descriptor field "name" is not equal to operation name, or descriptor field "DescriptorType" is not equal to "operation", or descriptor field "role" is not equal to "operation".


		super(description, operationMethod);
		if (tracing())
		{
			trace("ModelMBeanOperationInfo(String,Method,Descriptor)","Executed");
		}
		if (descriptor == null)
		{
			if (tracing())
			{
				trace("ModelMBeanOperationInfo()","Received null for new descriptor value, setting descriptor to default values");
			}
			operationDescriptor = createDefaultDescriptor();
		} else
		{
			if (isValid(descriptor))
			{
				operationDescriptor = (Descriptor) descriptor.clone();
			} else
			{
				operationDescriptor = createDefaultDescriptor();
				throw new RuntimeOperationsException(new IllegalArgumentException("Invalid descriptor passed in parameter"), ("Exception occured in ModelMBeanOperationInfo constructor"));
			}
		}
	
public ModelMBeanOperationInfo(String name, String description, MBeanParameterInfo[] signature, String type, int impact)
Constructs a ModelMBeanOperationInfo object with a default descriptor.

param
name The name of the method.
param
description A human readable description of the operation.
param
signature MBeanParameterInfo objects describing the parameters(arguments) of the method.
param
type The type of the method's return value.
param
impact The impact of the method, one of INFO, ACTION, ACTION_INFO, UNKNOWN.


		super(name, description, signature, type, impact);
		// create default descriptor
		if (tracing())
		{
			trace("ModelMBeanOperationInfo(String,String,MBeanParameterInfo[],String,int)","Executed");
		}
		operationDescriptor = createDefaultDescriptor();

	
public ModelMBeanOperationInfo(String name, String description, MBeanParameterInfo[] signature, String type, int impact, Descriptor descriptor)
Constructs a ModelMBeanOperationInfo object.

param
name The name of the method.
param
description A human readable description of the operation.
param
signature MBeanParameterInfo objects describing the parameters(arguments) of the method.
param
type The type of the method's return value.
param
impact The impact of the method, one of INFO, ACTION, ACTION_INFO, UNKNOWN.
param
descriptor An instance of Descriptor containing the appropriate metadata. for this instance of the MBeanOperationInfo.If it is null then a default descriptor will be created. If the descriptor does not contain the fields "displayName" or "role" these fields are added in the descriptor with their default values.
exception
RuntimeOperationsException Wraps an IllegalArgumentException. The descriptor is invalid, or descriptor field "name" is not equal to operation name, or descriptor field "DescriptorType" is not equal to "operation", or descriptor field "role" is not equal to "operation".

		super(name, description, signature, type, impact);
		if (tracing())
		{
			trace("ModelMBeanOperationInfo(String,String,MBeanParameterInfo[],String,int,Descriptor)","Executed");
		}
		if (descriptor == null)
		{
			if (tracing())
			{
				trace("ModelMBeanOperationInfo()","Received null for new descriptor value, setting descriptor to default values");
			}
			operationDescriptor = createDefaultDescriptor();
		} else
		{
			if (isValid(descriptor))
			{
				operationDescriptor = (Descriptor) descriptor.clone();
			} else
			{
				operationDescriptor = createDefaultDescriptor();
				throw new RuntimeOperationsException(new IllegalArgumentException("Invalid descriptor passed in parameter"), ("Exception occured in ModelMBeanOperationInfo constructor"));
			}

		}
	
public ModelMBeanOperationInfo(ModelMBeanOperationInfo inInfo)
Constructs a new ModelMBeanOperationInfo object from this ModelMBeanOperation Object.

param
inInfo the ModelMBeanOperationInfo to be duplicated

		super(inInfo.getName(), 
			  inInfo.getDescription(), 
			  inInfo.getSignature(),
			  inInfo.getReturnType(), 
			  inInfo.getImpact());
		if (tracing())
		{
			trace("ModelMBeanOperationInfo(ModelMBeanOperationInfo)","Executed");
		}
		Descriptor newDesc = inInfo.getDescriptor();
		if (newDesc == null)
		{
			operationDescriptor = createDefaultDescriptor();
		} else
		{
			if (isValid(newDesc))
			{
				operationDescriptor = (Descriptor) newDesc.clone();
			} else
			{
				operationDescriptor = createDefaultDescriptor();
				throw new RuntimeOperationsException(new IllegalArgumentException("Invalid descriptor passed in parameter"), ("Exception occured in ModelMBeanOperationInfo constructor"));
			}

		}
	
Methods Summary
public java.lang.Objectclone()
Creates and returns a new ModelMBeanOperationInfo which is a duplicate of this ModelMBeanOperationInfo.

		if (tracing())
		{
			trace("ModelMBeanOperationInfo.clone()","Executed");
		}
		return(new ModelMBeanOperationInfo(this)) ;
	
private javax.management.DescriptorcreateDefaultDescriptor()
Creates default descriptor for operation as follows: descriptorType=operation,role=operation, name=this.getName(),displayname=this.getName().

		if (tracing())
		{
			trace("ModelMBeanOperationInfo.createDefaultDescriptor()","Executed");
		}
		return new DescriptorSupport(new String[] {"descriptorType=operation",
							       ("name=" + this.getName()),
							       "role=operation",
							       ("displayname=" + this.getName())});
	
public javax.management.DescriptorgetDescriptor()
Returns a copy of the associated Descriptor of the ModelMBeanOperationInfo.

return
Descriptor associated with the ModelMBeanOperationInfo object.
see
#setDescriptor

		if (tracing())
		{
			trace("ModelMBeanOperationInfo.getDescriptor()","Executed");
		}
		if (operationDescriptor == null)
		{
			operationDescriptor = createDefaultDescriptor();
		}

		return((Descriptor) operationDescriptor.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. descriptorType field must be "operation". We do not check the targetType because a custom implementation of ModelMBean could recognize additional types beyond the "standard" ones. The following fields will be defaulted if they are not already set: role=operation,displayName=this.getName()

		boolean results = true;
		String badField = "none";
		// if name != this.getName
		// if (descriptorType != operation)
		// look for displayName, persistPolicy, visibility and add in
		if (inDesc == null)
		{
			results = false;
		}

		else if (!inDesc.isValid())
		{	 // checks for empty descriptors, null,
			// checks for empty name and descriptorType
			// and valid values for fields.
			results = false;
		} else
		{
			if (! ((String)inDesc.getFieldValue("name")).equalsIgnoreCase(this.getName()))
			{
				results = false;
			}
			if (! ((String)inDesc.getFieldValue("descriptorType")).equalsIgnoreCase("operation"))
			{
				results = false;
			}
			Object roleValue = inDesc.getFieldValue("role");
			if (roleValue == null)
			{
				inDesc.setField("role","operation");
			} else {
			    final String role = (String)roleValue;
			    if (!(role.equalsIgnoreCase("operation")
				  || role.equalsIgnoreCase("setter")
				  || role.equalsIgnoreCase("getter"))) {
				results = false;
				badField="role";
			    }
			}

			Object targetValue = inDesc.getFieldValue("targetType");
			if (targetValue != null) {
			    if (!(targetValue instanceof java.lang.String)) {
				results = false;
				badField="targetType";
				
			    }
			}
			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 ModelMBeanOperationInfo} 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 ModelMBeanOperationInfo 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 ModelMBeanOperation.
exception
RuntimeOperationsException Wraps an IllegalArgumentException for invalid Descriptor.
see
#getDescriptor

		if (tracing())
		{
			trace("ModelMBeanOperationInfo.setDescriptor(Descriptor)","Executed");
		}
		if (inDescriptor == null)
		{
			if (tracing())
			{
				trace("ModelMBeanOperationInfo.setDescriptor()","Received null for new descriptor value, setting descriptor to default values");
			}
			operationDescriptor = createDefaultDescriptor();
		} else
		{
			if (isValid(inDescriptor))
			{
				operationDescriptor = (Descriptor) inDescriptor.clone();
			} else
			{
				throw new RuntimeOperationsException(new IllegalArgumentException("Invalid descriptor passed in parameter"), ("Exception occured in ModelMBeanOperationInfo setDescriptor"));
			}
		}
	
public java.lang.StringtoString()
Returns a string containing the entire contents of the ModelMBeanOperationInfo in human readable form.

		if (tracing())
		{
			trace("ModelMBeanConstructorInfo.toString()","Executed");
		}
		String retStr =
		    "ModelMBeanOperationInfo: " + this.getName() +
		    " ; Description: " + this.getDescription() +
		    " ; Descriptor: " + this.getDescriptor() +
		    " ; ReturnType: " + this.getReturnType() +
		    " ; Signature: ";
		MBeanParameterInfo[] pTypes = this.getSignature();
		for (int i=0; i < pTypes.length; i++)
		{
			retStr = retStr.concat((pTypes[i]).getType() + ", ");
		}
		return retStr;
	
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 ModelMBeanOperationInfo} to an {@link ObjectOutputStream}.

      if (compat)
      {
        // Serializes this instance in the old serial form
        //
        ObjectOutputStream.PutField fields = out.putFields();
	fields.put("operationDescriptor", operationDescriptor);
	fields.put("currClass", currClass);
	out.writeFields();
      }
      else
      {
        // Serializes this instance in the new serial form
        //
        out.defaultWriteObject();
      }