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

ModelMBeanNotificationInfo

public class ModelMBeanNotificationInfo extends MBeanNotificationInfo implements Cloneable, DescriptorAccess
The ModelMBeanNotificationInfo object describes a notification emitted by a ModelMBean. It is a subclass of MBeanNotificationInfo with the addition of an associated Descriptor and an implementation of the Descriptor interface.

The fields in the descriptor are defined, but not limited to, the following:

name : notification name
descriptorType : must be "notification"
severity : 0-6 where 0: unknown; 1: non-recoverable;
2: critical, failure; 3: major, severe;
4: minor, marginal, error; 5: warning;
6: normal, cleared, informative
messageID : unique key for message text (to allow translation,
analysis)
messageText : text of notification
log : T - log message F - do not log message
logfile : string fully qualified file name appropriate for
operating system
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, displayName and severity(=6) fields.
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
notificationDescriptor
private static final String
currClass
Constructors Summary
public ModelMBeanNotificationInfo(String[] notifTypes, String name, String description)
Constructs a ModelMBeanNotificationInfo object with a default descriptor.

param
notifTypes The array of strings (in dot notation) containing the notification types that may be emitted.
param
name The name of the Notification class.
param
description A human readable description of the Notification. Optional.


                                                               
      
				       
				        
	this(notifTypes,name,description,null);
    
public ModelMBeanNotificationInfo(String[] notifTypes, String name, String description, Descriptor descriptor)
Constructs a ModelMBeanNotificationInfo object.

param
notifTypes The array of strings (in dot notation) containing the notification types that may be emitted.
param
name The name of the Notification class.
param
description A human readable description of the Notification. Optional.
param
descriptor An instance of Descriptor containing the appropriate metadata for this instance of the MBeanNotificationInfo. If it is null a default descriptor will be created. If the descriptor does not contain the fields "displayName" or "severity" these fields are added in the descriptor with their default values.
exception
RuntimeOperationsException Wraps an {@link IllegalArgumentException}. The descriptor is invalid, or descriptor field "name" is not equal to parameter name, or descriptor field "DescriptorType" is not equal to "notification".

	super(notifTypes, name, description);
	if (tracing())
	    trace("ModelMBeanNotificationInfo()","Executed");
	applyDescriptor(descriptor,"ModelMBeanNotificationInfo()");
    
public ModelMBeanNotificationInfo(ModelMBeanNotificationInfo inInfo)
Constructs a new ModelMBeanNotificationInfo object from this ModelMBeanNotfication Object.

param
inInfo the ModelMBeanNotificationInfo to be duplicated

	this(inInfo.getNotifTypes(), 
	     inInfo.getName(), 
	     inInfo.getDescription(),inInfo.getDescriptor());
    
Methods Summary
private final voidapplyDescriptor(javax.management.Descriptor descriptor, java.lang.String ftag)
Set the given descriptor as this.notificationDescriptor. Creates a default descriptor if the given descriptor is null. If the given descriptor is null, check its validity. If it is valid, clones it and set the defaults fields "displayName" and "severity", if not present. If it is not valid, throws an exception. This method is called both by the constructors and by setDescriptor().

see
#setDefaults
see
#setDescriptor

	if (descriptor == null) {
	    if (tracing())
		trace(ftag,
		      "Received null for new descriptor value, " +
		      "setting descriptor to default values");
	    
	    notificationDescriptor = createDefaultDescriptor();
	} else if (isValid(descriptor)) {
	    notificationDescriptor = 
		setDefaults((Descriptor)descriptor.clone());
	} else {
	    throw new RuntimeOperationsException(new 
		IllegalArgumentException(
	        "Invalid descriptor passed in parameter"), 
	        "Exception occured in ModelMBeanNotificationInfo " + ftag);
	}
    
public java.lang.Objectclone()
Creates and returns a new ModelMBeanNotificationInfo which is a duplicate of this ModelMBeanNotificationInfo.

	if (tracing())
	    trace("ModelMBeanNotificationInfo.clone()","Executed");
	return(new ModelMBeanNotificationInfo(this));
    
