fix for bug 4186 (leaderboard cache not invalidated upon race column name change);

the fix introduces a new method on RaceColumnListener for column name
changes; furthermore, synchronization was added to the leaderboard
change listeners collection on AbstractLeaderboardWithCache.leaderboardChangeListeners.

Change-Id: I06457dc256fc3611ed2189a6a7841017cac6b58e
This commit is contained in:
Axel Uhl committed 2017-06-28 10:26:55 +02:00
1 parent c1ae14d786
commit d77bf9827b
13 files changed
+97 -178

No files matched your search

@@ -2,11 +2,10 @@ package com.sap.sailing.server.impl;
import com.sap.sailing.domain.abstractlog.race.RaceLog;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.RaceColumnListener;
import com.sap.sailing.domain.leaderboard.ResultDiscardingRule;
import com.sap.sailing.domain.base.impl.RaceColumnListenerWithDefaultAction;
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
import com.sap.sailing.domain.regattalike.FlexibleLeaderboardAsRegattaLikeIdentifier;
import com.sap.sailing.domain.regattalike.RegattaAsRegattaLikeIdentifier;
@@ -34,7 +33,7 @@ import com.sap.sailing.server.operationaltransformation.RecordRaceLogEventOnRega
* @author Axel Uhl (d043530)
*
*/
public class RaceLogReplicatorAndNotifier implements RaceColumnListener {
public class RaceLogReplicatorAndNotifier implements RaceColumnListenerWithDefaultAction {
private static final long serialVersionUID = 7190510926643574068L;
private final Replicator service;
@@ -73,56 +72,11 @@ public class RaceLogReplicatorAndNotifier implements RaceColumnListener {
return true;
}
/**
* The default action for this {@link RaceColumnListener} is to do nothing.
*/
@Override
public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) {
}
@Override
public void trackedRaceUnlinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) {
}
@Override
public void isMedalRaceChanged(RaceColumn raceColumn, boolean newIsMedalRace) {
}
@Override
public void isFleetsCanRunInParallelChanged(RaceColumn raceColumn, boolean newIsFleetsCanRunInParallel) {
}
@Override
public void isStartsWithZeroScoreChanged(RaceColumn raceColumn, boolean newIsStartsWithZeroScore) {
}
@Override
public void isFirstColumnIsNonDiscardableCarryForwardChanged(RaceColumn raceColumn, boolean firstColumnIsNonDiscardableCarryForward) {
}
@Override
public void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring) {
}
@Override
public void raceColumnAddedToContainer(RaceColumn raceColumn) {
}
@Override
public void raceColumnRemovedFromContainer(RaceColumn raceColumn) {
}
@Override
public void raceColumnMoved(RaceColumn raceColumn, int newIndex) {
}
@Override
public void factorChanged(RaceColumn raceColumn, Double oldFactor, Double newFactor) {
}
@Override
public void competitorDisplayNameChanged(Competitor competitor, String oldDisplayName, String displayName) {
}
@Override
public void resultDiscardingRuleChanged(ResultDiscardingRule oldDiscardingRule, ResultDiscardingRule newDiscardingRule) {
public void defaultAction() {
}
@@ -17,13 +17,12 @@ import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.RaceColumnListener;
import com.sap.sailing.domain.base.impl.RaceColumnListenerWithDefaultAction;
import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.MaxPointsReason;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.ResultDiscardingRule;
import com.sap.sailing.domain.leaderboard.ScoringScheme;
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.RacingEventServiceOperation;
import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPointsReason;
@@ -32,7 +31,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCo
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
public class RaceLogScoringReplicator implements RaceColumnListener {
public class RaceLogScoringReplicator implements RaceColumnListenerWithDefaultAction {
private static final long serialVersionUID = -5958519195756937338L;
@@ -44,58 +43,6 @@ public class RaceLogScoringReplicator implements RaceColumnListener {
this.service = service;
}
@Override
public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) {
}
@Override
public void trackedRaceUnlinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) {
}
@Override
public void isMedalRaceChanged(RaceColumn raceColumn, boolean newIsMedalRace) {
}
@Override
public void isFleetsCanRunInParallelChanged(RaceColumn raceColumn, boolean newIsFleetsCanRunInParallel) {
}
@Override
public void isStartsWithZeroScoreChanged(RaceColumn raceColumn, boolean newIsStartsWithZeroScore) {
}
@Override
public void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring) {
}
@Override
public void isFirstColumnIsNonDiscardableCarryForwardChanged(RaceColumn raceColumn, boolean firstColumnIsNonDiscardableCarryForward) {
}
@Override
public void raceColumnAddedToContainer(RaceColumn raceColumn) {
}
@Override
public void raceColumnRemovedFromContainer(RaceColumn raceColumn) {
}
@Override
public void raceColumnMoved(RaceColumn raceColumn, int newIndex) {
}
@Override
public void factorChanged(RaceColumn raceColumn, Double oldFactor, Double newFactor) {
}
@Override
public void competitorDisplayNameChanged(Competitor competitor, String oldDisplayName, String displayName) {
}
@Override
public void resultDiscardingRuleChanged(ResultDiscardingRule oldDiscardingRule, ResultDiscardingRule newDiscardingRule) {
}
@Override
public void raceLogEventAdded(RaceColumn raceColumn, RaceLogIdentifier raceLogIdentifier, RaceLogEvent event) {
event.accept(new BaseRaceLogEventVisitor() {
@@ -287,4 +234,11 @@ public class RaceLogScoringReplicator implements RaceColumnListener {
return numberOfCompetitorsInRace;
}
/**
* The default action of this {@link RaceColumnListener} is to do nothing.
*/
@Override
public void defaultAction() {
}
}