private IStatus loadServiceData()

in plugins/org.apache.karaf.eik.workbench/src/main/java/org/apache/karaf/eik/workbench/internal/KarafRuntimeDataProvider.java [251:306]


    private IStatus loadServiceData(final IProgressMonitor monitor) {
        monitor.subTask("OSGi Services");

        if (monitor.isCanceled()) {
            return Status.OK_STATUS;
        }

        if (!mbeanProvider.isOpen()) {
            return new Status(IStatus.WARNING, KarafWorkbenchActivator.PLUGIN_ID, "Connection to MBean server has been closed");
        }

        try {
            final TabularData rawServiceData = mbeanProvider.getMBean(SERVICE_STATE, ServiceStateMBean.class).listServices();

            synchronized (serviceSet) {
                serviceSet.clear();
                idToServiceMap.clear();
            }

            for (final Object o : rawServiceData.values()) {
                final CompositeData composite = (CompositeData) o;
                final ServiceData service = ServiceData.from(composite);

                /*
                 * Get the service's properties from the JMX enabled runtime
                 */
                if (!mbeanProvider.isOpen()) {
                    return new Status(IStatus.WARNING, KarafWorkbenchActivator.PLUGIN_ID, "Connection to MBean server has been closed");
                }

                final ServiceItem serviceWrapper = new MBeanServiceItem(composite, mbeanProvider, idToBundleMap);

                synchronized (serviceSet) {
                    serviceSet.add(serviceWrapper);
                    idToServiceMap.put(service.getServiceId(), serviceWrapper);
                }

                monitor.worked(1);

                if (monitor.isCanceled()) {
                    break;
                }

            }
        } catch (final IOException e) {
        	if (monitor.isCanceled()) {
        		return new Status(IStatus.CANCEL, KarafWorkbenchActivator.PLUGIN_ID, "Unable to connect to MBeanServer", e);
        	} else {
        		return new Status(IStatus.ERROR, KarafWorkbenchActivator.PLUGIN_ID, "Unable to connect to MBeanServer", e);
        	}
        } catch (final Exception e) {
            KarafWorkbenchActivator.getLogger().warn("Unable to update OSGi Services", e);
        }

        return Status.OK_STATUS;
    }