tmf: Introduce resolveIntEventAspectOfClassForEvent
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tue, 17 Nov 2015 22:24:33 +0000 (17:24 -0500)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Thu, 19 Nov 2015 18:09:04 +0000 (13:09 -0500)
This pattern of getting an integer aspect is used a lot,
it could be moved to one place.

Change-Id: I8ca1cf09c70457ec116f0b46bfba3654f91a013f
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/60662
Reviewed-by: Hudson CI
analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/cpuusage/KernelCpuUsageStateProvider.java
analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/kernelanalysis/KernelTidAspect.java
analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/kernelanalysis/KernelStateProvider.java
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/analysis/graph/handlers/EventContextHandler.java
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/analysis/graph/handlers/TraceEventHandlerExecutionGraph.java
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/analysis/graph/handlers/TraceEventHandlerSched.java
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/analysis/vm/model/qemukvm/QemuKvmVmModel.java
lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/analysis/vm/module/VirtualMachineStateProvider.java
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/model/TmfXmlStateAttribute.java
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/tmf/analysis/xml/core/model/TmfXmlStateValue.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTraceUtils.java

index 3de733949d3c139e8ab48eb4d28eb298d628e9ee..e5c8f97d3cb8d84571969a7a420e3107f7cf7454 100644 (file)
@@ -91,12 +91,11 @@ public class KernelCpuUsageStateProvider extends AbstractTmfStateProvider {
         final String eventName = event.getName();
 
         if (eventName.equals(fLayout.eventSchedSwitch())) {
-            Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-            if (cpuObj == null) {
+            Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+            if (cpu == null) {
                 /* We couldn't find any CPU information, ignore this event */
                 return;
             }
-            Integer cpu = (Integer) cpuObj;
 
             /*
              * Fields: string prev_comm, int32 prev_tid, int32 prev_prio, int64
index d3197ff64584c4d1f3df1df9b380fa51b5470ce6..21f84838f7eab0c66f3eb8d05a16414fcdc51815 100644 (file)
@@ -36,12 +36,11 @@ public final class KernelTidAspect extends LinuxTidAspect {
     @Override
     public @Nullable Integer resolve(ITmfEvent event) {
         /* Find the CPU this event is run on */
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(),
+        Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(),
                 TmfCpuAspect.class, event);
-        if (cpuObj == null) {
+        if (cpu == null) {
             return null;
         }
-        Integer cpu = (Integer) cpuObj;
 
         /* Find the analysis module for the trace */
         KernelAnalysisModule analysis = TmfTraceUtils.getAnalysisModuleOfClass(event.getTrace(),
index 8eb5df45a5d2fc997dee40f9d306699595f1d8aa..e6d5c9e3d3707e9ecf16a6f3cb3ee2b04f9ca81b 100644 (file)
@@ -153,12 +153,11 @@ public class KernelStateProvider extends AbstractTmfStateProvider {
             return;
         }
 
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
+        Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+        if (cpu == null) {
             /* We couldn't find any CPU information, ignore this event */
             return;
         }
-        Integer cpu = (Integer) cpuObj;
 
         final String eventName = event.getName();
         final long ts = event.getTimestamp().getValue();
index d41005f114c266f9991518c4fd31b21e5794529a..d742dcae5706718353b88474e5187ec4e75ad516 100644 (file)
@@ -10,6 +10,7 @@
 package org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.handlers;
 
 import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
 import org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.building.LttngKernelExecGraphProvider;
 import org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.building.LttngKernelExecGraphProvider.Context;
 import org.eclipse.tracecompass.internal.lttng2.kernel.core.analysis.graph.model.LttngInterruptContext;
@@ -56,11 +57,7 @@ public class EventContextHandler extends BaseHandler {
     }
 
     private void pushInterruptContext(ITmfEvent event, Context ctx) {
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
-            throw new NullPointerException();
-        }
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         LttngSystemModel system = getProvider().getSystem();
 
         LttngInterruptContext interruptCtx = new LttngInterruptContext(event, ctx);
@@ -69,11 +66,7 @@ public class EventContextHandler extends BaseHandler {
     }
 
     private void popInterruptContext(ITmfEvent event, Context ctx) {
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
-            throw new NullPointerException();
-        }
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         LttngSystemModel system = getProvider().getSystem();
 
         /* TODO: add a warning bookmark if the interrupt context is not coherent */
index 4dcd187944a0f3afd19f1a35ac498ac39f135aff..bda64f932a58d1f0becc2b613335dcf9302ddee8 100644 (file)
@@ -221,11 +221,7 @@ public class TraceEventHandlerExecutionGraph extends BaseHandler {
     private void handleSchedWakeup(ITmfEvent event) {
         TmfGraph graph = NonNullUtils.checkNotNull(getProvider().getAssignedGraph());
         String host = event.getTrace().getHostId();
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
-            throw new NullPointerException();
-        }
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         LttngEventLayout eventLayout = getProvider().getEventLayout();
         LttngSystemModel system = getProvider().getSystem();
 
@@ -367,11 +363,7 @@ public class TraceEventHandlerExecutionGraph extends BaseHandler {
     }
 
     private void handleInetSockLocalIn(ITmfEvent event) {
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
-            throw new NullPointerException();
-        }
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         String host = event.getTrace().getHostId();
         LttngSystemModel system = getProvider().getSystem();
 
@@ -387,8 +379,7 @@ public class TraceEventHandlerExecutionGraph extends BaseHandler {
     }
 
     private void handleInetSockLocalOut(ITmfEvent event) {
-        Object cpuObj = NonNullUtils.checkNotNull(TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         String host = event.getTrace().getHostId();
         LttngSystemModel system = getProvider().getSystem();
 
@@ -415,8 +406,7 @@ public class TraceEventHandlerExecutionGraph extends BaseHandler {
         TmfGraph graph = NonNullUtils.checkNotNull(getProvider().getAssignedGraph());
         Long vec = EventField.getLong(event, eventLayout.fieldVec());
         if (vec == LinuxValues.SOFTIRQ_NET_RX || vec == LinuxValues.SOFTIRQ_NET_TX) {
-            Object cpuObj = NonNullUtils.checkNotNull(TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
-            Integer cpu = (Integer) cpuObj;
+            Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
             LttngWorker k = getOrCreateKernelWorker(event, cpu);
             graph.add(k, new TmfVertex(event.getTimestamp().getValue()));
         }
index 879c7af26f2aa49a88cf54ce646e0e5e385af44e..96b5a06882a9ee938265dde73f29a2d82bc26cfb 100644 (file)
@@ -69,11 +69,7 @@ public class TraceEventHandlerSched extends BaseHandler {
     }
 
     private void handleSchedSwitch(ITmfEvent event) {
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
-            throw new NullPointerException();
-        }
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         LttngEventLayout eventLayout = getProvider().getEventLayout();
         LttngSystemModel system = getProvider().getSystem();
 
@@ -132,11 +128,7 @@ public class TraceEventHandlerSched extends BaseHandler {
 
     private void handleSchedWakeup(ITmfEvent event) {
         String host = event.getTrace().getHostId();
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
-            throw new NullPointerException();
-        }
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         LttngEventLayout eventLayout = getProvider().getEventLayout();
         LttngSystemModel system = getProvider().getSystem();
 
@@ -180,11 +172,7 @@ public class TraceEventHandlerSched extends BaseHandler {
 
     private void handleSchedProcessExec(ITmfEvent event) {
         String host = event.getTrace().getHostId();
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
-            throw new NullPointerException();
-        }
-        Integer cpu = (Integer) cpuObj;
+        Integer cpu = NonNullUtils.checkNotNull(TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event));
         LttngEventLayout eventLayout = getProvider().getEventLayout();
         LttngSystemModel system = getProvider().getSystem();
 
index c39cd65f87e26f4cac86dc81f2a999aa366234c2..525631b7c651065d33a4376f5bfcc1b849f52830 100644 (file)
@@ -209,12 +209,11 @@ public class QemuKvmVmModel implements IVirtualMachineModel {
         final long ts = event.getTimestamp().getValue();
         final String hostId = event.getTrace().getHostId();
 
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
+        final Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+        if (cpu == null) {
             /* We couldn't find any CPU information, ignore this event */
             return;
         }
-        Integer cpu = (Integer) cpuObj;
 
         /* Find a virtual machine with the vm uid payload value */
         ITmfEventField data = content.getField(QemuKvmStrings.VM_UID_PAYLOAD);
index f89e267bc7cf7eb50a4c70c50032aa71669c2a78..5652bca0c6a44dd83e1580ca59f50233fab43b56 100644 (file)
@@ -219,15 +219,14 @@ public class VirtualMachineStateProvider extends AbstractTmfStateProvider {
 
                 if (host.isGuest()) {
                     /* Get the event's CPU */
-                    Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-                    if (cpuObj == null) {
+                    Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+                    if (cpu == null) {
                         /*
                          * We couldn't find any CPU information, ignore this
                          * event
                          */
                         break;
                     }
-                    Integer cpu = (Integer) cpuObj;
 
                     /*
                      * If sched switch is from a guest, just update the status
@@ -359,12 +358,11 @@ public class VirtualMachineStateProvider extends AbstractTmfStateProvider {
         }
 
         /* Get the CPU the event is running on */
-        Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-        if (cpuObj == null) {
+        Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+        if (cpu == null) {
             /* We couldn't find any CPU information, ignore this event */
             return null;
         }
-        Integer cpu = (Integer) cpuObj;
 
         Integer currentTid = KernelThreadInformationProvider.getThreadOnCpu(module, cpu, ts);
         if (currentTid == null) {
index 5816b9f2d681ffeac4b4a6d62b10b3e87759d807..6116f2f7a639a6753aff21d7ee80d279c6e77f1f 100644 (file)
@@ -235,10 +235,9 @@ public abstract class TmfXmlStateAttribute implements ITmfXmlStateAttribute {
                 }
                 if (name.equals(TmfXmlStrings.CPU)) {
                     /* See if the event advertises a CPU aspect */
-                    Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(
+                    Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(
                             event.getTrace(), TmfCpuAspect.class, event);
-                    if (cpuObj != null) {
-                        Integer cpu = (Integer) cpuObj;
+                    if (cpu != null) {
                         quark = getQuarkRelativeAndAdd(startQuark, cpu.toString());
                     }
                 } else {
index 2d2cbd31ce78993cbbf5b40913470e1214f671fb..d55dc0307b343171e8402bc78cedabd73716d34f 100644 (file)
@@ -263,9 +263,8 @@ public abstract class TmfXmlStateValue implements ITmfXmlStateValue {
         /* Exception for "CPU", returns the source of this event */
         /* FIXME : Nameclash if a eventfield have "cpu" for name. */
         if (fieldName.equals(TmfXmlStrings.CPU)) {
-            Object cpuObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
-            if (cpuObj != null) {
-                Integer cpu = (Integer) cpuObj;
+            Integer cpu = TmfTraceUtils.resolveIntEventAspectOfClassForEvent(event.getTrace(), TmfCpuAspect.class, event);
+            if (cpu != null) {
                 return TmfStateValue.newValueInt(cpu.intValue());
             }
         }
index aa2c038994504809414b5f5f4c32ee548d1c95a6..3cfee8a6771e688c6bff976f2f85d3815ae59827 100644 (file)
@@ -113,6 +113,31 @@ public final class TmfTraceUtils {
         return null;
     }
 
+    /**
+     * Return the first result of the first aspect that resolves as non null for
+     * the event received in parameter. The result is cast to an Integer if
+     * possible, otherwise null is returned.
+     *
+     * @param trace
+     *            The trace for which you want the event aspects
+     * @param aspectClass
+     *            The class of the aspect(s) to resolve
+     * @param event
+     *            The event for which to get the aspect
+     * @return Integer of the first result of the
+     *         {@link ITmfEventAspect#resolve(ITmfEvent)} that returns non null
+     *         for the event or {@code null} otherwise
+     * @since 2.0
+     */
+    public static @Nullable <T extends ITmfEventAspect> Integer resolveIntEventAspectOfClassForEvent(
+            ITmfTrace trace, Class<T> aspectClass, ITmfEvent event) {
+        Object result = resolveEventAspectOfClassForEvent(trace, aspectClass, event);
+        if (result instanceof Integer) {
+            return (Integer) result;
+        }
+        return null;
+    }
+
     /**
      * Checks for text file.
      *
This page took 0.038331 seconds and 5 git commands to generate.