From ba9fb8a202eb8cc2edbb91d44c006bc334f017c9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Genevi=C3=A8ve=20Bastien?= Date: Tue, 16 Jun 2015 15:30:21 -0400 Subject: [PATCH] TMF: Bug 454283: Initialize all analysis modules before executing them MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Analysis modules are first initialized, then automatic ones are executed when the traceOpened signal is received. This makes sure any dependent module exists for a trace before the execution takes place. Change-Id: Ica4d77ca5805b37ec73a42af2b9bc5f15c9e21cd Signed-off-by: Geneviève Bastien Reviewed-on: https://git.eclipse.org/r/37698 Reviewed-by: Matthew Khouzam Reviewed-by: Hudson CI --- .../eclipse/tracecompass/tmf/core/trace/TmfTrace.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java index 7876c3315f..c13f924ddb 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java @@ -287,6 +287,7 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace, IT protected IStatus executeAnalysis() { MultiStatus status = new MultiStatus(Activator.PLUGIN_ID, IStatus.OK, null, null); + /* First modules are initialized */ Multimap modules = TmfAnalysisManager.getAnalysisModules(); for (IAnalysisModuleHelper helper : modules.values()) { try { @@ -295,13 +296,17 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace, IT continue; } fAnalysisModules.put(module.getId(), module); - if (module.isAutomatic()) { - status.add(module.schedule()); - } } catch (TmfAnalysisException e) { status.add(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e.getMessage())); } } + + /* Once all modules are initialized, automatic modules are executed */ + for (IAnalysisModule module : getAnalysisModules()) { + if (module.isAutomatic()) { + status.add(module.schedule()); + } + } return status; } -- 2.34.1