Skip to content

Commit 7c714e0

Browse files
committed
refactor: replace deprecated @TeMPOraL and java.util.Date with java.time.Instant
1 parent 91822e2 commit 7c714e0

6 files changed

Lines changed: 27 additions & 38 deletions

File tree

src/main/java/com/digitalsanctuary/spring/user/gdpr/GdprExportService.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,8 @@ private GdprExportDTO.UserData buildUserData(User user) {
113113
.email(user.getEmail())
114114
.firstName(user.getFirstName())
115115
.lastName(user.getLastName())
116-
.registrationDate(user.getRegistrationDate() != null
117-
? user.getRegistrationDate().toInstant() : null)
118-
.lastActivityDate(user.getLastActivityDate() != null
119-
? user.getLastActivityDate().toInstant() : null)
116+
.registrationDate(user.getRegistrationDate())
117+
.lastActivityDate(user.getLastActivityDate())
120118
.enabled(user.isEnabled())
121119
.locked(user.isLocked())
122120
.provider(user.getProvider() != null ? user.getProvider().name() : null)

src/main/java/com/digitalsanctuary/spring/user/persistence/model/User.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.digitalsanctuary.spring.user.persistence.model;
22

3+
import java.time.Instant;
34
import java.util.ArrayList;
4-
import java.util.Date;
55
import java.util.HashSet;
66
import java.util.List;
77
import java.util.Set;
@@ -81,21 +81,18 @@ public enum Provider {
8181

8282
/** The registration date. */
8383
@CreatedDate
84-
@Temporal(TemporalType.TIMESTAMP)
85-
private Date registrationDate;
84+
private Instant registrationDate;
8685

8786
/** The last activity date. */
8887
@LastModifiedDate
89-
@Temporal(TemporalType.TIMESTAMP)
90-
private Date lastActivityDate;
88+
private Instant lastActivityDate;
9189

9290
private int failedLoginAttempts;
9391

9492
/** The locked. */
9593
private boolean locked;
9694

97-
@Temporal(TemporalType.TIMESTAMP)
98-
private Date lockedDate;
95+
private Instant lockedDate;
9996

10097
/** The roles - stored as Set to avoid Hibernate immutable collection issues */
10198
@ToString.Exclude
@@ -124,7 +121,7 @@ public User() {
124121
*/
125122
@PreUpdate
126123
public void setLastActivityDate() {
127-
setLastActivityDate(new Date());
124+
setLastActivityDate(Instant.now());
128125
}
129126

130127
/**

src/main/java/com/digitalsanctuary/spring/user/service/LoginAttemptService.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.digitalsanctuary.spring.user.service;
22

3-
import java.util.Date;
3+
import java.time.Duration;
4+
import java.time.Instant;
45
import org.springframework.beans.factory.annotation.Value;
56
import org.springframework.stereotype.Service;
67
import org.springframework.transaction.annotation.Transactional;
@@ -88,7 +89,7 @@ private void incrementFailedAttempts(User user) {
8889
user.setFailedLoginAttempts(++currentAttempts);
8990
if (currentAttempts >= maxFailedLoginAttempts) {
9091
user.setLocked(true);
91-
user.setLockedDate(new Date());
92+
user.setLockedDate(Instant.now());
9293
}
9394
userRepository.save(user);
9495
}
@@ -124,10 +125,7 @@ public boolean isLocked(final String email) {
124125
public User checkIfUserShouldBeUnlocked(User user) {
125126
log.debug("Checking if user should be unlocked: {}", user.getEmail());
126127
if (user.isLocked() && user.getLockedDate() != null && accountLockoutDuration >= 0) {
127-
Date lockedDate = user.getLockedDate();
128-
Date now = new Date();
129-
long diff = now.getTime() - lockedDate.getTime();
130-
long diffMinutes = diff / (60 * 1000);
128+
long diffMinutes = Duration.between(user.getLockedDate(), Instant.now()).toMinutes();
131129
if (diffMinutes >= accountLockoutDuration) {
132130
log.debug("User should be unlocked: {}", user.getEmail());
133131
user.setLocked(false);

src/main/java/com/digitalsanctuary/spring/user/service/LoginHelperService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.digitalsanctuary.spring.user.service;
22

3+
import java.time.Instant;
34
import java.util.Collection;
4-
import java.util.Date;
55
import org.springframework.security.core.GrantedAuthority;
66
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
77
import org.springframework.security.oauth2.core.oidc.OidcUserInfo;
@@ -42,7 +42,7 @@ public class LoginHelperService {
4242
*/
4343
public DSUserDetails userLoginHelper(User dbUser) {
4444
// Updating lastActivity date for this login
45-
dbUser.setLastActivityDate(new Date());
45+
dbUser.setLastActivityDate(Instant.now());
4646

4747
// Check if the user account is locked, but should be unlocked now, and unlock it
4848
dbUser = loginAttemptService.checkIfUserShouldBeUnlocked(dbUser);
@@ -63,7 +63,7 @@ public DSUserDetails userLoginHelper(User dbUser) {
6363
*/
6464
public DSUserDetails userLoginHelper(User dbUser, OidcUserInfo oidcUserInfo, OidcIdToken oidcIdToken) {
6565
// Updating lastActivity date for this login
66-
dbUser.setLastActivityDate(new Date());
66+
dbUser.setLastActivityDate(Instant.now());
6767

6868
// Check if the user account is locked, but should be unlocked now, and unlock it
6969
dbUser = loginAttemptService.checkIfUserShouldBeUnlocked(dbUser);

src/test/java/com/digitalsanctuary/spring/user/service/LoginHelperServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import static org.mockito.ArgumentMatchers.any;
55
import static org.mockito.Mockito.verify;
66
import static org.mockito.Mockito.when;
7+
import java.time.Instant;
78
import java.util.Collection;
89
import java.util.Collections;
9-
import java.util.Date;
1010
import java.util.HashSet;
1111
import java.util.Set;
1212
import org.junit.jupiter.api.BeforeEach;
@@ -169,7 +169,7 @@ void shouldHandleLockedUserThatRemainsLocked() {
169169
// Given
170170
testUser.setLocked(true);
171171
testUser.setFailedLoginAttempts(5);
172-
Date lockedDate = new Date(System.currentTimeMillis() - 60000); // 1 minute ago
172+
Instant lockedDate = Instant.now().minusSeconds(60); // 1 minute ago
173173
testUser.setLockedDate(lockedDate);
174174

175175
when(loginAttemptService.checkIfUserShouldBeUnlocked(testUser)).thenReturn(testUser); // User remains locked

src/test/java/com/digitalsanctuary/spring/user/test/builders/UserTestDataBuilder.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.digitalsanctuary.spring.user.test.builders;
22

3+
import java.time.Instant;
4+
import java.time.temporal.ChronoUnit;
35
import java.util.ArrayList;
46
import java.util.Arrays;
5-
import java.util.Calendar;
6-
import java.util.Date;
77
import java.util.List;
88
import java.util.concurrent.atomic.AtomicLong;
99
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -34,11 +34,11 @@ public class UserTestDataBuilder {
3434
private String password = "password123";
3535
private boolean passwordEncoded = false;
3636
private boolean enabled = false;
37-
private Date registrationDate = new Date();
38-
private Date lastActivityDate = new Date();
37+
private Instant registrationDate = Instant.now();
38+
private Instant lastActivityDate = Instant.now();
3939
private int failedLoginAttempts = 0;
4040
private boolean locked = false;
41-
private Date lockedDate = null;
41+
private Instant lockedDate = null;
4242
private List<Role> roles = new ArrayList<>();
4343

4444
private UserTestDataBuilder() {
@@ -139,27 +139,23 @@ public UserTestDataBuilder unverified() {
139139
return this;
140140
}
141141

142-
public UserTestDataBuilder withRegistrationDate(Date registrationDate) {
142+
public UserTestDataBuilder withRegistrationDate(Instant registrationDate) {
143143
this.registrationDate = registrationDate;
144144
return this;
145145
}
146146

147147
public UserTestDataBuilder registeredDaysAgo(int days) {
148-
Calendar cal = Calendar.getInstance();
149-
cal.add(Calendar.DAY_OF_YEAR, -days);
150-
this.registrationDate = cal.getTime();
148+
this.registrationDate = Instant.now().minus(days, ChronoUnit.DAYS);
151149
return this;
152150
}
153151

154-
public UserTestDataBuilder withLastActivityDate(Date lastActivityDate) {
152+
public UserTestDataBuilder withLastActivityDate(Instant lastActivityDate) {
155153
this.lastActivityDate = lastActivityDate;
156154
return this;
157155
}
158156

159157
public UserTestDataBuilder lastActiveDaysAgo(int days) {
160-
Calendar cal = Calendar.getInstance();
161-
cal.add(Calendar.DAY_OF_YEAR, -days);
162-
this.lastActivityDate = cal.getTime();
158+
this.lastActivityDate = Instant.now().minus(days, ChronoUnit.DAYS);
163159
return this;
164160
}
165161

@@ -170,7 +166,7 @@ public UserTestDataBuilder withFailedLoginAttempts(int attempts) {
170166

171167
public UserTestDataBuilder locked() {
172168
this.locked = true;
173-
this.lockedDate = new Date();
169+
this.lockedDate = Instant.now();
174170
return this;
175171
}
176172

@@ -181,7 +177,7 @@ public UserTestDataBuilder unlocked() {
181177
return this;
182178
}
183179

184-
public UserTestDataBuilder withLockedDate(Date lockedDate) {
180+
public UserTestDataBuilder withLockedDate(Instant lockedDate) {
185181
this.lockedDate = lockedDate;
186182
this.locked = (lockedDate != null);
187183
return this;

0 commit comments

Comments
 (0)