*/
public int stringMonitorNotification(int testCase)
throws Exception {
stringMessageReceived = false;
StringMonitor stringMonitor = null;
try {
MBeanServer server = MBeanServerFactory.newMBeanServer();
String domain = server.getDefaultDomain();
// Create a new StringMonitor MBean and add it to the MBeanServer.
//
echo(">>> CREATE a new StringMonitor MBean");
ObjectName stringMonitorName = new ObjectName(
domain + ":type=" + StringMonitor.class.getName());
stringMonitor = new StringMonitor();
server.registerMBean(stringMonitor, stringMonitorName);
echo(">>> ADD a listener to the StringMonitor");
stringMonitor.addNotificationListener(this, null, null);
//
// MANAGEMENT OF A STANDARD MBEAN
//
echo(">>> CREATE a new ObservedObject MBean");
ObjectName obsObjName =
ObjectName.getInstance(domain + ":type=ObservedObject");
ObservedObject obsObj = new ObservedObject();
ComplexAttribute ca = new ComplexAttribute();
switch (testCase) {
case 1:
obsObj.sa = "do_not_match_0";
break;
case 2:
ca.setStringAttribute("do_not_match_0");
obsObj.setComplexAttribute(ca);
break;
case 3:
ca.setEnumAttribute(Match.do_not_match_0);
obsObj.setComplexAttribute(ca);
break;
}
server.registerMBean(obsObj, obsObjName);
echo(">>> SET the attributes of the StringMonitor:");
stringMonitor.addObservedObject(obsObjName);
echo("\tATTRIBUTE \"ObservedObject\" = " + obsObjName);
switch (testCase) {
case 1:
stringMonitor.setObservedAttribute(
"CompositeDataAttribute.StringAttribute");
echo("\tATTRIBUTE \"ObservedAttribute\" = " +
"CompositeDataAttribute.StringAttribute");
break;
case 2:
stringMonitor.setObservedAttribute(
"ComplexAttribute.stringAttribute");
echo("\tATTRIBUTE \"ObservedAttribute\" = " +
"ComplexAttribute.stringAttribute");
break;
case 3:
stringMonitor.setObservedAttribute(
"ComplexAttribute.enumAttribute.name");
echo("\tATTRIBUTE \"ObservedAttribute\" = " +
"ComplexAttribute.enumAttribute.name");
break;
}
stringMonitor.setNotifyMatch(true);
echo("\tATTRIBUTE \"NotifyMatch\" = true");
stringMonitor.setNotifyDiffer(false);
echo("\tATTRIBUTE \"NotifyDiffer\" = false");
stringMonitor.setStringToCompare("do_match_now");
echo("\tATTRIBUTE \"StringToCompare\" = \"do_match_now\"");
int granularityperiod = 500;
stringMonitor.setGranularityPeriod(granularityperiod);
echo("\tATTRIBUTE \"GranularityPeriod\" = " + granularityperiod);
echo(">>> START the StringMonitor");
stringMonitor.start();
// Wait for granularity period (multiplied by 2 for sure)
//
Thread.sleep(granularityperiod * 2);
switch (testCase) {
case 1:
obsObj.sa = "do_not_match_1";
break;
case 2:
ca.setStringAttribute("do_not_match_1");
break;
case 3:
ca.setEnumAttribute(Match.do_not_match_1);
break;
}
// Wait for granularity period (multiplied by 2 for sure)
//
Thread.sleep(granularityperiod * 2);
switch (testCase) {
case 1:
obsObj.sa = "do_match_now";
break;
case 2:
ca.setStringAttribute("do_match_now");
break;
case 3:
ca.setEnumAttribute(Match.do_match_now);
break;
}
// Wait for granularity period (multiplied by 2 for sure)
//
Thread.sleep(granularityperiod * 2);
switch (testCase) {
case 1:
obsObj.sa = "do_not_match_2";
break;
case 2:
ca.setStringAttribute("do_not_match_2");
break;
case 3:
ca.setEnumAttribute(Match.do_not_match_2);
break;
}
// Check if notification was received
//
if (stringMessageReceived) {
echo("\tOK: StringMonitor notification received");
} else {
echo("\tKO: StringMonitor notification missed or not emitted");
return 1;
}
} finally {
if (stringMonitor != null)
stringMonitor.stop();
}
return 0;
}