FileDocCategorySizeDatePackage
StringStatisticMonitor.javaAPI DocGlassfish v2 API15137Fri May 04 22:33:44 BST 2007com.sun.enterprise.admin.selfmanagement.event

StringStatisticMonitor

public class StringStatisticMonitor extends StatisticMonitor implements StringStatisticMonitorMBean
Defines a statistic monitor MBean designed to observe the values of a string attribute.

A string statistic monitor sends notifications as follows:

  • if the attribute value matches the string to compare value, a {@link StatisticMonitorNotification#STRING_TO_COMPARE_VALUE_MATCHED match notification} is sent. The notify match flag must be set to true.
    Subsequent matchings of the string to compare values do not cause further notifications unless the attribute value differs from the string to compare value.
  • if the attribute value differs from the string to compare value, a {@link StatisticMonitorNotification#STRING_TO_COMPARE_VALUE_DIFFERED differ notification} is sent. The notify differ flag must be set to true.
    Subsequent differences from the string to compare value do not cause further notifications unless the attribute value matches the string to compare value.
Used for JDK version greater than 1.5
author
Sun Microsystems, Inc

Fields Summary
protected static final Logger
_logger
private String
stringToCompare
String to compare with the observed attribute.
The default value is an empty character sequence.
private boolean
notifyMatch
Flag indicating if the string statistic monitor notifies when matching the string to compare.
The default value is set to false.
private boolean
notifyDiffer
Flag indicating if the string statistic monitor notifies when differing from the string to compare.
The default value is set to false.
private int[]
status
This attribute is used to handle the matching/differing mechanism.
Each element in this array corresponds to an observed object in the list.
private static final String[]
types
private static final MBeanNotificationInfo[]
notifsInfo
private static final int
MATCHING
private static final int
DIFFERING
private static final int
MATCHING_OR_DIFFERING
Constructors Summary
public StringStatisticMonitor()
Default constructor.


    /*
     * ------------------------------------------
     *  CONSTRUCTORS
     * ------------------------------------------
     */

           
      
    
Methods Summary
com.sun.appserv.management.event.StatisticMonitorNotificationbuildAlarmNotification(javax.management.ObjectName object, java.lang.String attribute, java.lang.Comparable value)

        String type = null;
        String msg = null;
        Object trigger = null;

        int index = indexOf(object);

        synchronized(this) {

            // Send matching notification if notifyMatch is true.
            // Send differing notification if notifyDiffer is true.
            //
            if (status[index] == MATCHING_OR_DIFFERING) {
                if (derivedGauge[index].equals(stringToCompare)) {
                    if (notifyMatch) {
                        type = STRING_TO_COMPARE_VALUE_MATCHED;
                        msg = "";
                        trigger = stringToCompare;
                    }
                    status[index] = DIFFERING;
                } else {
                    if (notifyDiffer) {
                        type = STRING_TO_COMPARE_VALUE_DIFFERED;
                        msg = "";
                        trigger = stringToCompare;
                    }
                    status[index] = MATCHING;
                }
            } else {
                if (status[index] == MATCHING) {
                    if (derivedGauge[index].equals(stringToCompare)) {
                        if (notifyMatch) {
                            type = STRING_TO_COMPARE_VALUE_MATCHED;
                            msg = "";
                            trigger = stringToCompare;
                        }
                        status[index] = DIFFERING;
                    }
                } else if (status[index] == DIFFERING) {
                    if (!derivedGauge[index].equals(stringToCompare)) {
                        if (notifyDiffer) {
                            type = STRING_TO_COMPARE_VALUE_DIFFERED;
                            msg = "";
                            trigger = stringToCompare;
                        }
                        status[index] = MATCHING;
                    }
                }
            }
        }

        return new StatisticMonitorNotification(type,
                                       this,
                                       0,
                                       0,
                                       msg,
                                       null,
                                       null,
                                       null,
                                       trigger);
    
public synchronized java.lang.StringgetDerivedGauge(javax.management.ObjectName object)
Gets the derived gauge of the specified object, if this object is contained in the set of observed MBeans, or null otherwise.

param
object the name of the MBean whose derived gauge is required.
return
The derived gauge of the specified object.
since.unbundled
JMX 1.2

        return (String) super.getDerivedGauge(object);
    
public synchronized java.lang.StringgetDerivedGauge()
Returns the derived gauge of the first object in the set of observed MBeans.

return
The derived gauge.
deprecated
As of JMX 1.2, replaced by {@link #getDerivedGauge(ObjectName)}

        return (String) derivedGauge[0];
    
public synchronized longgetDerivedGaugeTimeStamp(javax.management.ObjectName object)
Gets the derived gauge timestamp of the specified object, if this object is contained in the set of observed MBeans, or null otherwise.

param
object the name of the object whose derived gauge timestamp is to be returned.
return
The derived gauge timestamp of the specified object.
since.unbundled
JMX 1.2

        return super.getDerivedGaugeTimeStamp(object);
    
public synchronized longgetDerivedGaugeTimeStamp()
Gets the derived gauge timestamp of the first object in the set of observed MBeans.

return
The derived gauge timestamp.
deprecated
As of JMX 1.2, replaced by {@link #getDerivedGaugeTimeStamp(ObjectName)}

        return derivedGaugeTimestamp[0];
    
public javax.management.MBeanNotificationInfo[]getNotificationInfo()
Returns a NotificationInfo object containing the name of the Java class of the notification and the notification types sent by the string statistic monitor.

        return notifsInfo.clone();
    
public synchronized booleangetNotifyDiffer()
Gets the differing notification's on/off switch value common to all observed MBeans.

return
true if the string statistic monitor notifies when differing from the string to compare, false otherwise.
see
#setNotifyDiffer

        return notifyDiffer;
    
public synchronized booleangetNotifyMatch()
Gets the matching notification's on/off switch value common to all observed MBeans.

return
true if the string statistic monitor notifies when matching the string to compare, false otherwise.
see
#setNotifyMatch

        return notifyMatch;
    
public synchronized java.lang.StringgetStringToCompare()
Gets the string to compare with the observed attribute common to all observed MBeans.

return
The string value.
see
#setStringToCompare

        return stringToCompare;
    
synchronized voidinsertSpecificElementAt(int index)
This method is called when adding a new observed object in the vector. It updates all the string specific arrays.

param
index The index of the observed object.

        // Update status array.
        //
        if (elementCount >= status.length) {
            status = expandArray(status);
        }
        status[index] = MATCHING_OR_DIFFERING;
    
booleanisComparableTypeValid(javax.management.ObjectName object, java.lang.String attribute, java.lang.Comparable value)
Check that the type of the supplied observed attribute value is one of the value types supported by this monitor.

        // Check that the observed attribute is of type "String".
        //
        if (value instanceof String) {
            return true;
        }
        return false;
    
voidonErrorNotification(com.sun.appserv.management.event.StatisticMonitorNotification notification)

        int index = indexOf(notification.getObservedObject());
        synchronized(this) {
            // Reset values.
            //
            status[index] = MATCHING_OR_DIFFERING;
        }
    
synchronized voidremoveSpecificElementAt(int index)
This method is called when removing an observed object from the vector. It updates all the string specific arrays.

param
index The index of the observed object.

        // Update status array.
        //
        removeElementAt(status, index);
    
public synchronized voidsetNotifyDiffer(boolean value)
Sets the differing notification's on/off switch value common to all observed MBeans.

param
value The differing notification's on/off switch value.
see
#getNotifyDiffer

        notifyDiffer = value;
    
public synchronized voidsetNotifyMatch(boolean value)
Sets the matching notification's on/off switch value common to all observed MBeans.

param
value The matching notification's on/off switch value.
see
#getNotifyMatch

        notifyMatch = value;
    
public synchronized voidsetStringToCompare(java.lang.String value)
Sets the string to compare with the observed attribute common to all observed MBeans.

param
value The string value.
exception
IllegalArgumentException The specified string to compare is null.
see
#getStringToCompare


        if (value == null) {
            throw new IllegalArgumentException("Null string to compare");
        }

        stringToCompare = value;

        // Reset values.
        //
        for (int i = 0; i < elementCount; i++) {
          status[i] = MATCHING_OR_DIFFERING;
        }
    
public synchronized voidstart()
Starts the string monitor.

        // Reset values.
        //
        for (int i = 0; i < elementCount; i++) {
            status[i] = MATCHING_OR_DIFFERING;
        }
        doStart();
    
public synchronized voidstop()
Stops the string monitor.

        doStop();