tmf: Add dispose() to ITmfConfigurationSource interface

Change-Id: Iaaeec08d8371ea6d9eae74636f79c4cd91afdb4a
Signed-off-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/c/tracecompass/org.eclipse.tracecompass/+/204883
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/config/XmlConfigurationSource.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/config/XmlConfigurationSource.java
index af4076b..8e91ced 100644
--- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/config/XmlConfigurationSource.java
+++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/config/XmlConfigurationSource.java
@@ -125,6 +125,11 @@
         return fConfigurations.containsKey(id);
     }
 
+    @Override
+    public void dispose() {
+        fConfigurations.clear();
+    }
+
     private static @Nullable File getFile(Map<String, Object> parameters) {
         String path = (String) parameters.get(PATH_KEY);
         if (path == null) {
diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/stubs/org/eclipse/tracecompass/tmf/tests/stubs/model/config/TestConfigurationSource.java b/tmf/org.eclipse.tracecompass.tmf.core.tests/stubs/org/eclipse/tracecompass/tmf/tests/stubs/model/config/TestConfigurationSource.java
index a0b81eb..d2865e1 100644
--- a/tmf/org.eclipse.tracecompass.tmf.core.tests/stubs/org/eclipse/tracecompass/tmf/tests/stubs/model/config/TestConfigurationSource.java
+++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/stubs/org/eclipse/tracecompass/tmf/tests/stubs/model/config/TestConfigurationSource.java
@@ -108,4 +108,9 @@
     public @Nullable ITmfConfiguration get(String id) {
         return fConfigurations.get(id);
     }
+
+    @Override
+    public void dispose() {
+        fConfigurations.clear();
+    }
 }
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/ITmfConfigurationSource.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/ITmfConfigurationSource.java
index 1aa52a4..3061bd0 100644
--- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/ITmfConfigurationSource.java
+++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/ITmfConfigurationSource.java
@@ -93,4 +93,9 @@
      * @return list of all configuration instances
      */
     List<ITmfConfiguration> getConfigurations();
+
+    /**
+     * Dispose the configuration source.
+     */
+    void dispose();
 }
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/TmfConfigurationSourceManager.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/TmfConfigurationSourceManager.java
index f9329d4..220ad9e 100644
--- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/TmfConfigurationSourceManager.java
+++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/config/TmfConfigurationSourceManager.java
@@ -66,6 +66,7 @@
      * Disposes the instance.
      */
     public synchronized void dispose() {
+        fDescriptors.values().forEach(t -> t.dispose());
         fDescriptors.clear();
     }