MBeanServerNotificationFilterpublic class MBeanServerNotificationFilter extends NotificationFilterSupport Filter for {@link MBeanServerNotification}.
This filter filters MBeanServerNotification notifications by
selecting the ObjectNames of interest and the operations (registration,
unregistration, both) of interest (corresponding to notification
types).
The serialVersionUID of this class is 2605900539589789736L . |
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 List | selectedNames | private List | deselectedNames | private static String | localClassName |
Constructors Summary |
---|
public MBeanServerNotificationFilter()Creates a filter selecting all MBeanServerNotification notifications for
all ObjectNames.
//
// Constructor
//
super();
if (isTraceOn())
trace("Constructor: entering", null);
enableType(MBeanServerNotification.REGISTRATION_NOTIFICATION);
enableType(MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
if (isTraceOn())
trace("Constructor: exiting", null);
return;
|
Methods Summary |
---|
private void | debug(java.lang.String methodName, java.lang.String info)
Trace.send(Trace.LEVEL_DEBUG, Trace.INFO_RELATION, localClassName, methodName, info);
Trace.send(Trace.LEVEL_DEBUG, Trace.INFO_RELATION, "", "", "\n");
| public synchronized void | disableAllObjectNames()Disables any MBeanServerNotification (all ObjectNames are
deselected).
if (isTraceOn())
trace("disableAllObjectNames: entering", null);
selectedNames = new Vector<ObjectName>();
deselectedNames = null;
if (isTraceOn())
trace("disableAllObjectNames: exiting", null);
return;
| public synchronized void | disableObjectName(javax.management.ObjectName objectName)Disables MBeanServerNotifications concerning given ObjectName.
if (objectName == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
if (isTraceOn())
trace("disableObjectName: entering", objectName.toString());
// Removes from selected ObjectNames, if present
if (selectedNames != null) {
if (selectedNames.size() != 0) {
selectedNames.remove(objectName);
}
}
// Adds it in deselected ObjectNames
if (deselectedNames != null) {
// If all are deselected, no need to do anything :)
if (!(deselectedNames.contains(objectName))) {
// ObjectName was not already deselected
deselectedNames.add(objectName);
}
}
if (isTraceOn())
trace("disableObjectName: exiting", null);
return;
| public synchronized void | enableAllObjectNames()Enables all MBeanServerNotifications (all ObjectNames are selected).
if (isTraceOn())
trace("enableAllObjectNames: entering", null);
selectedNames = null;
deselectedNames = new Vector<ObjectName>();
if (isTraceOn())
trace("enableAllObjectNames: exiting", null);
return;
| public synchronized void | enableObjectName(javax.management.ObjectName objectName)Enables MBeanServerNotifications concerning given ObjectName.
if (objectName == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
if (isTraceOn())
trace("enableObjectName: entering", objectName.toString());
// Removes from deselected ObjectNames, if present
if (deselectedNames != null) {
if (deselectedNames.size() != 0) {
deselectedNames.remove(objectName);
}
}
// Adds it in selected ObjectNames
if (selectedNames != null) {
// If all are selected, no need to do anything :)
if (!(selectedNames.contains(objectName))) {
// ObjectName was not already selected
selectedNames.add(objectName);
}
}
if (isTraceOn())
trace("enableObjectName: exiting", null);
return;
| public synchronized java.util.Vector | getDisabledObjectNames()Gets all the ObjectNames disabled.
if (deselectedNames != null) {
return new Vector<ObjectName>(deselectedNames);
} else {
return null;
}
| public synchronized java.util.Vector | getEnabledObjectNames()Gets all the ObjectNames enabled.
if (selectedNames != null) {
return new Vector<ObjectName>(selectedNames);
} else {
return null;
}
| private boolean | isDebugOn()
return Trace.isSelected(Trace.LEVEL_DEBUG, Trace.INFO_RELATION);
| public synchronized boolean | isNotificationEnabled(javax.management.Notification notif)Invoked before sending the specified notification to the listener.
If:
- the ObjectName of the concerned MBean is selected (explicitly OR
(implicitly and not explicitly deselected))
AND
- the type of the operation (registration or unregistration) is
selected
then the notification is sent to the listener.
if (notif == null) {
String excMsg = "Invalid parameter.";
throw new IllegalArgumentException(excMsg);
}
if (isTraceOn())
trace("isNotificationEnabled: entering", notif.toString());
// Checks the type first
String ntfType = notif.getType();
Vector enabledTypes = getEnabledTypes();
if (!(enabledTypes.contains(ntfType))) {
if (isTraceOn())
trace("isNotificationEnabled: type not selected, exiting", null);
return false;
}
// We have a MBeanServerNotification: downcasts it
MBeanServerNotification mbsNtf = (MBeanServerNotification)notif;
// Checks the ObjectName
ObjectName objName = mbsNtf.getMBeanName();
// Is it selected?
boolean isSelectedFlg = false;
if (selectedNames != null) {
// Not all are implicitly selected:
// checks for explicit selection
if (selectedNames.size() == 0) {
// All are explicitly not selected
if (isTraceOn())
trace("isNotificationEnabled: no ObjectNames selected, exiting", null);
return false;
}
isSelectedFlg = selectedNames.contains(objName);
if (!isSelectedFlg) {
// Not in the explicit selected list
if (isTraceOn())
trace("isNotificationEnabled: ObjectName not in selected list, exiting", null);
return false;
}
}
if (!isSelectedFlg) {
// Not explicitly selected: is it deselected?
if (deselectedNames == null) {
// All are implicitly deselected and it is not explicitly
// selected
if (isTraceOn())
trace("isNotificationEnabled: ObjectName not selected and all deselectedm, exiting", null);
return false;
} else if (deselectedNames.contains(objName)) {
// Explicitly deselected
if (isTraceOn())
trace("isNotificationEnabled: ObjectName explicitly not selected, exiting", null);
return false;
}
}
if (isTraceOn())
trace("isNotificationEnabled: ObjectName selected, exiting", null);
return true;
| private boolean | isTraceOn()
// trace level
return Trace.isSelected(Trace.LEVEL_TRACE, Trace.INFO_RELATION);
| private void | readObject(java.io.ObjectInputStream in)Deserializes an {@link MBeanServerNotificationFilter} from an {@link ObjectInputStream}.
if (compat)
{
// Read an object serialized in the old serial form
//
ObjectInputStream.GetField fields = in.readFields();
selectedNames =
(List<ObjectName>) fields.get("mySelectObjNameList", null);
if (fields.defaulted("mySelectObjNameList"))
{
throw new NullPointerException("mySelectObjNameList");
}
deselectedNames =
(List<ObjectName>) fields.get("myDeselectObjNameList", null);
if (fields.defaulted("myDeselectObjNameList"))
{
throw new NullPointerException("myDeselectObjNameList");
}
}
else
{
// Read an object serialized in the new serial form
//
in.defaultReadObject();
}
| private void | trace(java.lang.String methodName, java.lang.String info)
Trace.send(Trace.LEVEL_TRACE, Trace.INFO_RELATION, localClassName, methodName, info);
Trace.send(Trace.LEVEL_TRACE, Trace.INFO_RELATION, "", "", "\n");
| private void | writeObject(java.io.ObjectOutputStream out)Serializes an {@link MBeanServerNotificationFilter} to an {@link ObjectOutputStream}.
if (compat)
{
// Serializes this instance in the old serial form
//
ObjectOutputStream.PutField fields = out.putFields();
fields.put("mySelectObjNameList", (Vector)selectedNames);
fields.put("myDeselectObjNameList", (Vector)deselectedNames);
out.writeFields();
}
else
{
// Serializes this instance in the new serial form
//
out.defaultWriteObject();
}
|
|