re-establish race state start time change listeners in readObject() method of DynamicTrackedRaceImpl

Change-Id: Iafd9bed9fb335e3a08e47fca28d57dc16778aee3
This commit is contained in:
Axel Uhl committed 2016-06-24 09:14:40 +02:00
1 parent 82d309ee7b
commit 71aae73e34
2 files changed
+6 -1

No files matched your search

@@ -140,6 +140,11 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
ois.defaultReadObject();
raceStateBasedStartTimeChangedListener = createRaceStateStartTimeChangeListener();
// the race states are transient, therefore not serialized; they are re-constructed here when asked for;
// the transient raceStateBasedStartTimeChangedListener is re-added here, like it was in attachRaceLog(...)
for (final RaceLog raceLog : attachedRaceLogs.values()) {
getRaceState(raceLog).addChangedListener(raceStateBasedStartTimeChangedListener);
}
listeners = new HashSet<RaceChangeListener>();
logListener = new DynamicTrackedRaceLogListener(this);
courseDesignChangedListeners = new HashSet<>();
@@ -905,7 +905,7 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
* and not {@link Object}.
*/
private final String updateStartOfRaceCacheFieldsMonitor = "";
protected void updateStartOfRaceCacheFields() {
protected void updateStartOfRaceCacheFields() {
synchronized (updateStartOfRaceCacheFieldsMonitor) {
TimePoint newStartTime = null;
TimePoint newStartTimeWithoutInferenceFromStartMarkPassings = null;