java/com.sap.sailing.domain/src/com/sap/sailing/domain/maneuverhash/SerializableManeuverCache.java
... ...
@@ -3,5 +3,10 @@ package com.sap.sailing.domain.maneuverhash;
3 3
import java.io.Serializable;
4 4
5 5
public interface SerializableManeuverCache extends ManeuverCache, Serializable {
6
-
6
+ /**
7
+ * Should this serializable maneuver cache maintain a {@link ManeuverRaceFingerprintRegistry}, it won't be serializable.
8
+ * Therefore, instances containing objects of this type must call this method after being de-serialized when they have
9
+ * been wired correctly and have access to the {@link ManeuverRaceFingerprintRegistry}.
10
+ */
11
+ void setManeuverRaceFingerprintRegistry(ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry);
7 12
}
java/com.sap.sailing.domain/src/com/sap/sailing/domain/maneuverhash/impl/ManeuverCacheDelegate.java
... ...
@@ -22,7 +22,7 @@ public class ManeuverCacheDelegate implements SerializableManeuverCache {
22 22
private static final long serialVersionUID = 19872309587435L;
23 23
private final TrackedRaceImpl race;
24 24
private static final Logger logger = Logger.getLogger(ManeuverCacheDelegate.class.getName());
25
- private final ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
25
+ private transient ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
26 26
private volatile transient ManeuverCache cacheToUse;
27 27
28 28
public ManeuverCacheDelegate(TrackedRaceImpl race,
... ...
@@ -43,6 +43,11 @@ public class ManeuverCacheDelegate implements SerializableManeuverCache {
43 43
oos.writeObject(new ManeuversFromDatabase(getAllKnownManeuvers()));
44 44
}
45 45
46
+ @Override
47
+ public void setManeuverRaceFingerprintRegistry(ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
48
+ this.maneuverRaceFingerprintRegistry = maneuverRaceFingerprintRegistry;
49
+ }
50
+
46 51
private Map<Competitor, List<Maneuver>> getAllKnownManeuvers() {
47 52
final Map<Competitor, List<Maneuver>> result = new HashMap<>();
48 53
for (final Competitor competitor : race.getRace().getCompetitors()) {
java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java
... ...
@@ -4450,4 +4450,8 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
4450 4450
public ShortTimeAfterLastHitCache<Competitor, IncrementalManeuverDetector> getManeuverDetectorPerCompetitorCache() {
4451 4451
return maneuverDetectorPerCompetitorCache;
4452 4452
}
4453
+
4454
+ public void setManeuverRaceFingerprintRegistry(ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
4455
+ maneuverCache.setManeuverRaceFingerprintRegistry(maneuverRaceFingerprintRegistry);
4456
+ }
4453 4457
}
java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java
... ...
@@ -3759,6 +3759,7 @@ Replicator {
3759 3759
try {
3760 3760
for (TrackedRace trackedRace : trackedRegatta.getTrackedRaces()) {
3761 3761
((TrackedRaceImpl) trackedRace).setRaceLogResolver(this);
3762
+ ((TrackedRaceImpl) trackedRace).setManeuverRaceFingerprintRegistry(this);
3762 3763
((TrackedRaceImpl) trackedRace).registerRegattaListener();
3763 3764
trackedRace.initializeAfterDeserialization();
3764 3765
}