diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java index fefad810f2b..90a7d215fcd 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java @@ -681,4 +681,9 @@ public class MockedTrackedRaceWithStartTimeAndRanks implements TrackedRace { public Iterable getAttachedRaceLogs() { return Collections.emptySet(); } + + @Override + public NavigableSet getUpdatedMarkPassings(Competitor competitor) { + return null; + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java index 798de2d9960..d6ffbc50ecb 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java @@ -1,7 +1,5 @@ package com.sap.sailing.domain.tracking; -import java.util.NavigableSet; - import com.sap.sailing.domain.abstractlog.race.CompetitorResult; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent; @@ -70,12 +68,6 @@ public interface DynamicTrackedRace extends TrackedRace { boolean recordWind(Wind wind, WindSource windSource, boolean applyFilter); void removeWind(Wind wind, WindSource windSource); - - /** - * Returns competitor's mark passings after all calculations. The method uses a lock to block the thread until all - * calculations will be finished. - */ - NavigableSet getUpdatedMarkPassings(Competitor competitor); /** * The raw, updating feed of a single competitor participating in this race diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java index b9f36f9e1aa..650431ab494 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java @@ -434,6 +434,12 @@ public interface TrackedRace extends Serializable, IsManagedByCache getMarkPassings(Competitor competitor); + + /** + * Returns competitor's mark passings after all calculations. The method uses a lock to block the thread until all + * calculations will be finished. + */ + NavigableSet getUpdatedMarkPassings(Competitor competitor); /** * This obtains the course's read lock before asking for the read lock for the markPassings structure. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java index ec3c755ff08..dc1401183da 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java @@ -1177,14 +1177,4 @@ DynamicTrackedRace, GPSTrackListener { }); notifyListeners(track); } - - @Override - public NavigableSet getUpdatedMarkPassings(Competitor competitor) { - markPassingCalculator.lockForRead(); - try { - return getMarkPassings(competitor); - } finally { - markPassingCalculator.unlockForRead(); - } - } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index da48741957d..3c4264ef233 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -709,6 +709,16 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl public NavigableSet getMarkPassings(Competitor competitor) { return markPassingsForCompetitor.get(competitor); } + + @Override + public NavigableSet getUpdatedMarkPassings(Competitor competitor) { + markPassingCalculator.lockForRead(); + try { + return getMarkPassings(competitor); + } finally { + markPassingCalculator.unlockForRead(); + } + } protected NavigableSet getMarkPassingsInOrderAsNavigableSet(Waypoint waypoint) { return markPassingsForWaypoint.get(waypoint); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index e22f8fbcb41..5d463d35864 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -5812,7 +5812,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S public Map getCompetitorMarkPassings(RegattaAndRaceIdentifier race, CompetitorDTO competitorDTO, boolean waitForCalculations) { Map result = new HashMap<>(); - final DynamicTrackedRace trackedRace = (DynamicTrackedRace) getExistingTrackedRace(race); + final TrackedRace trackedRace = getExistingTrackedRace(race); if (trackedRace != null) { Competitor competitor = getCompetitorByIdAsString(trackedRace.getRace().getCompetitors(), competitorDTO.getIdAsString()); Set competitorMarkPassings; diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java index c5be8205189..382602687ce 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java @@ -656,4 +656,9 @@ public class DummyTrackedRace extends TrackedRaceWithWindEssentials { public Iterable getAttachedRaceLogs() { return Collections.emptySet(); } + + @Override + public NavigableSet getUpdatedMarkPassings(Competitor competitor) { + return null; + } }