From a5cda4ce2fdeb8b69eb43b6c9ab6e800069484c6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 18 Sep 2015 09:40:09 +0200 Subject: [PATCH] Fixing NPE when de-serializing start of tracking race log event with null start of tracking time --- .../sailing/domain/abstractlog/impl/LogEventComparator.java | 3 ++- .../abstractlog/race/analyzing/impl/LastFlagsFinder.java | 5 +++-- .../racelog/impl/BaseRaceLogEventDeserializer.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java index 11ddcea67cb..b85f09054ac 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java @@ -8,6 +8,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.tracking.impl.TimedComparator; import com.sap.sse.common.Timed; +import com.sap.sse.common.Util; /** * Comparator sorting by pass, then by {@link AbstractLogEventAuthor}, then by {@link RaceLogEvent#getCreatedAt()} @@ -43,7 +44,7 @@ public class LogEventComparator implements Comparator, Serializable { if (result != 0) return result; //compare logical timepoints - result = e1.getLogicalTimePoint().compareTo(e2.getLogicalTimePoint()); + result = Util.compareToWithNull(e1.getLogicalTimePoint(), e2.getLogicalTimePoint(), /* nullIsLess */ false); if (result != 0) return result; //compare ids diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java index 0d25623da77..eaaa81fb4d9 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java @@ -10,6 +10,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util; /** * Analysis returns the most recent {@link RaceLogFlagEvent}s. @@ -42,7 +43,7 @@ public class LastFlagsFinder extends RaceLogAnalyzer> { List result = new ArrayList(); TimePoint logicalTime = flagEvent.getLogicalTimePoint(); - while (flagEvent.getLogicalTimePoint().equals(logicalTime)) { + while (Util.compareToWithNull(flagEvent.getLogicalTimePoint(), logicalTime, /* nullIsLess */ false) == 0) { result.add(flagEvent); flagEvent = getNextFlagEvent(iterator); if (flagEvent == null) { @@ -84,7 +85,7 @@ public class LastFlagsFinder extends RaceLogAnalyzer> { Collections.sort(sortedEvents, new Comparator() { @Override public int compare(RaceLogFlagEvent left, RaceLogFlagEvent right) { - int result = right.getLogicalTimePoint().compareTo(left.getLogicalTimePoint()); + int result = Util.compareToWithNull(right.getLogicalTimePoint(), left.getLogicalTimePoint(), /* nullIsLess */ false); if (result == 0) { result = Boolean.valueOf(right.isDisplayed()).compareTo(left.isDisplayed()); if (result == 0) { diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java index cbd858b9e26..65a7436e45e 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java @@ -61,7 +61,7 @@ public abstract class BaseRaceLogEventDeserializer implements JsonDeserializer