From 8adc2ecedf88c604091d6d6fd2461ddd5ef45811 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 18 May 2026 21:09:15 +0000 Subject: [PATCH] fix: resolve top 5 SonarQube issues (weekly sweep) - S1948: Make 'errors' field transient in InvalidRequestException (CRITICAL/BUG) - S1452: Replace ResponseEntity with concrete type in ArticleApi (CRITICAL) - S1452: Replace ResponseEntity with concrete type in CommentsApi (CRITICAL) - S2885: Fix non-thread-safe static Calendar in DateTimeHandler (MAJOR/BUG) - Spotless formatting fix in DefaultJwtServiceTest Co-Authored-By: Kyu Choi --- src/main/java/io/spring/api/ArticleApi.java | 4 ++-- src/main/java/io/spring/api/CommentsApi.java | 2 +- .../api/exception/InvalidRequestException.java | 2 +- .../infrastructure/mybatis/DateTimeHandler.java | 12 +++++++----- .../service/DefaultJwtServiceTest.java | 3 ++- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/spring/api/ArticleApi.java b/src/main/java/io/spring/api/ArticleApi.java index c80afa31d..92b70fcac 100644 --- a/src/main/java/io/spring/api/ArticleApi.java +++ b/src/main/java/io/spring/api/ArticleApi.java @@ -33,7 +33,7 @@ public class ArticleApi { private ArticleCommandService articleCommandService; @GetMapping - public ResponseEntity article( + public ResponseEntity> article( @PathVariable("slug") String slug, @AuthenticationPrincipal User user) { return articleQueryService .findBySlug(slug, user) @@ -42,7 +42,7 @@ public ResponseEntity article( } @PutMapping - public ResponseEntity updateArticle( + public ResponseEntity> updateArticle( @PathVariable("slug") String slug, @AuthenticationPrincipal User user, @Valid @RequestBody UpdateArticleParam updateArticleParam) { diff --git a/src/main/java/io/spring/api/CommentsApi.java b/src/main/java/io/spring/api/CommentsApi.java index c5f7e77e9..6dd329f8e 100644 --- a/src/main/java/io/spring/api/CommentsApi.java +++ b/src/main/java/io/spring/api/CommentsApi.java @@ -38,7 +38,7 @@ public class CommentsApi { private CommentQueryService commentQueryService; @PostMapping - public ResponseEntity createComment( + public ResponseEntity> createComment( @PathVariable("slug") String slug, @AuthenticationPrincipal User user, @Valid @RequestBody NewCommentParam newCommentParam) { diff --git a/src/main/java/io/spring/api/exception/InvalidRequestException.java b/src/main/java/io/spring/api/exception/InvalidRequestException.java index 68b6c868a..7360d717e 100644 --- a/src/main/java/io/spring/api/exception/InvalidRequestException.java +++ b/src/main/java/io/spring/api/exception/InvalidRequestException.java @@ -4,7 +4,7 @@ @SuppressWarnings("serial") public class InvalidRequestException extends RuntimeException { - private final Errors errors; + private final transient Errors errors; public InvalidRequestException(Errors errors) { super(""); diff --git a/src/main/java/io/spring/infrastructure/mybatis/DateTimeHandler.java b/src/main/java/io/spring/infrastructure/mybatis/DateTimeHandler.java index 19323e565..acc9e7b27 100644 --- a/src/main/java/io/spring/infrastructure/mybatis/DateTimeHandler.java +++ b/src/main/java/io/spring/infrastructure/mybatis/DateTimeHandler.java @@ -15,30 +15,32 @@ @MappedTypes(DateTime.class) public class DateTimeHandler implements TypeHandler { - private static final Calendar UTC_CALENDAR = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + private static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("UTC"); @Override public void setParameter(PreparedStatement ps, int i, DateTime parameter, JdbcType jdbcType) throws SQLException { ps.setTimestamp( - i, parameter != null ? new Timestamp(parameter.getMillis()) : null, UTC_CALENDAR); + i, + parameter != null ? new Timestamp(parameter.getMillis()) : null, + Calendar.getInstance(UTC_TIMEZONE)); } @Override public DateTime getResult(ResultSet rs, String columnName) throws SQLException { - Timestamp timestamp = rs.getTimestamp(columnName, UTC_CALENDAR); + Timestamp timestamp = rs.getTimestamp(columnName, Calendar.getInstance(UTC_TIMEZONE)); return timestamp != null ? new DateTime(timestamp.getTime()) : null; } @Override public DateTime getResult(ResultSet rs, int columnIndex) throws SQLException { - Timestamp timestamp = rs.getTimestamp(columnIndex, UTC_CALENDAR); + Timestamp timestamp = rs.getTimestamp(columnIndex, Calendar.getInstance(UTC_TIMEZONE)); return timestamp != null ? new DateTime(timestamp.getTime()) : null; } @Override public DateTime getResult(CallableStatement cs, int columnIndex) throws SQLException { - Timestamp ts = cs.getTimestamp(columnIndex, UTC_CALENDAR); + Timestamp ts = cs.getTimestamp(columnIndex, Calendar.getInstance(UTC_TIMEZONE)); return ts != null ? new DateTime(ts.getTime()) : null; } } diff --git a/src/test/java/io/spring/infrastructure/service/DefaultJwtServiceTest.java b/src/test/java/io/spring/infrastructure/service/DefaultJwtServiceTest.java index 12929118a..b2261705e 100644 --- a/src/test/java/io/spring/infrastructure/service/DefaultJwtServiceTest.java +++ b/src/test/java/io/spring/infrastructure/service/DefaultJwtServiceTest.java @@ -13,7 +13,8 @@ public class DefaultJwtServiceTest { @BeforeEach public void setUp() { - jwtService = new DefaultJwtService("123123123123123123123123123123123123123123123123123123123123", 3600); + jwtService = + new DefaultJwtService("123123123123123123123123123123123123123123123123123123123123", 3600); } @Test