private final javax.management.DescriptorcreateDefaultDescriptor()
Creates default descriptor for notification as follows: descriptorType=notification, name=this.getName(),displayname=this.getName(),severity=6

	if (tracing())
	    trace("createDefaultDescriptor()","Executed");
		
	return new DescriptorSupport(new 
	    String[] {"descriptorType=notification",
		      ("name=" + this.getName()),
		      ("displayName=" + this.getName()),
		      "severity=6"});
    
public javax.management.DescriptorgetDescriptor()
Returns a copy of the associated Descriptor for the ModelMBeanNotificationInfo.

return
Descriptor associated with the ModelMBeanNotificationInfo object.
see
#setDescriptor

	if (tracing())
	    trace("ModelMBeanNotificationInfo.getDescriptor()","Executed");
		
	if (notificationDescriptor == null) {
	    // Dead code. Should never happen.
	    if (tracing())
		trace("ModelMBeanNotificationInfo.getDescriptor()",
		      "Received null for new descriptor value, " +
		      "setting descriptor to default values");
			
	    notificationDescriptor = createDefaultDescriptor();
	}

	return((Descriptor)notificationDescriptor.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 notification, the descriptorType field must be "notification",

	boolean results = true;
	String badField = "none";

	if (inDesc == null) {
	    badField="nullDescriptor";
	    return false;
	}

	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("notification")) {
	    badField="descriptorType";
	    results = false;
	}
	 
	if (tracing()) trace("isValid()",("Returning " + results + 
				": Invalid field is " + badField));
	return results;
    
private voidreadObject(java.io.ObjectInputStream in)
Deserializes a {@link ModelMBeanNotificationInfo} from an {@link ObjectInputStream}.

	// New serial form ignores extra field "currClass"
	in.defaultReadObject();
    
private final javax.management.DescriptorsetDefaults(javax.management.Descriptor descriptor)
The following fields will be defaulted if they are not already set: displayName=this.getName(),severity=6

return
the given descriptor, possibly modified.

	if ((descriptor.getFieldValue("displayName")) == null) {
	    descriptor.setField("displayName",this.getName());
	}
	if ((descriptor.getFieldValue("severity")) == null) {
	    descriptor.setField("severity","6");
	}
	return descriptor;
    
public voidsetDescriptor(javax.management.Descriptor inDescriptor)
Sets associated Descriptor (full replace) for the ModelMBeanNotificationInfo 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 ModelMBeanNotification interface
exception
RuntimeOperationsException Wraps an {@link IllegalArgumentException} for invalid Descriptor.
see
#getDescriptor

	if (tracing())
	    trace("setDescriptor(Descriptor)",
		  "Executed");
	applyDescriptor(inDescriptor,"setDescriptor(Descriptor)");
    
public java.lang.StringtoString()
Returns a human readable string containing ModelMBeanNotificationInfo.

return
a string describing this object.

	if (tracing())
	    trace("toString()","Executed");
		
	final StringBuffer retStr = new StringBuffer();

	retStr.append("ModelMBeanNotificationInfo: ")
	    .append(this.getName());

	retStr.append(" ; Description: ")
	    .append(this.getDescription());

	retStr.append(" ; Descriptor: ")
	    .append(this.getDescriptor());

	retStr.append(" ; Types: ");
	String[] nTypes = this.getNotifTypes();
	for (int i=0; i < nTypes.length; i++) {
	    if (i > 0) retStr.append(", ");
	    retStr.append(nTypes[i]); 
	}
	return retStr.toString();
    
private voidtrace(java.lang.String inClass, java.lang.String inMethod, java.lang.String 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 true;
	return Trace.isSelected(Trace.LEVEL_TRACE, Trace.INFO_MODELMBEAN);
    
private voidwriteObject(java.io.ObjectOutputStream out)
Serializes a {@link ModelMBeanNotificationInfo} to an {@link ObjectOutputStream}.

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