From e58e0b4956236d8af8800a7e4b6a2bb235b6c94d Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 21:06:20 +0000 Subject: [PATCH] fix: resolve top 5 SonarQube issues (weekly sweep) - S1452: concrete ResponseEntity> return types in ArticleApi (x2) and CommentsApi - S1948: make non-serializable Errors field transient in InvalidRequestException - S2885: replace static shared Calendar in DateTimeHandler with a per-call instance 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 | 14 +++++++++----- 4 files changed, 13 insertions(+), 9 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..9e65a63a3 100644 --- a/src/main/java/io/spring/infrastructure/mybatis/DateTimeHandler.java +++ b/src/main/java/io/spring/infrastructure/mybatis/DateTimeHandler.java @@ -15,30 +15,34 @@ @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.getTimeZone("UTC"); + + private static Calendar utcCalendar() { + return Calendar.getInstance(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, utcCalendar()); } @Override public DateTime getResult(ResultSet rs, String columnName) throws SQLException { - Timestamp timestamp = rs.getTimestamp(columnName, UTC_CALENDAR); + Timestamp timestamp = rs.getTimestamp(columnName, utcCalendar()); 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, utcCalendar()); 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, utcCalendar()); return ts != null ? new DateTime(ts.getTime()) : null; } }