removed defensive cloning, as settings are defined as immutable, and sideeffects should not be possible

This commit is contained in:
Kai Boernert committed 2017-02-14 10:05:09 +01:00
1 parent cf3cb0931b
commit 86587b1856
17 files changed
+7 -95

No files matched your search

@@ -14,7 +14,7 @@ public class SAPHeaderComponentLifecycle implements ComponentLifecycle<SAPHeader
@Override
public SAPHeaderComponentSettingsDialogComponent getSettingsDialogComponent(SAPHeaderComponentSettings settings) {
return new SAPHeaderComponentSettingsDialogComponent(cloneSettings(settings), stringMessages);
return new SAPHeaderComponentSettingsDialogComponent(settings, stringMessages);
}
@Override
@@ -22,11 +22,6 @@ public class SAPHeaderComponentLifecycle implements ComponentLifecycle<SAPHeader
return new SAPHeaderComponentSettings(defaultTitle);
}
@Override
public SAPHeaderComponentSettings cloneSettings(SAPHeaderComponentSettings settings) {
return new SAPHeaderComponentSettings(settings.getTitle());
}
@Override
public String getLocalizedShortName() {
return "SAP Header";
@@ -57,12 +57,6 @@ public class LeaderboardWithHeaderPerspectiveLifecycle extends AbstractPerspecti
return "LeaderboardWithHeader";
}
@Override
public LeaderboardWithHeaderPerspectiveSettings clonePerspectiveOwnSettings(
LeaderboardWithHeaderPerspectiveSettings settings) {
return new LeaderboardWithHeaderPerspectiveSettings(settings.isLeaderboardAutoZoom(), settings.getLeaderboardZoomFactor());
}
@Override
protected LeaderboardWithHeaderPerspectiveSettings extractOwnGlobalSettings(
LeaderboardWithHeaderPerspectiveSettings settings) {
@@ -12,7 +12,7 @@ public class RaceTimePanelLifecycle implements
@Override
public RaceTimePanelSettingsDialogComponent getSettingsDialogComponent(RaceTimePanelSettings settings) {
return new RaceTimePanelSettingsDialogComponent(cloneSettings(settings), stringMessages);
return new RaceTimePanelSettingsDialogComponent(settings, stringMessages);
}
@Override
@@ -20,11 +20,6 @@ public class RaceTimePanelLifecycle implements
return new RaceTimePanelSettings();
}
@Override
public RaceTimePanelSettings cloneSettings(RaceTimePanelSettings settings) {
return new RaceTimePanelSettings(settings.getRefreshInterval());
}
@Override
public String getLocalizedShortName() {
return "TimePanel";
@@ -21,11 +21,6 @@ public class MediaPlayerLifecycle implements ComponentLifecycle<MediaPlayerSetti
return MediaPlayerSettings.readSettingsFromURL();
}
@Override
public MediaPlayerSettings cloneSettings(MediaPlayerSettings settings) {
return new MediaPlayerSettings(settings.isAutoSelectMedia());
}
@Override
public String getLocalizedShortName() {
return stringMessages.videoComponentShortName();
@@ -747,7 +747,7 @@ public class MediaPlayerManagerComponent extends AbstractComponent<MediaPlayerSe
@Override
public SettingsDialogComponent<MediaPlayerSettings> getSettingsDialogComponent() {
return mediaPlayerLifecycle.getSettingsDialogComponent(mediaPlayerLifecycle.cloneSettings(settings));
return mediaPlayerLifecycle.getSettingsDialogComponent(settings);
}
@Override
@@ -22,11 +22,6 @@ public class MultiCompetitorRaceChartLifecycle implements ComponentLifecycle<Mul
return new MultiCompetitorRaceChartSettings();
}
@Override
public MultiCompetitorRaceChartSettings cloneSettings(MultiCompetitorRaceChartSettings settings) {
return new MultiCompetitorRaceChartSettings(new ChartSettings(settings.getStepSizeInMillis()), settings.getFirstDetailType(), settings.getSecondDetailType());
}
@Override
public String getLocalizedShortName() {
return stringMessages.competitorCharts();
@@ -431,7 +431,7 @@ public class WindChart extends AbstractRaceChart<WindChartSettings> implements R
@Override
public SettingsDialogComponent<WindChartSettings> getSettingsDialogComponent() {
return windChartLifecycle.getSettingsDialogComponent(windChartLifecycle.cloneSettings(settings));
return windChartLifecycle.getSettingsDialogComponent(settings);
}
/**
@@ -20,13 +20,6 @@ public class WindChartLifecycle implements ComponentLifecycle<WindChartSettings,
return new WindChartSettings();
}
@Override
public WindChartSettings cloneSettings(WindChartSettings settings) {
return new WindChartSettings(settings.isShowWindSpeedSeries(), settings.getWindSpeedSourcesToDisplay(),
settings.isShowWindDirectionsSeries(), settings.getWindDirectionSourcesToDisplay(),
settings.getResolutionInMilliseconds());
}
@Override
public String getLocalizedShortName() {
return stringMessages.wind();
@@ -23,11 +23,6 @@ public class RaceMapLifecycle implements ComponentLifecycle<RaceMapSettings, Rac
return new RaceMapSettings();
}
@Override
public RaceMapSettings cloneSettings(RaceMapSettings settings) {
return new RaceMapSettings(settings);
}
@Override
public String getLocalizedShortName() {
return stringMessages.map();
@@ -17,13 +17,6 @@ public abstract class AbstractLeaderboardPerspectiveLifecycle extends AbstractPe
return new LeaderboardPerspectiveOwnSettings();
}
@Override
public LeaderboardPerspectiveOwnSettings clonePerspectiveOwnSettings(LeaderboardPerspectiveOwnSettings settings) {
return new LeaderboardPerspectiveOwnSettings(settings.isShowRaceDetails(), settings.isHideToolbar(),
settings.isAutoExpandLastRaceColumn(), settings.isShowCharts(), settings.isShowOverallLeaderboard(),
settings.isShowSeriesLeaderboards(), settings.getZoomTo());
}
@Override
public SettingsDialogComponent<LeaderboardPerspectiveOwnSettings> getPerspectiveOwnSettingsDialogComponent(
LeaderboardPerspectiveOwnSettings settings) {
@@ -35,20 +35,6 @@ public class LeaderboardPanelLifecycle
.createNewSettingsWithCustomDefaults(new LeaderboardSettings(namesOfRaceColumnsToShow, 1000L));
}
@Override
public LeaderboardSettings cloneSettings(LeaderboardSettings settings) {
LeaderboardSettings clonedSettings = new LeaderboardSettings(settings.getManeuverDetailsToShow(),
settings.getLegDetailsToShow(), settings.getRaceDetailsToShow(), settings.getOverallDetailsToShow(),
settings.getNamesOfRaceColumnsToShow(), settings.getNamesOfRacesToShow(),
settings.getNumberOfLastRacesToShow(), settings.isAutoExpandPreSelectedRace(),
settings.getDelayBetweenAutoAdvancesInMilliseconds(), settings.getNameOfRaceToSort(),
settings.isSortAscending(), settings.isUpdateUponPlayStateChange(),
settings.getActiveRaceColumnSelectionStrategy(), settings.isShowAddedScores(),
settings.isShowOverallColumnWithNumberOfRacesCompletedPerCompetitor(),
settings.isShowCompetitorSailIdColumn(), settings.isShowCompetitorFullNameColumn());
return LeaderboardSettingsFactory.getInstance().keepDefaults(settings, clonedSettings);
}
@Override
public String getLocalizedShortName() {
return stringMessages.leaderboard();
@@ -17,4 +17,5 @@ public class LeaderboardPerspectiveLifecycle extends AbstractLeaderboardPerspect
public boolean hasSettings() {
return true;
}
}
@@ -93,11 +93,6 @@ public class RaceBoardPerspectiveLifecycle extends AbstractPerspectiveLifecycle<
return "RaceBoard";
}
@Override
public RaceBoardPerspectiveSettings clonePerspectiveOwnSettings(RaceBoardPerspectiveSettings settings) {
return new RaceBoardPerspectiveSettings(settings.getActiveCompetitorsFilterSetName(), settings.isShowLeaderboard(), settings.isShowWindChart(), settings.isShowCompetitorsChart(), settings.isCanReplayDuringLiveRaces(), settings.getInitialDurationAfterRaceStartInReplay());
}
@Override
protected RaceBoardPerspectiveSettings extractOwnGlobalSettings(RaceBoardPerspectiveSettings settings) {
return createPerspectiveOwnDefaultSettings();
@@ -16,8 +16,6 @@ public interface ComponentLifecycle<S extends Settings, SDC extends SettingsDial
SDC getSettingsDialogComponent(S settings);
S createDefaultSettings();
S cloneSettings(S settings);
/**
* @return the display name of the component
@@ -116,7 +116,7 @@ public class AbstractComponentContextWithSettingsStorage<L extends ComponentLife
}
SettingsReceiverCallback<S> callback;
while ((callback = settingsReceiverCallbacks.poll()) != null) {
callback.receiveSettings(rootLifecycle.cloneSettings(result));
callback.receiveSettings(result);
}
}
});
@@ -163,7 +163,7 @@ public class AbstractComponentContextWithSettingsStorage<L extends ComponentLife
if (currentDefaultSettings == null) {
throw new IllegalStateException("Settings have not been initialized yet.");
}
return rootLifecycle.cloneSettings(currentDefaultSettings);
return currentDefaultSettings;
}
/**
@@ -44,19 +44,6 @@ public abstract class AbstractPerspectiveLifecycle<PS extends Settings> implemen
return new PerspectiveCompositeSettings<>(perspectiveOwnSettings, createDefaultComponentIdsAndSettings());
}
@Override
public PerspectiveCompositeSettings<PS> cloneSettings(PerspectiveCompositeSettings<PS> settings) {
return new PerspectiveCompositeSettings<>(this.clonePerspectiveOwnSettings(settings.getPerspectiveOwnSettings()), cloneComponentIdsAndSettings(settings));
}
public Map<String, Settings> cloneComponentIdsAndSettings(PerspectiveCompositeSettings<PS> settings) {
Map<String, Settings> componentIdsAndSettings = new HashMap<>();
for (ComponentLifecycle<?,?> componentLifecycle : componentLifecycles) {
componentIdsAndSettings.put(componentLifecycle.getComponentId(), cloneChildComponentSettings(componentLifecycle, settings));
}
return componentIdsAndSettings;
}
public Map<String, Settings> createDefaultComponentIdsAndSettings() {
Map<String, Settings> componentIdsAndSettings = new HashMap<>();
for (ComponentLifecycle<?,?> componentLifecycle : componentLifecycles) {
@@ -80,12 +67,6 @@ public abstract class AbstractPerspectiveLifecycle<PS extends Settings> implemen
throw new IllegalStateException("No componentlivecycle for id " + id + " found");
}
private static<S extends Settings> S cloneChildComponentSettings(ComponentLifecycle<S, ?> childComponentLifecycle, PerspectiveCompositeSettings<?> settings) {
@SuppressWarnings("unchecked")
S childSettings = (S) settings.findSettingsByComponentId(childComponentLifecycle.getComponentId());
return childComponentLifecycle.cloneSettings(childSettings);
}
@Override
public final PerspectiveCompositeSettings<PS> extractContextSettings(PerspectiveCompositeSettings<PS> settings) {
HashMap<String, Settings> settingsPerComponent = new HashMap<>();
@@ -19,12 +19,8 @@ public interface PerspectiveLifecycle<PS extends Settings> extends
PS createPerspectiveOwnDefaultSettings();
PS clonePerspectiveOwnSettings(PS settings);
SettingsDialogComponent<PS> getPerspectiveOwnSettingsDialogComponent(PS settings);
Map<String, Settings> cloneComponentIdsAndSettings(PerspectiveCompositeSettings<PS> settings);
Map<String, Settings> createDefaultComponentIdsAndSettings();
<SS extends Settings> ComponentLifecycle<SS, ?> getLiveCycleForId(String id);