tmf: Bug 496479: Fix ClassCastException in Call Stack view
authorPatrick Tasse <patrick.tasse@gmail.com>
Tue, 21 Jun 2016 15:39:55 +0000 (11:39 -0400)
committerPatrick Tasse <patrick.tasse@gmail.com>
Wed, 13 Jul 2016 16:28:27 +0000 (12:28 -0400)
The exception occurs when using the Select Previous/Next Event action
with a trace that does not define thread entries. The parent of a
CallStackEntry is not necessarily a ThreadEntry.

Change-Id: Ibb24bd4e67174fc0fa4b5125754eca38df97a169
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/75650
Reviewed-by: Hudson CI
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/callstack/CallStackView.java

index f5eb13beeb1bbc75b1145daa147e0404c861f514..5f4524cc179d3c4b1dc422df7382b70638b65a53 100644 (file)
@@ -984,14 +984,14 @@ public class CallStackView extends AbstractTimeGraphView {
                             CallStackEntry callStackEntry = (CallStackEntry) entry;
                             ITmfStateSystem ss = callStackEntry.getStateSystem();
                             long time = Math.max(ss.getStartTime(), Math.min(ss.getCurrentEndTime(), viewer.getSelectionBegin()));
-                            ThreadEntry threadEntry = (ThreadEntry) callStackEntry.getParent();
+                            TimeGraphEntry parentEntry = callStackEntry.getParent();
                             int quark = ss.getParentAttributeQuark(callStackEntry.getQuark());
                             ITmfStateInterval stackInterval = ss.querySingleState(time, quark);
                             long newTime = stackInterval.getEndTime() + 1;
                             viewer.setSelectedTimeNotify(newTime, true);
                             stackInterval = ss.querySingleState(Math.min(ss.getCurrentEndTime(), newTime), quark);
                             int stackLevel = stackInterval.getStateValue().unboxInt();
-                            ITimeGraphEntry selectedEntry = threadEntry.getChildren().get(Math.max(0, stackLevel - 1));
+                            ITimeGraphEntry selectedEntry = parentEntry.getChildren().get(Math.max(0, stackLevel - 1));
                             getTimeGraphCombo().setSelection(selectedEntry);
                             viewer.getTimeGraphControl().fireSelectionChanged();
                             startZoomThread(viewer.getTime0(), viewer.getTime1());
@@ -1028,7 +1028,7 @@ public class CallStackView extends AbstractTimeGraphView {
                             CallStackEntry callStackEntry = (CallStackEntry) entry;
                             ITmfStateSystem ss = callStackEntry.getStateSystem();
                             long time = Math.max(ss.getStartTime(), Math.min(ss.getCurrentEndTime(), viewer.getSelectionBegin()));
-                            ThreadEntry threadEntry = (ThreadEntry) callStackEntry.getParent();
+                            TimeGraphEntry parentEntry = callStackEntry.getParent();
                             int quark = ss.getParentAttributeQuark(callStackEntry.getQuark());
                             ITmfStateInterval stackInterval = ss.querySingleState(time, quark);
                             if (stackInterval.getStartTime() == time && time > ss.getStartTime()) {
@@ -1036,7 +1036,7 @@ public class CallStackView extends AbstractTimeGraphView {
                             }
                             viewer.setSelectedTimeNotify(stackInterval.getStartTime(), true);
                             int stackLevel = stackInterval.getStateValue().unboxInt();
-                            ITimeGraphEntry selectedEntry = threadEntry.getChildren().get(Math.max(0, stackLevel - 1));
+                            ITimeGraphEntry selectedEntry = parentEntry.getChildren().get(Math.max(0, stackLevel - 1));
                             getTimeGraphCombo().setSelection(selectedEntry);
                             viewer.getTimeGraphControl().fireSelectionChanged();
                             startZoomThread(viewer.getTime0(), viewer.getTime1());
This page took 0.026933 seconds and 5 git commands to generate.