in plugins/org.apache.karaf.eik.workbench/src/main/java/org/apache/karaf/eik/workbench/internal/KarafRuntimeDataProvider.java [92:157]
public KarafRuntimeDataProvider(final String name, final MBeanProvider provider) {
super();
this.name = name;
this.mbeanProvider = provider;
this.updateDataJob = new Job("Populating OSGi Runtime view data for: " + name) {
private volatile boolean cancel = false;
@Override
public IStatus run(IProgressMonitor monitor) {
if (monitor == null) {
monitor = new NullProgressMonitor();
}
if ( !KarafRuntimeDataProvider.this.mbeanProvider.isOpen()
&& !cancel)
{
this.schedule(25000);
}
monitor.beginTask("Populating view data set", IProgressMonitor.UNKNOWN);
IStatus status = loadBundleData(monitor);
if (!status.isOK()) {
// Do something?
}
if (monitor.isCanceled()) {
return Status.OK_STATUS;
}
status = loadServiceData(monitor);
if (!status.isOK()) {
// Do something?
}
monitor.done();
if (monitor.isCanceled()) {
return Status.OK_STATUS;
}
if (!cancel) {
/*
* Poll every 25 seconds because the MBeans are not notification
* enabled
*/
this.schedule(25000);
}
fireProviderChangeEvent(EnumSet.of(RuntimeDataProviderListener.EventType.CHANGE));
return Status.OK_STATUS;
}
@Override
protected void canceling() {
cancel = true;
}
};
this.updateDataJob.setSystem(true);
this.updateDataJob.setPriority(Job.LONG);
}