From bcd8d4b12d6c8e7de2b48064e4bd629714047341 Mon Sep 17 00:00:00 2001 From: Alexandre Montplaisir Date: Wed, 31 Aug 2016 20:34:07 -0400 Subject: [PATCH] tmf: Mark TmfTraceManager @NonNullByDefault Change-Id: Ib7581d4d2b8cb2807882afc62ba0071e7d123f82 Signed-off-by: Alexandre Montplaisir Reviewed-on: https://git.eclipse.org/r/81721 Reviewed-by: Hudson CI --- .../ui/swtbot/tests/CriticalPathTest.java | 5 ++- .../tmf/core/trace/ITmfTrace.java | 2 +- .../tmf/core/trace/TmfTraceManager.java | 42 ++++++++++++------- .../tests/perf/views/ViewsResponseTest.java | 3 ++ .../viewers/events/TestRefreshTextTrace.java | 3 ++ .../TestImportExportPackageWizard.java | 11 +++-- .../statesystem/TmfStateSystemViewer.java | 4 +- 7 files changed, 46 insertions(+), 24 deletions(-) diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/CriticalPathTest.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/CriticalPathTest.java index 4e96eda888..d4db81932d 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/CriticalPathTest.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/CriticalPathTest.java @@ -27,6 +27,7 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.controlflow.ControlFlowView; import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace; +import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager; import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils; import org.junit.Before; @@ -83,7 +84,9 @@ public class CriticalPathTest extends KernelTestBase { assertEquals(0, allItems[i].getNodes().size()); } - SWTBotTreeItem item = treeCfv.getTreeItem(TmfTraceManager.getInstance().getActiveTrace().getName()); + ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace(); + assertNotNull(trace); + SWTBotTreeItem item = treeCfv.getTreeItem(trace.getName()); assertNotNull(item); item = item.getNode("systemd"); assertNotNull(item); diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/ITmfTrace.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/ITmfTrace.java index 05505624ec..667fc069bb 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/ITmfTrace.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/ITmfTrace.java @@ -444,7 +444,7 @@ public interface ITmfTrace extends ITmfEventProvider { * @return The newly created context * @since 2.0 */ - default TmfTraceContext createTraceContext(@NonNull TmfTimeRange selection, @NonNull TmfTimeRange windowRange, @Nullable IFile editorFile, @Nullable ITmfFilter filter) { + default @NonNull TmfTraceContext createTraceContext(@NonNull TmfTimeRange selection, @NonNull TmfTimeRange windowRange, @Nullable IFile editorFile, @Nullable ITmfFilter filter) { return new TmfTraceContext(selection, windowRange, editorFile, filter); } } diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTraceManager.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTraceManager.java index 642f426a6e..e3d61e8541 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTraceManager.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTraceManager.java @@ -35,6 +35,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.URIUtil; import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.tracecompass.internal.tmf.core.Activator; import org.eclipse.tracecompass.tmf.core.TmfCommonConstants; @@ -65,6 +66,7 @@ import com.google.common.collect.ImmutableSet; * * @author Alexandre Montplaisir */ +@NonNullByDefault public final class TmfTraceManager { // ------------------------------------------------------------------------ @@ -74,7 +76,7 @@ public final class TmfTraceManager { private final Map fTraces; /** The currently-selected trace. Should always be part of the trace map */ - private ITmfTrace fCurrentTrace = null; + private @Nullable ITmfTrace fCurrentTrace = null; private static final String TEMP_DIR_NAME = ".temp"; //$NON-NLS-1$ @@ -88,7 +90,7 @@ public final class TmfTraceManager { } /** Singleton instance */ - private static TmfTraceManager tm = null; + private static @Nullable TmfTraceManager tm = null; /** * Get an instance of the trace manager. @@ -96,10 +98,12 @@ public final class TmfTraceManager { * @return The trace manager */ public static synchronized TmfTraceManager getInstance() { - if (tm == null) { - tm = new TmfTraceManager(); + TmfTraceManager mgr = tm; + if (mgr == null) { + mgr = new TmfTraceManager(); + tm = mgr; } - return tm; + return mgr; } // ------------------------------------------------------------------------ @@ -109,19 +113,21 @@ public final class TmfTraceManager { /** * Get the currently selected trace (normally, the focused editor). * - * @return The active trace + * @return The active trace, or null if there is no active + * trace */ - public synchronized ITmfTrace getActiveTrace() { + public synchronized @Nullable ITmfTrace getActiveTrace() { return fCurrentTrace; } /** * Get the trace set of the currently active trace. * - * @return The active trace set + * @return The active trace set. Empty (but non-null) if there is no + * currently active trace. * @see #getTraceSet(ITmfTrace) */ - public synchronized @NonNull Collection getActiveTraceSet() { + public synchronized Collection getActiveTraceSet() { final ITmfTrace trace = fCurrentTrace; return getTraceSet(trace); } @@ -142,7 +148,7 @@ public final class TmfTraceManager { * the trace * @return the editor file or null if the trace is not opened */ - public synchronized IFile getTraceEditorFile(ITmfTrace trace) { + public synchronized @Nullable IFile getTraceEditorFile(ITmfTrace trace) { TmfTraceContext ctx = fTraces.get(trace); if (ctx != null) { return ctx.getEditorFile(); @@ -176,10 +182,11 @@ public final class TmfTraceManager { * all the traces contained in this experiment. * * @param trace - * The trace or experiment + * The trace or experiment. If it is null, an empty collection + * will be returned. * @return The corresponding trace set. */ - public static @NonNull Collection<@NonNull ITmfTrace> getTraceSet(ITmfTrace trace) { + public static Collection getTraceSet(@Nullable ITmfTrace trace) { if (trace == null) { return ImmutableSet.of(); } @@ -197,10 +204,11 @@ public final class TmfTraceManager { * this experiment, along with the experiment. * * @param trace - * The trace or experiment + * The trace or experiment. If it is null, an empty collection + * will be returned. * @return The corresponding trace set, including the experiment. */ - public static @NonNull Collection getTraceSetWithExperiment(ITmfTrace trace) { + public static Collection getTraceSetWithExperiment(@Nullable ITmfTrace trace) { if (trace == null) { return ImmutableSet.of(); } @@ -315,11 +323,13 @@ public final class TmfTraceManager { /** * Signal propagator - * @param signal any signal + * + * @param signal + * any signal * @since 2.0 */ @TmfSignalHandler - public synchronized void signalReceived(final @NonNull TmfTraceModelSignal signal) { + public synchronized void signalReceived(final TmfTraceModelSignal signal) { fTraces.forEach((t, u) -> u.receive(signal)); } diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/perf/org/eclipse/tracecompass/tmf/ui/swtbot/tests/perf/views/ViewsResponseTest.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/perf/org/eclipse/tracecompass/tmf/ui/swtbot/tests/perf/views/ViewsResponseTest.java index ed6d377b3c..6708796893 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/perf/org/eclipse/tracecompass/tmf/ui/swtbot/tests/perf/views/ViewsResponseTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/perf/org/eclipse/tracecompass/tmf/ui/swtbot/tests/perf/views/ViewsResponseTest.java @@ -9,6 +9,8 @@ package org.eclipse.tracecompass.tmf.ui.swtbot.tests.perf.views; +import static org.junit.Assert.assertNotNull; + import java.io.File; import java.util.Collection; @@ -207,6 +209,7 @@ public abstract class ViewsResponseTest { // Set the time range to the full trace range ITmfTrace activeTrace = TmfTraceManager.getInstance().getActiveTrace(); + assertNotNull(activeTrace); TmfTimeRange fullRange = new TmfTimeRange(activeTrace.getStartTime(), activeTrace.getEndTime()); TmfSignalManager.dispatchSignal(new TmfWindowRangeUpdatedSignal(this, fullRange)); waitViewReady(part, selectionRange, fullRange.getEndTime()); diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/viewers/events/TestRefreshTextTrace.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/viewers/events/TestRefreshTextTrace.java index c5e844adc9..41ef6de89c 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/viewers/events/TestRefreshTextTrace.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/viewers/events/TestRefreshTextTrace.java @@ -9,6 +9,8 @@ package org.eclipse.tracecompass.tmf.ui.swtbot.tests.viewers.events; +import static org.junit.Assert.assertNotNull; + import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -105,6 +107,7 @@ public class TestRefreshTextTrace { @Test public void testRefresh() throws IOException { ITmfTrace activeTrace = TmfTraceManager.getInstance().getActiveTrace(); + assertNotNull(activeTrace); fBot.waitUntil(new NumberOfEventsCondition(activeTrace, INITIAL_NB_EVENTS)); diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/TestImportExportPackageWizard.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/TestImportExportPackageWizard.java index e8f9501b14..21d9bbd986 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/TestImportExportPackageWizard.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/wizards/TestImportExportPackageWizard.java @@ -33,6 +33,7 @@ import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences; import org.eclipse.swtbot.swt.finder.waits.Conditions; import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; +import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager; import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils; import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils; @@ -127,7 +128,9 @@ public class TestImportExportPackageWizard { SWTBotUtils.createProject(PROJECT_NAME); SWTBotUtils.openTrace(PROJECT_NAME, f.getAbsolutePath(), XMLSTUB_ID); WaitUtils.waitForJobs(); - assertEquals("Incorrect opened trace!", f.getAbsolutePath(), (new File(TmfTraceManager.getInstance().getActiveTrace().getPath())).getAbsolutePath()); + ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace(); + assertNotNull(trace); + assertEquals("Incorrect opened trace!", f.getAbsolutePath(), (new File(trace.getPath())).getAbsolutePath()); SWTBotView projectExplorerBot = fBot.viewByTitle(PROJECT_EXPLORER); assertNotNull("Cannot find " + PROJECT_EXPLORER, projectExplorerBot); projectExplorerBot.show(); @@ -177,8 +180,10 @@ public class TestImportExportPackageWizard { fBot.waitUntil(Conditions.shellCloses(shell)); fBot = new SWTWorkbenchBot(); SWTBotUtils.openEditor(fBot, PROJECT_NAME, new Path(f.getName())); - assertEquals("Test if import matches", f.getName(), TmfTraceManager.getInstance().getActiveTrace().getName()); - assertFalse("Test if import files don't match", f.getAbsolutePath().equals(TmfTraceManager.getInstance().getActiveTrace().getPath())); + trace = TmfTraceManager.getInstance().getActiveTrace(); + assertNotNull(trace); + assertEquals("Test if import matches", f.getName(), trace.getName()); + assertFalse("Test if import files don't match", f.getAbsolutePath().equals(trace.getPath())); SWTBotUtils.deleteProject(PROJECT_NAME, fBot); WaitUtils.waitForJobs(); } diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/statesystem/TmfStateSystemViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/statesystem/TmfStateSystemViewer.java index 7b944e9016..7d803b447f 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/statesystem/TmfStateSystemViewer.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/statesystem/TmfStateSystemViewer.java @@ -197,9 +197,7 @@ public class TmfStateSystemViewer extends AbstractTmfTreeViewer { TmfTreeViewerEntry rootEntry = new TmfTreeViewerEntry("root"); //$NON-NLS-1$ for (final ITmfTrace trace : TmfTraceManager.getTraceSetWithExperiment(getTrace())) { - if (trace != null) { - rootEntry.addChild(createTraceEntry(trace)); - } + rootEntry.addChild(createTraceEntry(trace)); } return rootEntry; } -- 2.34.1