charts: Fix numerical data that can be null
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Tue, 24 Jan 2017 18:34:54 +0000 (13:34 -0500)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Tue, 31 Jan 2017 14:10:30 +0000 (09:10 -0500)
The numerical consumer assumed the data received could not be null, but
it can be null.

If the test predicate passes, null values are mapped to zero.

Change-Id: If819bf29044a207581b36be1d35e846948c20650
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/89466
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
tmf/org.eclipse.tracecompass.tmf.chart.core.tests/src/org/eclipse/tracecompass/tmf/chart/core/tests/consumer/NumericalConsumerTest.java
tmf/org.eclipse.tracecompass.tmf.chart.core/src/org/eclipse/tracecompass/internal/tmf/chart/core/consumer/NumericalConsumer.java

index 0dd0915b570b46044063a668ae61302c22fa8432..e68d3d63e809b67f9c95d955673544971eab48d5 100644 (file)
@@ -70,14 +70,16 @@ public class NumericalConsumerTest {
         IDataChartDescriptor<StubObject, ?> descriptor = fProvider.getDataDescriptor(StubChartProvider.LONG_DESCRIPTOR);
         Predicate<@Nullable Number> predicate = d -> true;
         NumericalConsumer consumer = new NumericalConsumer(INumericalResolver.class.cast(descriptor.getResolver()), predicate);
-        StubObject obj = new StubObject("str", 1, 10L, 10.0);
 
+        StubObject obj = new StubObject("str", 1, 10L, 10.0);
         assertTrue(consumer.test(obj));
         consumer.accept(obj);
         assertEquals(Long.valueOf(10L), consumer.getData().get(0));
 
         obj = new StubObject("str", 1, null, 10.0);
         assertTrue(consumer.test(obj));
+        consumer.accept(obj);
+        assertEquals(Long.valueOf(0L), consumer.getData().get(1));
     }
 
 }
index b8243b363924c38c9f27d580a1fc4b5dd9da1023..e3deebd581ae50bcaa4e0465c606aafa5d1c3ec8 100644 (file)
@@ -9,8 +9,6 @@
 
 package org.eclipse.tracecompass.internal.tmf.chart.core.consumer;
 
-import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -87,7 +85,11 @@ public class NumericalConsumer implements IDataConsumer {
 
     @Override
     public void accept(Object obj) {
-        Number number = checkNotNull(fResolver.getMapper().apply(obj));
+        Number number = fResolver.getMapper().apply(obj);
+
+        if (number == null) {
+            number = fResolver.getZeroValue();
+        }
 
         /* Update the minimum value */
         if (fResolver.getComparator().compare(number, fMin) < 0) {
This page took 0.032329 seconds and 5 git commands to generate.