From c2c90a9b34af0b441a99bccf7fd893d70e46401c Mon Sep 17 00:00:00 2001 From: Bernd Hufmann Date: Tue, 17 Jun 2025 10:47:14 -0400 Subject: [PATCH] xml: Don't return duplicate data provider descriptors from xml manager Fixes #290 and https://github.com/eclipse-cdt-cloud/theia-trace-extension/issues/1204 Signed-off-by: Bernd Hufmann --- .../tmf/analysis/xml/core/output/XmlDataProviderManager.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/output/XmlDataProviderManager.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/output/XmlDataProviderManager.java index dd0484a60b..8ed38e163b 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/output/XmlDataProviderManager.java +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/output/XmlDataProviderManager.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -374,6 +375,7 @@ public void refreshDataProviderFactories() { */ public List getXmlDataProviderDescriptors(ITmfTrace trace, Set types) { List descriptors = new ArrayList<>(); + Set existingDps = new HashSet<>(); for (ITmfTrace tr : TmfTraceManager.getTraceSetWithExperiment(trace)) { Map modules = TmfAnalysisManager.getAnalysisModules(tr.getClass()); for (OutputType viewType : types) { @@ -392,11 +394,12 @@ public List getXmlDataProviderDescriptors(ITmfTrace tra builder.setProviderType(ProviderType.TIME_GRAPH); } for (String id : element.getAnalyses()) { - if (modules.containsKey(id)) { + if (modules.containsKey(id) && !existingDps.contains(elemId)) { String analysisName = Objects.requireNonNull(modules.get(id)).getName(); builder.setName(analysisName + ": " + label); //$NON-NLS-1$ builder.setDescription(label + " provided by Analysis module: " + analysisName); //$NON-NLS-1$ descriptors.add(builder.build()); + existingDps.add(elemId); break; } }