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 e419aef935..dd0484a60b 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 @@ -16,17 +16,29 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.fsm.compile.AnalysisCompilationData; import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.fsm.compile.TmfXmlTimeGraphViewCu; import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.fsm.compile.TmfXmlXYViewCu; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module.XmlOutputElement; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module.XmlUtils; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module.XmlUtils.OutputType; import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module.XmlXYDataProvider; +import org.eclipse.tracecompass.tmf.analysis.xml.core.module.TmfXmlUtils; +import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModuleHelper; +import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisManager; +import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderDescriptor; +import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderDescriptor.ProviderType; +import org.eclipse.tracecompass.tmf.core.model.DataProviderDescriptor; import org.eclipse.tracecompass.tmf.core.model.timegraph.ITimeGraphDataProvider; import org.eclipse.tracecompass.tmf.core.model.timegraph.TimeGraphEntryModel; import org.eclipse.tracecompass.tmf.core.model.timegraph.TmfTimeGraphCompositeDataProvider; import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataModel; +import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataProvider; import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider; import org.eclipse.tracecompass.tmf.core.model.xy.TmfTreeXYCompositeDataProvider; import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler; @@ -321,4 +333,76 @@ public void refreshDataProviderFactories() { fTimeGraphFactories.clear(); fXYFactories.clear(); } + + /** + * Get the XML data provider for a trace, provider id and XML + * {@link OutputType} + * + * @param trace + * the queried trace + * @param id + * the queried ID + * @param types + * the data provider types + * @return the provider if an XML containing the ID exists and applies to + * the trace, else null + */ + @SuppressWarnings("unchecked") + public @Nullable
> P getXmlProvider(ITmfTrace trace, String id, Set