diff --git a/src/main/java/com/faforever/client/api/FafApiAccessor.java b/src/main/java/com/faforever/client/api/FafApiAccessor.java index 5700d4ecfd..003e49ac49 100644 --- a/src/main/java/com/faforever/client/api/FafApiAccessor.java +++ b/src/main/java/com/faforever/client/api/FafApiAccessor.java @@ -84,7 +84,7 @@ public class FafApiAccessor implements InitializingBean { static final java.util.Map, List> INCLUDES = java.util.Map.ofEntries( java.util.Map.entry(CoopResult.class, List.of("game.playerStats.player")), java.util.Map.entry(Clan.class, List.of("leader", "founder", "memberships", "memberships.player")), - java.util.Map.entry(LeaderboardEntry.class, List.of("player", "leagueLeaderboard")), + java.util.Map.entry(LeaderboardEntry.class, List.of("player", "leaderboard")), java.util.Map.entry(LeaderboardRatingJournal.class, List.of("gamePlayerStats")), java.util.Map.entry(GameReviewsSummary.class, List.of("game", "game.featuredMod", "game.playerStats", "game.playerStats.player", "game.playerStats.ratingChanges", @@ -92,11 +92,11 @@ public class FafApiAccessor implements InitializingBean { java.util.Map.entry(Game.class, List.of("featuredMod", "playerStats", "playerStats.player", "playerStats.ratingChanges", "mapVersion", "mapVersion.map", "mapVersion.map", "reviewsSummary")), - java.util.Map.entry(LeagueSeason.class, List.of("leagueLeaderboard", "league")), + java.util.Map.entry(LeagueSeason.class, List.of("leaderboard", "league")), java.util.Map.entry(LeagueSeasonScore.class, - List.of("leagueSeason", "leagueSeason.leagueLeaderboard", "leagueSeason.league", + List.of("leagueSeason", "leagueSeason.leaderboard", "leagueSeason.league", "leagueSeasonDivisionSubdivision", "leagueSeasonDivisionSubdivision.leagueSeasonDivision")), - java.util.Map.entry(LeagueSeasonDivisionSubdivision.class, List.of("leagueSeasonDivision", "leagueSeasonDivision.leagueSeason")), + java.util.Map.entry(LeagueSeasonDivisionSubdivision.class, List.of("leagueSeasonDivision")), java.util.Map.entry(MapVersion.class, List.of("map", "map.reviewsSummary", "map.author")), java.util.Map.entry(MapReviewsSummary.class, List.of("map.latestVersion", "map.author", "map.reviewsSummary")), java.util.Map.entry(Map.class, List.of("latestVersion", "author", "reviewsSummary")), @@ -105,7 +105,7 @@ public class FafApiAccessor implements InitializingBean { java.util.Map.entry(ModReviewsSummary.class, List.of("mod.latestVersion", "mod.reviewsSummary", "mod.uploader")), java.util.Map.entry(Mod.class, List.of("latestVersion", "reviewsSummary", "uploader")), java.util.Map.entry(ModerationReport.class, List.of("reporter", "lastModerator", "reportedUsers", "game", "game.playerStats", "game.playerStats.player")), - java.util.Map.entry(MatchmakerQueue.class, List.of("leagueLeaderboard")), + java.util.Map.entry(MatchmakerQueue.class, List.of("leaderboard")), java.util.Map.entry(TutorialCategory.class, List.of("tutorials", "tutorials.mapVersion.map", "tutorials.mapVersion.map.latestVersion", "tutorials.mapVersion.map.author")) ); diff --git a/src/main/java/com/faforever/client/avatar/AvatarService.java b/src/main/java/com/faforever/client/avatar/AvatarService.java index cd30aaf677..bdc76bc15e 100644 --- a/src/main/java/com/faforever/client/avatar/AvatarService.java +++ b/src/main/java/com/faforever/client/avatar/AvatarService.java @@ -1,7 +1,6 @@ package com.faforever.client.avatar; import com.faforever.client.mapstruct.AvatarMapper; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.player.PlayerService; import com.faforever.client.remote.AssetService; import com.faforever.client.remote.FafServerAccessor; @@ -36,8 +35,7 @@ public Image loadAvatar(Avatar avatar) { } public CompletableFuture> getAvailableAvatars() { - return fafServerAccessor.getAvailableAvatars() - .thenApply(dto -> avatarMapper.mapDtos(dto, new CycleAvoidingMappingContext())); + return fafServerAccessor.getAvailableAvatars().thenApply(avatarMapper::mapDtos); } public void changeAvatar(Avatar avatar) { diff --git a/src/main/java/com/faforever/client/clan/ClanService.java b/src/main/java/com/faforever/client/clan/ClanService.java index b0ff77e422..d381d87695 100644 --- a/src/main/java/com/faforever/client/clan/ClanService.java +++ b/src/main/java/com/faforever/client/clan/ClanService.java @@ -4,7 +4,6 @@ import com.faforever.client.config.CacheNames; import com.faforever.client.domain.api.Clan; import com.faforever.client.mapstruct.ClanMapper; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.commons.api.elide.ElideNavigator; import com.faforever.commons.api.elide.ElideNavigatorOnCollection; import lombok.RequiredArgsConstructor; @@ -31,8 +30,7 @@ public Mono getClanByTag(String tag) { ElideNavigatorOnCollection navigator = ElideNavigator.of( com.faforever.commons.api.dto.Clan.class).collection().setFilter(qBuilder().string("tag").eq(tag)).pageSize(1); - return fafApiAccessor.getMany(navigator) - .next().map(dto -> clanMapper.map(dto, new CycleAvoidingMappingContext())).cache(); + return fafApiAccessor.getMany(navigator).next().map(clanMapper::map).cache(); } } diff --git a/src/main/java/com/faforever/client/coop/CoopController.java b/src/main/java/com/faforever/client/coop/CoopController.java index c7869ac8ed..086230a905 100644 --- a/src/main/java/com/faforever/client/coop/CoopController.java +++ b/src/main/java/com/faforever/client/coop/CoopController.java @@ -2,7 +2,9 @@ import com.faforever.client.domain.api.CoopMission; import com.faforever.client.domain.api.CoopResult; +import com.faforever.client.domain.api.GamePlayerStats; import com.faforever.client.domain.server.GameInfo; +import com.faforever.client.domain.server.PlayerInfo; import com.faforever.client.fx.ControllerTableCell; import com.faforever.client.fx.FxApplicationThreadExecutor; import com.faforever.client.fx.ImageViewHelper; @@ -132,10 +134,13 @@ protected void onInitialize() { if (newValue.isEmpty()) { return true; } - return coopResultBean.replay().teams() + return coopResultBean.replay() + .teamPlayerStats() .values() .stream() .flatMap(Collection::stream) + .map(GamePlayerStats::player) + .map(PlayerInfo::getUsername) .anyMatch( name -> name.toLowerCase().contains(newValue.toLowerCase())); })); @@ -147,11 +152,16 @@ protected void onInitialize() { playerCountColumn.setCellValueFactory(param -> ObservableConstant.valueOf((param.getValue().playerCount()))); playerCountColumn.setCellFactory(param -> new StringCell<>(String::valueOf)); - playerNamesColumn.setCellValueFactory(param -> ObservableConstant.valueOf(param.getValue().replay().teams().values() - .stream() - .flatMap(Collection::stream) - .collect(Collectors.joining( - i18n.get("textSeparator"))))); + playerNamesColumn.setCellValueFactory(param -> ObservableConstant.valueOf(param.getValue() + .replay() + .teamPlayerStats() + .values() + .stream() + .flatMap(Collection::stream) + .map(GamePlayerStats::player) + .map(PlayerInfo::getUsername) + .collect(Collectors.joining( + i18n.get("textSeparator"))))); playerNamesColumn.setCellFactory(param -> new StringCell<>(Function.identity())); @@ -261,19 +271,11 @@ private void loadLeaderboard() { .collectList() .publishOn(fxApplicationThreadExecutor.asScheduler()) .subscribe(leaderboardUnFilteredList::setAll, throwable -> { - log.warn("Could not load coop leagueLeaderboard", throwable); + log.warn("Could not load coop leaderboard", throwable); notificationService.addImmediateErrorNotification(throwable, "coop.leaderboard.couldNotLoad"); }); } - private Set getAllPlayerNamesFromTeams(CoopResult coopResult) { - return coopResult.replay().teams() - .values() - .stream() - .flatMap(List::stream) - .collect(Collectors.toUnmodifiableSet()); - } - private CoopMission getSelectedMission() { return missionComboBox.getSelectionModel().getSelectedItem(); diff --git a/src/main/java/com/faforever/client/coop/CoopService.java b/src/main/java/com/faforever/client/coop/CoopService.java index 9bf58e4c5f..699b8e5253 100644 --- a/src/main/java/com/faforever/client/coop/CoopService.java +++ b/src/main/java/com/faforever/client/coop/CoopService.java @@ -5,7 +5,6 @@ import com.faforever.client.domain.api.CoopMission; import com.faforever.client.domain.api.CoopResult; import com.faforever.client.mapstruct.CoopMapper; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.commons.api.dto.Game; import com.faforever.commons.api.dto.GamePlayerStats; import com.faforever.commons.api.dto.Player; @@ -37,7 +36,7 @@ public class CoopService { public Flux getMissions() { ElideNavigatorOnCollection navigator = ElideNavigator.of( com.faforever.commons.api.dto.CoopMission.class).collection().pageSize(1000); - return fafApiAccessor.getMany(navigator).map(dto -> coopMapper.map(dto, new CycleAvoidingMappingContext())).cache(); + return fafApiAccessor.getMany(navigator).map(coopMapper::map).cache(); } @Cacheable(value = CacheNames.COOP_LEADERBOARD, sync = true) @@ -56,8 +55,7 @@ public Flux getLeaderboard(CoopMission mission, int numberOfPlayers) .pageSize(1000); return fafApiAccessor.getMany(navigator) .distinct(this::getAllPlayerNamesFromTeams) - .index( - (index, dto) -> coopMapper.map(dto, index.intValue(), new CycleAvoidingMappingContext())) + .index((index, dto) -> coopMapper.map(dto, index.intValue())) .cache(); } diff --git a/src/main/java/com/faforever/client/domain/api/Division.java b/src/main/java/com/faforever/client/domain/api/Division.java index 2565137835..b223dbb52d 100644 --- a/src/main/java/com/faforever/client/domain/api/Division.java +++ b/src/main/java/com/faforever/client/domain/api/Division.java @@ -1,5 +1,5 @@ package com.faforever.client.domain.api; public record Division( - Integer id, String descriptionKey, int index, String nameKey, LeagueSeason leagueSeason + Integer id, String descriptionKey, int index, String nameKey ) {} diff --git a/src/main/java/com/faforever/client/domain/api/GamePlayerStats.java b/src/main/java/com/faforever/client/domain/api/GamePlayerStats.java index 8ff09e7e73..bd9b65042e 100644 --- a/src/main/java/com/faforever/client/domain/api/GamePlayerStats.java +++ b/src/main/java/com/faforever/client/domain/api/GamePlayerStats.java @@ -3,13 +3,11 @@ import com.faforever.client.domain.server.PlayerInfo; import com.faforever.commons.api.dto.Faction; -import java.time.OffsetDateTime; import java.util.List; public record GamePlayerStats( PlayerInfo player, byte score, byte team, - Faction faction, - OffsetDateTime scoreTime, Replay game, List leaderboardRatingJournals + Faction faction, List leaderboardRatingJournals ) { public GamePlayerStats { diff --git a/src/main/java/com/faforever/client/domain/api/LeaderboardRatingJournal.java b/src/main/java/com/faforever/client/domain/api/LeaderboardRatingJournal.java index 97e50fb690..f39b34bd71 100644 --- a/src/main/java/com/faforever/client/domain/api/LeaderboardRatingJournal.java +++ b/src/main/java/com/faforever/client/domain/api/LeaderboardRatingJournal.java @@ -1,5 +1,7 @@ package com.faforever.client.domain.api; +import java.time.OffsetDateTime; + /** * Represents a leaderboard rating */ @@ -7,6 +9,5 @@ public record LeaderboardRatingJournal( Integer id, Double meanAfter, Double deviationAfter, - Double meanBefore, - Double deviationBefore, GamePlayerStats gamePlayerStats, Leaderboard leaderboard + Double meanBefore, Double deviationBefore, Leaderboard leaderboard, OffsetDateTime scoreTime ) {} diff --git a/src/main/java/com/faforever/client/domain/api/LeagueEntry.java b/src/main/java/com/faforever/client/domain/api/LeagueEntry.java index c57141b515..5f8302bda8 100644 --- a/src/main/java/com/faforever/client/domain/api/LeagueEntry.java +++ b/src/main/java/com/faforever/client/domain/api/LeagueEntry.java @@ -5,7 +5,6 @@ public record LeagueEntry( Integer id, PlayerInfo player, int gamesPlayed, - Integer score, - boolean returningPlayer, LeagueSeason leagueSeason, Subdivision subdivision, + Integer score, boolean returningPlayer, LeagueSeason leagueSeason, Subdivision subdivision, Long rank ) {} diff --git a/src/main/java/com/faforever/client/domain/api/Map.java b/src/main/java/com/faforever/client/domain/api/Map.java index 02a1976706..fdd5cee1a5 100644 --- a/src/main/java/com/faforever/client/domain/api/Map.java +++ b/src/main/java/com/faforever/client/domain/api/Map.java @@ -11,24 +11,20 @@ public record Map( Integer id, - String displayName, - int gamesPlayed, PlayerInfo author, - boolean recommended, - MapType mapType, MapReviewsSummary mapReviewsSummary + String displayName, int gamesPlayed, PlayerInfo author, + boolean recommended, MapType mapType, ReviewsSummary reviewsSummary ) { @RequiredArgsConstructor @Getter public enum MapType { - SKIRMISH("skirmish"), - COOP("campaign_coop"), - OTHER(null); + SKIRMISH("skirmish"), COOP("campaign_coop"), OTHER(null); private static final java.util.Map VALUE_MAP = Arrays.stream(values()) .filter( type -> Objects.nonNull(type.getValue())) .collect(Collectors.toMap(MapType::getValue, - Function.identity())); + Function.identity())); private final String value; diff --git a/src/main/java/com/faforever/client/domain/api/MapReviewsSummary.java b/src/main/java/com/faforever/client/domain/api/MapReviewsSummary.java deleted file mode 100644 index 33f86ce1a8..0000000000 --- a/src/main/java/com/faforever/client/domain/api/MapReviewsSummary.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.faforever.client.domain.api; - -public record MapReviewsSummary( - Integer id, - float positive, - float negative, - float score, - float averageScore, - int numReviews, - float lowerBound, Map subject -) implements ReviewsSummary {} diff --git a/src/main/java/com/faforever/client/domain/api/MapVersionReviewsSummary.java b/src/main/java/com/faforever/client/domain/api/MapVersionReviewsSummary.java deleted file mode 100644 index 1a86318ed5..0000000000 --- a/src/main/java/com/faforever/client/domain/api/MapVersionReviewsSummary.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.faforever.client.domain.api; - -public record MapVersionReviewsSummary( - Integer id, - float positive, - float negative, - float score, - float averageScore, - int numReviews, - float lowerBound, MapVersion subject -) implements ReviewsSummary {} diff --git a/src/main/java/com/faforever/client/domain/api/Mod.java b/src/main/java/com/faforever/client/domain/api/Mod.java index b00a231483..942c80208a 100644 --- a/src/main/java/com/faforever/client/domain/api/Mod.java +++ b/src/main/java/com/faforever/client/domain/api/Mod.java @@ -5,6 +5,5 @@ public record Mod( Integer id, String displayName, - boolean recommended, - String author, PlayerInfo uploader, ModReviewsSummary modReviewsSummary + boolean recommended, String author, PlayerInfo uploader, ReviewsSummary reviewsSummary ) {} diff --git a/src/main/java/com/faforever/client/domain/api/ModReviewsSummary.java b/src/main/java/com/faforever/client/domain/api/ModReviewsSummary.java deleted file mode 100644 index 36703ee7c2..0000000000 --- a/src/main/java/com/faforever/client/domain/api/ModReviewsSummary.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.faforever.client.domain.api; - -public record ModReviewsSummary( - Integer id, - float positive, - float negative, - float score, - float averageScore, - int numReviews, - float lowerBound, Mod subject -) implements ReviewsSummary {} diff --git a/src/main/java/com/faforever/client/domain/api/ModVersionReviewsSummary.java b/src/main/java/com/faforever/client/domain/api/ModVersionReviewsSummary.java deleted file mode 100644 index 34d94a62ee..0000000000 --- a/src/main/java/com/faforever/client/domain/api/ModVersionReviewsSummary.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.faforever.client.domain.api; - -public record ModVersionReviewsSummary( - Integer id, - float positive, - float negative, - float score, - float averageScore, - int numReviews, - float lowerBound, ModVersion subject -) implements ReviewsSummary {} diff --git a/src/main/java/com/faforever/client/domain/api/Replay.java b/src/main/java/com/faforever/client/domain/api/Replay.java index 414ec28db9..6613f0650a 100644 --- a/src/main/java/com/faforever/client/domain/api/Replay.java +++ b/src/main/java/com/faforever/client/domain/api/Replay.java @@ -16,31 +16,28 @@ public record Replay( Integer id, String title, - boolean replayAvailable, - Map> teams, Map> teamPlayerStats, PlayerInfo host, + boolean replayAvailable, Map> teamPlayerStats, PlayerInfo host, OffsetDateTime startTime, OffsetDateTime endTime, FeaturedMod featuredMod, MapVersion mapVersion, Path replayFile, Integer replayTicks, List chatMessages, - List gameOptions, - Validity validity, ReplayReviewsSummary gameReviewsSummary, + List gameOptions, Validity validity, ReviewsSummary reviewsSummary, boolean local ) { public Replay { - teams = teams == null ? Map.of() : Map.copyOf(teams); teamPlayerStats = teamPlayerStats == null ? Map.of() : Map.copyOf(teamPlayerStats); chatMessages = chatMessages == null ? List.of() : List.copyOf(chatMessages); gameOptions = gameOptions == null ? List.of() : List.copyOf(gameOptions); } public int numPlayers() { - return teams().values().stream().mapToInt(Collection::size).sum(); + return teamPlayerStats().values().stream().mapToInt(Collection::size).sum(); } public double averageRating() { - return teamPlayerStats.values() + return teamPlayerStats().values() .stream() .flatMap(Collection::stream).map(GamePlayerStats::leaderboardRatingJournals) .filter(ratingJournals -> !ratingJournals.isEmpty()) @@ -52,9 +49,9 @@ public double averageRating() { } public Replay withReplayDetails(ReplayDetails replayDetails, Path replayFile) { - return new Replay(id(), title(), replayAvailable(), teams(), teamPlayerStats(), host(), startTime(), endTime(), + return new Replay(id(), title(), replayAvailable(), teamPlayerStats(), host(), startTime(), endTime(), featuredMod(), replayDetails.mapVersion(), replayFile, replayTicks(), - replayDetails.chatMessages(), replayDetails.gameOptions(), validity(), gameReviewsSummary(), + replayDetails.chatMessages(), replayDetails.gameOptions(), validity(), reviewsSummary(), local()); } diff --git a/src/main/java/com/faforever/client/domain/api/ReplayReviewsSummary.java b/src/main/java/com/faforever/client/domain/api/ReplayReviewsSummary.java deleted file mode 100644 index 5fb7520d97..0000000000 --- a/src/main/java/com/faforever/client/domain/api/ReplayReviewsSummary.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.faforever.client.domain.api; - -public record ReplayReviewsSummary( - Integer id, - float positive, - float negative, - float score, - float averageScore, - int numReviews, - float lowerBound, Replay subject -) implements ReviewsSummary {} diff --git a/src/main/java/com/faforever/client/domain/api/ReviewsSummary.java b/src/main/java/com/faforever/client/domain/api/ReviewsSummary.java index 264fb4d8e2..d8a7a6d0a1 100644 --- a/src/main/java/com/faforever/client/domain/api/ReviewsSummary.java +++ b/src/main/java/com/faforever/client/domain/api/ReviewsSummary.java @@ -1,18 +1,5 @@ package com.faforever.client.domain.api; -public sealed interface ReviewsSummary permits MapReviewsSummary, MapVersionReviewsSummary, ModReviewsSummary, ModVersionReviewsSummary, ReplayReviewsSummary { - Integer id(); - - float positive(); - - float negative(); - - float score(); - - float averageScore(); - - int numReviews(); - - float lowerBound(); - -} +public record ReviewsSummary( + Integer id, float positive, float negative, float score, float averageScore, int numReviews, float lowerBound +) {} diff --git a/src/main/java/com/faforever/client/domain/api/Subdivision.java b/src/main/java/com/faforever/client/domain/api/Subdivision.java index 4a35e2e123..bdb9caca38 100644 --- a/src/main/java/com/faforever/client/domain/api/Subdivision.java +++ b/src/main/java/com/faforever/client/domain/api/Subdivision.java @@ -8,8 +8,7 @@ public record Subdivision( String descriptionKey, int index, int highestScore, - int maxRating, - int minRating, Division division, + int maxRating, int minRating, Division division, URL imageUrl, URL mediumImageUrl, URL smallImageUrl diff --git a/src/main/java/com/faforever/client/featuredmod/FeaturedModService.java b/src/main/java/com/faforever/client/featuredmod/FeaturedModService.java index 018b755836..8fce157155 100644 --- a/src/main/java/com/faforever/client/featuredmod/FeaturedModService.java +++ b/src/main/java/com/faforever/client/featuredmod/FeaturedModService.java @@ -3,7 +3,6 @@ import com.faforever.client.api.FafApiAccessor; import com.faforever.client.config.CacheNames; import com.faforever.client.domain.api.FeaturedMod; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.FeaturedModMapper; import com.faforever.client.patch.GameUpdater; import com.faforever.commons.api.dto.FeaturedModFile; @@ -66,7 +65,7 @@ public Mono getFeaturedMod(String technicalName) { .next() .switchIfEmpty( Mono.error(new IllegalArgumentException("Not a valid featured mod: " + technicalName))) - .map(dto -> featuredModMapper.map(dto, new CycleAvoidingMappingContext())) + .map(featuredModMapper::map) .cache(); } @@ -82,8 +81,7 @@ public Flux getFeaturedMods() { .addSortingRule( "order", true) .pageSize(50); - return fafApiAccessor.getMany(navigator) - .map(dto -> featuredModMapper.map(dto, new CycleAvoidingMappingContext())) + return fafApiAccessor.getMany(navigator).map(featuredModMapper::map) .cache(); } } diff --git a/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java b/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java index e1713c185e..7b6dfbf067 100644 --- a/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java +++ b/src/main/java/com/faforever/client/leaderboard/LeaderboardController.java @@ -57,7 +57,7 @@ protected void onInitialize() { seasonLabel.textProperty() .bind(leagueSeason.map(seasonBean -> i18n.getOrDefault(seasonBean.nameKey(), - "leagueLeaderboard.season.%s".formatted( + "leaderboard.season.%s".formatted( seasonBean.nameKey()), seasonBean.seasonNumber())) .map(String::toUpperCase) diff --git a/src/main/java/com/faforever/client/leaderboard/LeaderboardService.java b/src/main/java/com/faforever/client/leaderboard/LeaderboardService.java index d9edce670a..697e8e4833 100644 --- a/src/main/java/com/faforever/client/leaderboard/LeaderboardService.java +++ b/src/main/java/com/faforever/client/leaderboard/LeaderboardService.java @@ -10,7 +10,6 @@ import com.faforever.client.domain.api.LeagueSeason; import com.faforever.client.domain.api.Subdivision; import com.faforever.client.domain.server.PlayerInfo; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.LeaderboardMapper; import com.faforever.client.player.PlayerService; import com.faforever.client.remote.AssetService; @@ -54,45 +53,48 @@ public class LeaderboardService { public Flux getLeaderboards() { ElideNavigatorOnCollection navigator = ElideNavigator.of( com.faforever.commons.api.dto.Leaderboard.class).collection(); - return fafApiAccessor.getMany(navigator) - .map(dto -> leaderboardMapper.map(dto, new CycleAvoidingMappingContext())) - .cache(); + return fafApiAccessor.getMany(navigator).map(leaderboardMapper::map).cache(); } @Cacheable(value = CacheNames.LEADERBOARD, sync = true) public Flux getEntriesForPlayer(PlayerInfo player) { ElideNavigatorOnCollection navigator = ElideNavigator.of( - com.faforever.commons.api.dto.LeaderboardEntry.class).collection().setFilter(qBuilder().intNum("player.id") - .eq(player.getId())); - return fafApiAccessor.getMany(navigator) - .map(dto -> leaderboardMapper.map(dto, new CycleAvoidingMappingContext())) - .cache(); + com.faforever.commons.api.dto.LeaderboardEntry.class) + .collection() + .setFilter( + qBuilder().intNum( + "player.id") + .eq(player.getId())); + return fafApiAccessor.getMany(navigator).map(leaderboardMapper::map).cache(); } @Cacheable(value = CacheNames.LEAGUE, sync = true) public Flux getLeagues() { ElideNavigatorOnCollection navigator = ElideNavigator.of( com.faforever.commons.api.dto.League.class).collection().setFilter(qBuilder().bool("enabled").isTrue()); - return fafApiAccessor.getMany(navigator) - .map(dto -> leaderboardMapper.map(dto, new CycleAvoidingMappingContext())) - .cache(); + return fafApiAccessor.getMany(navigator).map(leaderboardMapper::map).cache(); } @Cacheable(value = CacheNames.DIVISIONS, sync = true) public Flux getActiveSeasons() { ElideNavigatorOnCollection navigator = ElideNavigator.of( - com.faforever.commons.api.dto.LeagueSeason.class).collection().setFilter(qBuilder().instant("startDate") - .before(OffsetDateTime.now() - .toInstant(), - false) - .and() - .instant("endDate") - .after(OffsetDateTime.now() - .toInstant(), - false)); - return fafApiAccessor.getMany(navigator) - .map(dto -> leaderboardMapper.map(dto, new CycleAvoidingMappingContext())) - .cache(); + com.faforever.commons.api.dto.LeagueSeason.class) + .collection() + .setFilter( + qBuilder().instant( + "startDate") + .before( + OffsetDateTime.now() + .toInstant(), + false) + .and() + .instant( + "endDate") + .after( + OffsetDateTime.now() + .toInstant(), + false)); + return fafApiAccessor.getMany(navigator).map(leaderboardMapper::map).cache(); } @Cacheable(value = CacheNames.LEAGUE, sync = true) @@ -103,18 +105,18 @@ public Mono getLatestSeason(League league) { .setFilter( qBuilder().intNum( "league.id") - .eq(league.id()) - .and() - .instant("startDate") - .before(OffsetDateTime.now() - .toInstant(), - false)) + .eq(league.id()) + .and() + .instant( + "startDate") + .before( + OffsetDateTime.now() + .toInstant(), + false)) .addSortingRule( "startDate", false); - return fafApiAccessor.getMany(navigator) - .next() - .map(dto -> leaderboardMapper.map(dto, new CycleAvoidingMappingContext())); + return fafApiAccessor.getMany(navigator).next().map(leaderboardMapper::map); } @Cacheable(value = CacheNames.LEAGUE_ENTRIES, sync = true) @@ -127,10 +129,7 @@ public Mono getLeagueEntryForPlayer(PlayerInfo player, LeagueSeason .intNum( "leagueSeason.id") .eq(leagueSeason.id())); - return fafApiAccessor.getMany(navigator) - .next() - .map(dto -> leaderboardMapper.map(dto, player, null, new CycleAvoidingMappingContext())) - .cache(); + return fafApiAccessor.getMany(navigator).next().map(dto -> leaderboardMapper.map(dto, player, null)).cache(); } @Cacheable(value = CacheNames.LEAGUE_ENTRIES, sync = true) @@ -147,8 +146,7 @@ public Mono getHighestActiveLeagueEntryForPlayer(PlayerInfo player) ElideNavigatorOnCollection navigator = ElideNavigator.of(LeagueSeasonScore.class) .collection() .setFilter(filter); - return fafApiAccessor.getMany(navigator) - .map(dto -> leaderboardMapper.map(dto, player, null, new CycleAvoidingMappingContext())) + return fafApiAccessor.getMany(navigator).map(dto -> leaderboardMapper.map(dto, player, null)) .filter(leagueEntryBean -> leagueEntryBean.subdivision() != null) .sort(Comparator.comparing(LeagueEntry::subdivision, Comparator.comparing(Subdivision::division, @@ -167,7 +165,7 @@ public Mono getActiveLeagueEntryForPlayer(PlayerInfo player, String .eq(player.getId()) .and() .string( - "leagueSeason.leagueLeaderboard.technicalName") + "leagueSeason.leaderboard.technicalName") .eq(leaderboardName) .and() .instant( @@ -185,8 +183,7 @@ public Mono getActiveLeagueEntryForPlayer(PlayerInfo player, String false)); return fafApiAccessor.getMany(navigator) .filter(leagueEntry -> leagueEntry.getLeagueSeasonDivisionSubdivision() != null) - .next() - .map(dto -> leaderboardMapper.map(dto, player, null, new CycleAvoidingMappingContext())) + .next().map(dto -> leaderboardMapper.map(dto, player, null)) .cache(); } @@ -202,13 +199,10 @@ public Flux getActiveEntries(LeagueSeason leagueSeason) { false) .addSortingRule( "leagueSeasonDivisionSubdivision.subdivisionIndex", - false) + false).addSortingRule("score", false) .pageSize(fafApiAccessor.getMaxPageSize()); - return fafApiAccessor.getMany(navigator).index() - .collectList() - .flatMapMany(this::mapLeagueEntryDtoToBean) - .cache(); + return fafApiAccessor.getMany(navigator).index().collectList().flatMapMany(this::mapLeagueEntryDtoToBean).cache(); } private Flux mapLeagueEntryDtoToBean(List> seasonScoresWithRank) { @@ -216,12 +210,11 @@ private Flux mapLeagueEntryDtoToBean(List tuple.getT2() .getLoginId(), - Function.identity())); + Function.identity())); return playerService.getPlayersByIds(scoresByPlayer.keySet()).map(player -> { Tuple2 seasonScoreWithRank = scoresByPlayer.get(player.getId()); - return leaderboardMapper.map(seasonScoreWithRank.getT2(), player, seasonScoreWithRank.getT1(), - new CycleAvoidingMappingContext()); - }); + return leaderboardMapper.map(seasonScoreWithRank.getT2(), player, seasonScoreWithRank.getT1()); + }).sort(Comparator.comparing(LeagueEntry::rank)); } @Cacheable(value = CacheNames.DIVISIONS, sync = true) @@ -233,9 +226,7 @@ public Flux getAllSubdivisions(LeagueSeason leagueSeason) { "leagueSeasonDivision.leagueSeason.id") .eq(String.valueOf( leagueSeason.id()))); - return fafApiAccessor.getMany(navigator) - .map(dto -> leaderboardMapper.map(dto, new CycleAvoidingMappingContext())) - .cache(); + return fafApiAccessor.getMany(navigator).map(leaderboardMapper::map).cache(); } @Cacheable(value = CacheNames.DIVISIONS, sync = true) diff --git a/src/main/java/com/faforever/client/leaderboard/LeaderboardsController.java b/src/main/java/com/faforever/client/leaderboard/LeaderboardsController.java index 3ababcc9ed..21cbb8c19d 100644 --- a/src/main/java/com/faforever/client/leaderboard/LeaderboardsController.java +++ b/src/main/java/com/faforever/client/leaderboard/LeaderboardsController.java @@ -62,8 +62,7 @@ protected void onInitialize() { leaderboardService.getLeagues() .map(league -> { - String buttonText = i18n.getOrDefault(league.technicalName(), - String.format("leagueLeaderboard.%s", + String buttonText = i18n.getOrDefault(league.technicalName(), String.format("leaderboard.%s", league.technicalName())); ToggleButton toggleButton = new ToggleButton(buttonText); toggleButton.setToggleGroup(navigation); diff --git a/src/main/java/com/faforever/client/map/MapCardController.java b/src/main/java/com/faforever/client/map/MapCardController.java index 8811fd4d30..c3216beb5f 100644 --- a/src/main/java/com/faforever/client/map/MapCardController.java +++ b/src/main/java/com/faforever/client/map/MapCardController.java @@ -1,8 +1,8 @@ package com.faforever.client.map; import com.faforever.client.domain.api.Map; -import com.faforever.client.domain.api.MapReviewsSummary; import com.faforever.client.domain.api.MapVersion; +import com.faforever.client.domain.api.ReviewsSummary; import com.faforever.client.domain.server.PlayerInfo; import com.faforever.client.fx.ImageViewHelper; import com.faforever.client.fx.JavaFxUtil; @@ -57,25 +57,29 @@ protected void onInitialize() { JavaFxUtil.bindManagedToVisible(installButton, uninstallButton); thumbnailImageView.imageProperty() - .bind(entity.map(mapVersionBean -> mapService.loadPreview(mapVersionBean, PreviewSize.SMALL)) - .flatMap(imageViewHelper::createPlaceholderImageOnErrorObservable) - .when(showing)); + .bind(entity.map(mapVersionBean -> mapService.loadPreview(mapVersionBean, PreviewSize.SMALL)) + .flatMap(imageViewHelper::createPlaceholderImageOnErrorObservable) + .when(showing)); ObservableValue mapObservable = entity.map(MapVersion::map); nameLabel.textProperty().bind(mapObservable.map(Map::displayName).when(showing)); - versionLabel.textProperty().bind(entity.map(MapVersion::version) - .map(ComparableVersion::getCanonical) - .map(version -> i18n.get("versionFormat", version)) - .when(showing)); - authorLabel.textProperty().bind(mapObservable.map(Map::author).flatMap(PlayerInfo::usernameProperty) - .orElse(i18n.get("map.unknownAuthor")) - .when(showing)); + versionLabel.textProperty() + .bind(entity.map(MapVersion::version) + .map(ComparableVersion::getCanonical) + .map(version -> i18n.get("versionFormat", version)) + .when(showing)); + authorLabel.textProperty() + .bind(mapObservable.map(Map::author) + .flatMap(PlayerInfo::usernameProperty) + .orElse(i18n.get("map.unknownAuthor")) + .when(showing)); numberOfPlaysLabel.textProperty().bind(mapObservable.map(Map::gamesPlayed).map(i18n::number).when(showing)); - sizeLabel.textProperty().bind(entity.map(MapVersion::size) - .map(size -> i18n.get("mapPreview.size", size.widthInKm(), size.heightInKm())) - .when(showing)); + sizeLabel.textProperty() + .bind(entity.map(MapVersion::size) + .map(size -> i18n.get("mapPreview.size", size.widthInKm(), size.heightInKm())) + .when(showing)); maxPlayersLabel.textProperty().bind(entity.map(MapVersion::maxPlayers).map(i18n::number).when(showing)); @@ -85,15 +89,14 @@ protected void onInitialize() { installButton.visibleProperty().bind(isOfficialMap.not().and(isMapInstalled.not()).when(showing)); uninstallButton.visibleProperty().bind(isOfficialMap.not().and(isMapInstalled).when(showing)); - numberOfReviewsLabel.textProperty() - .bind(mapObservable.map(Map::mapReviewsSummary) - .map(MapReviewsSummary::numReviews) + numberOfReviewsLabel.textProperty().bind(mapObservable.map(Map::reviewsSummary).map(ReviewsSummary::numReviews) .orElse(0) .map(i18n::number) .when(showing)); - starsController.valueProperty().bind(mapObservable.map(Map::mapReviewsSummary) - .map(reviewsSummary -> reviewsSummary.score() / reviewsSummary.numReviews()) - .when(showing)); + starsController.valueProperty() + .bind(mapObservable.map(Map::reviewsSummary) + .map(reviewsSummary -> reviewsSummary.score() / reviewsSummary.numReviews()) + .when(showing)); } public void onInstallButtonClicked() { diff --git a/src/main/java/com/faforever/client/map/MapService.java b/src/main/java/com/faforever/client/map/MapService.java index 8abfe63c85..e318fbf43d 100644 --- a/src/main/java/com/faforever/client/map/MapService.java +++ b/src/main/java/com/faforever/client/map/MapService.java @@ -15,7 +15,6 @@ import com.faforever.client.fx.JavaFxUtil; import com.faforever.client.i18n.I18n; import com.faforever.client.map.generator.MapGeneratorService; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapMapper; import com.faforever.client.notification.NotificationService; import com.faforever.client.player.PlayerService; @@ -565,9 +564,7 @@ public Mono hideMapVersion(MapVersion map) { mapVersion.setHidden(true); mapVersion.setId(id); ElideNavigatorOnId navigator = ElideNavigator.of(mapVersion); - return fafApiAccessor.patch(navigator, mapVersion) - .then(fafApiAccessor.getOne(navigator)) - .map(dto -> mapMapper.map(dto, new CycleAvoidingMappingContext())); + return fafApiAccessor.patch(navigator, mapVersion).then(fafApiAccessor.getOne(navigator)).map(mapMapper::map); } /** @@ -577,8 +574,7 @@ public Mono findByMapFolderName(String folderName) { ElideNavigatorOnCollection navigator = ElideNavigator.of( com.faforever.commons.api.dto.MapVersion.class).collection().setFilter(qBuilder().string("folderName") .eq(folderName)); - Mono apiMapVersion = fafApiAccessor.getMany(navigator).next().map(dto -> mapMapper.map(dto, - new CycleAvoidingMappingContext())); + Mono apiMapVersion = fafApiAccessor.getMany(navigator).next().map(mapMapper::map); return Mono.justOrEmpty(getMapLocallyFromName(folderName)).switchIfEmpty(apiMapVersion); } @@ -595,8 +591,9 @@ Mono getMapLatestVersion(MapVersion mapVersion) { com.faforever.commons.api.dto.Map.class).collection().setFilter(qBuilder().string("versions.folderName") .eq(folderName)).pageSize(1); return fafApiAccessor.getMany(navigator) - .next().map(com.faforever.commons.api.dto.Map::getLatestVersion) - .map(dto -> mapMapper.map(dto, new CycleAvoidingMappingContext())) + .next() + .map(com.faforever.commons.api.dto.Map::getLatestVersion) + .map(mapMapper::map) .defaultIfEmpty(mapVersion); } @@ -607,9 +604,7 @@ public Mono downloadAllMatchmakerMaps(MatchmakerQueueInfo matchmakerQueue) .setFilter(qBuilder().intNum( "mapPool.matchmakerQueueMapPool.matchmakerQueue.id") .eq(matchmakerQueue.getId())); - return fafApiAccessor.getMany(navigator) - .map(mapPoolAssignment -> mapMapper.mapFromPoolAssignment(mapPoolAssignment, - new CycleAvoidingMappingContext())) + return fafApiAccessor.getMany(navigator).map(mapMapper::mapFromPoolAssignment) .distinct() .filter(mapVersion -> !mapGeneratorService.isGeneratedMap(mapVersion.folderName())) .flatMap( @@ -642,8 +637,7 @@ public Mono, Integer>> getMatchmakerMapsWithPageCount(Ma // The api doesn't support the ne operation so we manually replace it with isnull which rsql does not support String customFilter = ((String) new QBuilder().and(conditions).query(new RSQLVisitor())).replace("ex", "isnull"); Flux matchmakerMapsFlux = fafApiAccessor.getMany(navigator, customFilter) - .map(mapPoolAssignment -> mapMapper.mapFromPoolAssignment( - mapPoolAssignment, new CycleAvoidingMappingContext())) + .map(mapMapper::mapFromPoolAssignment) .distinct() .sort( Comparator.nullsLast(Comparator.comparing(MapVersion::size)) @@ -683,9 +677,7 @@ public Mono, Integer>> getOwnedMapsWithPageCount(int cou .getId()))) .pageNumber(page) .pageSize(count); - return fafApiAccessor.getManyWithPageCount(navigator) - .map(tuple -> tuple.mapT1( - mapVersions -> mapMapper.mapVersionDtos(mapVersions, new CycleAvoidingMappingContext()))); + return fafApiAccessor.getManyWithPageCount(navigator).map(tuple -> tuple.mapT1(mapMapper::mapVersionDtos)); } @Cacheable(value = CacheNames.MAPS, sync = true) @@ -738,8 +730,8 @@ private Mono, Integer>> getMapPage( navigator.pageNumber(page).pageSize(count); return fafApiAccessor.getManyWithPageCount(navigator, customFilter) .map(tuple -> tuple.mapT1(maps -> maps.stream() - .map(dto -> mapMapper.map(dto.getLatestVersion(), - new CycleAvoidingMappingContext())) + .map(com.faforever.commons.api.dto.Map::getLatestVersion) + .map(mapMapper::map) .toList())); } } diff --git a/src/main/java/com/faforever/client/mapstruct/AvatarMapper.java b/src/main/java/com/faforever/client/mapstruct/AvatarMapper.java index dcd5470715..0186510f6b 100644 --- a/src/main/java/com/faforever/client/mapstruct/AvatarMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/AvatarMapper.java @@ -2,7 +2,6 @@ import com.faforever.client.avatar.Avatar; import com.faforever.commons.lobby.Player; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -12,12 +11,12 @@ public interface AvatarMapper { @Mapping(target = "description", source = "tooltip") - Avatar map(com.faforever.commons.api.dto.Avatar dto, @Context CycleAvoidingMappingContext context); + Avatar map(com.faforever.commons.api.dto.Avatar dto); @Mapping(target = "tooltip", source = "description") - com.faforever.commons.api.dto.Avatar map(Avatar bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.Avatar map(Avatar bean); - Avatar map(Player.Avatar dto, @Context CycleAvoidingMappingContext context); + Avatar map(Player.Avatar dto); - List mapDtos(List dtos, @Context CycleAvoidingMappingContext context); + List mapDtos(List dtos); } diff --git a/src/main/java/com/faforever/client/mapstruct/ClanMapper.java b/src/main/java/com/faforever/client/mapstruct/ClanMapper.java index bec0c29015..9b6c0eb338 100644 --- a/src/main/java/com/faforever/client/mapstruct/ClanMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/ClanMapper.java @@ -3,7 +3,6 @@ import com.faforever.client.domain.api.Clan; import com.faforever.commons.api.dto.ClanMembership; import com.faforever.commons.api.dto.Player; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.springframework.beans.factory.annotation.Autowired; @@ -18,21 +17,21 @@ public abstract class ClanMapper { private PlayerMapper playerMapper; @Mapping(target = "members", source = "memberships") - public abstract Clan map(com.faforever.commons.api.dto.Clan dto, @Context CycleAvoidingMappingContext context); + public abstract Clan map(com.faforever.commons.api.dto.Clan dto); @Mapping(target = "memberships", source = "bean") - public abstract com.faforever.commons.api.dto.Clan map(Clan bean, @Context CycleAvoidingMappingContext context); + public abstract com.faforever.commons.api.dto.Clan map(Clan bean); - public Player map(ClanMembership dto, @Context CycleAvoidingMappingContext context) { - return dto.getPlayer(); + public Player map(ClanMembership dto) { + return dto == null ? null : dto.getPlayer(); } - public List mapMembership(Clan bean, @Context CycleAvoidingMappingContext context) { - com.faforever.commons.api.dto.Clan clan = map(bean, context); + public List mapMembership(Clan bean) { + com.faforever.commons.api.dto.Clan clan = map(bean); List memberships = new ArrayList<>(); bean.members() .forEach(playerBean -> memberships.add( - new ClanMembership().setClan(clan).setPlayer(playerMapper.map(playerBean, context)))); + new ClanMembership().setClan(clan).setPlayer(playerMapper.map(playerBean)))); return memberships; } } \ No newline at end of file diff --git a/src/main/java/com/faforever/client/mapstruct/CoopMapper.java b/src/main/java/com/faforever/client/mapstruct/CoopMapper.java index 63bf21b443..9a2056f825 100644 --- a/src/main/java/com/faforever/client/mapstruct/CoopMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/CoopMapper.java @@ -2,7 +2,6 @@ import com.faforever.client.domain.api.CoopMission; import com.faforever.client.domain.api.CoopResult; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -10,17 +9,16 @@ public interface CoopMapper { @Mapping(target = "mapFolderName", source = "folderName") - CoopMission map(com.faforever.commons.api.dto.CoopMission dto, @Context CycleAvoidingMappingContext context); + CoopMission map(com.faforever.commons.api.dto.CoopMission dto); @Mapping(target = "folderName", source = "mapFolderName") - com.faforever.commons.api.dto.CoopMission map(CoopMission bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.CoopMission map(CoopMission bean); @Mapping(target = "replay", source = "dto.game") @Mapping(target = "ranking", source = "ranking") @Mapping(target = ".", source = "dto") - CoopResult map(com.faforever.commons.api.dto.CoopResult dto, int ranking, - @Context CycleAvoidingMappingContext context); + CoopResult map(com.faforever.commons.api.dto.CoopResult dto, int ranking); @Mapping(target = "game", source = "replay") - com.faforever.commons.api.dto.CoopResult map(CoopResult bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.CoopResult map(CoopResult bean); } \ No newline at end of file diff --git a/src/main/java/com/faforever/client/mapstruct/CycleAvoidingMappingContext.java b/src/main/java/com/faforever/client/mapstruct/CycleAvoidingMappingContext.java deleted file mode 100644 index 0efe683ad5..0000000000 --- a/src/main/java/com/faforever/client/mapstruct/CycleAvoidingMappingContext.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright 2012-2017 Gunnar Morling (http://www.gunnarmorling.de/) - * and/or other contributors as indicated by the @authors tag. See the - * copyright.txt file in the distribution for a full listing of all - * contributors. - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.faforever.client.mapstruct; - -import org.mapstruct.BeforeMapping; -import org.mapstruct.Context; -import org.mapstruct.MappingTarget; - -import java.util.IdentityHashMap; -import java.util.Map; - -/** - * A type to be used as {@link Context} parameter to track cycles in graphs. - *

- * Depending on the actual use case, the two methods below could also be changed to only accept certain argument types, - * e.g. base classes of graph nodes, avoiding the need to capture any other objects that wouldn't necessarily result in - * cycles. - * - * @author Andreas Gudian - */ -@SuppressWarnings("unchecked") -public class CycleAvoidingMappingContext { - private final Map knownInstances = new IdentityHashMap<>(); - - @BeforeMapping - public T getMappedInstance(Object source) { - return (T) knownInstances.get(source); - } - - @BeforeMapping - public void storeMappedInstance(Object source, @MappingTarget Object target) { - knownInstances.put(source, target); - } -} diff --git a/src/main/java/com/faforever/client/mapstruct/FeaturedModMapper.java b/src/main/java/com/faforever/client/mapstruct/FeaturedModMapper.java index 785f2945f6..af3082490b 100644 --- a/src/main/java/com/faforever/client/mapstruct/FeaturedModMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/FeaturedModMapper.java @@ -2,14 +2,13 @@ import com.faforever.client.domain.api.FeaturedMod; import com.faforever.client.domain.api.ModType; -import org.mapstruct.Context; import org.mapstruct.Mapper; @Mapper(imports = ModType.class, config = MapperConfiguration.class) public interface FeaturedModMapper { - FeaturedMod map(com.faforever.commons.api.dto.FeaturedMod dto, @Context CycleAvoidingMappingContext context); + FeaturedMod map(com.faforever.commons.api.dto.FeaturedMod dto); - com.faforever.commons.api.dto.FeaturedMod map(FeaturedMod bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.FeaturedMod map(FeaturedMod bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/LeaderboardMapper.java b/src/main/java/com/faforever/client/mapstruct/LeaderboardMapper.java index 3b97f69d61..9721a7571e 100644 --- a/src/main/java/com/faforever/client/mapstruct/LeaderboardMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/LeaderboardMapper.java @@ -14,7 +14,6 @@ import com.faforever.commons.api.dto.LeagueSeasonDivisionSubdivision; import com.faforever.commons.api.dto.LeagueSeasonScore; import com.faforever.commons.lobby.Player.LeaderboardStats; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -22,65 +21,60 @@ @Mapper(uses = {ReplayMapper.class, PlayerMapper.class, UrlMapper.class}, config = MapperConfiguration.class) public interface LeaderboardMapper { - Leaderboard map(com.faforever.commons.api.dto.Leaderboard dto, @Context CycleAvoidingMappingContext context); + Leaderboard map(com.faforever.commons.api.dto.Leaderboard dto); - com.faforever.commons.api.dto.Leaderboard map(Leaderboard bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.Leaderboard map(Leaderboard bean); @Mapping(target = "gamesPlayed", source = "totalGames") - LeaderboardEntry map(com.faforever.commons.api.dto.LeaderboardEntry dto, - @Context CycleAvoidingMappingContext context); + LeaderboardEntry map(com.faforever.commons.api.dto.LeaderboardEntry dto); @Mapping(target = "totalGames", source = "gamesPlayed") - com.faforever.commons.api.dto.LeaderboardEntry map(LeaderboardEntry bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.LeaderboardEntry map(LeaderboardEntry bean); - LeaderboardRatingJournal map(com.faforever.commons.api.dto.LeaderboardRatingJournal dto, - @Context CycleAvoidingMappingContext context); + @Mapping(target = "scoreTime", source = "gamePlayerStats.scoreTime") + LeaderboardRatingJournal map(com.faforever.commons.api.dto.LeaderboardRatingJournal dto); - com.faforever.commons.api.dto.LeaderboardRatingJournal map(LeaderboardRatingJournal bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.LeaderboardRatingJournal map(LeaderboardRatingJournal bean); - List mapDtoJournals(List dtos, - @Context CycleAvoidingMappingContext context); + List mapDtoJournals(List dtos); - List mapBeanJournals(List beans, - @Context CycleAvoidingMappingContext context); + List mapBeanJournals(List beans); @Mapping(target = "deviation", source = "rating.deviation") @Mapping(target = "mean", source = "rating.mean") LeaderboardRating map(LeaderboardStats dto); - League map(com.faforever.commons.api.dto.League dto, @Context CycleAvoidingMappingContext context); + League map(com.faforever.commons.api.dto.League dto); - com.faforever.commons.api.dto.League map(League bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.League map(League bean); @Mapping(target = "leagueLeaderboard", source = "leagueLeaderboard") - LeagueSeason map(com.faforever.commons.api.dto.LeagueSeason dto, @Context CycleAvoidingMappingContext context); + LeagueSeason map(com.faforever.commons.api.dto.LeagueSeason dto); @Mapping(target = "leagueLeaderboard", source = "leagueLeaderboard") - com.faforever.commons.api.dto.LeagueSeason map(LeagueSeason bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.LeagueSeason map(LeagueSeason bean); @Mapping(target = "index", source = "divisionIndex") - Division map(LeagueSeasonDivision dto, @Context CycleAvoidingMappingContext context); + Division map(LeagueSeasonDivision dto); @Mapping(target = "divisionIndex", source = "index") - LeagueSeasonDivision map(Division bean, @Context CycleAvoidingMappingContext context); + LeagueSeasonDivision map(Division bean); @Mapping(target = "index", source = "subdivisionIndex") @Mapping(target = "division", source = "leagueSeasonDivision") - Subdivision map(LeagueSeasonDivisionSubdivision dto, @Context CycleAvoidingMappingContext context); + Subdivision map(LeagueSeasonDivisionSubdivision dto); @Mapping(target = "subdivisionIndex", source = "index") @Mapping(target = "leagueSeasonDivision", source = "division") - LeagueSeasonDivisionSubdivision map(Subdivision bean, @Context CycleAvoidingMappingContext context); + LeagueSeasonDivisionSubdivision map(Subdivision bean); @Mapping(target = "gamesPlayed", source = "source.gameCount") @Mapping(target = "subdivision", source = "source.leagueSeasonDivisionSubdivision") @Mapping(target = "id", source = "source.id") - LeagueEntry map(LeagueSeasonScore source, PlayerInfo player, Long rank, @Context CycleAvoidingMappingContext context); + LeagueEntry map(LeagueSeasonScore source, PlayerInfo player, Long rank); @Mapping(target = "loginId", source = "player.id") @Mapping(target = "gameCount", source = "gamesPlayed") @Mapping(target = "leagueSeasonDivisionSubdivision", source = "subdivision") - LeagueSeasonScore map(LeagueEntry bean, @Context CycleAvoidingMappingContext context); + LeagueSeasonScore map(LeagueEntry bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/MapMapper.java b/src/main/java/com/faforever/client/mapstruct/MapMapper.java index 70a0f9524b..940b696901 100644 --- a/src/main/java/com/faforever/client/mapstruct/MapMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/MapMapper.java @@ -6,7 +6,6 @@ import com.faforever.client.map.MapSize; import com.faforever.commons.api.dto.MapPoolAssignment; import com.faforever.commons.api.dto.NeroxisGeneratorParams; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -14,20 +13,22 @@ @Mapper(uses = {PlayerMapper.class, ReviewMapper.class}, config = MapperConfiguration.class) public interface MapMapper { - Map map(com.faforever.commons.api.dto.Map dto, @Context CycleAvoidingMappingContext context); - com.faforever.commons.api.dto.Map map(Map bean, @Context CycleAvoidingMappingContext context); + @Mapping(target = "reviewsSummary", source = "mapReviewsSummary") + Map map(com.faforever.commons.api.dto.Map dto); - List mapMapDtos(List dto, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.Map map(Map bean); - List mapMapBeans(List bean, @Context CycleAvoidingMappingContext context); + List mapMapDtos(List dto); + + List mapMapBeans(List bean); @Mapping(target = "size", expression = "java(getMapSize(dto))") - MapVersion map(com.faforever.commons.api.dto.MapVersion dto, @Context CycleAvoidingMappingContext context); + MapVersion map(com.faforever.commons.api.dto.MapVersion dto); @Mapping(target = "width", source = "size.widthInPixels") @Mapping(target = "height", source = "size.heightInPixels") - com.faforever.commons.api.dto.MapVersion map(MapVersion bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.MapVersion map(MapVersion bean); default MapSize getMapSize(com.faforever.commons.api.dto.MapVersion dto) { if (dto.getWidth() == null || dto.getHeight() == null) { @@ -36,11 +37,9 @@ default MapSize getMapSize(com.faforever.commons.api.dto.MapVersion dto) { return new MapSize(dto.getWidth(), dto.getHeight()); } - List mapVersionDtos(List dto, - @Context CycleAvoidingMappingContext context); + List mapVersionDtos(List dto); - List mapVersionBeans(List bean, - @Context CycleAvoidingMappingContext context); + List mapVersionBeans(List bean); default MapType mapStringToMapType(String string) { return MapType.fromValue(string); @@ -50,9 +49,9 @@ default String mapMapTypeToString(MapType mapType) { return mapType.getValue(); } - default MapVersion mapFromPoolAssignment(MapPoolAssignment dto, @Context CycleAvoidingMappingContext context) { + default MapVersion mapFromPoolAssignment(MapPoolAssignment dto) { if (dto.getMapVersion() != null) { - return map(dto.getMapVersion(), context); + return map(dto.getMapVersion()); } else if (dto.getMapParams() instanceof NeroxisGeneratorParams neroxisGeneratorParams) { return map(neroxisGeneratorParams); } else { diff --git a/src/main/java/com/faforever/client/mapstruct/MatchmakerMapper.java b/src/main/java/com/faforever/client/mapstruct/MatchmakerMapper.java index 7838242ec7..3409cf30bb 100644 --- a/src/main/java/com/faforever/client/mapstruct/MatchmakerMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/MatchmakerMapper.java @@ -6,7 +6,6 @@ import com.faforever.client.domain.server.MatchmakerQueueInfo; import com.faforever.commons.api.dto.MatchmakerQueue; import com.faforever.commons.lobby.MatchmakerInfo; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; @@ -15,34 +14,28 @@ @Mapper(uses = {MapMapper.class, LeaderboardMapper.class}, config = MapperConfiguration.class) public interface MatchmakerMapper { - MatchmakerQueueInfo map(MatchmakerQueue dto, @Context CycleAvoidingMappingContext context); + MatchmakerQueueInfo map(MatchmakerQueue dto); - MatchmakerQueue map(MatchmakerQueueInfo bean, @Context CycleAvoidingMappingContext context); + MatchmakerQueue map(MatchmakerQueueInfo bean); @Mapping(target = "playersInQueue", source = "numberOfPlayers") @Mapping(target = "queuePopTime", source = "popTime") @Mapping(target = "technicalName", source = "name") MatchmakerQueueInfo update(MatchmakerInfo.MatchmakerQueue dto, @MappingTarget MatchmakerQueueInfo bean); - MapPoolAssignment map(com.faforever.commons.api.dto.MapPoolAssignment dto, - @Context CycleAvoidingMappingContext context); + MapPoolAssignment map(com.faforever.commons.api.dto.MapPoolAssignment dto); - com.faforever.commons.api.dto.MapPoolAssignment map(MapPoolAssignment bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.MapPoolAssignment map(MapPoolAssignment bean); - List mapAssignmentDtos(List dto, - @Context CycleAvoidingMappingContext context); + List mapAssignmentDtos(List dto); - List mapAssignmentBeans(List bean, - @Context CycleAvoidingMappingContext context); + List mapAssignmentBeans(List bean); - MapPool map(com.faforever.commons.api.dto.MapPool dto, @Context CycleAvoidingMappingContext context); + MapPool map(com.faforever.commons.api.dto.MapPool dto); - com.faforever.commons.api.dto.MapPool map(MapPool bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.MapPool map(MapPool bean); - MatchmakerQueueMapPool map(com.faforever.commons.api.dto.MatchmakerQueueMapPool dto, - @Context CycleAvoidingMappingContext context); + MatchmakerQueueMapPool map(com.faforever.commons.api.dto.MatchmakerQueueMapPool dto); - com.faforever.commons.api.dto.MatchmakerQueueMapPool map(MatchmakerQueueMapPool bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.MatchmakerQueueMapPool map(MatchmakerQueueMapPool bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/ModMapper.java b/src/main/java/com/faforever/client/mapstruct/ModMapper.java index 771fd9f90b..bfeb391187 100644 --- a/src/main/java/com/faforever/client/mapstruct/ModMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/ModMapper.java @@ -3,7 +3,6 @@ import com.faforever.client.domain.api.Mod; import com.faforever.client.domain.api.ModType; import com.faforever.client.domain.api.ModVersion; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -13,32 +12,33 @@ @Mapper(uses = {PlayerMapper.class, ReviewMapper.class}, config = MapperConfiguration.class) public interface ModMapper { - @Mapping(target = "uid", source = "modInfo.uid") - @Mapping(target = "mod.author", source = "modInfo.author") - @Mapping(target = "modType", source = "modInfo.uiOnly") - @Mapping(target = "mod", expression = "java(new ModBean())") - @Mapping(target = "mod.displayName", source = "modInfo.name") - ModVersion map(com.faforever.commons.mod.Mod modInfo, Path basePath); - - default ModType mapModType(boolean isUIOnly) { - return isUIOnly ? ModType.UI : ModType.SIM; - } - - default Path mapImagePath(com.faforever.commons.mod.Mod modInfo, Path basePath) { - return Optional.ofNullable(modInfo.getIcon()) - .map(Paths::get) - .filter(iconPath -> iconPath.getNameCount() > 2) - .map(iconPath -> basePath.resolve(iconPath.subpath(2, iconPath.getNameCount()))) - .orElse(null); - } - - Mod map(com.faforever.commons.api.dto.Mod dto, @Context CycleAvoidingMappingContext context); - - com.faforever.commons.api.dto.Mod map(Mod bean, @Context CycleAvoidingMappingContext context); - - @Mapping(target = "modType", source = "type") - ModVersion map(com.faforever.commons.api.dto.ModVersion dto, @Context CycleAvoidingMappingContext context); - - @Mapping(target = "type", source = "modType") - com.faforever.commons.api.dto.ModVersion map(ModVersion bean, @Context CycleAvoidingMappingContext context); + @Mapping(target = "uid", source = "modInfo.uid") + @Mapping(target = "mod.author", source = "modInfo.author") + @Mapping(target = "modType", source = "modInfo.uiOnly") + @Mapping(target = "mod", expression = "java(new ModBean())") + @Mapping(target = "mod.displayName", source = "modInfo.name") + ModVersion map(com.faforever.commons.mod.Mod modInfo, Path basePath); + + default ModType mapModType(boolean isUIOnly) { + return isUIOnly ? ModType.UI : ModType.SIM; + } + + default Path mapImagePath(com.faforever.commons.mod.Mod modInfo, Path basePath) { + return Optional.ofNullable(modInfo.getIcon()) + .map(Paths::get) + .filter(iconPath -> iconPath.getNameCount() > 2) + .map(iconPath -> basePath.resolve(iconPath.subpath(2, iconPath.getNameCount()))) + .orElse(null); + } + + @Mapping(target = "reviewsSummary", source = "modReviewsSummary") + Mod map(com.faforever.commons.api.dto.Mod dto); + + com.faforever.commons.api.dto.Mod map(Mod bean); + + @Mapping(target = "modType", source = "type") + ModVersion map(com.faforever.commons.api.dto.ModVersion dto); + + @Mapping(target = "type", source = "modType") + com.faforever.commons.api.dto.ModVersion map(ModVersion bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/ModerationReportMapper.java b/src/main/java/com/faforever/client/mapstruct/ModerationReportMapper.java index aac25b1252..e36754112b 100644 --- a/src/main/java/com/faforever/client/mapstruct/ModerationReportMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/ModerationReportMapper.java @@ -1,7 +1,6 @@ package com.faforever.client.mapstruct; import com.faforever.client.domain.api.ModerationReport; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -10,16 +9,12 @@ @Mapper(uses = {PlayerMapper.class, ReplayMapper.class}, config = MapperConfiguration.class) public interface ModerationReportMapper { @Mapping(target = "gameIncidentTimeCode", source = "gameIncidentTimecode") - ModerationReport map(com.faforever.commons.api.dto.ModerationReport dto, - @Context CycleAvoidingMappingContext context); + ModerationReport map(com.faforever.commons.api.dto.ModerationReport dto); @Mapping(target = "gameIncidentTimecode", source = "gameIncidentTimeCode") - com.faforever.commons.api.dto.ModerationReport map(ModerationReport bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.ModerationReport map(ModerationReport bean); - List mapDtos(List dtos, - @Context CycleAvoidingMappingContext context); + List mapDtos(List dtos); - List mapBeans(List beans, - @Context CycleAvoidingMappingContext context); + List mapBeans(List beans); } \ No newline at end of file diff --git a/src/main/java/com/faforever/client/mapstruct/PlayerMapper.java b/src/main/java/com/faforever/client/mapstruct/PlayerMapper.java index 0a9d4f6366..6866fbbc72 100644 --- a/src/main/java/com/faforever/client/mapstruct/PlayerMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/PlayerMapper.java @@ -4,7 +4,6 @@ import com.faforever.client.domain.server.PlayerInfo; import com.faforever.commons.api.dto.Player; import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; @@ -17,34 +16,31 @@ config = MapperConfiguration.class) public interface PlayerMapper { @Mapping(target = "username", source = "login") - PlayerInfo map(Player dto, @Context CycleAvoidingMappingContext context); + PlayerInfo map(Player dto); @Mapping(target = "login", source = "username") - Player map(PlayerInfo bean, @Context CycleAvoidingMappingContext context); + Player map(PlayerInfo bean); - List mapDtos(List dtos, @Context CycleAvoidingMappingContext context); + List mapDtos(List dtos); - List mapBeans(List beans, @Context CycleAvoidingMappingContext context); + List mapBeans(List beans); - Set mapDtos(Set dtos, @Context CycleAvoidingMappingContext context); + Set mapDtos(Set dtos); - Set mapBeans(Set beans, @Context CycleAvoidingMappingContext context); + Set mapBeans(Set beans); - NameRecord map(com.faforever.commons.api.dto.NameRecord dto, @Context CycleAvoidingMappingContext context); + NameRecord map(com.faforever.commons.api.dto.NameRecord dto); - com.faforever.commons.api.dto.NameRecord map(NameRecord bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.NameRecord map(NameRecord bean); - List mapNameDtos(List dtos, - @Context CycleAvoidingMappingContext context); + List mapNameDtos(List dtos); - List mapNameBeans(List beans, - @Context CycleAvoidingMappingContext context); + List mapNameBeans(List beans); @Mapping(target = "username", source = "login") @Mapping(target = "leaderboardRatings", source = "ratings") @Mapping(target = "serverStatus", source = "state") - PlayerInfo update(com.faforever.commons.lobby.Player dto, @MappingTarget PlayerInfo bean, - @Context CycleAvoidingMappingContext context); + PlayerInfo update(com.faforever.commons.lobby.Player dto, @MappingTarget PlayerInfo bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/ReplayMapper.java b/src/main/java/com/faforever/client/mapstruct/ReplayMapper.java index 0df2b5823b..1eab180366 100644 --- a/src/main/java/com/faforever/client/mapstruct/ReplayMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/ReplayMapper.java @@ -13,7 +13,6 @@ import com.faforever.commons.replay.ReplayDataParser; import com.faforever.commons.replay.ReplayMetadata; import org.mapstruct.CollectionMappingStrategy; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Qualifier; @@ -29,7 +28,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; import static com.faforever.client.util.TimeUtil.fromPythonTime; @@ -44,28 +42,15 @@ public interface ReplayMapper { @Mapping(target = "local", ignore = true) @Mapping(target = "title", source = "name") @Mapping(target = "teamPlayerStats", source = "dto", qualifiedBy = MapTeamStats.class) - @Mapping(target = "teams", source = "dto", qualifiedBy = MapTeams.class) - Replay map(Game dto, @Context CycleAvoidingMappingContext context); + @Mapping(target = "reviewsSummary", source = "gameReviewsSummary") + Replay map(Game dto); - @MapTeams - default Map> mapToTeams(Game dto, @Context CycleAvoidingMappingContext context) { - List playerStats = dto.getPlayerStats(); - - if (playerStats == null) { + @MapTeamStats + default Map> mapToTeamPlayerStats(Game dto) { + if (dto == null) { return Map.of(); } - return playerStats.stream() - .filter(gamePlayerStats -> Objects.nonNull(gamePlayerStats.getPlayer())) - .collect(Collectors.groupingBy(gamePlayerStats -> String.valueOf(gamePlayerStats.getTeam()), - Collectors.mapping( - gamePlayerStats -> gamePlayerStats.getPlayer().getLogin(), - Collectors.toList()))); - } - - @MapTeamStats - default Map> mapToTeamPlayerStats(Game dto, - @Context CycleAvoidingMappingContext context) { List playerStats = dto.getPlayerStats(); if (playerStats == null) { @@ -74,9 +59,7 @@ default Map> mapToTeamPlayerStats(Game dto, return playerStats.stream() .collect(Collectors.groupingBy(gamePlayerStats -> String.valueOf(gamePlayerStats.getTeam()), - Collectors.mapping( - gamePlayerStats -> map(gamePlayerStats, context), - Collectors.toList()))); + Collectors.mapping(this::map, Collectors.toList()))); } @Mapping(target = "local", constant = "true") @@ -89,7 +72,6 @@ default Map> mapToTeamPlayerStats(Game dto, @Mapping(target = "startTime", source = "parser", qualifiedBy = MapStartTime.class) @Mapping(target = "endTime", source = "parser", qualifiedBy = MapEndTime.class) @Mapping(target = "teamPlayerStats", source = "parser", qualifiedBy = MapTeamStats.class) - @Mapping(target = "teams", source = "parser", qualifiedBy = MapTeams.class) @Mapping(target = "host", ignore = true) Replay map(ReplayDataParser parser, Path replayFile, FeaturedMod featuredMod, MapVersion mapVersion); @@ -109,17 +91,6 @@ default OffsetDateTime mapEndFromParser(ReplayDataParser parser) { return fromPythonTime(parser.getMetadata().getGameEnd()); } - @MapTeams - default Map> mapTeamsFromParser(ReplayDataParser parser) { - return parser.getArmies() - .values() - .stream() - .filter(armyInfo -> !((boolean) armyInfo.get("Human"))) - .collect(Collectors.groupingBy(armyInfo -> String.valueOf(((Float) armyInfo.get("Team")).intValue()), - Collectors.mapping(armyInfo -> (String) armyInfo.get("PlayerName"), - Collectors.toList()))); - } - @MapTeamStats default HashMap> mapTeamStatsFromParser(ReplayDataParser parser) { HashMap> teams = new HashMap<>(); @@ -137,8 +108,7 @@ default HashMap> mapTeamStatsFromParser(ReplayData null); Float factionFloat = (Float) armyInfo.get("Faction"); Faction faction = Faction.fromFaValue(factionFloat.intValue()); - GamePlayerStats stats = new GamePlayerStats(player, (byte) 0, team, faction, null, null, - List.of(ratingJournal)); + GamePlayerStats stats = new GamePlayerStats(player, (byte) 0, team, faction, List.of(ratingJournal)); teams.computeIfAbsent(teamString, key -> new ArrayList<>()).add(stats); } }); @@ -147,23 +117,17 @@ default HashMap> mapTeamStatsFromParser(ReplayData @Mapping(target = "name", source = "title") @Mapping(target = "playerStats", source = "teamPlayerStats") - Game map(Replay bean, @Context CycleAvoidingMappingContext context); + Game map(Replay bean); default List mapToTeamPlayerStats(Map> teamPlayerStats) { return teamPlayerStats.values().stream().flatMap(Collection::stream).toList(); } - GamePlayerStats map(com.faforever.commons.api.dto.GamePlayerStats dto, @Context CycleAvoidingMappingContext context); - - com.faforever.commons.api.dto.GamePlayerStats map(GamePlayerStats bean, @Context CycleAvoidingMappingContext context); + GamePlayerStats map(com.faforever.commons.api.dto.GamePlayerStats dto); - List map(Collection beans, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.GamePlayerStats map(GamePlayerStats bean); - @Qualifier - @Target(ElementType.METHOD) - @Retention(RetentionPolicy.CLASS) - @interface MapTeams {} + List map(Collection beans); @Qualifier @Target(ElementType.METHOD) diff --git a/src/main/java/com/faforever/client/mapstruct/ReviewMapper.java b/src/main/java/com/faforever/client/mapstruct/ReviewMapper.java index dcffb111cb..f822d0d898 100644 --- a/src/main/java/com/faforever/client/mapstruct/ReviewMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/ReviewMapper.java @@ -1,108 +1,72 @@ package com.faforever.client.mapstruct; -import com.faforever.client.domain.api.MapReviewsSummary; import com.faforever.client.domain.api.MapVersionReview; -import com.faforever.client.domain.api.MapVersionReviewsSummary; -import com.faforever.client.domain.api.ModReviewsSummary; import com.faforever.client.domain.api.ModVersionReview; -import com.faforever.client.domain.api.ModVersionReviewsSummary; import com.faforever.client.domain.api.ReplayReview; -import com.faforever.client.domain.api.ReplayReviewsSummary; import com.faforever.client.domain.api.ReviewBean; +import com.faforever.client.domain.api.ReviewsSummary; import com.faforever.commons.api.dto.GameReview; import com.faforever.commons.api.dto.GameReviewsSummary; import com.faforever.commons.api.dto.Review; -import org.mapstruct.Context; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @Mapper(uses = {ReplayMapper.class, ModMapper.class, MapMapper.class, PlayerMapper.class}, config = MapperConfiguration.class) public interface ReviewMapper { - default ReviewBean map(Review dto, @Context CycleAvoidingMappingContext context) { + default ReviewBean map(Review dto) { return switch (dto) { - case GameReview replayReview -> map(replayReview, context); - case com.faforever.commons.api.dto.MapVersionReview mapReview -> map(mapReview, context); - case com.faforever.commons.api.dto.ModVersionReview modReview -> map(modReview, context); + case GameReview replayReview -> map(replayReview); + case com.faforever.commons.api.dto.MapVersionReview mapReview -> map(mapReview); + case com.faforever.commons.api.dto.ModVersionReview modReview -> map(modReview); default -> throw new UnsupportedOperationException("Cannot map reviews of type: " + dto.getClass()); }; } - default Review map(ReviewBean bean, @Context CycleAvoidingMappingContext context) { + default Review map(ReviewBean bean) { return switch (bean) { - case ReplayReview replayReview -> map(replayReview, context); - case MapVersionReview mapReview -> map(mapReview, context); - case ModVersionReview modReview -> map(modReview, context); + case ReplayReview replayReview -> map(replayReview); + case MapVersionReview mapReview -> map(mapReview); + case ModVersionReview modReview -> map(modReview); }; } @Mapping(target = "subject", source = "game") - ReplayReview map(GameReview dto, @Context CycleAvoidingMappingContext context); + ReplayReview map(GameReview dto); @Mapping(target = "game", source = "subject") - GameReview map(ReplayReview bean, @Context CycleAvoidingMappingContext context); + GameReview map(ReplayReview bean); @Mapping(target = "subject", source = "mapVersion") - MapVersionReview map(com.faforever.commons.api.dto.MapVersionReview dto, - @Context CycleAvoidingMappingContext context); + MapVersionReview map(com.faforever.commons.api.dto.MapVersionReview dto); @Mapping(target = "mapVersion", source = "subject") - com.faforever.commons.api.dto.MapVersionReview map(MapVersionReview bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.MapVersionReview map(MapVersionReview bean); @Mapping(target = "subject", source = "modVersion") - ModVersionReview map(com.faforever.commons.api.dto.ModVersionReview dto, - @Context CycleAvoidingMappingContext context); + ModVersionReview map(com.faforever.commons.api.dto.ModVersionReview dto); @Mapping(target = "modVersion", source = "subject") - com.faforever.commons.api.dto.ModVersionReview map(ModVersionReview bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.ModVersionReview map(ModVersionReview bean); @Mapping(target = "numReviews", source = "reviews") - @Mapping(target = "subject", source = "game") - ReplayReviewsSummary map(GameReviewsSummary dto, @Context CycleAvoidingMappingContext context); - - @Mapping(target = "reviews", source = "numReviews") - @Mapping(target = "game", source = "subject") - GameReviewsSummary map(ReplayReviewsSummary bean, @Context CycleAvoidingMappingContext context); - - @Mapping(target = "numReviews", source = "reviews") - @Mapping(target = "subject", source = "mapVersion") - MapVersionReviewsSummary map(com.faforever.commons.api.dto.MapVersionReviewsSummary dto, - @Context CycleAvoidingMappingContext context); + ReviewsSummary map(GameReviewsSummary dto); @Mapping(target = "reviews", source = "numReviews") - @Mapping(target = "mapVersion", source = "subject") - com.faforever.commons.api.dto.MapVersionReviewsSummary map(MapVersionReviewsSummary bean, - @Context CycleAvoidingMappingContext context); - - @Mapping(target = "numReviews", source = "reviews") - @Mapping(target = "subject", source = "modVersion") - ModVersionReviewsSummary map(com.faforever.commons.api.dto.ModVersionReviewsSummary dto, - @Context CycleAvoidingMappingContext context); - - @Mapping(target = "reviews", source = "numReviews") - @Mapping(target = "modVersion", source = "subject") - com.faforever.commons.api.dto.ModVersionReviewsSummary map(ModVersionReviewsSummary bean, - @Context CycleAvoidingMappingContext context); + @Mapping(target = "game", ignore = true) + GameReviewsSummary mapToGame(ReviewsSummary bean); @Mapping(target = "numReviews", source = "reviews") - @Mapping(target = "subject", source = "map") - MapReviewsSummary map(com.faforever.commons.api.dto.MapReviewsSummary dto, - @Context CycleAvoidingMappingContext context); + ReviewsSummary map(com.faforever.commons.api.dto.MapReviewsSummary dto); @Mapping(target = "reviews", source = "numReviews") - @Mapping(target = "map", source = "subject") - com.faforever.commons.api.dto.MapReviewsSummary map(MapReviewsSummary bean, - @Context CycleAvoidingMappingContext context); + @Mapping(target = "map", ignore = true) + com.faforever.commons.api.dto.MapReviewsSummary mapToMap(ReviewsSummary bean); @Mapping(target = "numReviews", source = "reviews") - @Mapping(target = "subject", source = "mod") - ModReviewsSummary map(com.faforever.commons.api.dto.ModReviewsSummary dto, - @Context CycleAvoidingMappingContext context); + ReviewsSummary map(com.faforever.commons.api.dto.ModReviewsSummary dto); @Mapping(target = "reviews", source = "numReviews") - @Mapping(target = "mod", source = "subject") - com.faforever.commons.api.dto.ModReviewsSummary map(ModReviewsSummary bean, - @Context CycleAvoidingMappingContext context); + @Mapping(target = "mod", ignore = true) + com.faforever.commons.api.dto.ModReviewsSummary mapToMod(ReviewsSummary bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/TournamentMapper.java b/src/main/java/com/faforever/client/mapstruct/TournamentMapper.java index 66f390cd68..946c57fd44 100644 --- a/src/main/java/com/faforever/client/mapstruct/TournamentMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/TournamentMapper.java @@ -1,20 +1,17 @@ package com.faforever.client.mapstruct; import com.faforever.client.domain.api.Tournament; -import org.mapstruct.Context; import org.mapstruct.Mapper; import java.util.List; @Mapper(config = MapperConfiguration.class) public interface TournamentMapper { - Tournament map(com.faforever.commons.api.dto.Tournament dto, @Context CycleAvoidingMappingContext context); + Tournament map(com.faforever.commons.api.dto.Tournament dto); - com.faforever.commons.api.dto.Tournament map(Tournament bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.Tournament map(Tournament bean); - List mapDtos(List dto, - @Context CycleAvoidingMappingContext context); + List mapDtos(List dto); - List mapBeans(List bean, - @Context CycleAvoidingMappingContext context); + List mapBeans(List bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/TutorialMapper.java b/src/main/java/com/faforever/client/mapstruct/TutorialMapper.java index 2d5e8f44a4..a3a0ccc07e 100644 --- a/src/main/java/com/faforever/client/mapstruct/TutorialMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/TutorialMapper.java @@ -2,18 +2,15 @@ import com.faforever.client.domain.api.Tutorial; import com.faforever.client.domain.api.TutorialCategory; -import org.mapstruct.Context; import org.mapstruct.Mapper; @Mapper(uses = {MapMapper.class}, config = MapperConfiguration.class) public interface TutorialMapper { - Tutorial map(com.faforever.commons.api.dto.Tutorial dto, @Context CycleAvoidingMappingContext context); + Tutorial map(com.faforever.commons.api.dto.Tutorial dto); - com.faforever.commons.api.dto.Tutorial map(Tutorial bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.Tutorial map(Tutorial bean); - TutorialCategory map(com.faforever.commons.api.dto.TutorialCategory dto, - @Context CycleAvoidingMappingContext context); + TutorialCategory map(com.faforever.commons.api.dto.TutorialCategory dto); - com.faforever.commons.api.dto.TutorialCategory map(TutorialCategory bean, - @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.TutorialCategory map(TutorialCategory bean); } diff --git a/src/main/java/com/faforever/client/mapstruct/UrlMapper.java b/src/main/java/com/faforever/client/mapstruct/UrlMapper.java index 721e1c1c48..c5cfe39e62 100644 --- a/src/main/java/com/faforever/client/mapstruct/UrlMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/UrlMapper.java @@ -8,6 +8,9 @@ @Mapper(config = MapperConfiguration.class) public interface UrlMapper { default URL map(String string) throws MalformedURLException { + if (string == null) { + return null; + } return new URL(string); } diff --git a/src/main/java/com/faforever/client/mapstruct/VotingMapper.java b/src/main/java/com/faforever/client/mapstruct/VotingMapper.java index 0e3ba3bc79..bb561ba68c 100644 --- a/src/main/java/com/faforever/client/mapstruct/VotingMapper.java +++ b/src/main/java/com/faforever/client/mapstruct/VotingMapper.java @@ -3,20 +3,19 @@ import com.faforever.client.domain.api.VotingChoice; import com.faforever.client.domain.api.VotingQuestion; import com.faforever.client.domain.api.VotingSubject; -import org.mapstruct.Context; import org.mapstruct.Mapper; @Mapper(config = MapperConfiguration.class) public interface VotingMapper { - VotingChoice map(com.faforever.commons.api.dto.VotingChoice dto, @Context CycleAvoidingMappingContext context); + VotingChoice map(com.faforever.commons.api.dto.VotingChoice dto); - com.faforever.commons.api.dto.VotingChoice map(VotingChoice bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.VotingChoice map(VotingChoice bean); - VotingQuestion map(com.faforever.commons.api.dto.VotingQuestion dto, @Context CycleAvoidingMappingContext context); + VotingQuestion map(com.faforever.commons.api.dto.VotingQuestion dto); - com.faforever.commons.api.dto.VotingQuestion map(VotingQuestion bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.VotingQuestion map(VotingQuestion bean); - VotingSubject map(com.faforever.commons.api.dto.VotingSubject dto, @Context CycleAvoidingMappingContext context); + VotingSubject map(com.faforever.commons.api.dto.VotingSubject dto); - com.faforever.commons.api.dto.VotingSubject map(VotingSubject bean, @Context CycleAvoidingMappingContext context); + com.faforever.commons.api.dto.VotingSubject map(VotingSubject bean); } diff --git a/src/main/java/com/faforever/client/mod/ModCardController.java b/src/main/java/com/faforever/client/mod/ModCardController.java index 933d72bfc9..e2e89018cf 100644 --- a/src/main/java/com/faforever/client/mod/ModCardController.java +++ b/src/main/java/com/faforever/client/mod/ModCardController.java @@ -1,9 +1,9 @@ package com.faforever.client.mod; import com.faforever.client.domain.api.Mod; -import com.faforever.client.domain.api.ModReviewsSummary; import com.faforever.client.domain.api.ModType; import com.faforever.client.domain.api.ModVersion; +import com.faforever.client.domain.api.ReviewsSummary; import com.faforever.client.fx.ImageViewHelper; import com.faforever.client.fx.JavaFxUtil; import com.faforever.client.i18n.I18n; @@ -53,13 +53,11 @@ public class ModCardController extends VaultEntityCardController { protected void onInitialize() { JavaFxUtil.bindManagedToVisible(installButton, uninstallButton); ObservableValue modObservable = entity.map(ModVersion::mod); - numberOfReviewsLabel.textProperty() - .bind(modObservable.map(Mod::modReviewsSummary) - .map(ModReviewsSummary::numReviews) + numberOfReviewsLabel.textProperty().bind(modObservable.map(Mod::reviewsSummary).map(ReviewsSummary::numReviews) .orElse(0) .map(i18n::number) .when(showing)); - starsController.valueProperty().bind(modObservable.map(Mod::modReviewsSummary) + starsController.valueProperty().bind(modObservable.map(Mod::reviewsSummary) .map(reviewsSummary -> reviewsSummary.score() / reviewsSummary.numReviews()) .when(showing)); diff --git a/src/main/java/com/faforever/client/mod/ModService.java b/src/main/java/com/faforever/client/mod/ModService.java index d7e483133d..2d1acc937b 100644 --- a/src/main/java/com/faforever/client/mod/ModService.java +++ b/src/main/java/com/faforever/client/mod/ModService.java @@ -8,7 +8,6 @@ import com.faforever.client.fx.PlatformService; import com.faforever.client.game.GamePrefsService; import com.faforever.client.i18n.I18n; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.ModMapper; import com.faforever.client.notification.Action; import com.faforever.client.notification.NotificationService; @@ -217,12 +216,11 @@ public Mono downloadIfNecessary(String uid) { return Mono.empty(); } - return getModVersionByUid(uid).map(dto -> modMapper.map(dto, new CycleAvoidingMappingContext())) - .flatMap(modVersion -> { + return getModVersionByUid(uid).map(modMapper::map).flatMap(modVersion -> { if (modVersion == null) { - throw new IllegalArgumentException("Mod with uid %s could not be found".formatted(uid)); + return Mono.error(new IllegalArgumentException("Mod with uid %s could not be found".formatted(uid))); } - return downloadMod(modVersion.downloadUrl(), null, null); + return downloadMod(modVersion.downloadUrl(), null, null); }); } @@ -240,7 +238,7 @@ public Mono downloadIfNecessary(ModVersion modVersion, @Nullable DoublePro } private Mono downloadMod(URL url, @Nullable DoubleProperty progressProperty, - @Nullable StringProperty titleProperty) { + @Nullable StringProperty titleProperty) { DownloadModTask task = downloadModTaskFactory.getObject(); task.setUrl(url); if (progressProperty != null) { @@ -255,7 +253,7 @@ private Mono downloadMod(URL url, @Nullable DoubleProperty progressPropert public Mono downloadAndEnableMods(Set modUids) { return Mono.when(modUids.stream().map(uid -> downloadIfNecessary(uid).doOnError(throwable -> { - log.warn("Unable to install mod with uid {}", uid); + log.warn("Unable to install mod with uid {}", uid); })).toList()).doOnSuccess(ignored -> tryEnableMods(modUids)); } @@ -307,7 +305,8 @@ public CompletableFuture uninstallMod(ModVersion modVersion) { public Path getPathForMod(ModVersion modVersionToFind) { return pathToMod.entrySet() - .stream().filter(pathModEntry -> pathModEntry.getValue().uid().equals(modVersionToFind.uid())) + .stream() + .filter(pathModEntry -> pathModEntry.getValue().uid().equals(modVersionToFind.uid())) .findFirst() .map(Entry::getKey) .orElse(null); @@ -399,18 +398,16 @@ public Mono> updateAndActivateModVersions(final Collection updateModIfNecessary(ModVersion installedModVersion) { - return getModVersionByUid(installedModVersion.uid()).map( - dto -> modMapper.map(dto.getMod().getLatestVersion(), new CycleAvoidingMappingContext())) - .filter(latestModVersion -> !Objects.equals(latestModVersion, - installedModVersion)) - .flatMap(latestModVersion -> downloadIfNecessary( - latestModVersion).thenReturn(latestModVersion)) - .doOnError(throwable -> log.info( - "Failed fetching info about mod `{}` from the api.", - installedModVersion.mod().displayName(), - throwable)) - .onErrorReturn(installedModVersion) - .defaultIfEmpty(installedModVersion); + return getModVersionByUid(installedModVersion.uid()).map(dto -> modMapper.map(dto.getMod().getLatestVersion())) + .filter(latestModVersion -> !Objects.equals(latestModVersion, + installedModVersion)) + .flatMap(latestModVersion -> downloadIfNecessary( + latestModVersion).thenReturn(latestModVersion)) + .doOnError(throwable -> log.info( + "Failed fetching info about mod `{}` from the api.", + installedModVersion.mod().displayName(), throwable)) + .onErrorReturn(installedModVersion) + .defaultIfEmpty(installedModVersion); } private Mono getModVersionByUid(String uid) { @@ -485,9 +482,7 @@ private Mono, Integer>> getModPage(ElideNavigatorOnColle navigator.pageNumber(page).pageSize(count); return fafApiAccessor.getManyWithPageCount(navigator, customFilter) .map(tuple -> tuple.mapT1(mods -> mods.stream() - .map(Mod::getLatestVersion) - .map(dto -> modMapper.map(dto, - new CycleAvoidingMappingContext())) + .map(Mod::getLatestVersion).map(modMapper::map) .toList())); } } diff --git a/src/main/java/com/faforever/client/player/PlayerInfoWindowController.java b/src/main/java/com/faforever/client/player/PlayerInfoWindowController.java index 2c75fccbe5..cfb510690b 100644 --- a/src/main/java/com/faforever/client/player/PlayerInfoWindowController.java +++ b/src/main/java/com/faforever/client/player/PlayerInfoWindowController.java @@ -267,7 +267,7 @@ private void updateRatingGrids() { leaderboard -> { LeaderboardRating leaderboardRating = player.getLeaderboardRatings() .get( - leaderboard.technicalName()); + leaderboard.technicalName()); if (leaderboardRating != null) { UserLeaderboardInfoController controller = uiService.loadFxml( "theme/user_leaderboard_info.fxml"); @@ -399,8 +399,7 @@ private void plotGamesPlayedChart() { .add(new PieChart.Data(i18n.getOrDefault( leaderboardEntry.leaderboard() .technicalName(), - leaderboardEntry.leaderboard() - .nameKey()), + leaderboardEntry.leaderboard().nameKey()), leaderboardEntry.gamesPlayed()))), throwable -> { log.error("Leaderboard entry could not be read for player: " + player.getUsername(), @@ -487,16 +486,13 @@ public void plotPlayerRatingGraph() { OffsetDateTime afterDate = OffsetDateTime.of(timePeriodComboBox.getValue().getDate(), ZoneOffset.UTC); List> values = ratingData.stream() .filter(ratingJournal -> { - OffsetDateTime scoreTime = ratingJournal.gamePlayerStats() - .scoreTime(); + OffsetDateTime scoreTime = ratingJournal.scoreTime(); return scoreTime != null && scoreTime.isAfter(afterDate); }) - .sorted(Comparator.comparing( - ratingJournal -> ratingJournal.gamePlayerStats() - .scoreTime())) + .sorted( + Comparator.comparing(LeaderboardRatingJournal::scoreTime)) .map(ratingJournal -> new Data<>( - (Number) ratingJournal.gamePlayerStats().scoreTime() - .toEpochSecond(), + (Number) ratingJournal.scoreTime().toEpochSecond(), (Number) RatingUtil.getRating(ratingJournal))) .collect(Collectors.toList()); @@ -563,8 +559,12 @@ public Number fromString(String string) { public void show() { Assert.checkNullIllegalState(ownerWindow, "ownerWindow must be set"); - FxStage fxStage = FxStage.create(userInfoRoot).initOwner(ownerWindow).initModality(Modality.WINDOW_MODAL) - .withSceneFactory(themeService::createScene).allowMinimize(false).apply(); + FxStage fxStage = FxStage.create(userInfoRoot) + .initOwner(ownerWindow) + .initModality(Modality.WINDOW_MODAL) + .withSceneFactory(themeService::createScene) + .allowMinimize(false) + .apply(); Stage stage = fxStage.getStage(); stage.showingProperty().addListener((observable, oldValue, newValue) -> { diff --git a/src/main/java/com/faforever/client/player/PlayerService.java b/src/main/java/com/faforever/client/player/PlayerService.java index 7e45387582..94353958fd 100644 --- a/src/main/java/com/faforever/client/player/PlayerService.java +++ b/src/main/java/com/faforever/client/player/PlayerService.java @@ -5,7 +5,6 @@ import com.faforever.client.domain.server.GameInfo; import com.faforever.client.domain.server.PlayerInfo; import com.faforever.client.fx.FxApplicationThreadExecutor; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.PlayerMapper; import com.faforever.client.remote.FafServerAccessor; import com.faforever.client.user.LoginService; @@ -67,8 +66,7 @@ public void afterPropertiesSet() { .flatMap(player -> Mono.zip(Mono.just(player), Mono.justOrEmpty(playersById.get(player.getId())) .switchIfEmpty(initializePlayer(player)))) .publishOn(fxApplicationThreadExecutor.asScheduler()) - .map(TupleUtils.function((player, playerBean) -> playerMapper.update(player, playerBean, - new CycleAvoidingMappingContext()))) + .map(TupleUtils.function((player, playerBean) -> playerMapper.update(player, playerBean))) .publishOn(Schedulers.single()) .doOnError(throwable -> log.error("Error processing player", throwable)) .retry() @@ -119,9 +117,9 @@ private PlayerInfo createOrUpdateFromOwnPlayer(@NonNull com.faforever.commons.lo playerSubscriptions.computeIfAbsent(newPlayer, ignored -> ConcurrentHashMap.newKeySet()) .add(removeSubscription); playersByName.put(newPlayer.getUsername(), newPlayer); - return playerMapper.update(playerInfo, newPlayer, new CycleAvoidingMappingContext()); + return playerMapper.update(playerInfo, newPlayer); } else { - return playerMapper.update(playerInfo, knownPlayer, new CycleAvoidingMappingContext()); + return playerMapper.update(playerInfo, knownPlayer); } }); } @@ -187,8 +185,7 @@ public Flux getPlayersByIds(Collection playerIds) { .collection() .setFilter(qBuilder().intNum("id") .in(offlineIds)); - return fafApiAccessor.getMany(navigator) - .map(dto -> playerMapper.map(dto, new CycleAvoidingMappingContext())); + return fafApiAccessor.getMany(navigator).map(playerMapper::map); }).concatWithValues(onlinePlayers.toArray(new PlayerInfo[0])); } @@ -198,8 +195,7 @@ public Mono getPlayerByName(String playerName) { .setFilter(qBuilder().string("login").eq(playerName)); Mono apiPlayer = fafApiAccessor.getMany(navigator) - .next() - .map(dto -> playerMapper.map(dto, new CycleAvoidingMappingContext())); + .next().map(playerMapper::map); return Mono.justOrEmpty(getPlayerByNameIfOnline(playerName)).switchIfEmpty(apiPlayer); } @@ -209,8 +205,7 @@ public Flux getPlayerNames(PlayerInfo player) { com.faforever.commons.api.dto.NameRecord.class).collection().setFilter(qBuilder().intNum("player.id") .eq(player.getId())); - return fafApiAccessor.getMany(navigator) - .map(dto -> playerMapper.map(dto, new CycleAvoidingMappingContext())) + return fafApiAccessor.getMany(navigator).map(playerMapper::map) .sort(Comparator.comparing(NameRecord::changeTime)); } diff --git a/src/main/java/com/faforever/client/replay/OnlineReplayVaultController.java b/src/main/java/com/faforever/client/replay/OnlineReplayVaultController.java index 6a9441d52d..8832e47f24 100644 --- a/src/main/java/com/faforever/client/replay/OnlineReplayVaultController.java +++ b/src/main/java/com/faforever/client/replay/OnlineReplayVaultController.java @@ -146,7 +146,7 @@ protected void initSearchController() { .subscribe(featuredModFilterController::setItems); CategoryFilterController leaderboardFilterController = searchController.addCategoryFilter( - "playerStats.ratingChanges.leagueLeaderboard.id", + "playerStats.ratingChanges.leaderboard.id", i18n.get("leaderboard.displayName"), Map.of()); leaderboardService.getLeaderboards() diff --git a/src/main/java/com/faforever/client/replay/ReplayCardController.java b/src/main/java/com/faforever/client/replay/ReplayCardController.java index 23ff822362..22ad45ec9d 100644 --- a/src/main/java/com/faforever/client/replay/ReplayCardController.java +++ b/src/main/java/com/faforever/client/replay/ReplayCardController.java @@ -5,7 +5,7 @@ import com.faforever.client.domain.api.Map; import com.faforever.client.domain.api.MapVersion; import com.faforever.client.domain.api.Replay; -import com.faforever.client.domain.api.ReplayReviewsSummary; +import com.faforever.client.domain.api.ReviewsSummary; import com.faforever.client.fx.FxApplicationThreadExecutor; import com.faforever.client.fx.ImageViewHelper; import com.faforever.client.fx.JavaFxUtil; @@ -128,14 +128,12 @@ protected void onInitialize() { OffsetDateTime endTime = replayBean.endTime(); return startTime == null || endTime == null ? null : Duration.between(startTime, endTime); }).map(timeService::shortDuration).orElse(i18n.get("notAvailable")).when(showing)); - numberOfReviewsLabel.textProperty() - .bind(entity.map(Replay::gameReviewsSummary) - .map(ReplayReviewsSummary::numReviews) + numberOfReviewsLabel.textProperty().bind(entity.map(Replay::reviewsSummary).map(ReviewsSummary::numReviews) .orElse(0) .map(i18n::number) .when(showing)); replayIdField.textProperty().bind(entity.map(Replay::id).map(id -> i18n.get("game.idFormat", id)).when(showing)); - starsController.valueProperty().bind(entity.map(Replay::gameReviewsSummary) + starsController.valueProperty().bind(entity.map(Replay::reviewsSummary) .map(reviewsSummary -> reviewsSummary.score() / reviewsSummary.numReviews()) .when(showing)); diff --git a/src/main/java/com/faforever/client/replay/ReplayService.java b/src/main/java/com/faforever/client/replay/ReplayService.java index 237fcf0800..8454d66b24 100644 --- a/src/main/java/com/faforever/client/replay/ReplayService.java +++ b/src/main/java/com/faforever/client/replay/ReplayService.java @@ -15,7 +15,6 @@ import com.faforever.client.game.KnownFeaturedMod; import com.faforever.client.i18n.I18n; import com.faforever.client.map.MapService; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.ReplayMapper; import com.faforever.client.notification.Action; import com.faforever.client.notification.NotificationService; @@ -114,11 +113,11 @@ static String parseMapFolderName(ReplayDataParser parser) { // parser is just the scmap which may have a different folder and will not contain all the info to launch the map // or even may not be a map in the vault like in the case of any coop map. String mapPath = parser.getGameOptions() - .stream() - .filter(gameOption -> "ScenarioFile".equals(gameOption.getKey())) - .findFirst() - .map(gameOption -> (String) gameOption.getValue()) - .orElse(parser.getMap()); + .stream() + .filter(gameOption -> "ScenarioFile".equals(gameOption.getKey())) + .findFirst() + .map(gameOption -> (String) gameOption.getValue()) + .orElse(parser.getMap()); //mapPath looks like /maps/my_awesome_map.v008/my_awesome_map.lua Matcher matcher = invalidCharacters.matcher(mapPath); if (matcher.find()) { @@ -130,11 +129,11 @@ static String parseMapFolderName(ReplayDataParser parser) { @VisibleForTesting static Set parseModUIDs(ReplayDataParser parser) { return parser.getMods() - .values() - .stream() - .map(map -> (String) map.getOrDefault("uid", null)) - .filter(Objects::nonNull) - .collect(Collectors.toSet()); + .values() + .stream() + .map(map -> (String) map.getOrDefault("uid", null)) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); } @VisibleForTesting @@ -158,14 +157,15 @@ public Mono, Integer>> loadLocalReplayPage(int pageSize, int try (DirectoryStream directoryStream = Files.newDirectoryStream(replaysDirectory, replayFileGlob)) { List filesList = StreamSupport.stream(directoryStream.spliterator(), false) - .sorted(Comparator.comparing(path -> { - try { - return Files.getLastModifiedTime((Path) path); - } catch (IOException e) { - log.warn("Could not get last modified time of file {}", path, e); - return FileTime.from(Instant.EPOCH); - } - }).reversed()).toList(); + .sorted(Comparator.comparing(path -> { + try { + return Files.getLastModifiedTime((Path) path); + } catch (IOException e) { + log.warn("Could not get last modified time of file {}", path, e); + return FileTime.from(Instant.EPOCH); + } + }).reversed()) + .toList(); int numPages = filesList.size() / pageSize; @@ -177,10 +177,11 @@ public Mono, Integer>> loadLocalReplayPage(int pageSize, int .toList(); return Mono.fromFuture(CompletableFuture.allOf(replayFutures.toArray(new CompletableFuture[0])) - .thenApply(ignoredVoid -> replayFutures.stream() - .map(CompletableFuture::join) - .filter(Objects::nonNull) - .collect(Collectors.toList()))).zipWith(Mono.just(numPages)); + .thenApply(ignoredVoid -> replayFutures.stream() + .map(CompletableFuture::join) + .filter(Objects::nonNull) + .collect(Collectors.toList()))) + .zipWith(Mono.just(numPages)); } } @@ -191,8 +192,7 @@ private CompletableFuture tryLoadingLocalReplay(Path replayFile) { ReplayMetadata replayMetadata = replayData.getMetadata(); CompletableFuture featuredModFuture = featuredModService.getFeaturedMod( - replayMetadata.getFeaturedMod()) - .toFuture(); + replayMetadata.getFeaturedMod()).toFuture(); CompletableFuture mapVersionFuture = mapService.findByMapFolderName(replayMetadata.getMapname()) .toFuture(); @@ -283,9 +283,9 @@ public CompletableFuture downloadReplay(int id) { public ReplayDetails loadReplayDetails(Path path) throws CompressorException, IOException { ReplayDataParser replayDataParser = replayFileReader.parseReplay(path); List chatMessages = replayDataParser.getChatMessages().stream().map(replayMapper::map).toList(); - List gameOptions = Stream.concat(Stream.of(new GameOption("FAF Version", String.valueOf(parseSupComVersion(replayDataParser)))), replayDataParser.getGameOptions() - .stream() - .map(replayMapper::map)).toList(); + List gameOptions = Stream.concat( + Stream.of(new GameOption("FAF Version", String.valueOf(parseSupComVersion(replayDataParser)))), + replayDataParser.getGameOptions().stream().map(replayMapper::map)).toList(); String mapFolderName = parseMapFolderName(replayDataParser); Map map = new Map(null, mapFolderName, 0, null, false, null, null); @@ -297,8 +297,8 @@ public ReplayDetails loadReplayDetails(Path path) throws CompressorException, IO public CompletableFuture getFileSize(Replay replay) { try { - return fileSizeReader.getFileSize(new URL(String.format(clientProperties.getVault().getReplayDownloadUrlFormat(), - replay.id()))); + return fileSizeReader.getFileSize( + new URL(String.format(clientProperties.getVault().getReplayDownloadUrlFormat(), replay.id()))); } catch (MalformedURLException e) { log.error("Could not open connection to download replay", e); return CompletableFuture.completedFuture(-1); @@ -308,9 +308,10 @@ public CompletableFuture getFileSize(Replay replay) { public boolean replayChangedRating(Replay replay) { return replay.teamPlayerStats() - .values() - .stream() - .flatMap(Collection::stream).flatMap(playerStats -> playerStats.leaderboardRatingJournals().stream()) + .values() + .stream() + .flatMap(Collection::stream) + .flatMap(playerStats -> playerStats.leaderboardRatingJournals().stream()) .anyMatch( ratingJournal -> ratingJournal.meanAfter() != null && ratingJournal.deviationAfter() != null); } @@ -382,55 +383,66 @@ private void runSupComReplayFile(Path path) throws IOException, CompressorExcept @Cacheable(value = CacheNames.REPLAYS_RECENT, sync = true) public Mono, Integer>> getNewestReplaysWithPageCount(int count, int page) { ElideNavigatorOnCollection navigator = ElideNavigator.of(Game.class) - .collection() - .setFilter(qBuilder().instant("endTime") - .after(Instant.now().minus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS), false)) - .addSortingRule("endTime", false); + .collection() + .setFilter(qBuilder().instant("endTime") + .after(Instant.now() + .minus(1, + ChronoUnit.DAYS) + .truncatedTo( + ChronoUnit.DAYS), + false)) + .addSortingRule("endTime", false); return getReplayPage(navigator, count, page).cache(); } @Cacheable(value = CacheNames.REPLAYS_SEARCH, sync = true) public Mono, Integer>> getReplaysForPlayerWithPageCount(int playerId, int count, int page) { ElideNavigatorOnCollection navigator = ElideNavigator.of(Game.class) - .collection() - .setFilter(qBuilder().intNum("playerStats.player.id") - .eq(playerId) - .and() - .instant("endTime") - .after(Instant.now().minus(365, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS), false)) - .addSortingRule("endTime", false); + .collection() + .setFilter(qBuilder().intNum("playerStats.player.id") + .eq(playerId) + .and() + .instant("endTime") + .after(Instant.now() + .minus(365, + ChronoUnit.DAYS) + .truncatedTo( + ChronoUnit.DAYS), + false)) + .addSortingRule("endTime", false); return getReplayPage(navigator, count, page).cache(); } @Cacheable(value = CacheNames.REPLAYS_LIKED, sync = true) public Mono, Integer>> getHighestRatedReplaysWithPageCount(int count, int page) { ElideNavigatorOnCollection navigator = ElideNavigator.of(GameReviewsSummary.class) - .collection() - .addSortingRule("lowerBound", false) - .pageSize(count) - .pageNumber(page); + .collection() + .addSortingRule("lowerBound", false) + .pageSize(count) + .pageNumber(page); return fafApiAccessor.getManyWithPageCount(navigator) - .map(tuple -> tuple.mapT1(mods -> mods.stream() - .map(dto -> replayMapper.map(dto.getGame(), - new CycleAvoidingMappingContext())) - .collect(toList()))).cache(); + .map(tuple -> tuple.mapT1(mods -> mods.stream() + .map(GameReviewsSummary::getGame) + .map(replayMapper::map) + .collect(toList()))) + .cache(); } @Cacheable(value = CacheNames.REPLAYS_SEARCH, sync = true) public Mono, Integer>> findByQueryWithPageCount(SearchConfig searchConfig, int count, int page) { SortConfig sortConfig = searchConfig.sortConfig(); ElideNavigatorOnCollection navigator = ElideNavigator.of(Game.class) - .collection() - .addSortingRule(sortConfig.sortProperty(), sortConfig.sortOrder().equals(SortOrder.ASC)); + .collection() + .addSortingRule(sortConfig.sortProperty(), + sortConfig.sortOrder() + .equals(SortOrder.ASC)); return getReplayPage(navigator, searchConfig.searchQuery(), count, page).cache(); } @Cacheable(value = CacheNames.REPLAYS_SEARCH, sync = true) public Mono findById(int id) { ElideNavigatorOnId navigator = ElideNavigator.of(Game.class).id(String.valueOf(id)); - return fafApiAccessor.getOne(navigator) - .map(dto -> replayMapper.map(dto, new CycleAvoidingMappingContext())) - .cache(); + return fafApiAccessor.getOne(navigator).map(replayMapper::map).cache(); } @Cacheable(value = CacheNames.REPLAYS_MINE, sync = true) @@ -447,8 +459,6 @@ private Mono, Integer>> getReplayPage(ElideNavigatorOnCollec String customFilter, int count, int page) { navigator.pageNumber(page).pageSize(count); return fafApiAccessor.getManyWithPageCount(navigator, customFilter) - .map(tuple -> tuple.mapT1(mods -> mods.stream() - .map(dto -> replayMapper.map(dto, new CycleAvoidingMappingContext())) - .collect(toList()))); + .map(tuple -> tuple.mapT1(mods -> mods.stream().map(replayMapper::map).collect(toList()))); } } diff --git a/src/main/java/com/faforever/client/reporting/ModerationService.java b/src/main/java/com/faforever/client/reporting/ModerationService.java index a55f94878a..b4d0ba3ae4 100644 --- a/src/main/java/com/faforever/client/reporting/ModerationService.java +++ b/src/main/java/com/faforever/client/reporting/ModerationService.java @@ -3,7 +3,6 @@ import com.faforever.client.api.FafApiAccessor; import com.faforever.client.config.CacheNames; import com.faforever.client.domain.api.ModerationReport; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.ModerationReportMapper; import com.faforever.client.player.PlayerService; import com.faforever.commons.api.elide.ElideNavigator; @@ -44,17 +43,14 @@ public Flux getModerationReports() { .addSortingRule( "createTime", false); - return fafApiAccessor.getMany(navigator) - .map(dto -> moderationReportMapper.map(dto, new CycleAvoidingMappingContext())).cache(); + return fafApiAccessor.getMany(navigator).map(moderationReportMapper::map).cache(); } @CacheEvict(value = CacheNames.MODERATION_REPORTS) public Mono postModerationReport(ModerationReport report) { - com.faforever.commons.api.dto.ModerationReport reportDto = moderationReportMapper.map(report, - new CycleAvoidingMappingContext()); + com.faforever.commons.api.dto.ModerationReport reportDto = moderationReportMapper.map(report); ElideNavigatorOnCollection navigator = ElideNavigator.of( com.faforever.commons.api.dto.ModerationReport.class).collection(); - return fafApiAccessor.post(navigator, reportDto) - .map(dto -> moderationReportMapper.map(dto, new CycleAvoidingMappingContext())); + return fafApiAccessor.post(navigator, reportDto).map(moderationReportMapper::map); } } diff --git a/src/main/java/com/faforever/client/reporting/ReportDialogController.java b/src/main/java/com/faforever/client/reporting/ReportDialogController.java index 73554bcabd..befa087763 100644 --- a/src/main/java/com/faforever/client/reporting/ReportDialogController.java +++ b/src/main/java/com/faforever/client/reporting/ReportDialogController.java @@ -1,6 +1,7 @@ package com.faforever.client.reporting; import ch.micheljung.fxwindow.FxStage; +import com.faforever.client.domain.api.GamePlayerStats; import com.faforever.client.domain.api.ModerationReport; import com.faforever.client.domain.api.Replay; import com.faforever.client.domain.server.PlayerInfo; @@ -87,10 +88,8 @@ protected void onInitialize() { createTimeColumn.setCellValueFactory(param -> ObservableConstant.valueOf(param.getValue().createTime())); createTimeColumn.setCellFactory(param -> new StringCell<>(timeService::asDateTime)); offenderColumn.setCellValueFactory(param -> ObservableConstant.valueOf(param.getValue().reportedUsers())); - offenderColumn.setCellFactory(param -> new WrappingStringCell<>((players -> players.stream() - .map(PlayerInfo::getUsername) - .collect( - Collectors.joining(", "))))); + offenderColumn.setCellFactory(param -> new WrappingStringCell<>( + (players -> players.stream().map(PlayerInfo::getUsername).collect(Collectors.joining(", "))))); gameColumn.setCellValueFactory(param -> Optional.ofNullable(param.getValue().game()).map(Replay::id) .map(ObservableConstant::valueOf) .orElse(ObservableConstant.valueOf(null))); @@ -142,16 +141,17 @@ public void onReportButtonClicked() { Mono replayMono = replayService.findById(Integer.parseInt(gameId.getText())) .switchIfEmpty(Mono.fromRunnable(this::warnNoGame)) .flatMap(replay -> { - if (replay.teams() - .values() - .stream() - .flatMap(Collection::stream) - .noneMatch( - username -> username.equals(offender.getText()))) { - return Mono.empty(); - } - return Mono.just(replay); - }) + if (replay.teamPlayerStats() + .values() + .stream() + .flatMap(Collection::stream) + .map(GamePlayerStats::player) + .map(PlayerInfo::getUsername) + .noneMatch(username -> username.equals(offender.getText()))) { + return Mono.empty(); + } + return Mono.just(replay); + }) .switchIfEmpty(Mono.fromRunnable(this::warnOffenderNotInGame)); reportMono = Mono.zip(playerMono, replayMono) .map(TupleUtils.function( @@ -227,8 +227,13 @@ public void setOffender(String username) { } public void setReplay(Replay replay) { - TextFields.bindAutoCompletion(offender, replay.teams().values().stream().flatMap(Collection::stream) - .collect(Collectors.toList())); + TextFields.bindAutoCompletion(offender, replay.teamPlayerStats() + .values() + .stream() + .flatMap(Collection::stream) + .map(GamePlayerStats::player) + .map(PlayerInfo::getUsername) + .collect(Collectors.toList())); gameId.setText(String.valueOf(replay.id())); } @@ -260,11 +265,11 @@ public void show() { Assert.checkNullIllegalState(ownerWindow, "ownerWindow must be set"); FxStage fxStage = FxStage.create(reportDialogRoot) - .initOwner(ownerWindow) - .initModality(Modality.WINDOW_MODAL) + .initOwner(ownerWindow) + .initModality(Modality.WINDOW_MODAL) .withSceneFactory(themeService::createScene) - .allowMinimize(false) - .apply(); + .allowMinimize(false) + .apply(); Stage stage = fxStage.getStage(); stage.showingProperty().addListener((observable, oldValue, newValue) -> { diff --git a/src/main/java/com/faforever/client/stats/StatisticsService.java b/src/main/java/com/faforever/client/stats/StatisticsService.java index da22efe8fd..868c049726 100644 --- a/src/main/java/com/faforever/client/stats/StatisticsService.java +++ b/src/main/java/com/faforever/client/stats/StatisticsService.java @@ -5,7 +5,6 @@ import com.faforever.client.domain.api.Leaderboard; import com.faforever.client.domain.api.LeaderboardRatingJournal; import com.faforever.client.domain.server.PlayerInfo; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.LeaderboardMapper; import com.faforever.commons.api.elide.ElideNavigator; import com.faforever.commons.api.elide.ElideNavigatorOnCollection; @@ -36,11 +35,11 @@ public Flux getRatingHistory(PlayerInfo player, Leader "gamePlayerStats.player.id") .eq(player.getId()) .and() - .intNum("leagueLeaderboard.id") + .intNum( + "leaderboard.id") .eq(leaderboard.id())) .pageSize( fafApiAccessor.getMaxPageSize()); - return fafApiAccessor.getMany(navigator) - .map(dto -> leaderboardMapper.map(dto, new CycleAvoidingMappingContext())).cache(); + return fafApiAccessor.getMany(navigator).map(leaderboardMapper::map).cache(); } } diff --git a/src/main/java/com/faforever/client/teammatchmaking/TeamMatchmakingService.java b/src/main/java/com/faforever/client/teammatchmaking/TeamMatchmakingService.java index 8f110bf02e..7f8c877a51 100644 --- a/src/main/java/com/faforever/client/teammatchmaking/TeamMatchmakingService.java +++ b/src/main/java/com/faforever/client/teammatchmaking/TeamMatchmakingService.java @@ -18,7 +18,6 @@ import com.faforever.client.i18n.I18n; import com.faforever.client.main.event.OpenTeamMatchmakingEvent; import com.faforever.client.map.MapService; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MatchmakerMapper; import com.faforever.client.navigation.NavigationHandler; import com.faforever.client.net.ConnectionState; @@ -377,8 +376,7 @@ private Mono getQueueFromApi(MatchmakerInfo.MatchmakerQueue .setFilter(qBuilder().string("technicalName") .eq(matchmakerQueue.getName())); return fafApiAccessor.getMany(navigator) - .next() - .map(dto -> matchmakerMapper.map(dto, new CycleAvoidingMappingContext())) + .next().map(matchmakerMapper::map) .map(queue -> matchmakerMapper.update(matchmakerQueue, queue)) .doOnNext(queue -> queue.setSelected( !matchmakerPrefs.getUnselectedQueueIds().contains(queue.getId()))) diff --git a/src/main/java/com/faforever/client/tournament/TournamentService.java b/src/main/java/com/faforever/client/tournament/TournamentService.java index 085a66128d..298fcced24 100644 --- a/src/main/java/com/faforever/client/tournament/TournamentService.java +++ b/src/main/java/com/faforever/client/tournament/TournamentService.java @@ -2,7 +2,6 @@ import com.faforever.client.api.FafApiAccessor; import com.faforever.client.domain.api.Tournament; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.TournamentMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -22,7 +21,6 @@ public class TournamentService { public Flux getAllTournaments() { return fafApiAccessor.getMany(com.faforever.commons.api.dto.Tournament.class, "/challonge/v1/tournaments.json", 100, - Map.of()) - .map(dto -> tournamentMapper.map(dto, new CycleAvoidingMappingContext())).cache(); + Map.of()).map(tournamentMapper::map).cache(); } } diff --git a/src/main/java/com/faforever/client/tutorial/TutorialService.java b/src/main/java/com/faforever/client/tutorial/TutorialService.java index feb5899331..cb030460aa 100644 --- a/src/main/java/com/faforever/client/tutorial/TutorialService.java +++ b/src/main/java/com/faforever/client/tutorial/TutorialService.java @@ -4,7 +4,6 @@ import com.faforever.client.domain.api.Tutorial; import com.faforever.client.domain.api.TutorialCategory; import com.faforever.client.game.GameRunner; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.TutorialMapper; import com.faforever.commons.api.elide.ElideNavigator; import com.faforever.commons.api.elide.ElideNavigatorOnCollection; @@ -24,8 +23,7 @@ public class TutorialService { public Flux getTutorialCategories() { ElideNavigatorOnCollection navigator = ElideNavigator.of( com.faforever.commons.api.dto.TutorialCategory.class).collection().pageSize(1000); - return fafApiAccessor.getMany(navigator) - .map(dto -> tutorialMapper.map(dto, new CycleAvoidingMappingContext())).cache(); + return fafApiAccessor.getMany(navigator).map(tutorialMapper::map).cache(); } public void launchTutorial(Tutorial tutorial) { diff --git a/src/main/java/com/faforever/client/vault/review/ReviewService.java b/src/main/java/com/faforever/client/vault/review/ReviewService.java index 69d1fcb10e..99cd02babb 100644 --- a/src/main/java/com/faforever/client/vault/review/ReviewService.java +++ b/src/main/java/com/faforever/client/vault/review/ReviewService.java @@ -8,7 +8,6 @@ import com.faforever.client.domain.api.Replay; import com.faforever.client.domain.api.ReplayReview; import com.faforever.client.domain.api.ReviewBean; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.ReviewMapper; import com.faforever.commons.api.dto.Game; import com.faforever.commons.api.dto.GameReview; @@ -43,14 +42,13 @@ public > Mono saveReview(R review) { private Mono saveReplayReview(ReplayReview review) { Assert.notNull(review.subject(), "Subject must be set"); - GameReview gameReview = reviewMapper.map(review, new CycleAvoidingMappingContext()); + GameReview gameReview = reviewMapper.map(review); if (gameReview.getId() == null) { ElideNavigatorOnCollection navigator = ElideNavigator.of(gameReview.getGame()) .navigateRelationship(GameReview.class, "reviews") .collection(); gameReview.setGame(null); - return fafApiAccessor.post(navigator, gameReview) - .map(dto -> reviewMapper.map(dto, new CycleAvoidingMappingContext())); + return fafApiAccessor.post(navigator, gameReview).map(reviewMapper::map); } else { ElideNavigatorOnId endpointBuilder = ElideNavigator.of(gameReview); gameReview.setGame(null); @@ -61,8 +59,7 @@ private Mono saveReplayReview(ReplayReview review) { private Mono saveModVersionReview(ModVersionReview review) { Assert.notNull(review.subject(), "Subject must be set"); - com.faforever.commons.api.dto.ModVersionReview modVersionReview = reviewMapper.map(review, - new CycleAvoidingMappingContext()); + com.faforever.commons.api.dto.ModVersionReview modVersionReview = reviewMapper.map(review); if (modVersionReview.getId() == null) { ElideNavigatorOnCollection navigator = ElideNavigator.of( modVersionReview.getModVersion()) @@ -71,8 +68,7 @@ private Mono saveModVersionReview(ModVersionReview review) { "reviews") .collection(); modVersionReview.setModVersion(null); - return fafApiAccessor.post(navigator, modVersionReview) - .map(dto -> reviewMapper.map(dto, new CycleAvoidingMappingContext())); + return fafApiAccessor.post(navigator, modVersionReview).map(reviewMapper::map); } else { ElideNavigatorOnId endpointBuilder = ElideNavigator.of( modVersionReview); @@ -83,8 +79,7 @@ private Mono saveModVersionReview(ModVersionReview review) { private Mono saveMapVersionReview(MapVersionReview review) { Assert.notNull(review.subject(), "Subject must be set"); - com.faforever.commons.api.dto.MapVersionReview mapVersionReview = reviewMapper.map(review, - new CycleAvoidingMappingContext()); + com.faforever.commons.api.dto.MapVersionReview mapVersionReview = reviewMapper.map(review); if (mapVersionReview.getId() == null) { ElideNavigatorOnCollection navigator = ElideNavigator.of( mapVersionReview.getMapVersion()) @@ -93,8 +88,7 @@ private Mono saveMapVersionReview(MapVersionReview review) { "reviews") .collection(); mapVersionReview.setMapVersion(null); - return fafApiAccessor.post(navigator, mapVersionReview) - .map(dto -> reviewMapper.map(dto, new CycleAvoidingMappingContext())); + return fafApiAccessor.post(navigator, mapVersionReview).map(reviewMapper::map); } else { mapVersionReview.setMapVersion(null); ElideNavigatorOnId endpointBuilder = ElideNavigator.of( @@ -105,7 +99,7 @@ private Mono saveMapVersionReview(MapVersionReview review) { } public Mono deleteReview(ReviewBean review) { - Review reviewDto = reviewMapper.map(review, new CycleAvoidingMappingContext()); + Review reviewDto = reviewMapper.map(review); ElideNavigatorOnId endpointBuilder = ElideNavigator.of(reviewDto); return fafApiAccessor.delete(endpointBuilder); } @@ -122,8 +116,7 @@ public Flux getMapReviews(Map map) { return fafApiAccessor.getMany(versionsNavigator) .map(MapVersion::getReviews) - .flatMap(Flux::fromIterable) - .map(mapReview -> reviewMapper.map(mapReview, new CycleAvoidingMappingContext())); + .flatMap(Flux::fromIterable).map(reviewMapper::map); } public Flux getModReviews(Mod mod) { @@ -138,8 +131,7 @@ public Flux getModReviews(Mod mod) { return fafApiAccessor.getMany(versionsNavigator) .map(ModVersion::getReviews) - .flatMap(Flux::fromIterable) - .map(mapReview -> reviewMapper.map(mapReview, new CycleAvoidingMappingContext())); + .flatMap(Flux::fromIterable).map(reviewMapper::map); } public Flux getReplayReviews(Replay replay) { @@ -149,7 +141,6 @@ public Flux getReplayReviews(Replay replay) { .collection() .addInclude("player"); - return fafApiAccessor.getMany(versionsNavigator) - .map(gameReview -> reviewMapper.map(gameReview, new CycleAvoidingMappingContext())); + return fafApiAccessor.getMany(versionsNavigator).map(reviewMapper::map); } } diff --git a/src/main/java/com/faforever/client/vault/review/ReviewsController.java b/src/main/java/com/faforever/client/vault/review/ReviewsController.java index 78fa663e91..eee57faad6 100644 --- a/src/main/java/com/faforever/client/vault/review/ReviewsController.java +++ b/src/main/java/com/faforever/client/vault/review/ReviewsController.java @@ -138,8 +138,10 @@ protected void onInitialize() { PlayerInfo currentPlayer = playerService.getCurrentPlayer(); return reviews.stream() .filter(review -> Objects.equals(currentPlayer, review.player())) - .max(Comparator.comparing(ReviewBean::version)) - .orElseGet(() -> reviewSupplier.get().get()); + .max(Comparator.comparing(ReviewBean::version)).orElseGet(() -> { + Supplier supplier = reviewSupplier.get(); + return supplier == null ? null : supplier.get(); + }); }, playerService.currentPlayerProperty(), reviews, reviewSupplier)).otherwise((R) null); ownReviewController.reviewProperty().bind(ownReviewBinding.when(showing)); diff --git a/src/test/java/com/faforever/client/api/FafApiAccessorTest.java b/src/test/java/com/faforever/client/api/FafApiAccessorTest.java index c7f1d56bb1..befc661075 100644 --- a/src/test/java/com/faforever/client/api/FafApiAccessorTest.java +++ b/src/test/java/com/faforever/client/api/FafApiAccessorTest.java @@ -4,7 +4,6 @@ import com.faforever.client.config.ClientProperties.Api; import com.faforever.client.config.JsonApiConfig; import com.faforever.client.domain.api.ReplayReview; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.ReviewMapper; import com.faforever.client.test.ServiceTest; @@ -153,7 +152,7 @@ public void testUploadFile() throws Exception { @Test public void testPost() throws Exception { ReplayReview reviewBean = Instancio.create(ReplayReview.class); - GameReview review = reviewMapper.map(reviewBean, new CycleAvoidingMappingContext()); + GameReview review = reviewMapper.map(reviewBean); prepareJsonApiResponse(review); StepVerifier.create(instance.post(ElideNavigator.of(GameReview.class).collection(), review)) @@ -164,7 +163,7 @@ public void testPost() throws Exception { @Test public void testPatch() throws Exception { ReplayReview reviewBean = Instancio.create(ReplayReview.class); - GameReview review = reviewMapper.map(reviewBean, new CycleAvoidingMappingContext()); + GameReview review = reviewMapper.map(reviewBean); prepareVoidResponse(); StepVerifier.create(instance.patch(ElideNavigator.of(review), review)) @@ -174,7 +173,7 @@ public void testPatch() throws Exception { @Test public void testDelete() throws Exception { ReplayReview reviewBean = Instancio.create(ReplayReview.class); - GameReview review = reviewMapper.map(reviewBean, new CycleAvoidingMappingContext()); + GameReview review = reviewMapper.map(reviewBean); prepareVoidResponse(); StepVerifier.create(instance.delete(ElideNavigator.of(review))) @@ -184,7 +183,7 @@ public void testDelete() throws Exception { @Test public void testGetOne() throws Exception { ReplayReview reviewBean = Instancio.create(ReplayReview.class); - GameReview review = reviewMapper.map(reviewBean, new CycleAvoidingMappingContext()); + GameReview review = reviewMapper.map(reviewBean); prepareJsonApiResponse(review); StepVerifier.create(instance.getOne(ElideNavigator.of(review))) @@ -205,7 +204,7 @@ public void testGetMe() throws Exception { @Test public void testGetManyNoNavigator() throws Exception { ReplayReview reviewBean = Instancio.create(ReplayReview.class); - GameReview review = reviewMapper.map(reviewBean, new CycleAvoidingMappingContext()); + GameReview review = reviewMapper.map(reviewBean); prepareJsonApiResponse(List.of(review)); StepVerifier.create(instance.getMany(GameReview.class, "/data/gameReview", 1, Map.of("param", "test"))) diff --git a/src/test/java/com/faforever/client/clan/ClanServiceTest.java b/src/test/java/com/faforever/client/clan/ClanServiceTest.java index 0197905c80..11c3f3b4f9 100644 --- a/src/test/java/com/faforever/client/clan/ClanServiceTest.java +++ b/src/test/java/com/faforever/client/clan/ClanServiceTest.java @@ -3,7 +3,6 @@ import com.faforever.client.api.FafApiAccessor; import com.faforever.client.domain.api.Clan; import com.faforever.client.mapstruct.ClanMapper; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.test.ElideMatchers; import com.faforever.client.test.ServiceTest; @@ -48,7 +47,7 @@ public void setUp() throws Exception { @Test public void testGetClanByTag() throws Exception { Clan clan = Instancio.of(Clan.class).set(field(Clan::members), List.of()).create(); - Flux resultFlux = Flux.just(clanMapper.map(clan, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(clanMapper.map(clan)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getClanByTag("test")).expectNext(clan).verifyComplete(); verify(fafApiAccessor).getMany(argThat(ElideMatchers.hasFilter(qBuilder().string("tag").eq("test")))); diff --git a/src/test/java/com/faforever/client/coop/CoopServiceTest.java b/src/test/java/com/faforever/client/coop/CoopServiceTest.java index 92850c2110..e8ab264a0b 100644 --- a/src/test/java/com/faforever/client/coop/CoopServiceTest.java +++ b/src/test/java/com/faforever/client/coop/CoopServiceTest.java @@ -4,7 +4,6 @@ import com.faforever.client.domain.api.CoopMission; import com.faforever.client.domain.api.CoopResult; import com.faforever.client.mapstruct.CoopMapper; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.test.ElideMatchers; import com.faforever.client.test.ServiceTest; @@ -49,7 +48,7 @@ public void setUp() throws Exception { public void testGetCoopMaps() throws Exception { CoopMission coopMission = Instancio.create(CoopMission.class); - Flux resultFlux = Flux.just(coopMapper.map(coopMission, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(coopMapper.map(coopMission)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getMissions()).expectNext(coopMission).verifyComplete(); verify(fafApiAccessor).getMany(argThat(ElideMatchers.hasPageSize(1000))); @@ -62,7 +61,7 @@ public void testGetLeaderboard() throws Exception { .ignore(field(CoopResult::replay)) .create(); - com.faforever.commons.api.dto.CoopResult result = coopMapper.map(coopResult, new CycleAvoidingMappingContext()); + com.faforever.commons.api.dto.CoopResult result = coopMapper.map(coopResult); Flux resultFlux = Flux.just(result, result); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); CoopMission mission = Instancio.create(CoopMission.class); diff --git a/src/test/java/com/faforever/client/featuredmod/FeaturedModServiceTest.java b/src/test/java/com/faforever/client/featuredmod/FeaturedModServiceTest.java index e04de1893a..9a5bc99fca 100644 --- a/src/test/java/com/faforever/client/featuredmod/FeaturedModServiceTest.java +++ b/src/test/java/com/faforever/client/featuredmod/FeaturedModServiceTest.java @@ -2,7 +2,6 @@ import com.faforever.client.api.FafApiAccessor; import com.faforever.client.domain.api.FeaturedMod; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.FeaturedModMapper; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.test.ElideMatchers; @@ -59,7 +58,7 @@ public void testGetFeaturedFiles() { @Test public void testGetFeaturedMod() { FeaturedMod featuredMod = Instancio.create(FeaturedMod.class); - Flux resultFlux = Flux.just(featuredModMapper.map(featuredMod, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(featuredModMapper.map(featuredMod)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getFeaturedMod("test")).expectNext(featuredMod).verifyComplete(); verify(fafApiAccessor).getMany(argThat(ElideMatchers.hasFilter(qBuilder().string("technicalName").eq("test")))); diff --git a/src/test/java/com/faforever/client/leaderboard/LeaderboardServiceTest.java b/src/test/java/com/faforever/client/leaderboard/LeaderboardServiceTest.java index 91ab837325..9c3cff8433 100644 --- a/src/test/java/com/faforever/client/leaderboard/LeaderboardServiceTest.java +++ b/src/test/java/com/faforever/client/leaderboard/LeaderboardServiceTest.java @@ -11,7 +11,6 @@ import com.faforever.client.domain.api.LeagueSeason; import com.faforever.client.domain.api.Subdivision; import com.faforever.client.domain.server.PlayerInfo; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.LeaderboardMapper; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.player.PlayerService; @@ -64,7 +63,7 @@ public void setUp() throws Exception { public void testGetLeaderboards() { Leaderboard leaderboard = Instancio.create(Leaderboard.class); - Flux resultFlux = Flux.just(leaderboardMapper.map(leaderboard, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leaderboard)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getLeaderboards()).expectNext(leaderboard).verifyComplete(); @@ -75,8 +74,7 @@ public void testGetLeaderboards() { @Test public void testGetEntriesForPlayer() { LeaderboardEntry leaderboardEntry = Instancio.create(LeaderboardEntry.class); - Flux resultFlux = Flux.just( - leaderboardMapper.map(leaderboardEntry, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leaderboardEntry)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getEntriesForPlayer(player)).expectNext(leaderboardEntry).verifyComplete(); @@ -87,7 +85,7 @@ public void testGetEntriesForPlayer() { public void testGetLeagues() { League league = Instancio.create(League.class); - Flux resultFlux = Flux.just(leaderboardMapper.map(league, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(league)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getLeagues()).expectNext(league).verifyComplete(); @@ -100,7 +98,7 @@ public void testGetLeagues() { public void testGetActiveSeasons() { LeagueSeason leagueSeason = Instancio.create(LeagueSeason.class); - Flux resultFlux = Flux.just(leaderboardMapper.map(leagueSeason, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leagueSeason)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getActiveSeasons()).expectNext(leagueSeason).verifyComplete(); @@ -124,7 +122,7 @@ public void testGetLeagueEntryForPlayer() { .set(field(LeagueEntry::rank), null) .create(); LeagueSeason season = Instancio.of(LeagueSeason.class).set(field(LeagueSeason::id), 2).create(); - Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getLeagueEntryForPlayer(player, season)).expectNext(leagueEntry).verifyComplete(); @@ -159,10 +157,8 @@ public void testGetHighestActiveLeagueEntryForPlayer() { .ignore(field(LeagueEntry::rank)) .create(); - Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry1, new CycleAvoidingMappingContext()), - leaderboardMapper.map(leagueEntry2, new CycleAvoidingMappingContext()), - leaderboardMapper.map(leagueEntry3, - new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry1), leaderboardMapper.map(leagueEntry2), + leaderboardMapper.map(leagueEntry3)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getHighestActiveLeagueEntryForPlayer(player)).expectNext(leagueEntry2) @@ -187,9 +183,7 @@ public void testGetActiveLeagueEntryForPlayer() { .set(field(LeagueEntry::player), player) .create(); - Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry1, new CycleAvoidingMappingContext()), - leaderboardMapper.map(leagueEntry2, - new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry1), leaderboardMapper.map(leagueEntry2)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getActiveLeagueEntryForPlayer(player, "ladder")).expectNext(leagueEntry2) @@ -198,7 +192,7 @@ public void testGetActiveLeagueEntryForPlayer() { verify(fafApiAccessor).getMany(argThat(ElideMatchers.hasFilter(qBuilder().intNum("loginId").eq(player.getId()) .and() .string( - "leagueSeason.leagueLeaderboard.technicalName") + "leagueSeason.leaderboard.technicalName") .eq(leaderboard.technicalName())))); } @@ -206,7 +200,7 @@ public void testGetActiveLeagueEntryForPlayer() { public void testGetHighestLeagueEntryForPlayerNoSubdivision() { LeagueEntry leagueEntry = Instancio.of(LeagueEntry.class).set(field(LeagueEntry::subdivision), null).create(); - Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getHighestActiveLeagueEntryForPlayer(player)).verifyComplete(); @@ -220,7 +214,7 @@ public void testGetLeagueEntries() { .set(field(LeagueEntry::rank), 0L) .set(field(LeagueEntry::player), player) .create(); - Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leagueEntry)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); when(playerService.getPlayersByIds(anyCollection())).thenReturn( Flux.just(PlayerInfoBuilder.create().id(1).username("junit").get())); @@ -241,7 +235,7 @@ public void testGetLeagueEntriesEmpty() { public void testGetAllSubdivisions() { LeagueSeason season = Instancio.create(LeagueSeason.class); Subdivision subdivision = Instancio.create(Subdivision.class); - Flux resultFlux = Flux.just(leaderboardMapper.map(subdivision, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(subdivision)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getAllSubdivisions(season)).expectNext(subdivision).verifyComplete(); diff --git a/src/test/java/com/faforever/client/map/MapServiceTest.java b/src/test/java/com/faforever/client/map/MapServiceTest.java index 38dc041b8c..8a487c8d06 100644 --- a/src/test/java/com/faforever/client/map/MapServiceTest.java +++ b/src/test/java/com/faforever/client/map/MapServiceTest.java @@ -12,7 +12,6 @@ import com.faforever.client.i18n.I18n; import com.faforever.client.map.MapService.PreviewSize; import com.faforever.client.map.generator.MapGeneratorService; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapMapper; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.MatchmakerMapper; @@ -234,8 +233,8 @@ public void testLoadPreview() { @Test public void testGetRecommendedMaps() { MapVersion mapVersion = Instancio.create(MapVersion.class); - com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())); + com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map()); + map.setLatestVersion(mapMapper.map(mapVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(map), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getRecommendedMapsWithPageCount(10, 0)).expectNext(Tuples.of(List.of(mapVersion), 1)) @@ -247,8 +246,8 @@ public void testGetRecommendedMaps() { @Test public void testGetHighestRatedMaps() { MapVersion mapVersion = Instancio.create(MapVersion.class); - com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())); + com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map()); + map.setLatestVersion(mapMapper.map(mapVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(map), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getHighestRatedMapsWithPageCount(10, 0)).expectNext(Tuples.of(List.of(mapVersion), 1)) @@ -260,8 +259,8 @@ public void testGetHighestRatedMaps() { @Test public void testGetNewestMaps() { MapVersion mapVersion = Instancio.create(MapVersion.class); - com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())); + com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map()); + map.setLatestVersion(mapMapper.map(mapVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(map), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getNewestMapsWithPageCount(10, 0)).expectNext(Tuples.of(List.of(mapVersion), 1)) @@ -273,8 +272,8 @@ public void testGetNewestMaps() { @Test public void testGetMostPlayedMaps() { MapVersion mapVersion = Instancio.create(MapVersion.class); - com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())); + com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map()); + map.setLatestVersion(mapMapper.map(mapVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(map), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getMostPlayedMapsWithPageCount(10, 0)).expectNext(Tuples.of(List.of(mapVersion), 1)) @@ -312,8 +311,8 @@ public void testGetLatestVersionMap() { MapVersion mapVersion = Instancio.of(MapVersion.class) .set(field(MapVersion::folderName), "palaneum.v0001") .create(); - com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())); + com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map()); + map.setLatestVersion(mapMapper.map(mapVersion)); when(fafApiAccessor.getMany(any())).thenReturn(Flux.just(map)); StepVerifier.create(instance.getMapLatestVersion(mapVersion).map(MapVersion::id)).expectNext(mapVersion.id()) @@ -323,8 +322,8 @@ public void testGetLatestVersionMap() { .eq(mapVersion.folderName())))); MapVersion newMap = Instancio.create(MapVersion.class); - map = mapMapper.map(mapVersion.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(newMap, new CycleAvoidingMappingContext())); + map = mapMapper.map(mapVersion.map()); + map.setLatestVersion(mapMapper.map(newMap)); when(fafApiAccessor.getMany(any())).thenReturn(Flux.just(map)); StepVerifier.create(instance.getMapLatestVersion(mapVersion).map(MapVersion::id)).expectNext(newMap.id()) .verifyComplete(); @@ -338,8 +337,8 @@ public void testUpdateMapToLatestVersionIfNewVersionExist() throws Exception { MapVersion updatedMap = Instancio.of(MapVersion.class) .set(field(MapVersion::folderName), "palaneum.v0002") .create(); - com.faforever.commons.api.dto.Map map = mapMapper.map(outdatedMap.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(updatedMap, new CycleAvoidingMappingContext())); + com.faforever.commons.api.dto.Map map = mapMapper.map(outdatedMap.map()); + map.setLatestVersion(mapMapper.map(updatedMap)); when(fafApiAccessor.getMany(any())).thenReturn(Flux.just(map)); @@ -423,7 +422,7 @@ public void testLoadMapNoSmallThumbnailUrl() { @Test public void testFindByMapFolderName() throws Exception { MapVersion mapVersion = Instancio.create(MapVersion.class); - Flux resultFlux = Flux.just(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(mapMapper.map(mapVersion)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.findByMapFolderName("test")).expectNext(mapVersion).verifyComplete(); @@ -443,8 +442,7 @@ public void testGetMatchMakerMaps() throws Exception { .create(); Flux resultFlux = Flux.fromIterable( - matchmakerMapper.mapAssignmentBeans(List.of(mapPoolAssignment1, mapPoolAssignment2), - new CycleAvoidingMappingContext())); + matchmakerMapper.mapAssignmentBeans(List.of(mapPoolAssignment1, mapPoolAssignment2))); when(fafApiAccessor.getMany(any(), anyString())).thenReturn(resultFlux); when(playerService.getCurrentPlayer()).thenReturn(PlayerInfoBuilder.create().defaultValues().get()); @@ -479,7 +477,8 @@ public void testGetMatchMakerMapsWithPagination() throws Exception { "c") .create(); - Flux resultFlux = Flux.fromIterable(matchmakerMapper.mapAssignmentBeans(List.of(mapPoolAssignment1, mapPoolAssignment2, mapPoolAssignment3), new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.fromIterable( + matchmakerMapper.mapAssignmentBeans(List.of(mapPoolAssignment1, mapPoolAssignment2, mapPoolAssignment3))); when(fafApiAccessor.getMany(any(), anyString())).thenReturn(resultFlux); when(playerService.getCurrentPlayer()).thenReturn(PlayerInfoBuilder.create().defaultValues().get()); @@ -513,8 +512,7 @@ public void testHasPlayedMap() throws Exception { @Test public void testGetOwnedMaps() throws Exception { MapVersion mapVersion = Instancio.create(MapVersion.class); - Mono, Integer>> resultMono = ApiTestUtil.apiPageOf( - List.of(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())), 1); + Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(mapMapper.map(mapVersion)), 1); when(fafApiAccessor.getManyWithPageCount(any())).thenReturn(resultMono); PlayerInfo player = PlayerInfoBuilder.create().defaultValues().get(); when(playerService.getCurrentPlayer()).thenReturn(player); @@ -531,8 +529,8 @@ public void testGetOwnedMaps() throws Exception { @Test public void testFindByQuery() throws Exception { MapVersion mapVersion = Instancio.create(MapVersion.class); - com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map(), new CycleAvoidingMappingContext()); - map.setLatestVersion(mapMapper.map(mapVersion, new CycleAvoidingMappingContext())); + com.faforever.commons.api.dto.Map map = mapMapper.map(mapVersion.map()); + map.setLatestVersion(mapMapper.map(mapVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(map), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); diff --git a/src/test/java/com/faforever/client/mod/ModServiceTest.java b/src/test/java/com/faforever/client/mod/ModServiceTest.java index 530f9c4600..86cf10f481 100644 --- a/src/test/java/com/faforever/client/mod/ModServiceTest.java +++ b/src/test/java/com/faforever/client/mod/ModServiceTest.java @@ -6,7 +6,6 @@ import com.faforever.client.fx.PlatformService; import com.faforever.client.game.GamePrefsService; import com.faforever.client.i18n.I18n; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.ModMapper; import com.faforever.client.notification.NotificationService; @@ -293,7 +292,7 @@ public void testLoadThumbnail() throws MalformedURLException { public void testUpdateModsWithUpdatedMod() throws IOException, ExecutionException, InterruptedException { ModVersion modVersion = Instancio.create(ModVersion.class); - com.faforever.commons.api.dto.ModVersion dto = modMapper.map(modVersion, new CycleAvoidingMappingContext()); + com.faforever.commons.api.dto.ModVersion dto = modMapper.map(modVersion); when(fafApiAccessor.getMany(any())).thenReturn(Flux.just(dto)); @@ -322,7 +321,7 @@ public void testUpdateModsWithOutdatedMod() throws IOException, ExecutionExcepti ModVersion latestVersion = Instancio.create(ModVersion.class); ModVersion modVersion = Instancio.create(ModVersion.class); - com.faforever.commons.api.dto.ModVersion dto = modMapper.map(modVersion, new CycleAvoidingMappingContext()); + com.faforever.commons.api.dto.ModVersion dto = modMapper.map(modVersion); when(fafApiAccessor.getMany(any())).thenReturn(Flux.just(dto)); @@ -347,8 +346,8 @@ protected Void call() { @Test public void testGetRecommendedMods() { ModVersion modVersion = Instancio.create(ModVersion.class); - Mod mod = modMapper.map(modVersion.mod(), new CycleAvoidingMappingContext()); - mod.setLatestVersion(modMapper.map(modVersion, new CycleAvoidingMappingContext())); + Mod mod = modMapper.map(modVersion.mod()); + mod.setLatestVersion(modMapper.map(modVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(mod), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getRecommendedModsWithPageCount(10, 0)).expectNext(Tuples.of(List.of(modVersion), 1)) @@ -360,8 +359,8 @@ public void testGetRecommendedMods() { @Test public void testFindByQuery() throws Exception { ModVersion modVersion = Instancio.create(ModVersion.class); - Mod mod = modMapper.map(modVersion.mod(), new CycleAvoidingMappingContext()); - mod.setLatestVersion(modMapper.map(modVersion, new CycleAvoidingMappingContext())); + Mod mod = modMapper.map(modVersion.mod()); + mod.setLatestVersion(modMapper.map(modVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(mod), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); @@ -378,8 +377,8 @@ public void testFindByQuery() throws Exception { @Test public void testGetHighestRated() { ModVersion modVersion = Instancio.create(ModVersion.class); - Mod mod = modMapper.map(modVersion.mod(), new CycleAvoidingMappingContext()); - mod.setLatestVersion(modMapper.map(modVersion, new CycleAvoidingMappingContext())); + Mod mod = modMapper.map(modVersion.mod()); + mod.setLatestVersion(modMapper.map(modVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(mod), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getHighestRatedModsWithPageCount(10, 1)).expectNext(Tuples.of(List.of(modVersion), 1)) @@ -395,8 +394,8 @@ public void testGetHighestRated() { @Test public void testGetHighestRatedUI() { ModVersion modVersion = Instancio.create(ModVersion.class); - Mod mod = modMapper.map(modVersion.mod(), new CycleAvoidingMappingContext()); - mod.setLatestVersion(modMapper.map(modVersion, new CycleAvoidingMappingContext())); + Mod mod = modMapper.map(modVersion.mod()); + mod.setLatestVersion(modMapper.map(modVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(mod), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getHighestRatedUiModsWithPageCount(10, 1)) @@ -413,8 +412,8 @@ public void testGetHighestRatedUI() { @Test public void testGetNewest() { ModVersion modVersion = Instancio.create(ModVersion.class); - Mod mod = modMapper.map(modVersion.mod(), new CycleAvoidingMappingContext()); - mod.setLatestVersion(modMapper.map(modVersion, new CycleAvoidingMappingContext())); + Mod mod = modMapper.map(modVersion.mod()); + mod.setLatestVersion(modMapper.map(modVersion)); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(mod), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getNewestModsWithPageCount(10, 1)).expectNext(Tuples.of(List.of(modVersion), 1)) diff --git a/src/test/java/com/faforever/client/player/PlayerServiceTest.java b/src/test/java/com/faforever/client/player/PlayerServiceTest.java index 90df8f0d76..b64fec1470 100644 --- a/src/test/java/com/faforever/client/player/PlayerServiceTest.java +++ b/src/test/java/com/faforever/client/player/PlayerServiceTest.java @@ -6,7 +6,6 @@ import com.faforever.client.domain.server.GameInfo; import com.faforever.client.domain.server.PlayerInfo; import com.faforever.client.fx.FxApplicationThreadExecutor; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.PlayerMapper; import com.faforever.client.preferences.UserPrefs; @@ -166,7 +165,7 @@ public void testGetCurrentPlayer() { @Test public void testGetPlayerByName() { PlayerInfo playerInfo = PlayerInfoBuilder.create().defaultValues().get(); - Flux resultFlux = Flux.just(playerMapper.map(playerInfo, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(playerMapper.map(playerInfo)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getPlayerByName("test")).expectNext(playerInfo).verifyComplete(); @@ -183,7 +182,7 @@ public void testGetPlayerByNamePlayerOnline() { @Test public void testGetPlayersByIds() { PlayerInfo playerInfo = PlayerInfoBuilder.create().defaultValues().username("junit4").id(4).get(); - Flux resultFlux = Flux.just(playerMapper.map(playerInfo, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(playerMapper.map(playerInfo)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); instance.getPlayersByIds(List.of(1, 2, 3, 4)).blockLast(); diff --git a/src/test/java/com/faforever/client/replay/ReplayServiceTest.java b/src/test/java/com/faforever/client/replay/ReplayServiceTest.java index 4c70b4aa7c..aaa5c85df0 100644 --- a/src/test/java/com/faforever/client/replay/ReplayServiceTest.java +++ b/src/test/java/com/faforever/client/replay/ReplayServiceTest.java @@ -4,7 +4,7 @@ import com.faforever.client.config.ClientProperties; import com.faforever.client.domain.api.MapVersion; import com.faforever.client.domain.api.Replay; -import com.faforever.client.domain.api.ReplayReviewsSummary; +import com.faforever.client.domain.api.ReviewsSummary; import com.faforever.client.featuredmod.FeaturedModService; import com.faforever.client.fx.PlatformService; import com.faforever.client.game.GameService; @@ -12,7 +12,6 @@ import com.faforever.client.i18n.I18n; import com.faforever.client.map.MapService; import com.faforever.client.map.generator.MapGeneratorService; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.ReplayMapper; import com.faforever.client.mapstruct.ReviewMapper; @@ -343,8 +342,7 @@ public void testRunFafReplayFileExceptionTriggersNotification() throws Exception @Test public void testOwnReplays() throws Exception { Replay replay = Instancio.create(Replay.class); - Mono, Integer>> resultMono = ApiTestUtil.apiPageOf( - List.of(replayMapper.map(replay, new CycleAvoidingMappingContext())), 1); + Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(replayMapper.map(replay)), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); when(loginService.getUserId()).thenReturn(47); @@ -437,8 +435,7 @@ public void testEnrich() throws Exception { @Test public void testGetNewest() { Replay replay = Instancio.create(Replay.class); - Mono, Integer>> resultMono = ApiTestUtil.apiPageOf( - List.of(replayMapper.map(replay, new CycleAvoidingMappingContext())), 1); + Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(replayMapper.map(replay)), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getNewestReplaysWithPageCount(10, 1)).expectNextCount(1) @@ -454,9 +451,9 @@ public void testGetNewest() { @Test public void testGetHighestRated() { - ReplayReviewsSummary replayReviewsSummary = Instancio.create(ReplayReviewsSummary.class); + ReviewsSummary replayReviewsSummary = Instancio.create(ReviewsSummary.class); Mono, Integer>> resultMono = ApiTestUtil.apiPageOf( - List.of(reviewMapper.map(replayReviewsSummary, new CycleAvoidingMappingContext())), 1); + List.of(reviewMapper.mapToMod(replayReviewsSummary)), 1); when(fafApiAccessor.getManyWithPageCount(any())).thenReturn(resultMono); StepVerifier.create(instance.getHighestRatedReplaysWithPageCount(10, 1)).expectNextCount(1) @@ -470,8 +467,7 @@ public void testGetHighestRated() { @Test public void testGetReplaysForPlayer() { Replay replay = Instancio.create(Replay.class); - Mono, Integer>> resultMono = ApiTestUtil.apiPageOf( - List.of(replayMapper.map(replay, new CycleAvoidingMappingContext())), 1); + Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(replayMapper.map(replay)), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); StepVerifier.create(instance.getReplaysForPlayerWithPageCount(0, 10, 1)).expectNextCount(1) @@ -492,8 +488,7 @@ public void testGetReplaysForPlayer() { @Test public void testFindByQuery() { Replay replay = Instancio.create(Replay.class); - Mono, Integer>> resultMono = ApiTestUtil.apiPageOf( - List.of(replayMapper.map(replay, new CycleAvoidingMappingContext())), 1); + Mono, Integer>> resultMono = ApiTestUtil.apiPageOf(List.of(replayMapper.map(replay)), 1); when(fafApiAccessor.getManyWithPageCount(any(), anyString())).thenReturn(resultMono); SearchConfig searchConfig = new SearchConfig(new SortConfig("testSort", SortOrder.ASC), "testQuery"); @@ -507,7 +502,7 @@ public void testFindByQuery() { @Test public void testFindById() { Replay replay = Instancio.create(Replay.class); - Mono resultMono = Mono.just(replayMapper.map(replay, new CycleAvoidingMappingContext())); + Mono resultMono = Mono.just(replayMapper.map(replay)); when(fafApiAccessor.getOne(any())).thenReturn(resultMono); StepVerifier.create(instance.findById(0)).expectNextCount(1).verifyComplete(); verify(fafApiAccessor).getOne(any()); diff --git a/src/test/java/com/faforever/client/reporting/ModerationServiceTest.java b/src/test/java/com/faforever/client/reporting/ModerationServiceTest.java index 346f0922fd..e50ec12540 100644 --- a/src/test/java/com/faforever/client/reporting/ModerationServiceTest.java +++ b/src/test/java/com/faforever/client/reporting/ModerationServiceTest.java @@ -4,7 +4,6 @@ import com.faforever.client.builders.PlayerInfoBuilder; import com.faforever.client.domain.api.ModerationReport; import com.faforever.client.domain.server.PlayerInfo; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.ModerationReportMapper; import com.faforever.client.player.PlayerService; @@ -55,7 +54,7 @@ public void setUp() throws Exception { @Test public void testGetModerationReports() { ModerationReport report = Instancio.create(ModerationReport.class); - Flux resultFlux = Flux.just(moderationReportMapper.map(report, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(moderationReportMapper.map(report)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getModerationReports()).expectNextCount(1).verifyComplete(); ; @@ -67,8 +66,7 @@ public void testGetModerationReports() { @Test public void testPostModerationReport() { ModerationReport report = Instancio.create(ModerationReport.class); - com.faforever.commons.api.dto.ModerationReport moderationReport = moderationReportMapper.map(report, - new CycleAvoidingMappingContext()); + com.faforever.commons.api.dto.ModerationReport moderationReport = moderationReportMapper.map(report); Mono resultMono = Mono.just(moderationReport); when(fafApiAccessor.post(any(), any())).thenReturn(resultMono); StepVerifier.create(instance.postModerationReport(report)).expectNextCount(1).verifyComplete(); diff --git a/src/test/java/com/faforever/client/reporting/ReportDialogControllerTest.java b/src/test/java/com/faforever/client/reporting/ReportDialogControllerTest.java index 93c4cf476b..17033e2007 100644 --- a/src/test/java/com/faforever/client/reporting/ReportDialogControllerTest.java +++ b/src/test/java/com/faforever/client/reporting/ReportDialogControllerTest.java @@ -10,7 +10,6 @@ import com.faforever.client.replay.ReplayService; import com.faforever.client.test.PlatformTest; import com.faforever.client.util.TimeService; -import javafx.collections.FXCollections; import org.instancio.Instancio; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -21,10 +20,6 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import static org.instancio.Select.field; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -58,9 +53,7 @@ public class ReportDialogControllerTest extends PlatformTest { @BeforeEach public void setUp() throws Exception { player = PlayerInfoBuilder.create().defaultValues().username("junit").get(); - replay = Instancio.of(Replay.class).set(field(Replay::teams), - FXCollections.observableMap(new HashMap<>(Map.of("1", List.of(player.getUsername()))))) - .create(); + replay = Instancio.of(Replay.class).create(); lenient().when(i18n.get("report.noReports")).thenReturn("noReports"); @@ -154,7 +147,7 @@ public void testOnReportNoOffender() { @Test public void testOnReportOffenderNotInGame() { - Replay replay = Instancio.of(Replay.class).ignore(field(Replay::teams)).create(); + Replay replay = Instancio.of(Replay.class).ignore(field(Replay::teamPlayerStats)).create(); lenient().when(replayService.findById(replay.id())).thenReturn(Mono.just(replay)); instance.gameId.setText(String.valueOf(replay.id())); diff --git a/src/test/java/com/faforever/client/stats/StatisticsServiceTest.java b/src/test/java/com/faforever/client/stats/StatisticsServiceTest.java index 5febdf3ac1..3c9946a600 100644 --- a/src/test/java/com/faforever/client/stats/StatisticsServiceTest.java +++ b/src/test/java/com/faforever/client/stats/StatisticsServiceTest.java @@ -5,7 +5,6 @@ import com.faforever.client.domain.api.Leaderboard; import com.faforever.client.domain.api.LeaderboardRatingJournal; import com.faforever.client.domain.server.PlayerInfo; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.LeaderboardMapper; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.test.ElideMatchers; @@ -49,15 +48,14 @@ public void setUp() throws Exception { public void testGetStatisticsForPlayer() throws Exception { LeaderboardRatingJournal leaderboardRatingJournal = Instancio.create(LeaderboardRatingJournal.class); PlayerInfo player = PlayerInfoBuilder.create().defaultValues().username("junit").get(); - Flux resultFlux = Flux.just( - leaderboardMapper.map(leaderboardRatingJournal, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(leaderboardMapper.map(leaderboardRatingJournal)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getRatingHistory(player, leaderboard)).expectNextCount(1) .expectComplete() .verify(); verify(fafApiAccessor).getMany(argThat( ElideMatchers.hasFilter(qBuilder().intNum("gamePlayerStats.player.id").eq(player.getId()).and() - .intNum("leagueLeaderboard.id") + .intNum("leaderboard.id") .eq(leaderboard.id())) )); verify(fafApiAccessor).getMany(argThat(ElideMatchers.hasPageSize(10000))); diff --git a/src/test/java/com/faforever/client/tournament/TournamentServiceTest.java b/src/test/java/com/faforever/client/tournament/TournamentServiceTest.java index 755f04496b..f4063c56af 100644 --- a/src/test/java/com/faforever/client/tournament/TournamentServiceTest.java +++ b/src/test/java/com/faforever/client/tournament/TournamentServiceTest.java @@ -2,7 +2,6 @@ import com.faforever.client.api.FafApiAccessor; import com.faforever.client.domain.api.Tournament; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.TournamentMapper; import com.faforever.client.test.ServiceTest; @@ -42,8 +41,7 @@ public void setUp() throws Exception { @Test public void testAllTournaments() throws Exception { Tournament tournament = Instancio.create(Tournament.class); - Flux resultFlux = Flux.just( - tournamentMapper.map(tournament, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(tournamentMapper.map(tournament)); when(fafApiAccessor.getMany(eq(com.faforever.commons.api.dto.Tournament.class), anyString(), anyInt(), any())).thenReturn(resultFlux); StepVerifier.create(instance.getAllTournaments()).expectNext(tournament).verifyComplete(); diff --git a/src/test/java/com/faforever/client/tutorial/TutorialServiceTest.java b/src/test/java/com/faforever/client/tutorial/TutorialServiceTest.java index 6125278298..0482ea1b37 100644 --- a/src/test/java/com/faforever/client/tutorial/TutorialServiceTest.java +++ b/src/test/java/com/faforever/client/tutorial/TutorialServiceTest.java @@ -3,7 +3,6 @@ import com.faforever.client.api.FafApiAccessor; import com.faforever.client.domain.api.TutorialCategory; import com.faforever.client.game.GameService; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.TutorialMapper; import com.faforever.client.test.ElideMatchers; @@ -46,7 +45,7 @@ public void setUp() throws Exception { @Test public void testGetTutorialCategories() throws Exception { TutorialCategory tutorialCategory = Instancio.create(TutorialCategory.class); - Flux resultFlux = Flux.just(tutorialMapper.map(tutorialCategory, new CycleAvoidingMappingContext())); + Flux resultFlux = Flux.just(tutorialMapper.map(tutorialCategory)); when(fafApiAccessor.getMany(any())).thenReturn(resultFlux); StepVerifier.create(instance.getTutorialCategories()).expectNext(tutorialCategory).verifyComplete(); verify(fafApiAccessor).getMany(argThat(ElideMatchers.hasPageSize(1000))); diff --git a/src/test/java/com/faforever/client/vault/review/ReviewServiceTest.java b/src/test/java/com/faforever/client/vault/review/ReviewServiceTest.java index 810331d5e9..0dfbb19aa8 100644 --- a/src/test/java/com/faforever/client/vault/review/ReviewServiceTest.java +++ b/src/test/java/com/faforever/client/vault/review/ReviewServiceTest.java @@ -6,7 +6,6 @@ import com.faforever.client.domain.api.ModVersion; import com.faforever.client.domain.api.ModVersionReview; import com.faforever.client.domain.api.ReplayReview; -import com.faforever.client.mapstruct.CycleAvoidingMappingContext; import com.faforever.client.mapstruct.MapperSetup; import com.faforever.client.mapstruct.ReviewMapper; import com.faforever.client.test.ElideMatchers; @@ -46,7 +45,7 @@ public void setUp() throws Exception { @Test public void saveNewGameReview() throws Exception { ReplayReview reviewBean = Instancio.of(ReplayReview.class).ignore(field(ReplayReview::id)).create(); - Mono resultMono = Mono.just(reviewMapper.map(reviewBean, new CycleAvoidingMappingContext())); + Mono resultMono = Mono.just(reviewMapper.map(reviewBean)); when(fafApiAccessor.post(any(), any())).thenReturn(resultMono); StepVerifier.create(instance.saveReview(Instancio.of(ReplayReview.class).ignore(field(ReplayReview::id)) @@ -59,7 +58,7 @@ public void saveNewGameReview() throws Exception { @Test public void saveNewMapVersionReview() throws Exception { MapVersionReview reviewBean = Instancio.of(MapVersionReview.class).ignore(field(MapVersionReview::id)).create(); - Mono resultMono = Mono.just(reviewMapper.map(reviewBean, new CycleAvoidingMappingContext())); + Mono resultMono = Mono.just(reviewMapper.map(reviewBean)); when(fafApiAccessor.post(any(), any())).thenReturn(resultMono); StepVerifier.create(instance.saveReview(Instancio.of(MapVersionReview.class) @@ -75,7 +74,7 @@ public void saveNewMapVersionReview() throws Exception { @Test public void saveNewModVersionReview() throws Exception { ModVersionReview reviewBean = Instancio.create(ModVersionReview.class); - Mono resultMono = Mono.just(reviewMapper.map(reviewBean, new CycleAvoidingMappingContext())); + Mono resultMono = Mono.just(reviewMapper.map(reviewBean)); when(fafApiAccessor.post(any(), any())).thenReturn(resultMono); StepVerifier.create(instance.saveReview(Instancio.of(ModVersionReview.class)