diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7f64cfb..8ace79c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,6 +4,8 @@ updates: directory: "/" schedule: interval: "weekly" + cooldown: + default-days: 7 open-pull-requests-limit: 5 groups: spring: @@ -13,16 +15,13 @@ updates: gradle-plugins: patterns: - "org.ec4j.editorconfig" - - "io.freefair.lombok" - "com.google.cloud.tools.jib" - test-dependencies: - patterns: - - "org.mockito*" - - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" + cooldown: + default-days: 7 open-pull-requests-limit: 5 groups: github-actions: diff --git a/build.gradle b/build.gradle index 644123b..d5c0c8b 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,6 @@ plugins { id 'io.spring.dependency-management' version '1.1.7' id 'java' id 'jacoco' - id "io.freefair.lombok" version "9.5.0" id "org.ec4j.editorconfig" version "0.1.0" id 'com.google.cloud.tools.jib' version '3.5.3' } @@ -30,8 +29,6 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-webmvc-test' testImplementation 'org.springframework.boot:spring-boot-data-jpa-test' testImplementation 'org.springframework.boot:spring-boot-security-test' - testImplementation 'org.springframework.security:spring-security-test' - testImplementation 'org.mockito:mockito-inline:5.2.0' } apply from: 'test.gradle' diff --git a/lombok.config b/lombok.config deleted file mode 100644 index 189c0be..0000000 --- a/lombok.config +++ /dev/null @@ -1,3 +0,0 @@ -# This file is generated by the 'io.freefair.lombok' Gradle plugin -config.stopBubbling = true -lombok.addLombokGeneratedAnnotation = true diff --git a/src/main/java/io/github/raeperd/realworld/application/article/ArticleModel.java b/src/main/java/io/github/raeperd/realworld/application/article/ArticleModel.java index 7693f56..25d396b 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/ArticleModel.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/ArticleModel.java @@ -3,7 +3,6 @@ import io.github.raeperd.realworld.application.user.ProfileModel.ProfileModelNested; import io.github.raeperd.realworld.domain.article.Article; import io.github.raeperd.realworld.domain.article.tag.Tag; -import lombok.Value; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -11,27 +10,23 @@ import static java.util.stream.Collectors.toSet; -@Value -class ArticleModel { - - ArticleModelNested article; +record ArticleModel(ArticleModelNested article) { static ArticleModel fromArticle(Article article) { return new ArticleModel(ArticleModelNested.fromArticle(article)); } - @Value - static class ArticleModelNested { - String slug; - String title; - String description; - String body; - Set tagList; - ZonedDateTime createdAt; - ZonedDateTime updatedAt; - boolean favorited; - int favoritesCount; - ProfileModelNested author; + record ArticleModelNested( + String slug, + String title, + String description, + String body, + Set tagList, + ZonedDateTime createdAt, + ZonedDateTime updatedAt, + boolean favorited, + int favoritesCount, + ProfileModelNested author) { static ArticleModelNested fromArticle(Article article) { final var contents = article.getContents(); diff --git a/src/main/java/io/github/raeperd/realworld/application/article/ArticlePostRequestDTO.java b/src/main/java/io/github/raeperd/realworld/application/article/ArticlePostRequestDTO.java index 8736f8f..cda3b75 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/ArticlePostRequestDTO.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/ArticlePostRequestDTO.java @@ -5,7 +5,6 @@ import io.github.raeperd.realworld.domain.article.ArticleContents; import io.github.raeperd.realworld.domain.article.ArticleTitle; import io.github.raeperd.realworld.domain.article.tag.Tag; -import lombok.Value; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -16,17 +15,11 @@ @JsonTypeName("article") @JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME) -@Value -class ArticlePostRequestDTO { - - @NotBlank - String title; - @NotBlank - String description; - @NotBlank - String body; - @NotNull - Set tagList; +record ArticlePostRequestDTO( + @NotBlank String title, + @NotBlank String description, + @NotBlank String body, + @NotNull Set tagList) { ArticleContents toArticleContents() { return new ArticleContents(description, ArticleTitle.of(title), body, tagList); diff --git a/src/main/java/io/github/raeperd/realworld/application/article/ArticlePutRequestDTO.java b/src/main/java/io/github/raeperd/realworld/application/article/ArticlePutRequestDTO.java index d073e06..8e777ec 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/ArticlePutRequestDTO.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/ArticlePutRequestDTO.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.github.raeperd.realworld.domain.article.ArticleTitle; import io.github.raeperd.realworld.domain.article.ArticleUpdateRequest; -import lombok.Value; import static com.fasterxml.jackson.annotation.JsonTypeInfo.As.WRAPPER_OBJECT; import static com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME; @@ -13,12 +12,7 @@ @JsonTypeName("article") @JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME) -@Value -class ArticlePutRequestDTO { - - String title; - String description; - String body; +record ArticlePutRequestDTO(String title, String description, String body) { ArticleUpdateRequest toUpdateRequest() { return builder().titleToUpdate(ofNullable(title).map(ArticleTitle::of).orElse(null)) diff --git a/src/main/java/io/github/raeperd/realworld/application/article/MultipleArticleModel.java b/src/main/java/io/github/raeperd/realworld/application/article/MultipleArticleModel.java index a887d9c..326b5f7 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/MultipleArticleModel.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/MultipleArticleModel.java @@ -2,22 +2,15 @@ import io.github.raeperd.realworld.application.article.ArticleModel.ArticleModelNested; import io.github.raeperd.realworld.domain.article.Article; -import lombok.Value; import org.springframework.data.domain.Page; import java.util.List; -import static java.util.stream.Collectors.toList; - -@Value -class MultipleArticleModel { - - List articles; - int articlesCount; +record MultipleArticleModel(List articles, int articlesCount) { static MultipleArticleModel fromArticles(Page
articles) { final var articlesCollected = articles.map(ArticleModelNested::fromArticle) - .stream().collect(toList()); + .stream().toList(); return new MultipleArticleModel(articlesCollected, articlesCollected.size()); } } diff --git a/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentModel.java b/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentModel.java index e2082b5..12071bb 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentModel.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentModel.java @@ -2,27 +2,22 @@ import io.github.raeperd.realworld.application.user.ProfileModel.ProfileModelNested; import io.github.raeperd.realworld.domain.article.comment.Comment; -import lombok.Value; import java.time.ZoneId; import java.time.ZonedDateTime; -@Value -class CommentModel { - - CommentModelNested comment; +record CommentModel(CommentModelNested comment) { static CommentModel fromComment(Comment comment) { return new CommentModel(CommentModelNested.fromComment(comment)); } - @Value - static class CommentModelNested { - long id; - String body; - ZonedDateTime createdAt; - ZonedDateTime updatedAt; - ProfileModelNested author; + record CommentModelNested( + long id, + String body, + ZonedDateTime createdAt, + ZonedDateTime updatedAt, + ProfileModelNested author) { static CommentModelNested fromComment(Comment comment) { return new CommentModelNested(comment.getId(), diff --git a/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentPostRequestDTO.java b/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentPostRequestDTO.java index f98d0ae..16a4c74 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentPostRequestDTO.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentPostRequestDTO.java @@ -1,9 +1,7 @@ package io.github.raeperd.realworld.application.article.comment; -import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; -import lombok.Getter; import jakarta.validation.constraints.NotBlank; @@ -12,14 +10,5 @@ @JsonTypeName("comment") @JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME) -@Getter -class CommentPostRequestDTO { - - @NotBlank - private final String body; - - @JsonCreator - CommentPostRequestDTO(String body) { - this.body = body; - } +record CommentPostRequestDTO(@NotBlank String body) { } diff --git a/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentRestController.java b/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentRestController.java index 9f78a43..9436d30 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentRestController.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/comment/CommentRestController.java @@ -22,7 +22,7 @@ class CommentRestController { @PostMapping("/articles/{slug}/comments") public CommentModel postComments(@AuthenticationPrincipal UserJWTPayload jwtPayload, @PathVariable String slug, @Valid @RequestBody CommentPostRequestDTO dto) { - final var commentAdded = commentService.createComment(jwtPayload.getUserId(), slug, dto.getBody()); + final var commentAdded = commentService.createComment(jwtPayload.getUserId(), slug, dto.body()); return CommentModel.fromComment(commentAdded); } diff --git a/src/main/java/io/github/raeperd/realworld/application/article/comment/MultipleCommentModel.java b/src/main/java/io/github/raeperd/realworld/application/article/comment/MultipleCommentModel.java index cbfb6ff..61a5aaa 100644 --- a/src/main/java/io/github/raeperd/realworld/application/article/comment/MultipleCommentModel.java +++ b/src/main/java/io/github/raeperd/realworld/application/article/comment/MultipleCommentModel.java @@ -2,21 +2,15 @@ import io.github.raeperd.realworld.application.article.comment.CommentModel.CommentModelNested; import io.github.raeperd.realworld.domain.article.comment.Comment; -import lombok.Value; import java.util.List; import java.util.Set; -import static java.util.stream.Collectors.toList; - -@Value -class MultipleCommentModel { - - List comments; +record MultipleCommentModel(List comments) { static MultipleCommentModel fromComments(Set comments) { final var commentsCollected = comments.stream().map(CommentModelNested::fromComment) - .collect(toList()); + .toList(); return new MultipleCommentModel(commentsCollected); } } diff --git a/src/main/java/io/github/raeperd/realworld/application/tag/TagsModel.java b/src/main/java/io/github/raeperd/realworld/application/tag/TagsModel.java index c5c64ec..5ea239d 100644 --- a/src/main/java/io/github/raeperd/realworld/application/tag/TagsModel.java +++ b/src/main/java/io/github/raeperd/realworld/application/tag/TagsModel.java @@ -1,15 +1,6 @@ package io.github.raeperd.realworld.application.tag; -import lombok.Getter; - import java.util.Set; -@Getter -class TagsModel { - - private final Set tags; - - TagsModel(Set tags) { - this.tags = tags; - } +record TagsModel(Set tags) { } diff --git a/src/main/java/io/github/raeperd/realworld/application/user/ProfileModel.java b/src/main/java/io/github/raeperd/realworld/application/user/ProfileModel.java index 2346aa6..8cab2b7 100644 --- a/src/main/java/io/github/raeperd/realworld/application/user/ProfileModel.java +++ b/src/main/java/io/github/raeperd/realworld/application/user/ProfileModel.java @@ -1,25 +1,16 @@ package io.github.raeperd.realworld.application.user; import io.github.raeperd.realworld.domain.user.Profile; -import lombok.Value; import static java.lang.String.valueOf; -@Value -public class ProfileModel { - - ProfileModelNested profile; +public record ProfileModel(ProfileModelNested profile) { public static ProfileModel fromProfile(Profile profile) { return new ProfileModel(ProfileModelNested.fromProfile(profile)); } - @Value - public static class ProfileModelNested { - String username; - String bio; - String image; - boolean following; + public record ProfileModelNested(String username, String bio, String image, boolean following) { public static ProfileModelNested fromProfile(Profile profile) { return new ProfileModelNested(valueOf(profile.getUserName()), diff --git a/src/main/java/io/github/raeperd/realworld/application/user/UserLoginRequestDTO.java b/src/main/java/io/github/raeperd/realworld/application/user/UserLoginRequestDTO.java index 8fda9b0..8338e3e 100644 --- a/src/main/java/io/github/raeperd/realworld/application/user/UserLoginRequestDTO.java +++ b/src/main/java/io/github/raeperd/realworld/application/user/UserLoginRequestDTO.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; -import lombok.Value; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; @@ -12,12 +11,5 @@ @JsonTypeName("user") @JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME) -@Value -class UserLoginRequestDTO { - - @Email - String email; - @NotBlank - String password; - +record UserLoginRequestDTO(@Email String email, @NotBlank String password) { } diff --git a/src/main/java/io/github/raeperd/realworld/application/user/UserModel.java b/src/main/java/io/github/raeperd/realworld/application/user/UserModel.java index 6e1b3d9..4b7af89 100644 --- a/src/main/java/io/github/raeperd/realworld/application/user/UserModel.java +++ b/src/main/java/io/github/raeperd/realworld/application/user/UserModel.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; import io.github.raeperd.realworld.domain.user.User; -import lombok.Value; import static com.fasterxml.jackson.annotation.JsonTypeInfo.As.WRAPPER_OBJECT; import static com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME; @@ -11,14 +10,7 @@ @JsonTypeName("user") @JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME) -@Value -class UserModel { - - String email; - String username; - String token; - String bio; - String image; +record UserModel(String email, String username, String token, String bio, String image) { static UserModel fromUserAndToken(User user, String token) { return new UserModel( @@ -28,5 +20,4 @@ static UserModel fromUserAndToken(User user, String token) { "", ""); } - } diff --git a/src/main/java/io/github/raeperd/realworld/application/user/UserPostRequestDTO.java b/src/main/java/io/github/raeperd/realworld/application/user/UserPostRequestDTO.java index d4e4af8..c580296 100644 --- a/src/main/java/io/github/raeperd/realworld/application/user/UserPostRequestDTO.java +++ b/src/main/java/io/github/raeperd/realworld/application/user/UserPostRequestDTO.java @@ -5,7 +5,6 @@ import io.github.raeperd.realworld.domain.user.Email; import io.github.raeperd.realworld.domain.user.UserName; import io.github.raeperd.realworld.domain.user.UserSignUpRequest; -import lombok.Value; import jakarta.validation.constraints.NotBlank; @@ -14,15 +13,10 @@ @JsonTypeName("user") @JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME) -@Value -class UserPostRequestDTO { - - @jakarta.validation.constraints.Email - String email; - @NotBlank - String username; - @NotBlank - String password; +record UserPostRequestDTO( + @jakarta.validation.constraints.Email String email, + @NotBlank String username, + @NotBlank String password) { UserSignUpRequest toSignUpRequest() { return new UserSignUpRequest( @@ -30,5 +24,4 @@ UserSignUpRequest toSignUpRequest() { new UserName(username), password); } - } diff --git a/src/main/java/io/github/raeperd/realworld/application/user/UserPutRequestDTO.java b/src/main/java/io/github/raeperd/realworld/application/user/UserPutRequestDTO.java index 574de70..cf34c6a 100644 --- a/src/main/java/io/github/raeperd/realworld/application/user/UserPutRequestDTO.java +++ b/src/main/java/io/github/raeperd/realworld/application/user/UserPutRequestDTO.java @@ -6,7 +6,6 @@ import io.github.raeperd.realworld.domain.user.Image; import io.github.raeperd.realworld.domain.user.UserName; import io.github.raeperd.realworld.domain.user.UserUpdateRequest; -import lombok.Value; import static com.fasterxml.jackson.annotation.JsonTypeInfo.As.WRAPPER_OBJECT; import static com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME; @@ -14,14 +13,7 @@ @JsonTypeName("user") @JsonTypeInfo(include = WRAPPER_OBJECT, use = NAME) -@Value -class UserPutRequestDTO { - - String email; - String username; - String password; - String bio; - String image; +record UserPutRequestDTO(String email, String username, String password, String bio, String image) { UserUpdateRequest toUpdateRequest() { return UserUpdateRequest.builder() diff --git a/src/main/java/io/github/raeperd/realworld/application/user/UserRestController.java b/src/main/java/io/github/raeperd/realworld/application/user/UserRestController.java index 2ee1d9c..0be6c55 100644 --- a/src/main/java/io/github/raeperd/realworld/application/user/UserRestController.java +++ b/src/main/java/io/github/raeperd/realworld/application/user/UserRestController.java @@ -33,7 +33,7 @@ public UserModel postUser(@Valid @RequestBody UserPostRequestDTO dto) { @PostMapping("/users/login") public ResponseEntity loginUser(@Valid @RequestBody UserLoginRequestDTO dto) { - return of(userService.login(new Email(dto.getEmail()), dto.getPassword()) + return of(userService.login(new Email(dto.email()), dto.password()) .map(user -> fromUserAndToken(user, jwtSerializer.jwtFromUser(user)))); }