made tracker stopping after finishing loading a replay race null-safe

This commit is contained in:
Axel Uhl committed 2013-08-13 14:50:47 +02:00
1 parent 72c5113ca0
commit d7ca5c2413
3 files changed
+10 -5

No files matched your search

@@ -96,9 +96,12 @@ public class LeaderboardGroupMasterDataJsonDeserializer implements JsonDeseriali
String name = (String) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_NAME);
String description = (String) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_DESCRIPTION);
boolean displayGroupsReverse = (Boolean) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_DISPLAY_GROUPS_REVERSE);
boolean hasOverallLeaderboard = (Boolean) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_HAS_OVERALL_LEADERBOARD);
ScoringScheme overallLeaderboardScoringScheme = LeaderboardMasterDataJsonDeserializer.deserializeScoringScheme((JSONObject) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_SCORING_SCHEME), domainFactory);
int[] overallLeaderboardResultDiscardingThresholds = LeaderboardMasterDataJsonDeserializer.deserializeResultDesicardingRule((JSONObject) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_DISCARDING_THRESHOLDS));
Boolean hasOverallLeaderboard = (Boolean) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_HAS_OVERALL_LEADERBOARD);
if (hasOverallLeaderboard == null) {
hasOverallLeaderboard = false;
}
ScoringScheme overallLeaderboardScoringScheme = !hasOverallLeaderboard ? null : LeaderboardMasterDataJsonDeserializer.deserializeScoringScheme((JSONObject) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_SCORING_SCHEME), domainFactory);
int[] overallLeaderboardResultDiscardingThresholds = !hasOverallLeaderboard ? null : LeaderboardMasterDataJsonDeserializer.deserializeResultDesicardingRule((JSONObject) object.get(LeaderboardGroupMasterDataJsonSerializer.FIELD_OVERALL_LEADERBOARD_DISCARDING_THRESHOLDS));
return new LeaderboardGroupMasterData(name, description, displayGroupsReverse, hasOverallLeaderboard, overallLeaderboardScoringScheme, overallLeaderboardResultDiscardingThresholds, leaderboards, events, regattas);
}
@@ -100,6 +100,7 @@ public class LeaderboardGroupJsonGetServlet extends AbstractJsonHttpServlet {
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
if (trackedRace != null) {
jsonRaceColumn.put("isTracked", true);
jsonRaceColumn.put("regattaName", trackedRace.getTrackedRegatta().getRegatta().getName());
jsonRaceColumn.put("trackedRaceName", trackedRace.getRace().getName());
jsonRaceColumn.put("hasGpsData", trackedRace.hasGPSData());
jsonRaceColumn.put("hasWindData", trackedRace.hasWindData());
@@ -1234,8 +1234,9 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
InterruptedException {
logger.info("Stopping tracking for " + race + "...");
synchronized (raceTrackersByRegatta) {
final Set<RaceTracker> trackerSet = raceTrackersByRegatta.get(regatta);
if (raceTrackersByRegatta.containsKey(regatta)) {
Iterator<RaceTracker> trackerIter = raceTrackersByRegatta.get(regatta).iterator();
Iterator<RaceTracker> trackerIter = trackerSet.iterator();
while (trackerIter.hasNext()) {
RaceTracker raceTracker = trackerIter.next();
if (raceTracker.getRaces() != null && raceTracker.getRaces().contains(race)) {
@@ -1250,7 +1251,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
}
stopTrackingWind(regatta, race);
// if the last tracked race was removed, confirm that tracking for the entire regatta has stopped
if (raceTrackersByRegatta.get(regatta).isEmpty()) {
if (trackerSet == null || trackerSet.isEmpty()) {
stopTracking(regatta);
}
}