private IDebugEventSetListener getDebugEventListener()

in plugins/org.apache.karaf.eik.workbench/src/main/java/org/apache/karaf/eik/workbench/internal/KarafMBeanProviderWorkbenchService.java [317:359]


    private IDebugEventSetListener getDebugEventListener(final ILaunch launch) throws CoreException {
        final IProcess process = launch.getProcesses()[0];

        final String memento =
            launch.getLaunchConfiguration().getMemento();

        return new IDebugEventSetListener() {
            @Override
            public void handleDebugEvents(final DebugEvent[] events) {
                if (events == null) {
                    return;
                }

                for (final DebugEvent event : events) {
                    if (   process != null
                        && process.equals(event.getSource())
                        && event.getKind() == DebugEvent.TERMINATE)
                    {
                        final JMXServiceDescriptor descriptor = mbeanProviderDataMap.get(memento).getJmxServiceDescriptor();
                        jmxServiceManager.remove(descriptor);

                        final MBeanServerConnectionJob job = mbeanProviderDataMap.get(memento).getMBeanServerConnectionJob();
                        if (job != null) {
                            job.cancel();
                        }

                        final RuntimeDataProvider runtimeDataProvider = mbeanProviderDataMap.get(memento).getRuntimeDataProvider();
                        runtimeDataProviderManager.remove(runtimeDataProvider);
                        if (runtimeDataProvider != null) {
                            runtimeDataProvider.stop();
                        }

                        final MBeanProvider mbeanProvider = mbeanProviderDataMap.get(memento).getMbeanProvider();
                        mbeanProviderManager.remove(mbeanProvider);

                        if (mbeanProvider != null) {
                            mbeanProvider.close();
                        }
                    }
                }
            }
        };
    }