Skip to content

Commit e74f73f

Browse files
Sheikah45Brutus5000
authored andcommitted
Use generic in AbstractEntity to allow proper setter chaining
1 parent 2aa41fd commit e74f73f

33 files changed

Lines changed: 49 additions & 33 deletions

src/main/java/com/faforever/api/data/domain/AbstractEntity.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@
1010
import javax.persistence.MappedSuperclass;
1111
import java.time.OffsetDateTime;
1212

13+
@SuppressWarnings("unchecked")
1314
@MappedSuperclass
1415
@Setter
1516
@EqualsAndHashCode(of = "id")
16-
public abstract class AbstractEntity {
17+
public abstract class AbstractEntity<T extends AbstractEntity<T>> {
1718
protected Integer id;
1819
protected OffsetDateTime createTime;
1920
protected OffsetDateTime updateTime;
@@ -25,16 +26,31 @@ public Integer getId() {
2526
return id;
2627
}
2728

29+
public T setId(Integer id) {
30+
this.id = id;
31+
return (T) this;
32+
}
33+
2834
@Column(name = "create_time")
2935
public OffsetDateTime getCreateTime() {
3036
return createTime;
3137
}
3238

39+
public T setCreateTime(OffsetDateTime createTime) {
40+
this.createTime = createTime;
41+
return (T) this;
42+
}
43+
3344
@Column(name = "update_time")
3445
public OffsetDateTime getUpdateTime() {
3546
return updateTime;
3647
}
3748

49+
public T setUpdateTime(OffsetDateTime updateTime) {
50+
this.updateTime = updateTime;
51+
return (T) this;
52+
}
53+
3854
/**
3955
* Supplement method for @EqualsAndHashCode overriding the default lombok implementation
4056
*/

src/main/java/com/faforever/api/data/domain/Avatar.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
@Setter
2626
@Type(Avatar.TYPE_NAME)
2727
@EntityListeners(AvatarEnricherListener.class)
28-
public class Avatar extends AbstractEntity {
28+
public class Avatar extends AbstractEntity<Avatar> {
2929

3030
public static final String TYPE_NAME = "avatar";
3131

src/main/java/com/faforever/api/data/domain/AvatarAssignment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
@Audit(action = Action.DELETE, logStatement = "Avatar ''{0}'' has been revoked from player ''{1}''", logExpressions = {"${avatarAssignment.avatar.id}", "${avatarAssignment.player.id}"})
3232
@Setter
3333
@Type(AvatarAssignment.TYPE_NAME)
34-
public class AvatarAssignment extends AbstractEntity implements OwnableEntity {
34+
public class AvatarAssignment extends AbstractEntity<AvatarAssignment> implements OwnableEntity {
3535
public static final String TYPE_NAME = "avatarAssignment";
3636

3737
private Boolean selected = Boolean.FALSE;

src/main/java/com/faforever/api/data/domain/BanInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
@Audit(action = Action.UPDATE, logStatement = "Updated ban with id `{0}` for player `{1}`", logExpressions = {"${banInfo.id}", "${banInfo.player}"})
4242
@LifeCycleHookBinding(operation = CREATE, phase = PRESECURITY, hook = BanInfoCreateHook.class)
4343
@Setter
44-
public class BanInfo extends AbstractEntity {
44+
public class BanInfo extends AbstractEntity<BanInfo> {
4545
private Player player;
4646
private Player author;
4747
private String reason;

src/main/java/com/faforever/api/data/domain/Clan.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
@Setter
3636
@IsLeaderInClan
3737
@EntityListeners(ClanEnricherListener.class)
38-
public class Clan extends AbstractEntity implements OwnableEntity {
38+
public class Clan extends AbstractEntity<Clan> implements OwnableEntity {
3939

4040
public static final String TYPE_NAME = "clan";
4141

src/main/java/com/faforever/api/data/domain/ClanMembership.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
@DeletePermission(expression = IsClanMembershipDeletable.EXPRESSION)
2020
@UpdatePermission(expression = IsClanMembershipDeletable.EXPRESSION)
2121
@Setter
22-
public class ClanMembership extends AbstractEntity {
22+
public class ClanMembership extends AbstractEntity<ClanMembership> {
2323

2424
private Clan clan;
2525
private Player player;

src/main/java/com/faforever/api/data/domain/GroupPermission.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
@Include(name = "groupPermission")
3333
@Setter
3434
@ReadPermission(expression = ReadUserGroupCheck.EXPRESSION)
35-
public class GroupPermission extends AbstractEntity implements GrantedAuthority {
35+
public class GroupPermission extends AbstractEntity<GroupPermission> implements GrantedAuthority {
3636

3737
// Any changes to the permissions here need to be added to the dto class as well!
3838
public static final String ROLE_READ_AUDIT_LOG = "ROLE_READ_AUDIT_LOG";

src/main/java/com/faforever/api/data/domain/Leaderboard.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@Setter
1212
@Table(name = "leaderboard")
1313
@Include(name = Leaderboard.TYPE_NAME)
14-
public class Leaderboard extends AbstractEntity {
14+
public class Leaderboard extends AbstractEntity<Leaderboard> {
1515

1616
public static final String TYPE_NAME = "leaderboard";
1717

src/main/java/com/faforever/api/data/domain/LeaderboardRating.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
@Setter
1515
@Table(name = "leaderboard_rating")
1616
@Include(name = LeaderboardRating.TYPE_NAME)
17-
public class LeaderboardRating extends AbstractEntity implements OwnableEntity {
17+
public class LeaderboardRating extends AbstractEntity<Leaderboard> implements OwnableEntity {
1818

1919
public static final String TYPE_NAME = "leaderboardRating";
2020

src/main/java/com/faforever/api/data/domain/LeaderboardRatingJournal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
@Setter
1515
@Table(name = "leaderboard_rating_journal")
1616
@Include(name = LeaderboardRatingJournal.TYPE_NAME)
17-
public class LeaderboardRatingJournal extends AbstractEntity {
17+
public class LeaderboardRatingJournal extends AbstractEntity<LeaderboardRatingJournal> {
1818

1919
public static final String TYPE_NAME = "leaderboardRatingJournal";
2020

0 commit comments

Comments
 (0)