From b99e187c97765174e71aee258c21224da97e82bd Mon Sep 17 00:00:00 2001
From: jinia91
Date: Mon, 7 Mar 2022 22:50:13 +0900
Subject: [PATCH] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?=
=?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80,=20=ED=8C=A8=ED=82=A4=EC=A7=80?=
=?UTF-8?q?=20=EB=B6=84=EB=A5=98=20=EA=B0=9C=EC=84=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../article/controller/ArticleController.java | 36 ++++-----
.../myblog/blog/article/domain/Article.java | 2 +-
.../blog/article/domain/TempArticle.java | 2 +-
.../myblog/blog/base/config/AppConfig.java | 5 --
.../blog/base/config/SecurityConfig.java | 2 +-
.../myblog/blog/{ => base}/log/LogAspect.java | 2 +-
.../myblog/blog/{ => base}/log/LogTracer.java | 2 +-
.../myblog/blog/{ => base}/log/TraceId.java | 2 +-
.../blog/{ => base}/log/TraceStatus.java | 2 +-
.../controller/CategoryController.java | 4 +-
.../myblog/blog/category/domain/Category.java | 2 +-
.../comment/controller/CommentController.java | 3 +-
.../myblog/blog/comment/domain/Comment.java | 2 +-
.../java/myblog/blog/main/MainController.java | 8 +-
.../myblog/blog/member/doamin/Member.java | 2 +-
src/main/java/myblog/blog/rss/RssService.java | 10 +--
.../blog/{base => shared}/BasicEntity.java | 2 +-
.../exception/CustomFormException.java | 2 +-
.../exception/ExceptionController.java | 13 +---
.../exception/ExceptionControllerAdvice.java | 2 +-
.../ExceptionRestControllerAdvice.java | 2 +-
.../{ => shared}/exception/ListValidator.java | 2 +-
.../exception/LoginFailHandler.java | 2 +-
.../queries/LayoutRenderingQueries.java} | 6 +-
.../myblog/blog/shared/utils/MapperUtils.java | 25 ++++++
.../{base => shared}/utils/MarkdownUtils.java | 2 +-
.../myblog/blog/sitemap/SiteMapService.java | 7 +-
.../blog/tags/domain/ArticleTagList.java | 2 +-
.../java/myblog/blog/tags/domain/Tags.java | 2 +-
.../java/myblog/blog/tags/dto/TagsDto.java | 3 -
.../myblog/blog/tags/queries/TagsQueries.java | 28 +++++++
.../myblog/blog/tags/service/TagsService.java | 17 ++---
.../kotlin/myblog/blog/rss/RssServiceTests.kt | 76 +++++++++++++++++++
.../blog/sitemap/SiteMapServiceTests.kt | 38 +++++++---
.../blog/tags/service/TagsServiceTests.kt | 20 +++++
35 files changed, 236 insertions(+), 101 deletions(-)
rename src/main/java/myblog/blog/{ => base}/log/LogAspect.java (97%)
rename src/main/java/myblog/blog/{ => base}/log/LogTracer.java (98%)
rename src/main/java/myblog/blog/{ => base}/log/TraceId.java (95%)
rename src/main/java/myblog/blog/{ => base}/log/TraceStatus.java (87%)
rename src/main/java/myblog/blog/{base => shared}/BasicEntity.java (95%)
rename src/main/java/myblog/blog/{ => shared}/exception/CustomFormException.java (84%)
rename src/main/java/myblog/blog/{ => shared}/exception/ExceptionController.java (58%)
rename src/main/java/myblog/blog/{ => shared}/exception/ExceptionControllerAdvice.java (95%)
rename src/main/java/myblog/blog/{ => shared}/exception/ExceptionRestControllerAdvice.java (93%)
rename src/main/java/myblog/blog/{ => shared}/exception/ListValidator.java (95%)
rename src/main/java/myblog/blog/{ => shared}/exception/LoginFailHandler.java (97%)
rename src/main/java/myblog/blog/{layout/LayoutDtoFactory.java => shared/queries/LayoutRenderingQueries.java} (92%)
create mode 100644 src/main/java/myblog/blog/shared/utils/MapperUtils.java
rename src/main/java/myblog/blog/{base => shared}/utils/MarkdownUtils.java (95%)
create mode 100644 src/main/java/myblog/blog/tags/queries/TagsQueries.java
create mode 100644 src/test/kotlin/myblog/blog/rss/RssServiceTests.kt
create mode 100644 src/test/kotlin/myblog/blog/tags/service/TagsServiceTests.kt
diff --git a/src/main/java/myblog/blog/article/controller/ArticleController.java b/src/main/java/myblog/blog/article/controller/ArticleController.java
index 07c291e..fff93d2 100644
--- a/src/main/java/myblog/blog/article/controller/ArticleController.java
+++ b/src/main/java/myblog/blog/article/controller/ArticleController.java
@@ -9,9 +9,9 @@ import myblog.blog.category.service.CategoryService;
import myblog.blog.category.dto.*;
import myblog.blog.member.auth.PrincipalDetails;
import myblog.blog.member.dto.MemberDto;
+import myblog.blog.tags.queries.TagsQueries;
import myblog.blog.tags.service.TagsService;
-import myblog.blog.tags.dto.TagsDto;
-import myblog.blog.layout.LayoutDtoFactory;
+import myblog.blog.shared.queries.LayoutRenderingQueries;
import org.jsoup.Jsoup;
@@ -32,7 +32,7 @@ import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.stream.Collectors;
-import static myblog.blog.base.utils.MarkdownUtils.*;
+import static myblog.blog.shared.utils.MarkdownUtils.*;
@Controller
@RequiredArgsConstructor
@@ -43,7 +43,8 @@ public class ArticleController {
private final CategoryService categoryService;
private final TempArticleService tempArticleService;
- private final LayoutDtoFactory layoutDtoFactory;
+ private final TagsQueries tagsQueries;
+ private final LayoutRenderingQueries layoutRenderingQueries;
private final ModelMapper modelMapper;
@@ -52,9 +53,9 @@ public class ArticleController {
*/
@GetMapping("article/write")
public String getWriteArticleForm(Model model) {
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
model.addAttribute("categoryInput", getCategoryDtosForForm());
- model.addAttribute("tagsInput", getTagsDtosForForm());
+ model.addAttribute("tagsInput", tagsQueries.findAllTagDtos());
model.addAttribute("articleDto", new ArticleForm());
return "article/articleWriteForm";
}
@@ -89,9 +90,9 @@ public class ArticleController {
.collect(Collectors.toList());
articleDto.setArticleTagList(articleTagStrings);
//
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
model.addAttribute("categoryInput", getCategoryDtosForForm());
- model.addAttribute("tagsInput", getTagsDtosForForm());
+ model.addAttribute("tagsInput", tagsQueries.findAllTagDtos());
model.addAttribute("articleDto", articleDto);
return "article/articleEditForm";
}
@@ -139,7 +140,7 @@ public class ArticleController {
articleDto.setContent(Jsoup.parse(getHtmlRenderer().render(getParser().parse(articleDto.getContent()))).text());
}
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
model.addAttribute("pagingBox", pagingBoxDto);
model.addAttribute("articleList", articleDtoList);
@@ -167,7 +168,7 @@ public class ArticleController {
PagingBoxDto pagingBoxDto =
PagingBoxDto.createOf(page, (int)articleList.getTotalElements());
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
model.addAttribute("articleList", articleList);
model.addAttribute("pagingBox", pagingBoxDto);
@@ -195,7 +196,7 @@ public class ArticleController {
PagingBoxDto pagingBoxDto =
PagingBoxDto.createOf(page, (int)articleList.getTotalElements());
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
model.addAttribute("articleList", articleList);
model.addAttribute("pagingBox", pagingBoxDto);
@@ -263,7 +264,7 @@ public class ArticleController {
else substringContents = articleDtoForDetail.getContent();
// 4. 모델 담기
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
model.addAttribute("article", articleDtoForDetail);
model.addAttribute("metaTags",metaTags);
model.addAttribute("metaContents",Jsoup.parse(substringContents).text());
@@ -325,17 +326,6 @@ public class ArticleController {
throw new IllegalArgumentException("'"+category+"' 라는 카테고리는 존재하지 않습니다.");
}
- /*
-- 아티클 폼에 필요한 태그 dtos
- */
- private List getTagsDtosForForm() {
- return tagsService
- .findAllTags()
- .stream()
- .map(tag -> new TagsDto(tag.getName()))
- .collect(Collectors.toList());
- }
-
/*
- 아티클 폼에 필요한 카테고리 dtos
*/
diff --git a/src/main/java/myblog/blog/article/domain/Article.java b/src/main/java/myblog/blog/article/domain/Article.java
index d9f7b69..59cbff8 100644
--- a/src/main/java/myblog/blog/article/domain/Article.java
+++ b/src/main/java/myblog/blog/article/domain/Article.java
@@ -3,7 +3,7 @@ package myblog.blog.article.domain;
import lombok.Builder;
import lombok.Getter;
import myblog.blog.article.dto.ArticleForm;
-import myblog.blog.base.BasicEntity;
+import myblog.blog.shared.BasicEntity;
import myblog.blog.category.domain.Category;
import myblog.blog.comment.domain.Comment;
import myblog.blog.member.doamin.Member;
diff --git a/src/main/java/myblog/blog/article/domain/TempArticle.java b/src/main/java/myblog/blog/article/domain/TempArticle.java
index df3bd77..4badcbe 100644
--- a/src/main/java/myblog/blog/article/domain/TempArticle.java
+++ b/src/main/java/myblog/blog/article/domain/TempArticle.java
@@ -1,7 +1,7 @@
package myblog.blog.article.domain;
import lombok.Getter;
-import myblog.blog.base.BasicEntity;
+import myblog.blog.shared.BasicEntity;
import javax.persistence.*;
diff --git a/src/main/java/myblog/blog/base/config/AppConfig.java b/src/main/java/myblog/blog/base/config/AppConfig.java
index eb45292..c819134 100644
--- a/src/main/java/myblog/blog/base/config/AppConfig.java
+++ b/src/main/java/myblog/blog/base/config/AppConfig.java
@@ -19,9 +19,4 @@ public class AppConfig {
.setFieldMatchingEnabled(true);
return modelMapper;
}
-
- @Bean
- public Gson gson(){
- return new Gson();
- }
}
diff --git a/src/main/java/myblog/blog/base/config/SecurityConfig.java b/src/main/java/myblog/blog/base/config/SecurityConfig.java
index 433ccd8..f461cd2 100644
--- a/src/main/java/myblog/blog/base/config/SecurityConfig.java
+++ b/src/main/java/myblog/blog/base/config/SecurityConfig.java
@@ -1,7 +1,7 @@
package myblog.blog.base.config;
import lombok.RequiredArgsConstructor;
-import myblog.blog.exception.LoginFailHandler;
+import myblog.blog.shared.exception.LoginFailHandler;
import myblog.blog.member.doamin.Role;
import myblog.blog.member.service.Oauth2MemberService;
import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
diff --git a/src/main/java/myblog/blog/log/LogAspect.java b/src/main/java/myblog/blog/base/log/LogAspect.java
similarity index 97%
rename from src/main/java/myblog/blog/log/LogAspect.java
rename to src/main/java/myblog/blog/base/log/LogAspect.java
index 7f52ea4..04a8e63 100644
--- a/src/main/java/myblog/blog/log/LogAspect.java
+++ b/src/main/java/myblog/blog/base/log/LogAspect.java
@@ -1,4 +1,4 @@
-package myblog.blog.log;
+package myblog.blog.base.log;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/src/main/java/myblog/blog/log/LogTracer.java b/src/main/java/myblog/blog/base/log/LogTracer.java
similarity index 98%
rename from src/main/java/myblog/blog/log/LogTracer.java
rename to src/main/java/myblog/blog/base/log/LogTracer.java
index bf241df..4ab2330 100644
--- a/src/main/java/myblog/blog/log/LogTracer.java
+++ b/src/main/java/myblog/blog/base/log/LogTracer.java
@@ -1,4 +1,4 @@
-package myblog.blog.log;
+package myblog.blog.base.log;
import io.sentry.Sentry;
import lombok.extern.slf4j.Slf4j;
diff --git a/src/main/java/myblog/blog/log/TraceId.java b/src/main/java/myblog/blog/base/log/TraceId.java
similarity index 95%
rename from src/main/java/myblog/blog/log/TraceId.java
rename to src/main/java/myblog/blog/base/log/TraceId.java
index 5870db8..5100297 100644
--- a/src/main/java/myblog/blog/log/TraceId.java
+++ b/src/main/java/myblog/blog/base/log/TraceId.java
@@ -1,4 +1,4 @@
-package myblog.blog.log;
+package myblog.blog.base.log;
import lombok.Getter;
diff --git a/src/main/java/myblog/blog/log/TraceStatus.java b/src/main/java/myblog/blog/base/log/TraceStatus.java
similarity index 87%
rename from src/main/java/myblog/blog/log/TraceStatus.java
rename to src/main/java/myblog/blog/base/log/TraceStatus.java
index 2d79ade..f93d25e 100644
--- a/src/main/java/myblog/blog/log/TraceStatus.java
+++ b/src/main/java/myblog/blog/base/log/TraceStatus.java
@@ -1,4 +1,4 @@
-package myblog.blog.log;
+package myblog.blog.base.log;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/src/main/java/myblog/blog/category/controller/CategoryController.java b/src/main/java/myblog/blog/category/controller/CategoryController.java
index 79849e8..820e042 100644
--- a/src/main/java/myblog/blog/category/controller/CategoryController.java
+++ b/src/main/java/myblog/blog/category/controller/CategoryController.java
@@ -1,8 +1,8 @@
package myblog.blog.category.controller;
import lombok.RequiredArgsConstructor;
-import myblog.blog.exception.CustomFormException;
-import myblog.blog.exception.ListValidator;
+import myblog.blog.shared.exception.CustomFormException;
+import myblog.blog.shared.exception.ListValidator;
import myblog.blog.category.dto.CategoryForView;
import myblog.blog.category.dto.CategoryNormalDto;
import myblog.blog.category.service.CategoryService;
diff --git a/src/main/java/myblog/blog/category/domain/Category.java b/src/main/java/myblog/blog/category/domain/Category.java
index dab8cb3..4c980c5 100644
--- a/src/main/java/myblog/blog/category/domain/Category.java
+++ b/src/main/java/myblog/blog/category/domain/Category.java
@@ -4,7 +4,7 @@ package myblog.blog.category.domain;
import lombok.Builder;
import lombok.Getter;
import myblog.blog.article.domain.Article;
-import myblog.blog.base.BasicEntity;
+import myblog.blog.shared.BasicEntity;
import javax.persistence.*;
import java.util.ArrayList;
diff --git a/src/main/java/myblog/blog/comment/controller/CommentController.java b/src/main/java/myblog/blog/comment/controller/CommentController.java
index 99ebeae..fa16c8d 100644
--- a/src/main/java/myblog/blog/comment/controller/CommentController.java
+++ b/src/main/java/myblog/blog/comment/controller/CommentController.java
@@ -6,10 +6,9 @@ import myblog.blog.article.service.ArticleService;
import myblog.blog.comment.dto.CommentDto;
import myblog.blog.comment.dto.CommentForm;
import myblog.blog.comment.service.CommentService;
-import myblog.blog.exception.CustomFormException;
+import myblog.blog.shared.exception.CustomFormException;
import myblog.blog.member.auth.PrincipalDetails;
import myblog.blog.member.doamin.Member;
-import org.springframework.security.core.Authentication;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.validation.Errors;
import org.springframework.validation.annotation.Validated;
diff --git a/src/main/java/myblog/blog/comment/domain/Comment.java b/src/main/java/myblog/blog/comment/domain/Comment.java
index 5c70d2d..ae181f5 100644
--- a/src/main/java/myblog/blog/comment/domain/Comment.java
+++ b/src/main/java/myblog/blog/comment/domain/Comment.java
@@ -3,7 +3,7 @@ package myblog.blog.comment.domain;
import lombok.Builder;
import lombok.Getter;
import myblog.blog.article.domain.Article;
-import myblog.blog.base.BasicEntity;
+import myblog.blog.shared.BasicEntity;
import myblog.blog.member.doamin.Member;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
diff --git a/src/main/java/myblog/blog/main/MainController.java b/src/main/java/myblog/blog/main/MainController.java
index e280a29..707f396 100644
--- a/src/main/java/myblog/blog/main/MainController.java
+++ b/src/main/java/myblog/blog/main/MainController.java
@@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import myblog.blog.article.dto.ArticleDtoForCardBox;
import myblog.blog.article.service.ArticleService;
-import myblog.blog.layout.LayoutDtoFactory;
+import myblog.blog.shared.queries.LayoutRenderingQueries;
import org.jsoup.Jsoup;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Controller;
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
-import static myblog.blog.base.utils.MarkdownUtils.*;
+import static myblog.blog.shared.utils.MarkdownUtils.*;
@Controller
@RequiredArgsConstructor
@@ -23,7 +23,7 @@ public class MainController {
private final ArticleService articleService;
private final ModelMapper modelMapper;
- private final LayoutDtoFactory layoutDtoFactory;
+ private final LayoutRenderingQueries layoutRenderingQueries;
/*
- 메인 화면 제어용 컨트롤러
*/
@@ -35,7 +35,7 @@ public class MainController {
.map(article -> modelMapper.map(article, ArticleDtoForCardBox.class))
.collect(Collectors.toList());
//
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
model.addAttribute("popularArticles", popularArticles);
return "index";
}
diff --git a/src/main/java/myblog/blog/member/doamin/Member.java b/src/main/java/myblog/blog/member/doamin/Member.java
index f0e2a18..51d6e33 100644
--- a/src/main/java/myblog/blog/member/doamin/Member.java
+++ b/src/main/java/myblog/blog/member/doamin/Member.java
@@ -4,7 +4,7 @@ import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import myblog.blog.article.domain.Article;
-import myblog.blog.base.BasicEntity;
+import myblog.blog.shared.BasicEntity;
import myblog.blog.comment.domain.Comment;
import javax.persistence.*;
diff --git a/src/main/java/myblog/blog/rss/RssService.java b/src/main/java/myblog/blog/rss/RssService.java
index 41184f0..5d2e8d3 100644
--- a/src/main/java/myblog/blog/rss/RssService.java
+++ b/src/main/java/myblog/blog/rss/RssService.java
@@ -1,19 +1,19 @@
package myblog.blog.rss;
import lombok.RequiredArgsConstructor;
-import myblog.blog.article.domain.Article;
-import myblog.blog.article.service.ArticleService;
-import org.jdom2.*;
-import org.jdom2.output.*;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import myblog.blog.article.domain.Article;
+import myblog.blog.article.service.ArticleService;
+import org.jdom2.*;
+import org.jdom2.output.*;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
-import static myblog.blog.base.utils.MarkdownUtils.*;
+import static myblog.blog.shared.utils.MarkdownUtils.*;
/*
- rss 서비스 로직
diff --git a/src/main/java/myblog/blog/base/BasicEntity.java b/src/main/java/myblog/blog/shared/BasicEntity.java
similarity index 95%
rename from src/main/java/myblog/blog/base/BasicEntity.java
rename to src/main/java/myblog/blog/shared/BasicEntity.java
index 78f6c91..5f88446 100644
--- a/src/main/java/myblog/blog/base/BasicEntity.java
+++ b/src/main/java/myblog/blog/shared/BasicEntity.java
@@ -1,4 +1,4 @@
-package myblog.blog.base;
+package myblog.blog.shared;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
diff --git a/src/main/java/myblog/blog/exception/CustomFormException.java b/src/main/java/myblog/blog/shared/exception/CustomFormException.java
similarity index 84%
rename from src/main/java/myblog/blog/exception/CustomFormException.java
rename to src/main/java/myblog/blog/shared/exception/CustomFormException.java
index ade75b8..3af30fa 100644
--- a/src/main/java/myblog/blog/exception/CustomFormException.java
+++ b/src/main/java/myblog/blog/shared/exception/CustomFormException.java
@@ -1,4 +1,4 @@
-package myblog.blog.exception;
+package myblog.blog.shared.exception;
/*
- REST 컨트롤러 상태 메세지 전송용 커스텀 에러
*/
diff --git a/src/main/java/myblog/blog/exception/ExceptionController.java b/src/main/java/myblog/blog/shared/exception/ExceptionController.java
similarity index 58%
rename from src/main/java/myblog/blog/exception/ExceptionController.java
rename to src/main/java/myblog/blog/shared/exception/ExceptionController.java
index cab4cee..e5898b7 100644
--- a/src/main/java/myblog/blog/exception/ExceptionController.java
+++ b/src/main/java/myblog/blog/shared/exception/ExceptionController.java
@@ -1,28 +1,23 @@
-package myblog.blog.exception;
+package myblog.blog.shared.exception;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import myblog.blog.layout.LayoutDtoFactory;
+import myblog.blog.shared.queries.LayoutRenderingQueries;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.context.request.WebRequest;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import java.security.Principal;
@Controller
@RequiredArgsConstructor
@Slf4j
public class ExceptionController implements ErrorController {
- private final LayoutDtoFactory layoutDtoFactory;
+ private final LayoutRenderingQueries layoutRenderingQueries;
@GetMapping("/error")
public String errorView(Model model) {
- layoutDtoFactory.AddLayoutTo(model);
+ layoutRenderingQueries.AddLayoutTo(model);
return "error";
}
diff --git a/src/main/java/myblog/blog/exception/ExceptionControllerAdvice.java b/src/main/java/myblog/blog/shared/exception/ExceptionControllerAdvice.java
similarity index 95%
rename from src/main/java/myblog/blog/exception/ExceptionControllerAdvice.java
rename to src/main/java/myblog/blog/shared/exception/ExceptionControllerAdvice.java
index e63792d..d788db2 100644
--- a/src/main/java/myblog/blog/exception/ExceptionControllerAdvice.java
+++ b/src/main/java/myblog/blog/shared/exception/ExceptionControllerAdvice.java
@@ -1,4 +1,4 @@
-package myblog.blog.exception;
+package myblog.blog.shared.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
diff --git a/src/main/java/myblog/blog/exception/ExceptionRestControllerAdvice.java b/src/main/java/myblog/blog/shared/exception/ExceptionRestControllerAdvice.java
similarity index 93%
rename from src/main/java/myblog/blog/exception/ExceptionRestControllerAdvice.java
rename to src/main/java/myblog/blog/shared/exception/ExceptionRestControllerAdvice.java
index 56001b6..96910c5 100644
--- a/src/main/java/myblog/blog/exception/ExceptionRestControllerAdvice.java
+++ b/src/main/java/myblog/blog/shared/exception/ExceptionRestControllerAdvice.java
@@ -1,4 +1,4 @@
-package myblog.blog.exception;
+package myblog.blog.shared.exception;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
diff --git a/src/main/java/myblog/blog/exception/ListValidator.java b/src/main/java/myblog/blog/shared/exception/ListValidator.java
similarity index 95%
rename from src/main/java/myblog/blog/exception/ListValidator.java
rename to src/main/java/myblog/blog/shared/exception/ListValidator.java
index 196b424..d16a61b 100644
--- a/src/main/java/myblog/blog/exception/ListValidator.java
+++ b/src/main/java/myblog/blog/shared/exception/ListValidator.java
@@ -1,4 +1,4 @@
-package myblog.blog.exception;
+package myblog.blog.shared.exception;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
diff --git a/src/main/java/myblog/blog/exception/LoginFailHandler.java b/src/main/java/myblog/blog/shared/exception/LoginFailHandler.java
similarity index 97%
rename from src/main/java/myblog/blog/exception/LoginFailHandler.java
rename to src/main/java/myblog/blog/shared/exception/LoginFailHandler.java
index ff88d1e..cedebcb 100644
--- a/src/main/java/myblog/blog/exception/LoginFailHandler.java
+++ b/src/main/java/myblog/blog/shared/exception/LoginFailHandler.java
@@ -1,4 +1,4 @@
-package myblog.blog.exception;
+package myblog.blog.shared.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.authentication.AuthenticationServiceException;
diff --git a/src/main/java/myblog/blog/layout/LayoutDtoFactory.java b/src/main/java/myblog/blog/shared/queries/LayoutRenderingQueries.java
similarity index 92%
rename from src/main/java/myblog/blog/layout/LayoutDtoFactory.java
rename to src/main/java/myblog/blog/shared/queries/LayoutRenderingQueries.java
index 92ad52e..757044f 100644
--- a/src/main/java/myblog/blog/layout/LayoutDtoFactory.java
+++ b/src/main/java/myblog/blog/shared/queries/LayoutRenderingQueries.java
@@ -1,4 +1,4 @@
-package myblog.blog.layout;
+package myblog.blog.shared.queries;
import lombok.RequiredArgsConstructor;
import myblog.blog.category.dto.CategoryForView;
@@ -12,7 +12,7 @@ import java.util.List;
@Component
@RequiredArgsConstructor
-public class LayoutDtoFactory {
+public class LayoutRenderingQueries {
private final CategoryService categoryService;
private final CommentService commentService;
@@ -26,6 +26,4 @@ public class LayoutDtoFactory {
model.addAttribute("category", categoryForView);
model.addAttribute("commentsList", comments);
}
-
-
}
diff --git a/src/main/java/myblog/blog/shared/utils/MapperUtils.java b/src/main/java/myblog/blog/shared/utils/MapperUtils.java
new file mode 100644
index 0000000..f946bc2
--- /dev/null
+++ b/src/main/java/myblog/blog/shared/utils/MapperUtils.java
@@ -0,0 +1,25 @@
+package myblog.blog.shared.utils;
+
+import com.google.gson.Gson;
+import org.modelmapper.ModelMapper;
+
+public class MapperUtils {
+ private static final ModelMapper modelMapper;
+ private static final Gson gson;
+
+ static {
+ modelMapper = new ModelMapper();
+ modelMapper.getConfiguration()
+ .setFieldAccessLevel(org.modelmapper.config.Configuration.AccessLevel.PRIVATE)
+ .setFieldMatchingEnabled(true);
+ gson = new Gson();
+ }
+
+ public static ModelMapper getModelMapper(){
+ return modelMapper;
+ }
+
+ public static Gson getGson(){
+ return gson;
+ }
+}
diff --git a/src/main/java/myblog/blog/base/utils/MarkdownUtils.java b/src/main/java/myblog/blog/shared/utils/MarkdownUtils.java
similarity index 95%
rename from src/main/java/myblog/blog/base/utils/MarkdownUtils.java
rename to src/main/java/myblog/blog/shared/utils/MarkdownUtils.java
index f420e8a..ede2232 100644
--- a/src/main/java/myblog/blog/base/utils/MarkdownUtils.java
+++ b/src/main/java/myblog/blog/shared/utils/MarkdownUtils.java
@@ -1,4 +1,4 @@
-package myblog.blog.base.utils;
+package myblog.blog.shared.utils;
import org.commonmark.ext.gfm.tables.TablesExtension;
import org.commonmark.parser.Parser;
diff --git a/src/main/java/myblog/blog/sitemap/SiteMapService.java b/src/main/java/myblog/blog/sitemap/SiteMapService.java
index 973f2d5..8a0f9b8 100644
--- a/src/main/java/myblog/blog/sitemap/SiteMapService.java
+++ b/src/main/java/myblog/blog/sitemap/SiteMapService.java
@@ -1,14 +1,15 @@
package myblog.blog.sitemap;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
+
import myblog.blog.article.domain.Article;
-import myblog.blog.article.service.ArticleService;
import myblog.blog.category.domain.Category;
+import myblog.blog.article.service.ArticleService;
import myblog.blog.category.service.CategoryService;
import org.jdom2.*;
import org.jdom2.output.*;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
diff --git a/src/main/java/myblog/blog/tags/domain/ArticleTagList.java b/src/main/java/myblog/blog/tags/domain/ArticleTagList.java
index e299420..f1b8791 100644
--- a/src/main/java/myblog/blog/tags/domain/ArticleTagList.java
+++ b/src/main/java/myblog/blog/tags/domain/ArticleTagList.java
@@ -2,7 +2,7 @@ package myblog.blog.tags.domain;
import lombok.*;
import myblog.blog.article.domain.Article;
-import myblog.blog.base.BasicEntity;
+import myblog.blog.shared.BasicEntity;
import javax.persistence.*;
diff --git a/src/main/java/myblog/blog/tags/domain/Tags.java b/src/main/java/myblog/blog/tags/domain/Tags.java
index 680fe24..b1c6303 100644
--- a/src/main/java/myblog/blog/tags/domain/Tags.java
+++ b/src/main/java/myblog/blog/tags/domain/Tags.java
@@ -1,7 +1,7 @@
package myblog.blog.tags.domain;
import lombok.*;
-import myblog.blog.base.BasicEntity;
+import myblog.blog.shared.BasicEntity;
import javax.persistence.*;
import java.util.*;
diff --git a/src/main/java/myblog/blog/tags/dto/TagsDto.java b/src/main/java/myblog/blog/tags/dto/TagsDto.java
index c070c9e..9b4c894 100644
--- a/src/main/java/myblog/blog/tags/dto/TagsDto.java
+++ b/src/main/java/myblog/blog/tags/dto/TagsDto.java
@@ -7,11 +7,8 @@ import lombok.Data;
*/
@Data
public class TagsDto {
-
private String name;
-
public TagsDto(){}
-
public TagsDto(String name) {
this.name = name;
}
diff --git a/src/main/java/myblog/blog/tags/queries/TagsQueries.java b/src/main/java/myblog/blog/tags/queries/TagsQueries.java
new file mode 100644
index 0000000..e1aab4d
--- /dev/null
+++ b/src/main/java/myblog/blog/tags/queries/TagsQueries.java
@@ -0,0 +1,28 @@
+package myblog.blog.tags.queries;
+
+import lombok.RequiredArgsConstructor;
+import myblog.blog.shared.utils.MapperUtils;
+import myblog.blog.tags.domain.Tags;
+import myblog.blog.tags.dto.TagsDto;
+import myblog.blog.tags.repository.ArticleTagListsRepository;
+import myblog.blog.tags.repository.TagsRepository;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+@Transactional
+@RequiredArgsConstructor
+public class TagsQueries {
+ private final TagsRepository tagsRepository;
+ private final ArticleTagListsRepository articleTagListsRepository;
+
+ public List findAllTagDtos(){
+ List tags = tagsRepository.findAll();
+ return tags.stream()
+ .map(tag -> MapperUtils.getModelMapper().map(tag, TagsDto.class))
+ .collect(Collectors.toList());
+ }
+}
diff --git a/src/main/java/myblog/blog/tags/service/TagsService.java b/src/main/java/myblog/blog/tags/service/TagsService.java
index 3df5c9c..e8ea5f7 100644
--- a/src/main/java/myblog/blog/tags/service/TagsService.java
+++ b/src/main/java/myblog/blog/tags/service/TagsService.java
@@ -1,28 +1,27 @@
package myblog.blog.tags.service;
-import com.google.gson.Gson;
import lombok.RequiredArgsConstructor;
-import myblog.blog.article.domain.Article;
-import myblog.blog.tags.domain.*;
-import myblog.blog.tags.repository.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import myblog.blog.article.domain.*;
+import myblog.blog.tags.domain.*;
+import myblog.blog.shared.utils.MapperUtils;
+import myblog.blog.tags.repository.*;
+
import java.util.*;
@Service
@Transactional
@RequiredArgsConstructor
public class TagsService {
-
private final TagsRepository tagsRepository;
private final ArticleTagListsRepository articleTagListsRepository;
- private final Gson gson;
/*
- Json 객체로 넘어온 태그들을 파싱해서 신규 태그인경우 저장
*/
public void createNewTagsAndArticleTagList(String names, Article article) {
- List
]]>")
+ .contains("https://www.jiniaslog.co.kr/article/view?articleId=2")
+ }
+
+ private fun firstArticleAssert(rssFeed: String?) {
+ assertThat(rssFeed).contains("")
+ .contains("https://www.jiniaslog.co.kr/article/view?articleId=1")
+ .contains("1호]]>")
+ .contains("https://www.jiniaslog.co.kr/article/view?articleId=1")
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/myblog/blog/sitemap/SiteMapServiceTests.kt b/src/test/kotlin/myblog/blog/sitemap/SiteMapServiceTests.kt
index 60414da..708de4e 100644
--- a/src/test/kotlin/myblog/blog/sitemap/SiteMapServiceTests.kt
+++ b/src/test/kotlin/myblog/blog/sitemap/SiteMapServiceTests.kt
@@ -3,6 +3,8 @@ package myblog.blog.sitemap
import com.nhaarman.mockito_kotlin.whenever
import myblog.blog.article.domain.Article
import myblog.blog.article.service.ArticleService
+import myblog.blog.category.domain.Category
+import myblog.blog.category.service.CategoryService
import myblog.blog.rss.RssService
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
@@ -23,27 +25,27 @@ class SiteMapServiceTests {
@Mock
lateinit var articleService: ArticleService
+ @Mock
+ lateinit var categoryService: CategoryService
@InjectMocks
- lateinit var rssService: RssService
+ lateinit var siteMapService: SiteMapService
@Test
- fun `rss 요청시 성공 테스트`() {
+ fun `정상적으로 siteMap을 가져오는 테스트`() {
// given
whenever(articleService.totalArticle)
.thenReturn(Arrays.asList(buildArticle("테스트용", "1호", 1L), buildArticle("테스트용이에용", "2호", 2L)))
+ whenever(categoryService.allCategories)
+ .thenReturn(Arrays.asList(buildCategory("목 카테고리")))
// when
- val rssFeed = rssService.rssFeed
+ val siteMap = siteMapService.siteMap
// then
- assertThat(rssFeed).contains("")
- .contains("https://www.jiniaslog.co.kr/article/view?articleId=1")
- .contains("1호]]>")
- .contains("https://www.jiniaslog.co.kr/article/view?articleId=1")
- assertThat(rssFeed).contains("")
- .contains("https://www.jiniaslog.co.kr/article/view?articleId=2")
- .contains("2호]]>")
- .contains("https://www.jiniaslog.co.kr/article/view?articleId=2")
+ siteMapRootBuildlAssert(siteMap)
+ siteMapCategoryUrlBuildAssert(siteMap)
+ siteMapArticleUrlBuildAssert(siteMap)
}
+ private fun buildCategory(title: String) = Category.builder().title(title).tier(1).build()
private fun buildArticle(title: String, content: String, id: Long): Article? {
val article = Article.builder().title(title).content(content).build()
setArticlePrivateFieldId(id, article)
@@ -64,4 +66,18 @@ class SiteMapServiceTests {
field.setAccessible(true)
field.set(article, id)
}
+
+ private fun siteMapRootBuildlAssert(rssFeed: String?) {
+ assertThat(rssFeed).contains("https://www.jiniaslog.co.kr")
+ .contains("1.0")
+ }
+
+ private fun siteMapCategoryUrlBuildAssert(rssFeed: String?) {
+ assertThat(rssFeed).contains("https://www.jiniaslog.co.kr/article/list?category=목 카테고리&tier=1&page=1")
+ }
+
+ private fun siteMapArticleUrlBuildAssert(rssFeed: String?) {
+ assertThat(rssFeed).contains("https://www.jiniaslog.co.kr/article/view?articleId=1")
+ .contains("https://www.jiniaslog.co.kr/article/view?articleId=2")
+ }
}
\ No newline at end of file
diff --git a/src/test/kotlin/myblog/blog/tags/service/TagsServiceTests.kt b/src/test/kotlin/myblog/blog/tags/service/TagsServiceTests.kt
new file mode 100644
index 0000000..ac231b1
--- /dev/null
+++ b/src/test/kotlin/myblog/blog/tags/service/TagsServiceTests.kt
@@ -0,0 +1,20 @@
+//package myblog.blog.tags.service
+//
+//import org.junit.jupiter.api.extension.ExtendWith
+//import org.mockito.InjectMocks
+//import org.mockito.Mock
+//import org.mockito.junit.jupiter.MockitoExtension
+//import myblog.blog.tags.repository.ArticleTagListsRepository
+//
+//@ExtendWith(MockitoExtension::class)
+//class TagsServiceTests {
+//
+// @Mock
+// lateinit var tagsRepository: ArticleTagListsRepository
+// @Mock
+// lateinit var articleTagListsRepository: ArticleTagListsRepository
+// @InjectMocks
+// lateinit var tagsService: TagsService
+// 커밋후 추가 작성 예정
+//
+//}
\ No newline at end of file