tmf: Merge the two statesystem-getting methods into one
authorAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Thu, 4 Apr 2013 18:31:30 +0000 (14:31 -0400)
committerAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Fri, 12 Apr 2013 17:37:04 +0000 (13:37 -0400)
Use Collections.unmodifiableMap() to return a map directly,
instead of using two separate methods.

Also changed the declared type to a LinkedHashMap, so that
the order of iteration remains constant.

Change-Id: I876be06ea550d1244da87215e58fddee95f6de3d
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
Reviewed-on: https://git.eclipse.org/r/11659
Tested-by: Hudson CI
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
IP-Clean: Patrick Tasse <patrick.tasse@gmail.com>

org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java
org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java
org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java
org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfExperimentTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfTraceTest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java

index a7e5b754dbb01c156ef2e2088362d96fda7611a2..f1b51d05f2e27e6a446f63cf639ea448cb7e5141 100644 (file)
@@ -111,7 +111,7 @@ public class ControlFlowPresentationProvider extends TimeGraphPresentationProvid
         Map<String, String> retMap = new LinkedHashMap<String, String>();
         if (event instanceof ControlFlowEvent) {
             ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();
-            ITmfStateSystem ssq = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+            ITmfStateSystem ssq = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
             int tid = entry.getThreadId();
 
             try {
@@ -172,7 +172,7 @@ public class ControlFlowPresentationProvider extends TimeGraphPresentationProvid
             return;
         }
         ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();
-        ITmfStateSystem ss = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+        ITmfStateSystem ss = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
         int status = ((ControlFlowEvent) event).getStatus();
         if (status != StateValues.PROCESS_STATUS_RUN_SYSCALL) {
             return;
index c45a25bc7572eff7487f4770cc1ceae0cf542e70..8c1d147d64ec7a8c3f9bd6d29b149895f4434984 100644 (file)
@@ -518,7 +518,7 @@ public class ControlFlowView extends TmfView {
             }
             if (trace instanceof CtfKernelTrace) {
                 CtfKernelTrace ctfKernelTrace = (CtfKernelTrace) trace;
-                ITmfStateSystem ssq = ctfKernelTrace.getStateSystem(CtfKernelTrace.STATE_ID);
+                ITmfStateSystem ssq = ctfKernelTrace.getStateSystems().get(CtfKernelTrace.STATE_ID);
                 if (time >= ssq.getStartTime() && time <= ssq.getCurrentEndTime()) {
                     List<Integer> currentThreadQuarks = ssq.getQuarks(Attributes.CPUS, "*", Attributes.CURRENT_THREAD);  //$NON-NLS-1$
                     for (int currentThreadQuark : currentThreadQuarks) {
@@ -624,7 +624,7 @@ public class ControlFlowView extends TmfView {
             if (aTrace instanceof CtfKernelTrace) {
                 ArrayList<ControlFlowEntry> entryList = new ArrayList<ControlFlowEntry>();
                 CtfKernelTrace ctfKernelTrace = (CtfKernelTrace) aTrace;
-                ITmfStateSystem ssq = ctfKernelTrace.getStateSystem(CtfKernelTrace.STATE_ID);
+                ITmfStateSystem ssq = ctfKernelTrace.getStateSystems().get(CtfKernelTrace.STATE_ID);
                 if (!ssq.waitUntilBuilt()) {
                     return;
                 }
@@ -736,7 +736,7 @@ public class ControlFlowView extends TmfView {
     }
 
     private void buildStatusEvents(ITmfTrace trace, ControlFlowEntry entry, IProgressMonitor monitor) {
-        ITmfStateSystem ssq = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+        ITmfStateSystem ssq = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
         long start = ssq.getStartTime();
         long end = ssq.getCurrentEndTime() + 1;
         long resolution = Math.max(1, (end - start) / fDisplayWidth);
@@ -764,7 +764,7 @@ public class ControlFlowView extends TmfView {
         if (realEnd <= realStart) {
             return null;
         }
-        ITmfStateSystem ssq = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+        ITmfStateSystem ssq = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
         List<ITimeEvent> eventList = null;
         try {
             int statusQuark = ssq.getQuarkRelative(entry.getThreadQuark(), Attributes.STATUS);
index 77fa8fbd7e200466da6bc375193bad338d512db0..1aaf5ad87a5eda7cd5603e405ef319d3feebba2f 100644 (file)
@@ -183,7 +183,7 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider
                 if (status == StateValues.CPU_STATUS_IRQ) {
                     // In IRQ state get the IRQ that caused the interruption
                     ResourcesEntry entry = (ResourcesEntry) event.getEntry();
-                    ITmfStateSystem ss = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+                    ITmfStateSystem ss = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
                     int cpu = entry.getId();
 
                     try {
@@ -212,7 +212,7 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider
                 } else if (status == StateValues.CPU_STATUS_SOFTIRQ) {
                     // In SOFT_IRQ state get the SOFT_IRQ that caused the interruption
                     ResourcesEntry entry = (ResourcesEntry) event.getEntry();
-                    ITmfStateSystem ss = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+                    ITmfStateSystem ss = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
                     int cpu = entry.getId();
 
                     try {
@@ -241,7 +241,7 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider
                 } else if (status == StateValues.CPU_STATUS_RUN_USERMODE || status == StateValues.CPU_STATUS_RUN_SYSCALL){
                     // In running state get the current tid
                     ResourcesEntry entry = (ResourcesEntry) event.getEntry();
-                    ITmfStateSystem ssq = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+                    ITmfStateSystem ssq = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
 
                     try {
                         retMap.put(Messages.ResourcesView_attributeHoverTime, Utils.formatTime(hoverTime, TimeFormat.CALENDAR, Resolution.NANOSEC));
@@ -300,7 +300,7 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider
             return;
         }
         ResourcesEntry entry = (ResourcesEntry) event.getEntry();
-        ITmfStateSystem ss = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+        ITmfStateSystem ss = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
         long time = event.getTime();
         try {
             while (time < event.getTime() + event.getDuration()) {
index cb41adbed75f25f9f60c3760a72aae9c75514398..de062eafa6dc8c58cdb759c9131a89c55145024f 100644 (file)
@@ -267,7 +267,7 @@ public class ResourcesView extends TmfView {
             }
             long resolution = Math.max(1, (fZoomEndTime - fZoomStartTime) / fDisplayWidth);
             for (TraceEntry traceEntry : fZoomEntryList) {
-                if (!traceEntry.fKernelTrace.getStateSystem(CtfKernelTrace.STATE_ID).waitUntilBuilt()) {
+                if (!traceEntry.fKernelTrace.getStateSystems().get(CtfKernelTrace.STATE_ID).waitUntilBuilt()) {
                     return;
                 }
                 for (ITimeGraphEntry child : traceEntry.getChildren()) {
@@ -493,7 +493,7 @@ public class ResourcesView extends TmfView {
             }
             if (aTrace instanceof CtfKernelTrace) {
                 CtfKernelTrace ctfKernelTrace = (CtfKernelTrace) aTrace;
-                ITmfStateSystem ssq = ctfKernelTrace.getStateSystem(CtfKernelTrace.STATE_ID);
+                ITmfStateSystem ssq = ctfKernelTrace.getStateSystems().get(CtfKernelTrace.STATE_ID);
                 if (!ssq.waitUntilBuilt()) {
                     return;
                 }
@@ -543,7 +543,7 @@ public class ResourcesView extends TmfView {
                 return;
             }
             CtfKernelTrace ctfKernelTrace = traceEntry.getTrace();
-            ITmfStateSystem ssq = ctfKernelTrace.getStateSystem(CtfKernelTrace.STATE_ID);
+            ITmfStateSystem ssq = ctfKernelTrace.getStateSystems().get(CtfKernelTrace.STATE_ID);
             long startTime = ssq.getStartTime();
             long endTime = ssq.getCurrentEndTime() + 1;
             long resolution = (endTime - startTime) / fDisplayWidth;
@@ -558,7 +558,7 @@ public class ResourcesView extends TmfView {
     private static List<ITimeEvent> getEventList(ResourcesEntry entry,
             long startTime, long endTime, long resolution, boolean includeNull,
             IProgressMonitor monitor) {
-        ITmfStateSystem ssq = entry.getTrace().getStateSystem(CtfKernelTrace.STATE_ID);
+        ITmfStateSystem ssq = entry.getTrace().getStateSystems().get(CtfKernelTrace.STATE_ID);
         final long realStart = Math.max(startTime, ssq.getStartTime());
         final long realEnd = Math.min(endTime, ssq.getCurrentEndTime() + 1);
         if (realEnd <= realStart) {
index 34537deef50c087a6bcc7ce502dc522852cbd7a5..15e06d87fcbbe66ee5e020fd6a352e0a26f2e61a 100644 (file)
@@ -17,7 +17,6 @@ package org.eclipse.linuxtools.tmf.core.tests.trace;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
@@ -25,7 +24,6 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.util.Collection;
 import java.util.Vector;
 
 import org.eclipse.core.resources.IFile;
@@ -185,17 +183,10 @@ public class TmfExperimentTest {
     @Test
     public void testGetStateSystem() {
         /* There should not be any experiment-specific state system */
-        ITmfStateSystem ss = fExperiment.getStateSystem("something");
+        ITmfStateSystem ss = fExperiment.getStateSystems().get("something");
         assertNull(ss);
     }
 
-    @Test
-    public void testListStateSystem() {
-        Collection<String> sss = fExperiment.listStateSystems();
-        assertNotNull(sss);
-        assertEquals(0, sss.size());
-    }
-
     // ------------------------------------------------------------------------
     // seekEvent by location
     // ------------------------------------------------------------------------
index 2210c2db3e9923f24f017b830a38d098cc2c7697..3a1ee1130d88e350e4d3480e2ac97d520d2f6f6e 100644 (file)
@@ -16,7 +16,6 @@ package org.eclipse.linuxtools.tmf.core.tests.trace;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -25,7 +24,7 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.util.Collection;
+import java.util.Map;
 import java.util.Vector;
 
 import org.eclipse.core.runtime.FileLocator;
@@ -548,15 +547,17 @@ public class TmfTraceTest {
     @Test
     public void testGetStateSystem() {
         /* There should be no state system registered so far */
-        ITmfStateSystem ss = fTrace.getStateSystem("something");
+        ITmfStateSystem ss = fTrace.getStateSystems().get("something");
         assertNull(ss);
     }
 
-    @Test
-    public void testListStateSystem() {
-        Collection<String> sss = fTrace.listStateSystems();
-        assertNotNull(sss);
-        assertEquals(0, sss.size());
+    /**
+     * Make sure the returned map is unmodifiable.
+     */
+    @Test(expected=UnsupportedOperationException.class)
+    public void testGetStateSystem_readOnly() {
+        Map<String, ITmfStateSystem> sss = fTrace.getStateSystems();
+        sss.put("something", null);
     }
 
     // ------------------------------------------------------------------------
index 784932887032c405e5fb38eee58b9eb36efc7eb3..8ea4666ff96598c0efb5f6c40b97ed6b1c828dd0 100644 (file)
@@ -13,7 +13,8 @@
 
 package org.eclipse.linuxtools.tmf.core.trace;
 
-import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -182,24 +183,15 @@ public interface ITmfTrace extends ITmfDataProvider {
     public ITmfStatistics getStatistics();
 
     /**
-     * Retrieve a state system that belongs to this trace
+     * Return the map of state systems associated with this trace.
      *
-     * @param id
-     *            The ID of the state system to retrieve.
-     * @return The state system that is associated with this trace and ID, or
-     *         'null' if such a match doesn't exist.
-     * @since 2.0
-     */
-    public ITmfStateSystem getStateSystem(String id);
-
-    /**
-     * Return the list of existing state systems registered with this trace.
+     * This view should be read-only (implementations should use
+     * {@link Collections#unmodifiableMap}).
      *
-     * @return A Collection view of the available state systems. The collection
-     *         could be empty, but should not be null.
+     * @return The map of state systems
      * @since 2.0
      */
-    public Collection<String> listStateSystems();
+    public Map<String, ITmfStateSystem> getStateSystems();
 
     /**
      * If a state system is not build by the trace itself, it's possible to
index dac5301261b6419621da3db37c000689f2b65ef0..5fc15d9c77fc84602e4c26717b7cec809e546608 100644 (file)
@@ -15,8 +15,8 @@
 package org.eclipse.linuxtools.tmf.core.trace;
 
 import java.io.File;
-import java.util.Collection;
-import java.util.HashMap;
+import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 import org.eclipse.core.resources.IResource;
@@ -114,7 +114,7 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
      * @since 2.0
      */
     protected final Map<String, ITmfStateSystem> fStateSystems =
-            new HashMap<String, ITmfStateSystem>();
+            new LinkedHashMap<String, ITmfStateSystem>();
 
     // ------------------------------------------------------------------------
     // Construction
@@ -405,16 +405,8 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
      * @since 2.0
      */
     @Override
-    public final ITmfStateSystem getStateSystem(String id) {
-        return fStateSystems.get(id);
-    }
-
-    /**
-     * @since 2.0
-     */
-    @Override
-    public final Collection<String> listStateSystems() {
-        return fStateSystems.keySet();
+    public final Map<String, ITmfStateSystem> getStateSystems() {
+        return Collections.unmodifiableMap(fStateSystems);
     }
 
     /**
This page took 0.031481 seconds and 5 git commands to generate.