secured against disappearing legs and the resulting NPEs (bug 794)

This commit is contained in:
Axel Uhl committed 2012-06-19 11:47:28 +02:00
1 parent fe128232d1
commit 3cd358b24a
2 files changed
+5 -1

No files matched your search

@@ -588,7 +588,8 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
@Override
public TrackedLegOfCompetitor getTrackedLeg(Competitor competitor, Leg leg) {
return getTrackedLeg(leg).getTrackedLeg(competitor);
final TrackedLeg trackedLeg = getTrackedLeg(leg);
return trackedLeg == null ? null : trackedLeg.getTrackedLeg(competitor);
}
@Override
@@ -414,6 +414,9 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
if (addLegDetails && trackedRace != null) {
entryDTO.legDetails = new ArrayList<LegEntryDTO>();
for (Leg leg : trackedRace.getRace().getCourse().getLegs()) {
// We loop over a copy of the course's legs; during a course change, legs may become "stale," even with
// regard to the leg/trackedLeg structures inside the tracked race which is updated by the course change
// immediately. Make sure we're tolerant against disappearing legs! See bug 794.
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(competitor, leg);
LegEntryDTO legEntry;
if (trackedLeg != null && trackedLeg.hasStartedLeg(timePoint)) {