From: Geneviève Bastien Date: Tue, 24 Jan 2017 18:34:54 +0000 (-0500) Subject: charts: Fix numerical data that can be null X-Git-Url: http://git.efficios.com/?p=deliverable%2Ftracecompass.git;a=commitdiff_plain;h=21e5cf4900cf69f1ca967b21f298ff00f6132519 charts: Fix numerical data that can be null 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 Reviewed-on: https://git.eclipse.org/r/89466 Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam Tested-by: Matthew Khouzam --- diff --git a/tmf/org.eclipse.tracecompass.tmf.chart.core.tests/src/org/eclipse/tracecompass/tmf/chart/core/tests/consumer/NumericalConsumerTest.java b/tmf/org.eclipse.tracecompass.tmf.chart.core.tests/src/org/eclipse/tracecompass/tmf/chart/core/tests/consumer/NumericalConsumerTest.java index 0dd0915b57..e68d3d63e8 100644 --- a/tmf/org.eclipse.tracecompass.tmf.chart.core.tests/src/org/eclipse/tracecompass/tmf/chart/core/tests/consumer/NumericalConsumerTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.chart.core.tests/src/org/eclipse/tracecompass/tmf/chart/core/tests/consumer/NumericalConsumerTest.java @@ -70,14 +70,16 @@ public class NumericalConsumerTest { IDataChartDescriptor 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)); } } diff --git a/tmf/org.eclipse.tracecompass.tmf.chart.core/src/org/eclipse/tracecompass/internal/tmf/chart/core/consumer/NumericalConsumer.java b/tmf/org.eclipse.tracecompass.tmf.chart.core/src/org/eclipse/tracecompass/internal/tmf/chart/core/consumer/NumericalConsumer.java index b8243b3639..e3deebd581 100644 --- a/tmf/org.eclipse.tracecompass.tmf.chart.core/src/org/eclipse/tracecompass/internal/tmf/chart/core/consumer/NumericalConsumer.java +++ b/tmf/org.eclipse.tracecompass.tmf.chart.core/src/org/eclipse/tracecompass/internal/tmf/chart/core/consumer/NumericalConsumer.java @@ -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) {