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; } }