From 9697da50323957bf71923d5d474c6cae25326f1d Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 13:59:23 +0900 Subject: [PATCH 001/153] =?UTF-8?q?*=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=9A=A9=20=EC=BD=94=EB=93=9C=20=EC=9E=84=EC=8B=9C=20pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/friend/service/FriendShipService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index d0e3dcf..8e4a14b 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -5,6 +5,7 @@ import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; import lombok.RequiredArgsConstructor; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.domain.PageRequest; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; From 6031e516e15c5249d20f238b72af27c089e808b8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 16:40:46 +0900 Subject: [PATCH 002/153] =?UTF-8?q?*=201)=20Feed=20=EC=97=90=20=EC=86=8D?= =?UTF-8?q?=ED=95=B4=EC=9E=88=EB=8D=98=20timeline=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=EC=9D=84=20=EC=83=88=EB=A1=9C=EC=9A=B4=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20timeLine=20=EC=9C=BC=EB=A1=9C=20=ED=95=A0=EB=8B=B9?= =?UTF-8?q?=20*=202)=20timeline=20=EC=9D=98=20service=20=EB=B6=80=EB=B6=84?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/FeedController.java | 7 --- .../demo/feed/domain/FeedRepository.java | 4 ++ .../demo/feed/service/FeedService.java | 30 ----------- .../controller/TimeLineController.java | 8 +++ .../demo/timeline/domain/TimeLine.java | 8 +++ .../timeline/service/TimeLineService.java | 50 +++++++++++++++++++ 6 files changed, 70 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/example/demo/timeline/controller/TimeLineController.java create mode 100644 src/main/java/com/example/demo/timeline/domain/TimeLine.java create mode 100644 src/main/java/com/example/demo/timeline/service/TimeLineService.java diff --git a/src/main/java/com/example/demo/feed/controller/FeedController.java b/src/main/java/com/example/demo/feed/controller/FeedController.java index 822a72b..39cfa65 100644 --- a/src/main/java/com/example/demo/feed/controller/FeedController.java +++ b/src/main/java/com/example/demo/feed/controller/FeedController.java @@ -19,13 +19,6 @@ public class FeedController { private final FeedService feedService; - @PreAuthorize("hasRole('ROLE_ADMIN')") - @GetMapping("/feeds") - public Feed[] findTimeline(@RequestParam int page, - @RequestParam int pageSize){ - return feedService.findMyTimeLine(page, pageSize); - - } @PreAuthorize("hasRole('ROLE_ADMIN')") @GetMapping("/feeds/{feedId}") diff --git a/src/main/java/com/example/demo/feed/domain/FeedRepository.java b/src/main/java/com/example/demo/feed/domain/FeedRepository.java index 0d317dd..5fc3288 100644 --- a/src/main/java/com/example/demo/feed/domain/FeedRepository.java +++ b/src/main/java/com/example/demo/feed/domain/FeedRepository.java @@ -3,6 +3,8 @@ import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -22,6 +24,8 @@ public interface FeedRepository extends JpaRepository { Page findAllByWriter(Writer writer); + Page findAllByWriter_IdIn(List writerIds, Pageable pageable); + diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 8f0f092..864259b 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -30,36 +30,6 @@ public void deleteFeedByFeedId(Long id) { feed.delete(); } - public Feed[] findMyTimeLine(int page, int pageSize) { // 친구 문제 - User user = findUser(); - Identfication id = Identfication.create(user.getId()); - Name name = Name.create(user.getUserBasicInfo().getUsername()); - UserInfo userInfo = UserInfo.create(id, name); - - WriterId[] friendIds - = friendShipRepository - .findAllByUserInfo(userInfo) - .stream() - .map(Friendship::getFriendId) - .map(WriterId::create) - .collect(Collectors.toList()) - .toArray(WriterId[]::new); - - int length = friendIds.length; - - List feedsList = new ArrayList(); - - for (int i=0; i feeds = new PageImpl(feedsList, new PageRequest(page, pageSize, Sort.sort()), feedsList.size()); - - -// Page feeds = feedRepository.findAll(PageRequest.of(page, pageSize)); - - return feedsList.toArray(Feed[]::new); - } public Feed findFeedDetailByFeedId(Long id) { Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); diff --git a/src/main/java/com/example/demo/timeline/controller/TimeLineController.java b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java new file mode 100644 index 0000000..6c9e580 --- /dev/null +++ b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java @@ -0,0 +1,8 @@ +package com.example.demo.timeline.controller; + + +import org.springframework.stereotype.Controller; + +@Controller +public class TimeLineController { +} diff --git a/src/main/java/com/example/demo/timeline/domain/TimeLine.java b/src/main/java/com/example/demo/timeline/domain/TimeLine.java new file mode 100644 index 0000000..92e6b3c --- /dev/null +++ b/src/main/java/com/example/demo/timeline/domain/TimeLine.java @@ -0,0 +1,8 @@ +package com.example.demo.timeline.domain; + + +import javax.persistence.Entity; + +@Entity +public class TimeLine { +} diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java new file mode 100644 index 0000000..6838a56 --- /dev/null +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -0,0 +1,50 @@ +package com.example.demo.timeline.service; + + +import com.example.demo.feed.domain.Feed; +import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.domain.Writer; +import com.example.demo.feed.domain.WriterId; +import com.example.demo.friend.domain.*; +import com.example.demo.user.domain.User; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class TimeLineService { + private final FriendShipRepository friendShipRepository; + + private final FeedRepository feedRepository; + + public Feed[] findMyTimeLine(int page, int pageSize){ + User user = null; + Identfication userId = Identfication.create(user.getId()); + UserInfo userInfo = createUserInfo(user, userId); + + List writerList = + friendShipRepository + .findAllByUserInfo(userInfo) + .stream() + .map(Friendship::getFriendId) + .map(WriterId::create) + .collect(Collectors.toList()); + writerList.add(WriterId.create(user.getId())); + + Feed[] myTimeLine = (Feed[]) feedRepository.findAllByWriter_IdIn(writerList, PageRequest.of(page, pageSize)) + .stream().toArray(); + + return myTimeLine; + } + + private UserInfo createUserInfo(User user, Identfication id) { + + Name name = Name.create(user.getUserBasicInfo().getUsername()); + return UserInfo.create(id, name); + } + +} From 7b04d9888247b44fc4f71df092adba6767b7dca0 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 17:09:32 +0900 Subject: [PATCH 003/153] =?UTF-8?q?*=20=ED=91=9C=ED=98=84=EC=B8=B5?= =?UTF-8?q?=EC=97=90=20Feed=20=EC=A0=95=EB=B3=B4=20=EC=A0=84=EB=8B=AC?= =?UTF-8?q?=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C=20DTO=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/feed/service/CommentDto.java | 17 +++++++++++++++ .../example/demo/feed/service/FeedDto.java | 21 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/main/java/com/example/demo/feed/service/CommentDto.java create mode 100644 src/main/java/com/example/demo/feed/service/FeedDto.java diff --git a/src/main/java/com/example/demo/feed/service/CommentDto.java b/src/main/java/com/example/demo/feed/service/CommentDto.java new file mode 100644 index 0000000..22fe378 --- /dev/null +++ b/src/main/java/com/example/demo/feed/service/CommentDto.java @@ -0,0 +1,17 @@ +package com.example.demo.feed.service; + + +import lombok.Value; + +import java.time.Instant; + +@Value +public class CommentDto { + Long id; + Long writerId; + String writerName; + String content; + long preference; + Instant createAt; + +} diff --git a/src/main/java/com/example/demo/feed/service/FeedDto.java b/src/main/java/com/example/demo/feed/service/FeedDto.java new file mode 100644 index 0000000..471eb57 --- /dev/null +++ b/src/main/java/com/example/demo/feed/service/FeedDto.java @@ -0,0 +1,21 @@ +package com.example.demo.feed.service; + + +import lombok.Value; + +import java.time.Instant; +import java.util.List; + +@Value +public class FeedDto { + + Long id; + Long writerId; + String writerName; + String content; + List comments; + long preference; + Instant createAt; + + +} From b2641ddcf5b5ebcfed19f3e1c2fe54ddd780eda5 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 17:12:57 +0900 Subject: [PATCH 004/153] =?UTF-8?q?*=20=EC=8B=9C=EA=B0=84=ED=91=9C?= =?UTF-8?q?=ED=98=84=20LocalDataTime=20=EC=97=90=EC=84=9C=20Instant=20?= =?UTF-8?q?=EB=A1=9C=20=ED=83=80=EC=9E=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/feed/domain/Comment.java | 5 +++-- src/main/java/com/example/demo/feed/domain/Feed.java | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index faf6a3c..832d496 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -9,6 +9,7 @@ import lombok.Setter; import javax.persistence.*; +import java.time.Instant; import java.time.LocalDateTime; @Entity @@ -30,7 +31,7 @@ public class Comment { @Embedded private Writer writer; - private LocalDateTime wrtTime; + private Instant wrtTime; @Embedded private Content content; @@ -44,7 +45,7 @@ public Comment(Writer writer, Content content){ this.writer = writer; this.content = content; this.preferenceInfo = Preference.create(); - this.wrtTime = LocalDateTime.now(); + this.wrtTime = Instant.now(); this.deleted = false; } diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index 240b9e7..303cb88 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -8,6 +8,7 @@ import lombok.Setter; import javax.persistence.*; +import java.time.Instant; import java.time.LocalDateTime; import java.util.List; @@ -32,7 +33,7 @@ public class Feed { private Preference preferenceInfo; @Column(name = "wrt_time") - private LocalDateTime wrtTime; + private Instant wrtTime; private Boolean deleted; @@ -43,7 +44,7 @@ public class Feed { private Feed(Writer writer, Content content){ this.writer = writer; this.content = content; - this.wrtTime = LocalDateTime.now(); + this.wrtTime = Instant.now(); this.preferenceInfo = Preference.create(); this.deleted = false; } From f5d5cf29f5a1ab24b0231c1d9577359f9b30227f Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 17:29:20 +0900 Subject: [PATCH 005/153] =?UTF-8?q?*=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EC=98=81=EC=97=AD=20=EB=B3=B4=EC=97=AC=EB=82=B4=EC=A3=BC?= =?UTF-8?q?=EB=8A=94=20=EB=8C=80=EC=8B=A0,=20DTO=20=EB=A1=9C=20=EB=B3=B4?= =?UTF-8?q?=EB=82=B4=EC=A3=BC=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=20=20?= =?UTF-8?q?+=20=EC=9D=B4=EC=99=80=20=EA=B4=80=EB=A0=A8=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=EB=93=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Comment.java | 4 +++ .../com/example/demo/feed/domain/Writer.java | 8 +++++ .../example/demo/feed/service/FeedDto.java | 1 + .../timeline/service/TimeLineService.java | 36 +++++++++++++++---- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index 832d496..0170123 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -49,6 +49,10 @@ public Comment(Writer writer, Content content){ this.deleted = false; } + public String getContent(){ + return this.content.getContent(); + } + public static Comment create(Writer writer, Content content) { return new Comment(writer, content); diff --git a/src/main/java/com/example/demo/feed/domain/Writer.java b/src/main/java/com/example/demo/feed/domain/Writer.java index b4d7607..c747247 100644 --- a/src/main/java/com/example/demo/feed/domain/Writer.java +++ b/src/main/java/com/example/demo/feed/domain/Writer.java @@ -26,6 +26,14 @@ public Writer(WriterId id, WriterName wrtName) { this.wrtName = wrtName; } + public Long getId(){ + return this.id.getWriterId(); + } + + public String getName(){ + return this.wrtName.getWriterName(); + } + public static Writer create(WriterId wrtId, WriterName wrtName) { return new Writer(wrtId, wrtName); } diff --git a/src/main/java/com/example/demo/feed/service/FeedDto.java b/src/main/java/com/example/demo/feed/service/FeedDto.java index 471eb57..0846116 100644 --- a/src/main/java/com/example/demo/feed/service/FeedDto.java +++ b/src/main/java/com/example/demo/feed/service/FeedDto.java @@ -18,4 +18,5 @@ public class FeedDto { Instant createAt; + } diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 6838a56..1af2735 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -1,10 +1,9 @@ package com.example.demo.timeline.service; -import com.example.demo.feed.domain.Feed; -import com.example.demo.feed.domain.FeedRepository; -import com.example.demo.feed.domain.Writer; -import com.example.demo.feed.domain.WriterId; +import com.example.demo.feed.domain.*; +import com.example.demo.feed.service.CommentDto; +import com.example.demo.feed.service.FeedDto; import com.example.demo.friend.domain.*; import com.example.demo.user.domain.User; import lombok.RequiredArgsConstructor; @@ -21,7 +20,7 @@ public class TimeLineService { private final FeedRepository feedRepository; - public Feed[] findMyTimeLine(int page, int pageSize){ + public List findMyTimeLine(int page, int pageSize){ User user = null; Identfication userId = Identfication.create(user.getId()); UserInfo userInfo = createUserInfo(user, userId); @@ -35,12 +34,35 @@ public Feed[] findMyTimeLine(int page, int pageSize){ .collect(Collectors.toList()); writerList.add(WriterId.create(user.getId())); - Feed[] myTimeLine = (Feed[]) feedRepository.findAllByWriter_IdIn(writerList, PageRequest.of(page, pageSize)) - .stream().toArray(); + List myTimeLine = feedRepository.findAllByWriter_IdIn(writerList, PageRequest.of(page, pageSize)) + .stream().map(this::toFeedDto).collect(Collectors.toList()); return myTimeLine; } + public FeedDto toFeedDto(Feed feed){ + return new FeedDto( + feed.getId() + ,feed.getWriter().getId() + ,feed.getWriter().getName() + ,feed.getContent().getContent() + ,feed.getComments().stream().map(this::toCommentDto).collect(Collectors.toList()) + ,feed.getPreferenceInfo().getPreference() + ,feed.getWrtTime() + ); + } + + public CommentDto toCommentDto(Comment comment){ + return new CommentDto( + comment.getId() + ,comment.getWriter().getId() + ,comment.getWriter().getName() + ,comment.getContent() + ,comment.getPreferenceInfo().getPreference() + ,comment.getWrtTime() + ); + } + private UserInfo createUserInfo(User user, Identfication id) { Name name = Name.create(user.getUserBasicInfo().getUsername()); From 74156427b3a81e354a0242945d4a99e21a03a865 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 18:01:28 +0900 Subject: [PATCH 006/153] =?UTF-8?q?*=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=EB=90=9C=20User=20=EC=A0=95=EB=B3=B4=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EA=B8=B0=20=EC=9C=84=ED=95=9C=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=ED=98=95=EC=84=B1=20=20=20->=20=EC=88=98=EC=97=85?= =?UTF-8?q?=EC=9E=90=EB=A3=8C=20=EC=82=AC=EC=9A=A9=ED=95=B4=EC=84=9C=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/security/UserSessionUtils.java | 18 +++++++++++++ .../demo/user/service/UserSessionService.java | 26 +++++++++++++++++++ .../core/userdetails/SecurityUser.java | 25 ++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 src/main/java/com/example/demo/security/UserSessionUtils.java create mode 100644 src/main/java/com/example/demo/user/service/UserSessionService.java create mode 100644 src/main/java/org/springframework/security/core/userdetails/SecurityUser.java diff --git a/src/main/java/com/example/demo/security/UserSessionUtils.java b/src/main/java/com/example/demo/security/UserSessionUtils.java new file mode 100644 index 0000000..686b316 --- /dev/null +++ b/src/main/java/com/example/demo/security/UserSessionUtils.java @@ -0,0 +1,18 @@ +package com.example.demo.security; + +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.SecurityUser; + +import java.nio.file.AccessDeniedException; + +public class UserSessionUtils { + + public static SecurityUser getSessionUser() throws AccessDeniedException { + Object detais = SecurityContextHolder.getContext().getAuthentication().getDetails(); + + if (!(detais instanceof SecurityUser)){ + throw new AccessDeniedException("유저 정보가 없습니다."); + } + return (SecurityUser) detais; + } +} diff --git a/src/main/java/com/example/demo/user/service/UserSessionService.java b/src/main/java/com/example/demo/user/service/UserSessionService.java new file mode 100644 index 0000000..e5ebf83 --- /dev/null +++ b/src/main/java/com/example/demo/user/service/UserSessionService.java @@ -0,0 +1,26 @@ +package com.example.demo.user.service; + + +import com.example.demo.security.UserSessionUtils; +import com.example.demo.user.domain.User; +import com.example.demo.user.domain.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.SecurityUser; +import org.springframework.stereotype.Service; + +import java.nio.file.AccessDeniedException; + +@Service +@RequiredArgsConstructor +public class UserSessionService { + + private final UserRepository userRepository; + + + public User getLoginedUser() throws AccessDeniedException { + SecurityUser securityUser = UserSessionUtils.getSessionUser(); + Long userId = securityUser.getId(); + + return userRepository.findUserById(userId); + } +} diff --git a/src/main/java/org/springframework/security/core/userdetails/SecurityUser.java b/src/main/java/org/springframework/security/core/userdetails/SecurityUser.java new file mode 100644 index 0000000..e9965bd --- /dev/null +++ b/src/main/java/org/springframework/security/core/userdetails/SecurityUser.java @@ -0,0 +1,25 @@ +package org.springframework.security.core.userdetails; + + +import org.springframework.security.core.GrantedAuthority; + +import java.util.Collection; + +public class SecurityUser extends User{ + + private final Long id; + public SecurityUser(Long id, String username, String password, Collection authorities) { + super(username, password, authorities); + this.id = id; + } + + public SecurityUser(Long id, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities) { + super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); + this.id = id; + + } + + public Long getId(){ + return this.id; + } +} From 0f81f4924e402e0acaaeda0fd449abb71c46b117 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 18:05:27 +0900 Subject: [PATCH 007/153] =?UTF-8?q?*=20TimeLineService=20=EC=97=90?= =?UTF-8?q?=EC=84=9C=20SpringSecurity=20=ED=99=9C=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=97=AC=20User=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/timeline/service/TimeLineService.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 1af2735..31e7a66 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -6,10 +6,12 @@ import com.example.demo.feed.service.FeedDto; import com.example.demo.friend.domain.*; import com.example.demo.user.domain.User; +import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import java.nio.file.AccessDeniedException; import java.util.List; import java.util.stream.Collectors; @@ -20,10 +22,12 @@ public class TimeLineService { private final FeedRepository feedRepository; - public List findMyTimeLine(int page, int pageSize){ - User user = null; - Identfication userId = Identfication.create(user.getId()); - UserInfo userInfo = createUserInfo(user, userId); + private final UserSessionService userSessionService; + + public List findMyTimeLine(int page, int pageSize) throws AccessDeniedException { + + User user = userSessionService.getLoginedUser(); + UserInfo userInfo = createUserInfo(user); List writerList = friendShipRepository @@ -63,10 +67,11 @@ public CommentDto toCommentDto(Comment comment){ ); } - private UserInfo createUserInfo(User user, Identfication id) { + private UserInfo createUserInfo(User user) throws AccessDeniedException { + Identfication userId = Identfication.create(user.getId()); Name name = Name.create(user.getUserBasicInfo().getUsername()); - return UserInfo.create(id, name); + return UserInfo.create(userId, name); } } From d31a3946a41a806e158648400d695afa82e49405 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 18:10:00 +0900 Subject: [PATCH 008/153] =?UTF-8?q?*=20FriendShipService=20=EC=97=90?= =?UTF-8?q?=EC=84=9C=20SpringSecurity=20=ED=99=9C=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=97=AC=20User=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FriendShipController.java | 9 ++++--- .../friend/service/FriendShipService.java | 25 ++++++++----------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/example/demo/friend/controller/FriendShipController.java b/src/main/java/com/example/demo/friend/controller/FriendShipController.java index 216c822..ec186fb 100644 --- a/src/main/java/com/example/demo/friend/controller/FriendShipController.java +++ b/src/main/java/com/example/demo/friend/controller/FriendShipController.java @@ -9,6 +9,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.nio.file.AccessDeniedException; import java.util.List; @RestController @@ -21,13 +22,13 @@ public class FriendShipController { @GetMapping // request query로 받는 값들 public List getMyFriends(@RequestParam(value="page") int page, - @RequestParam(value = "size") int size){ + @RequestParam(value = "size") int size) throws AccessDeniedException { return friendShipService.getMyFriends(page, size); } @PostMapping("/{friendId}") - public void createFriendShip(@PathVariable Long friendId){ + public void createFriendShip(@PathVariable Long friendId) throws AccessDeniedException { FriendShipResult friendShipResult = friendShipService.create(friendId); if (friendShipResult == FriendShipResult.TRY_TO_MAKE_FRIENDSHIP || friendShipResult == FriendShipResult.SUCCESS){ @@ -40,13 +41,13 @@ public void createFriendShip(@PathVariable Long friendId){ } @DeleteMapping("/{friendId}") - public void deleteFriendShip(@PathVariable Long friendId){ + public void deleteFriendShip(@PathVariable Long friendId) throws AccessDeniedException { friendShipService.deleteFriendShipRequest(friendId); } @GetMapping("/request") public List findRequestToMe(@RequestParam(value="page") int page, - @RequestParam(value = "size") int size){ + @RequestParam(value = "size") int size) throws AccessDeniedException { return friendShipService.findRequestForMe(page, size); } } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 8e4a14b..e119dd8 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -4,6 +4,7 @@ import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; +import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.domain.PageRequest; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import javax.transaction.Transactional; +import java.nio.file.AccessDeniedException; import java.util.List; import java.util.stream.Collectors; @@ -22,11 +24,12 @@ public class FriendShipService { private final FriendShipRepository friendShipRepository; private final UserRepository userRepository; + private final UserSessionService userSessionService; @Transactional - public List getMyFriends(int page, int size) { - User user = null; + public List getMyFriends(int page, int size) throws AccessDeniedException { + User user = userSessionService.getLoginedUser(); Identfication userId = Identfication.create(user.getId()); UserInfo userInfo = createUserInfo(user, userId); @@ -47,8 +50,8 @@ public List getMyFriends(int page, int size) { @Transactional - public FriendShipResult create(Long inputedFriendId) { - User user = findUser(); + public FriendShipResult create(Long inputedFriendId) throws AccessDeniedException { + User user = userSessionService.getLoginedUser(); Identfication myId = Identfication.create(user.getId()); UserInfo myInfo = createUserInfo(user, myId); @@ -90,12 +93,6 @@ public FriendShipResult create(Long inputedFriendId) { } } - public User findUser(){ - Authentication authentication = findAuthentication(); - Username username = Username.create(authentication.getName()); - return userRepository.findByUserBasicInfo_Username(username); - - } public Authentication findAuthentication(){ return SecurityContextHolder.getContext().getAuthentication(); @@ -111,8 +108,8 @@ private Friendship createFriendship(UserInfo user, UserInfo friendUserInfo) { } - public FriendShipResult deleteFriendShipRequest(Long inputedId) { - User user = null; + public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDeniedException { + User user = userSessionService.getLoginedUser(); Identfication myId = Identfication.create(user.getId()); UserInfo myInfo = createUserInfo(user, myId); @@ -139,9 +136,9 @@ private UserInfo createUserInfo(User user, Identfication id) { } - public ListfindRequestForMe(int page, int size) { + public ListfindRequestForMe(int page, int size) throws AccessDeniedException { - User user = null; + User user = userSessionService.getLoginedUser(); Identfication myId = Identfication.create(user.getId()); List friendshipList = friendShipRepository.findAllByFriend_FriendId(myId, PageRequest.of(page, size)) From 87485321854bba4ae3421dd0c605e679564a4688 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 18:16:48 +0900 Subject: [PATCH 009/153] =?UTF-8?q?*=20=EC=95=84=EC=A7=81=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=95=88=ED=95=98=EB=8A=94=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=EC=9E=84=EC=8B=9C=20=EC=A3=BC=EC=84=9D=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipServiceTest.java | 74 ++++++++++--------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java index f6ea4ee..fcabe7c 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java @@ -8,6 +8,7 @@ import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; +import com.example.demo.user.service.UserSessionService; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; @@ -30,40 +31,43 @@ class FriendShipServiceTest { @Mock FriendShipRepository friendShipRepository; - - - @Test - void createFriendShip(){ - - FriendShipService friendShipService = new FriendShipService(friendShipRepository, userRepository); - - Username myName = Username.create("MyName"); - Password myPassword = Password.create("MyPassword"); - - User me = User.create(myName, myPassword); - - Identfication myId = Identfication.create(1L); - - Username friendName = Username.create("FriendName"); - Password friendPassword = Password.create("FriendPassword"); - - User friend = User.create(friendName, friendPassword); - - Identfication friendId = Identfication.create(2L); - - when(friendShipService.findUser()).thenReturn(me).thenReturn(friend); - - - - when(Identfication.create(any())) - .thenReturn(myId) - .thenReturn(friendId); - - when(UserInfo.create(any(), any())) - .thenReturn(UserInfo.create(myId, myName)); - - - - } + @Mock + UserSessionService userSessionService; + + + +// @Test +// void createFriendShip(){ +// +// FriendShipService friendShipService = new FriendShipService(friendShipRepository, userRepository); +// +// Username myName = Username.create("MyName"); +// Password myPassword = Password.create("MyPassword"); +// +// User me = User.create(myName, myPassword); +// +// Identfication myId = Identfication.create(1L); +// +// Username friendName = Username.create("FriendName"); +// Password friendPassword = Password.create("FriendPassword"); +// +// User friend = User.create(friendName, friendPassword); +// +// Identfication friendId = Identfication.create(2L); +// +// when(friendShipService.findUser()).thenReturn(me).thenReturn(friend); +// +// +// +// when(Identfication.create(any())) +// .thenReturn(myId) +// .thenReturn(friendId); +// +// when(UserInfo.create(any(), any())) +// .thenReturn(UserInfo.create(myId, myName)); +// +// +// +// } } \ No newline at end of file From 5a9873ddae58adf264e50938002487944aef7eac Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 18:30:26 +0900 Subject: [PATCH 010/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipService.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index e119dd8..40d751d 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -60,9 +60,9 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio UserInfo friendInfo = createUserInfo(friend, friendId); - Friendship friendship;; - if ((friendship=friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(myInfo, friendId))==null){ + + if ((friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(myInfo, friendId))==null){ Friendship forwardFriendShip = createFriendship(myInfo, friendInfo); forwardFriendShip.acceptFriendShip(); @@ -94,9 +94,6 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio } - public Authentication findAuthentication(){ - return SecurityContextHolder.getContext().getAuthentication(); - } private Friendship createFriendship(UserInfo user, UserInfo friendUserInfo) { Identfication friendsId = Identfication.create(friendUserInfo.getId()); From 874e97eaecd72cd05027c82fc93455cc8643e045 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:19:06 +0900 Subject: [PATCH 011/153] =?UTF-8?q?*=20=EC=A2=8B=EC=95=84=EC=9A=94=20?= =?UTF-8?q?=EB=88=84=EB=A5=B8=EC=82=AC=EB=9E=8C=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=EB=A5=BC=20=EC=83=88=EB=A1=9C=EC=9A=B4=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EC=98=81=EC=97=AD=EC=9D=84=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EC=96=B4=20=ED=95=A0=EB=8B=B9=ED=95=98=EA=B2=8C=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Comment.java | 7 +++-- .../com/example/demo/feed/domain/Feed.java | 5 +++- .../domain/PreferenceStatus.java | 6 ++++ .../domain/PreferredPerson.java | 30 +++++++++++++++++++ .../domain/PreferredPersonInfoLocation.java | 6 ++++ 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/example/demo/preperredPerson/domain/PreferenceStatus.java create mode 100644 src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java create mode 100644 src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonInfoLocation.java diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index 0170123..b632aed 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -1,7 +1,7 @@ package com.example.demo.feed.domain; -import com.example.demo.user.domain.User; +import com.example.demo.preperredPerson.domain.PreferredPerson; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AccessLevel; import lombok.Getter; @@ -10,7 +10,7 @@ import javax.persistence.*; import java.time.Instant; -import java.time.LocalDateTime; +import java.util.List; @Entity @Table(name = "comment") @@ -28,6 +28,9 @@ public class Comment { @JsonIgnoreProperties("feed") private Feed feed; + @OneToMany + private List preferredPeople; + @Embedded private Writer writer; diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index 303cb88..d972b12 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -1,6 +1,7 @@ package com.example.demo.feed.domain; +import com.example.demo.preperredPerson.domain.PreferredPerson; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AccessLevel; import lombok.Getter; @@ -9,7 +10,6 @@ import javax.persistence.*; import java.time.Instant; -import java.time.LocalDateTime; import java.util.List; @Entity @@ -37,6 +37,9 @@ public class Feed { private Boolean deleted; + @OneToMany + private List preferredPeople; + @OneToMany(mappedBy = "feed", cascade = {CascadeType.PERSIST}) @JsonIgnoreProperties("feed") private List comments; diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferenceStatus.java b/src/main/java/com/example/demo/preperredPerson/domain/PreferenceStatus.java new file mode 100644 index 0000000..8cb3c84 --- /dev/null +++ b/src/main/java/com/example/demo/preperredPerson/domain/PreferenceStatus.java @@ -0,0 +1,6 @@ +package com.example.demo.preperredPerson.domain; + +public enum PreferenceStatus { + LIKE, + INDIFFERENCE +} diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java new file mode 100644 index 0000000..98c94c1 --- /dev/null +++ b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java @@ -0,0 +1,30 @@ +package com.example.demo.preperredPerson.domain; + + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.*; + +@Getter +@Setter(AccessLevel.PACKAGE) +@Entity +@NoArgsConstructor +public class PreferredPerson { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long preferredPersonId; + + private PreferredPersonInfoLocation location; + + private PreferenceStatus preferenceStatus; + + + + +} diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonInfoLocation.java b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonInfoLocation.java new file mode 100644 index 0000000..280095a --- /dev/null +++ b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonInfoLocation.java @@ -0,0 +1,6 @@ +package com.example.demo.preperredPerson.domain; + +public enum PreferredPersonInfoLocation { + FEED, + COMMENT +} From 0ac03155cda277ee63f0df7925a1e1ce5667d604 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:21:22 +0900 Subject: [PATCH 012/153] =?UTF-8?q?*=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=98=81=EC=97=AD=EC=9D=98=20?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=96=B4=20=EC=83=9D=EC=84=B1=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PreferredPersionController.java | 4 ++++ .../preperredPerson/domain/PreferredPersonRepository.java | 6 ++++++ .../preperredPerson/service/PreferredPersonService.java | 4 ++++ 3 files changed, 14 insertions(+) create mode 100644 src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java create mode 100644 src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java create mode 100644 src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java diff --git a/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java b/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java new file mode 100644 index 0000000..e7ebc63 --- /dev/null +++ b/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java @@ -0,0 +1,4 @@ +package com.example.demo.preperredPerson.controller; + +public class PreferredPersionController { +} diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java new file mode 100644 index 0000000..d9abcb7 --- /dev/null +++ b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java @@ -0,0 +1,6 @@ +package com.example.demo.preperredPerson.domain; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PreferredPersonRepository extends JpaRepository { +} diff --git a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java new file mode 100644 index 0000000..01c4cb2 --- /dev/null +++ b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java @@ -0,0 +1,4 @@ +package com.example.demo.preperredPerson.service; + +public class PreferredPersonService { +} From 0ecd1146623b784527cd5871ba54d44bddf27127 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:24:27 +0900 Subject: [PATCH 013/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/feed/domain/Feed.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index d972b12..3b3937f 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -37,8 +37,6 @@ public class Feed { private Boolean deleted; - @OneToMany - private List preferredPeople; @OneToMany(mappedBy = "feed", cascade = {CascadeType.PERSIST}) @JsonIgnoreProperties("feed") From b4afd7b8cafee9e2d54bfdc1fa6031811adc4c68 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:30:01 +0900 Subject: [PATCH 014/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F?= =?UTF-8?q?=20User=20=EC=A0=95=EB=B3=B4=20=EC=B0=BE=EB=8A=94=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/feed/service/FeedService.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 864259b..64b3c26 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -6,6 +6,7 @@ import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; +import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.*; import org.springframework.security.core.Authentication; @@ -13,6 +14,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.nio.file.AccessDeniedException; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -22,7 +24,8 @@ public class FeedService { private final FeedRepository feedRepository; private final UserRepository userRepository; - private final FriendShipRepository friendShipRepository; + private final UserSessionService userSessionService; + @Transactional public void deleteFeedByFeedId(Long id) { @@ -38,10 +41,9 @@ public Feed findFeedDetailByFeedId(Long id) { - public void makeFeedByContents(String InsertedContent) { -// User user = findUser(); - Username username = null; - User user = null; + public void makeFeedByContents(String InsertedContent) throws AccessDeniedException { + + User user = userSessionService.getLoginedUser(); WriterId id = WriterId.create(user.getId()); WriterName wrtName = WriterName.create(user.getUserBasicInfo().getUsername()); @@ -54,12 +56,7 @@ public void makeFeedByContents(String InsertedContent) { System.out.println("새로운 feed 생성 완료"); } - public User findUser(){ - Authentication authentication = findAuthentication(); - Username username = Username.create(authentication.getName()); - return userRepository.findByUserBasicInfo_Username(username); - } public Authentication findAuthentication(){ return SecurityContextHolder.getContext().getAuthentication(); From fd7f45fad3fe7f3bc756220f820dd176f467803f Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:40:56 +0900 Subject: [PATCH 015/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/feed/service/FeedService.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 64b3c26..ea0d38c 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -2,28 +2,17 @@ import com.example.demo.feed.domain.*; -import com.example.demo.friend.domain.*; import com.example.demo.user.domain.User; -import com.example.demo.user.domain.UserRepository; -import com.example.demo.user.domain.Username; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.*; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - import java.nio.file.AccessDeniedException; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class FeedService { private final FeedRepository feedRepository; - private final UserRepository userRepository; private final UserSessionService userSessionService; @@ -58,10 +47,6 @@ public void makeFeedByContents(String InsertedContent) throws AccessDeniedExcept - public Authentication findAuthentication(){ - return SecurityContextHolder.getContext().getAuthentication(); - } - @Transactional public void likeFeedByFeedID(Long id) { From 7100fcde23cea744acbe442bd33939822f9e95f9 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:41:21 +0900 Subject: [PATCH 016/153] =?UTF-8?q?*=20repository=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferredPersonService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java index 01c4cb2..c8c8798 100644 --- a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java @@ -1,4 +1,17 @@ package com.example.demo.preperredPerson.service; + +import com.example.demo.feed.domain.FeedRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor public class PreferredPersonService { + + private final FeedRepository feedRepository; + + + + } From d87225ee65fc6a7260005088a12c921e3ff8dbb8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:43:56 +0900 Subject: [PATCH 017/153] =?UTF-8?q?*=20=EA=B8=B0=EC=A1=B4=20feed=20?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=8B=B4=EB=8B=B9=ED=95=98=EA=B3=A0=20?= =?UTF-8?q?=EC=9E=88=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/FeedController.java | 8 +++----- .../example/demo/feed/service/FeedService.java | 6 +----- .../controller/PreferredPersionController.java | 16 ++++++++++++++++ .../preperredPerson/domain/PreferredPerson.java | 2 ++ .../service/PreferredPersonService.java | 8 +++++++- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/feed/controller/FeedController.java b/src/main/java/com/example/demo/feed/controller/FeedController.java index 39cfa65..ccee030 100644 --- a/src/main/java/com/example/demo/feed/controller/FeedController.java +++ b/src/main/java/com/example/demo/feed/controller/FeedController.java @@ -9,6 +9,7 @@ import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.web.bind.annotation.*; +import java.nio.file.AccessDeniedException; import java.util.List; @@ -28,7 +29,7 @@ public Feed findFeedDetailByFeedId(@PathVariable Long feedId){ @PreAuthorize("hasRole('ROLE_ADMIN')") @PostMapping("/feeds") - public void makeFeed(@RequestBody String contents){ + public void makeFeed(@RequestBody String contents) throws AccessDeniedException { feedService.makeFeedByContents(contents); } @@ -39,10 +40,7 @@ public void deleteFeedByFeedId(@PathVariable Long feedId){ } - @PostMapping("/feeds/{feedId}/likes") - public void likeFeedByFeedId(@PathVariable Long feedId){ - feedService.likeFeedByFeedID(feedId); - } + } diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index ea0d38c..57c8bb8 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -48,9 +48,5 @@ public void makeFeedByContents(String InsertedContent) throws AccessDeniedExcept - @Transactional - public void likeFeedByFeedID(Long id) { - Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); - feed.like(); - } + } diff --git a/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java b/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java index e7ebc63..2a5c1af 100644 --- a/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java +++ b/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java @@ -1,4 +1,20 @@ package com.example.demo.preperredPerson.controller; +import com.example.demo.preperredPerson.service.PreferredPersonService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +@RequiredArgsConstructor public class PreferredPersionController { + + private final PreferredPersonService preferredPersonService; + + @PostMapping("/feeds/{feedId}/likes") + public void likeFeedByFeedId(@PathVariable Long feedId){ + preferredPersonService.likeFeedByFeedID(feedId); + } } diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java index 98c94c1..c284c5f 100644 --- a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java @@ -22,6 +22,8 @@ public class PreferredPerson { private PreferredPersonInfoLocation location; + private Long FeedOrCommentId; + private PreferenceStatus preferenceStatus; diff --git a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java index c8c8798..bdf2779 100644 --- a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java @@ -1,9 +1,11 @@ package com.example.demo.preperredPerson.service; +import com.example.demo.feed.domain.Feed; import com.example.demo.feed.domain.FeedRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @@ -11,7 +13,11 @@ public class PreferredPersonService { private final FeedRepository feedRepository; - + @Transactional + public void likeFeedByFeedID(Long id) { + Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); + feed.like(); + } } From ec2146dfd989f54a732de247b116a101e4edf336 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sat, 10 Apr 2021 19:52:36 +0900 Subject: [PATCH 018/153] =?UTF-8?q?*=20like=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=EC=A4=91=20(1)=20-=20=EB=B6=84=EA=B8=B0=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...er.java => PreferredPersonController.java} | 6 +++-- .../domain/PreferredPerson.java | 2 +- .../domain/PreferredPersonRepository.java | 2 ++ .../service/PreferredPersonService.java | 24 ++++++++++++++++++- 4 files changed, 30 insertions(+), 4 deletions(-) rename src/main/java/com/example/demo/preperredPerson/controller/{PreferredPersionController.java => PreferredPersonController.java} (76%) diff --git a/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java b/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersonController.java similarity index 76% rename from src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java rename to src/main/java/com/example/demo/preperredPerson/controller/PreferredPersonController.java index 2a5c1af..555d8ae 100644 --- a/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersionController.java +++ b/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersonController.java @@ -6,15 +6,17 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; +import java.nio.file.AccessDeniedException; + @RestController @RequiredArgsConstructor -public class PreferredPersionController { +public class PreferredPersonController { private final PreferredPersonService preferredPersonService; @PostMapping("/feeds/{feedId}/likes") - public void likeFeedByFeedId(@PathVariable Long feedId){ + public void likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { preferredPersonService.likeFeedByFeedID(feedId); } } diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java index c284c5f..867c993 100644 --- a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java @@ -22,7 +22,7 @@ public class PreferredPerson { private PreferredPersonInfoLocation location; - private Long FeedOrCommentId; + private Long documentId; private PreferenceStatus preferenceStatus; diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java index d9abcb7..50b6855 100644 --- a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java +++ b/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java @@ -3,4 +3,6 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface PreferredPersonRepository extends JpaRepository { + + PreferredPerson findByDocumentIdAndPreferredPersonId(Long documentId, Long PreferredPersonId); } diff --git a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java index bdf2779..8bf4869 100644 --- a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java @@ -3,19 +3,41 @@ import com.example.demo.feed.domain.Feed; import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.preperredPerson.domain.PreferredPerson; +import com.example.demo.preperredPerson.domain.PreferredPersonRepository; +import com.example.demo.user.domain.User; +import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.nio.file.AccessDeniedException; + @Service @RequiredArgsConstructor public class PreferredPersonService { private final FeedRepository feedRepository; + private final UserSessionService userSessionService; + private final PreferredPersonRepository preferredPersonRepository; + @Transactional - public void likeFeedByFeedID(Long id) { + public void likeFeedByFeedID(Long id) throws AccessDeniedException { + User user = userSessionService.getLoginedUser(); Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); + if (preferredPersonRepository + .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ + + }else { + PreferredPerson preferredPerson + = preferredPersonRepository + .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId()); + + + + } + feed.like(); } From e117169d7a83fcbce3fbd722a0870f8f42938d3b Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 21:05:37 +0900 Subject: [PATCH 019/153] =?UTF-8?q?*=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/feed/domain/Comment.java | 2 +- src/main/java/com/example/demo/feed/domain/Feed.java | 1 - .../controller/PreferredPersonController.java | 4 ++-- .../domain/PreferenceStatus.java | 2 +- .../domain/PreferredPerson.java | 2 +- .../domain/PreferredPersonInfoLocation.java | 2 +- .../domain/PreferredPersonRepository.java | 2 +- .../service/PreferredPersonService.java | 6 +++--- 8 files changed, 10 insertions(+), 11 deletions(-) rename src/main/java/com/example/demo/{preperredPerson => preferredperson}/controller/PreferredPersonController.java (84%) rename src/main/java/com/example/demo/{preperredPerson => preferredperson}/domain/PreferenceStatus.java (55%) rename src/main/java/com/example/demo/{preperredPerson => preferredperson}/domain/PreferredPerson.java (90%) rename src/main/java/com/example/demo/{preperredPerson => preferredperson}/domain/PreferredPersonInfoLocation.java (57%) rename src/main/java/com/example/demo/{preperredPerson => preferredperson}/domain/PreferredPersonRepository.java (83%) rename src/main/java/com/example/demo/{preperredPerson => preferredperson}/service/PreferredPersonService.java (87%) diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index b632aed..7cb1058 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -1,7 +1,7 @@ package com.example.demo.feed.domain; -import com.example.demo.preperredPerson.domain.PreferredPerson; +import com.example.demo.preferredperson.domain.PreferredPerson; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AccessLevel; import lombok.Getter; diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index 3b3937f..e30260a 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -1,7 +1,6 @@ package com.example.demo.feed.domain; -import com.example.demo.preperredPerson.domain.PreferredPerson; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AccessLevel; import lombok.Getter; diff --git a/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersonController.java b/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java similarity index 84% rename from src/main/java/com/example/demo/preperredPerson/controller/PreferredPersonController.java rename to src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java index 555d8ae..515f67a 100644 --- a/src/main/java/com/example/demo/preperredPerson/controller/PreferredPersonController.java +++ b/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java @@ -1,6 +1,6 @@ -package com.example.demo.preperredPerson.controller; +package com.example.demo.preferredperson.controller; -import com.example.demo.preperredPerson.service.PreferredPersonService; +import com.example.demo.preferredperson.service.PreferredPersonService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferenceStatus.java b/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java similarity index 55% rename from src/main/java/com/example/demo/preperredPerson/domain/PreferenceStatus.java rename to src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java index 8cb3c84..3f940b9 100644 --- a/src/main/java/com/example/demo/preperredPerson/domain/PreferenceStatus.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java @@ -1,4 +1,4 @@ -package com.example.demo.preperredPerson.domain; +package com.example.demo.preferredperson.domain; public enum PreferenceStatus { LIKE, diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java similarity index 90% rename from src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java rename to src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java index 867c993..7a4c2a4 100644 --- a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java @@ -1,4 +1,4 @@ -package com.example.demo.preperredPerson.domain; +package com.example.demo.preferredperson.domain; import lombok.AccessLevel; diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonInfoLocation.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonInfoLocation.java similarity index 57% rename from src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonInfoLocation.java rename to src/main/java/com/example/demo/preferredperson/domain/PreferredPersonInfoLocation.java index 280095a..5d57a2b 100644 --- a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonInfoLocation.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonInfoLocation.java @@ -1,4 +1,4 @@ -package com.example.demo.preperredPerson.domain; +package com.example.demo.preferredperson.domain; public enum PreferredPersonInfoLocation { FEED, diff --git a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java similarity index 83% rename from src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java rename to src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java index 50b6855..a098e18 100644 --- a/src/main/java/com/example/demo/preperredPerson/domain/PreferredPersonRepository.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java @@ -1,4 +1,4 @@ -package com.example.demo.preperredPerson.domain; +package com.example.demo.preferredperson.domain; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java similarity index 87% rename from src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java rename to src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index 8bf4869..50801eb 100644 --- a/src/main/java/com/example/demo/preperredPerson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -1,10 +1,10 @@ -package com.example.demo.preperredPerson.service; +package com.example.demo.preferredperson.service; import com.example.demo.feed.domain.Feed; import com.example.demo.feed.domain.FeedRepository; -import com.example.demo.preperredPerson.domain.PreferredPerson; -import com.example.demo.preperredPerson.domain.PreferredPersonRepository; +import com.example.demo.preferredperson.domain.PreferredPerson; +import com.example.demo.preferredperson.domain.PreferredPersonRepository; import com.example.demo.user.domain.User; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; From ff28e8016218b15e0820f88ee0748e362cb629d4 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 21:07:38 +0900 Subject: [PATCH 020/153] =?UTF-8?q?*=20=EC=97=B4=EA=B1=B0=20=EC=83=81?= =?UTF-8?q?=EC=88=98=20=EC=B6=94=EA=B0=80=20->=20=EC=8B=AB=EC=96=B4?= =?UTF-8?q?=EC=9A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=8C=80?= =?UTF-8?q?=EB=B9=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/preferredperson/domain/PreferenceStatus.java | 3 ++- .../demo/preferredperson/service/PreferredPersonService.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java b/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java index 3f940b9..4d0492d 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java @@ -2,5 +2,6 @@ public enum PreferenceStatus { LIKE, - INDIFFERENCE + INDIFFERENCE, + DISLIKE } diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index 50801eb..0fbfd05 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -29,6 +29,8 @@ public void likeFeedByFeedID(Long id) throws AccessDeniedException { if (preferredPersonRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ + + }else { PreferredPerson preferredPerson = preferredPersonRepository From b0db06a5846736804686097909c49da606f4b8f8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 21:11:54 +0900 Subject: [PATCH 021/153] =?UTF-8?q?*=20PreferredPerson=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferredperson/domain/PreferredPerson.java | 11 +++++++++++ .../service/PreferredPersonService.java | 3 +-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java index 7a4c2a4..42f2dce 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java @@ -26,6 +26,17 @@ public class PreferredPerson { private PreferenceStatus preferenceStatus; + private PreferredPerson(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ + this.preferredPersonId = preferredPersonId; + this.documentId = documentId; + this.location = location; + this.preferenceStatus = PreferenceStatus.DISLIKE; + } + + public static PreferredPerson create(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ + return new PreferredPerson(preferredPersonId, documentId, location ); + } + diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index 0fbfd05..c22944b 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -28,8 +28,7 @@ public void likeFeedByFeedID(Long id) throws AccessDeniedException { Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); if (preferredPersonRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ - - + PreferredPerson preferredPerson = PreferredPerson. }else { PreferredPerson preferredPerson From d02c820d6e249f1e8c8ffb23dc4a517457c9b131 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 21:51:13 +0900 Subject: [PATCH 022/153] =?UTF-8?q?*=20=EA=B5=AC=ED=98=84=EC=97=90=20?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/domain/FriendShipRepository.java | 2 ++ .../example/demo/preferredperson/domain/PreferredPerson.java | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java index f6b227f..a7075db 100644 --- a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java +++ b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java @@ -16,5 +16,7 @@ public interface FriendShipRepository extends JpaRepository { Friendship findFriendshipByUserInfoAndFriend_FriendId(UserInfo user, Identfication id); + Friendship findFriendshipByFriend_FriendIdAndUserInfo_UserId(Identfication friendId, Identfication userId); + Page findAllByFriend_FriendId(Identfication friendId, Pageable pageable); } diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java index 42f2dce..2e4c942 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java @@ -38,6 +38,7 @@ public static PreferredPerson create(Long preferredPersonId, Long documentId, Pr } - - + public void like() { + this.preferenceStatus = PreferenceStatus.LIKE; + } } From 0bce32060edfdd1b783e69dfa57eed08ed460825 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 21:53:48 +0900 Subject: [PATCH 023/153] =?UTF-8?q?*=20service=20=EC=B8=B5=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=9D=91=EB=8B=B5=EC=9C=84=ED=95=B4=20=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=97=B4=EA=B1=B0=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferredperson/service/PreferenceResult.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java b/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java new file mode 100644 index 0000000..5cd1094 --- /dev/null +++ b/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java @@ -0,0 +1,7 @@ +package com.example.demo.preferredperson.service; + +public enum PreferenceResult { + NOT_MY_FRIEND, + MY_FEED_ERROR, + SUCCESS +} From 12d14312f697bc6a1ef548a6789a2e5c480bd9d9 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:01:49 +0900 Subject: [PATCH 024/153] =?UTF-8?q?*=20feed=20=EC=99=80=20=EB=8C=93?= =?UTF-8?q?=EA=B8=80=20=EC=A4=91=20=EC=96=B4=EB=94=94=EC=9D=98=20preferenc?= =?UTF-8?q?e=20=EC=9D=B8=EC=A7=80=20=EC=84=A4=EC=A0=95=ED=95=98=EB=8A=94?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/preferredperson/domain/PreferredPerson.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java index 2e4c942..b434a56 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java @@ -41,4 +41,8 @@ public static PreferredPerson create(Long preferredPersonId, Long documentId, Pr public void like() { this.preferenceStatus = PreferenceStatus.LIKE; } + + public void locate(PreferredPersonInfoLocation location) { + this.location = location; + } } From 353596d43119108f2b2fb4a01672a255384e73e6 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:12:11 +0900 Subject: [PATCH 025/153] =?UTF-8?q?*=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../preferredperson/controller/PreferredPersonController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java b/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java index 515f67a..982768c 100644 --- a/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java +++ b/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java @@ -17,6 +17,6 @@ public class PreferredPersonController { @PostMapping("/feeds/{feedId}/likes") public void likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { - preferredPersonService.likeFeedByFeedID(feedId); + preferredPersonService.likeFeedByFeedId(feedId); } } From d3407020184fc5b62adacf7291654db952c3b355 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:28:41 +0900 Subject: [PATCH 026/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EC=97=B4=EA=B1=B0=EC=83=81=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/preferredperson/service/PreferenceResult.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java b/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java index 5cd1094..a570225 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java @@ -1,6 +1,7 @@ package com.example.demo.preferredperson.service; public enum PreferenceResult { + FEED_NOT_FOUND, NOT_MY_FRIEND, MY_FEED_ERROR, SUCCESS From 3a715afa5920f488b5bfc754bc538e528afd549f Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:41:00 +0900 Subject: [PATCH 027/153] =?UTF-8?q?*=20Feed=20=EC=A2=8B=EC=95=84=EC=9A=94?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=A0=84=EC=B2=B4=EC=A0=81=EC=9D=B8=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferredPersonService.java | 49 ++++++++++++++++--- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index c22944b..13dcb11 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -3,7 +3,12 @@ import com.example.demo.feed.domain.Feed; import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.domain.WriterId; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.Identfication; +import com.example.demo.preferredperson.domain.PreferenceStatus; import com.example.demo.preferredperson.domain.PreferredPerson; +import com.example.demo.preferredperson.domain.PreferredPersonInfoLocation; import com.example.demo.preferredperson.domain.PreferredPersonRepository; import com.example.demo.user.domain.User; import com.example.demo.user.service.UserSessionService; @@ -20,26 +25,58 @@ public class PreferredPersonService { private final FeedRepository feedRepository; private final UserSessionService userSessionService; private final PreferredPersonRepository preferredPersonRepository; + private final FriendShipRepository friendShipRepository; @Transactional - public void likeFeedByFeedID(Long id) throws AccessDeniedException { + public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { User user = userSessionService.getLoginedUser(); - Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); + Feed feed; + + if ((feed=feedRepository.findFeedByIdAndDeleted(id, false))==null){ + return PreferenceResult.FEED_NOT_FOUND; + } + + if (friendShipRepository.findFriendshipByFriend_FriendIdAndUserInfo_UserId( + Identfication.create(user.getId()), Identfication.create(feed.getWriter().getId()))==null){ + return PreferenceResult.NOT_MY_FRIEND; + } + + if (feed.getWriter().getId().equals(user.getId())){ + return PreferenceResult.MY_FEED_ERROR; + } + if (preferredPersonRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ - PreferredPerson preferredPerson = PreferredPerson. + PreferredPerson preferredPerson = PreferredPerson.create(user.getId(), feed.getId(), PreferredPersonInfoLocation.FEED); + preferredPerson.locate(PreferredPersonInfoLocation.FEED); + preferredPerson.like(); + preferredPersonRepository.save(preferredPerson); - }else { - PreferredPerson preferredPerson + feed.like(); + + return PreferenceResult.SUCCESS; + + } + + PreferredPerson preferredPerson = preferredPersonRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId()); + if (preferredPerson.findState()==PreferenceStatus.LIKE){ + preferredPerson.disLike(); + feed.disLike(); + return PreferenceResult.SUCCESS; + } + if (preferredPerson.findState()==PreferenceStatus.INDIFFERENCE){ + preferredPerson.like(); + feed.like(); } + return PreferenceResult.SUCCESS; + - feed.like(); } From aad10a959974cea22d099992a4a22b206e9d2b67 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:43:07 +0900 Subject: [PATCH 028/153] =?UTF-8?q?*=20=EC=84=A0=ED=98=B8=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B0=98=ED=99=98=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/preferredperson/domain/PreferredPerson.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java index b434a56..7af4975 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java @@ -45,4 +45,8 @@ public void like() { public void locate(PreferredPersonInfoLocation location) { this.location = location; } + + public PreferenceStatus findState() { + return this.preferenceStatus; + } } From 0e64ce9a521775e5d241ff67a3e920a2815d644f Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:50:44 +0900 Subject: [PATCH 029/153] =?UTF-8?q?*=20=EC=84=A0=ED=98=B8=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B3=80=EA=B2=BD=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/preferredperson/domain/PreferredPerson.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java index 7af4975..7070b4e 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java @@ -49,4 +49,8 @@ public void locate(PreferredPersonInfoLocation location) { public PreferenceStatus findState() { return this.preferenceStatus; } + + public void disLike() { + this.preferenceStatus = PreferenceStatus.INDIFFERENCE; + } } From 2c962e1c2e30e109c3ec532931b86217f28e1226 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:53:18 +0900 Subject: [PATCH 030/153] =?UTF-8?q?*=20=EC=A2=8B=EC=95=84=EC=9A=94=20?= =?UTF-8?q?=EC=88=98=20=EB=B3=80=EA=B2=BD=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=20->=20=EC=83=88=20=EA=B0=9D=EC=B2=B4=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/feed/domain/Feed.java | 4 ++++ src/main/java/com/example/demo/feed/domain/Preference.java | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index e30260a..0e89fa6 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -71,4 +71,8 @@ public void enrollComment(Comment comment) { public Comment getComment(int commentId) { return comments.get(commentId); } + + public void disLike() { + this.preferenceInfo = Preference.create(this.preferenceInfo.getPreference()-1L); + } } diff --git a/src/main/java/com/example/demo/feed/domain/Preference.java b/src/main/java/com/example/demo/feed/domain/Preference.java index 833f235..0d5df62 100644 --- a/src/main/java/com/example/demo/feed/domain/Preference.java +++ b/src/main/java/com/example/demo/feed/domain/Preference.java @@ -28,9 +28,15 @@ public Preference like(){ } + + public static Preference create(){ return new Preference(); } + public static Preference create(long preference){ + return new Preference(); + } + } From 34da7f5bdad33a5d4bc6bcd5c4a4bc77548b7f4f Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 23:17:55 +0900 Subject: [PATCH 031/153] =?UTF-8?q?*=20PreferredPersonController=20Feed=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PreferredPersonController.java | 18 +++++++++++++++++- .../service/PreferredPersonService.java | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java b/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java index 982768c..7467ee4 100644 --- a/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java +++ b/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java @@ -1,7 +1,10 @@ package com.example.demo.preferredperson.controller; +import com.example.demo.preferredperson.service.PreferenceResult; import com.example.demo.preferredperson.service.PreferredPersonService; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,6 +20,19 @@ public class PreferredPersonController { @PostMapping("/feeds/{feedId}/likes") public void likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { - preferredPersonService.likeFeedByFeedId(feedId); + PreferenceResult result = preferredPersonService.likeFeedByFeedId(feedId); + + switch (result){ + case SUCCESS: + ResponseEntity.ok(); + break; + case MY_FEED_ERROR: + case FEED_NOT_FOUND: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + break; + case NOT_MY_FRIEND: + ResponseEntity.status(HttpStatus.UNAUTHORIZED); + } + } } diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index 13dcb11..2f21739 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -80,4 +80,5 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { } + } From 6a60e68a827dd615e5aed3646a5cb047a12c1968 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 11 Apr 2021 23:26:10 +0900 Subject: [PATCH 032/153] =?UTF-8?q?*=20PreferredPersonController=20Feed=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferredperson/service/PreferredPersonService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index 2f21739..daf2482 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -76,7 +76,6 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { } return PreferenceResult.SUCCESS; - } From 90a1973df70fed8e1db801c52d2912ecfa69bbb4 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 00:18:40 +0900 Subject: [PATCH 033/153] =?UTF-8?q?*=20PreferredPersonService=20=EB=8C=93?= =?UTF-8?q?=EA=B8=80=20=EB=B6=80=EB=B6=84=20=EA=B5=AC=ED=98=84=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=20&=20=EC=A4=91=EC=B2=A9=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferredPersonService.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index daf2482..5f0a802 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -3,7 +3,6 @@ import com.example.demo.feed.domain.Feed; import com.example.demo.feed.domain.FeedRepository; -import com.example.demo.feed.domain.WriterId; import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.friend.domain.Identfication; import com.example.demo.preferredperson.domain.PreferenceStatus; @@ -30,7 +29,7 @@ public class PreferredPersonService { @Transactional public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { - User user = userSessionService.getLoginedUser(); + User user = getLoggedUser(); Feed feed; if ((feed=feedRepository.findFeedByIdAndDeleted(id, false))==null){ @@ -78,6 +77,25 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { } + @Transactional + public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws AccessDeniedException { + User user = getLoggedUser(); + Feed feed; + + if ((feed=feedRepository.findFeedByIdAndDeleted(feedId, false))==null){ + return PreferenceResult.FEED_NOT_FOUND; + } + + if (friendShipRepository.findFriendshipByFriend_FriendIdAndUserInfo_UserId( + Identfication.create(user.getId()), Identfication.create(feed.getWriter().getId()))==null){ + return PreferenceResult.NOT_MY_FRIEND; + } + + } + + private User getLoggedUser() throws AccessDeniedException { + return userSessionService.getLoggeddUser(); + } } From 44549588e0667231e35b3330b7317250e7b31fd0 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 00:19:08 +0900 Subject: [PATCH 034/153] =?UTF-8?q?*=20=EB=8B=A8=EC=96=B4=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EB=B3=80=EA=B2=BD=20[Logined=20->=20logged]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/service/FeedService.java | 2 +- .../demo/friend/service/FriendShipService.java | 12 ++++-------- .../demo/timeline/service/TimeLineService.java | 2 +- .../demo/user/service/UserSessionService.java | 2 +- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 57c8bb8..c80552c 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -32,7 +32,7 @@ public Feed findFeedDetailByFeedId(Long id) { public void makeFeedByContents(String InsertedContent) throws AccessDeniedException { - User user = userSessionService.getLoginedUser(); + User user = userSessionService.getLoggeddUser(); WriterId id = WriterId.create(user.getId()); WriterName wrtName = WriterName.create(user.getUserBasicInfo().getUsername()); diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 40d751d..51eecce 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -3,13 +3,9 @@ import com.example.demo.friend.domain.*; import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; -import com.example.demo.user.domain.Username; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.domain.PageRequest; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import javax.transaction.Transactional; @@ -29,7 +25,7 @@ public class FriendShipService { @Transactional public List getMyFriends(int page, int size) throws AccessDeniedException { - User user = userSessionService.getLoginedUser(); + User user = userSessionService.getLoggeddUser(); Identfication userId = Identfication.create(user.getId()); UserInfo userInfo = createUserInfo(user, userId); @@ -51,7 +47,7 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep @Transactional public FriendShipResult create(Long inputedFriendId) throws AccessDeniedException { - User user = userSessionService.getLoginedUser(); + User user = userSessionService.getLoggeddUser(); Identfication myId = Identfication.create(user.getId()); UserInfo myInfo = createUserInfo(user, myId); @@ -106,7 +102,7 @@ private Friendship createFriendship(UserInfo user, UserInfo friendUserInfo) { public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDeniedException { - User user = userSessionService.getLoginedUser(); + User user = userSessionService.getLoggeddUser(); Identfication myId = Identfication.create(user.getId()); UserInfo myInfo = createUserInfo(user, myId); @@ -135,7 +131,7 @@ private UserInfo createUserInfo(User user, Identfication id) { public ListfindRequestForMe(int page, int size) throws AccessDeniedException { - User user = userSessionService.getLoginedUser(); + User user = userSessionService.getLoggeddUser(); Identfication myId = Identfication.create(user.getId()); List friendshipList = friendShipRepository.findAllByFriend_FriendId(myId, PageRequest.of(page, size)) diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 31e7a66..7495782 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -26,7 +26,7 @@ public class TimeLineService { public List findMyTimeLine(int page, int pageSize) throws AccessDeniedException { - User user = userSessionService.getLoginedUser(); + User user = userSessionService.getLoggeddUser(); UserInfo userInfo = createUserInfo(user); List writerList = diff --git a/src/main/java/com/example/demo/user/service/UserSessionService.java b/src/main/java/com/example/demo/user/service/UserSessionService.java index e5ebf83..42c0a5c 100644 --- a/src/main/java/com/example/demo/user/service/UserSessionService.java +++ b/src/main/java/com/example/demo/user/service/UserSessionService.java @@ -17,7 +17,7 @@ public class UserSessionService { private final UserRepository userRepository; - public User getLoginedUser() throws AccessDeniedException { + public User getLoggeddUser() throws AccessDeniedException { SecurityUser securityUser = UserSessionUtils.getSessionUser(); Long userId = securityUser.getId(); From b2f4adf0beda981d5bed8284ba6f1d6da2db3512 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 00:27:45 +0900 Subject: [PATCH 035/153] =?UTF-8?q?*=20=ED=95=B4=EB=8B=B9=20feed=20?= =?UTF-8?q?=EC=97=90=EC=84=9C=20comment=20=EC=B0=BE=EB=8A=94=20=EC=B1=85?= =?UTF-8?q?=EC=9E=84=EC=9D=84=20=20=20CommentService=20=EC=97=90=20?= =?UTF-8?q?=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/feed/service/CommentService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/example/demo/feed/service/CommentService.java b/src/main/java/com/example/demo/feed/service/CommentService.java index ffb18c7..829e18a 100644 --- a/src/main/java/com/example/demo/feed/service/CommentService.java +++ b/src/main/java/com/example/demo/feed/service/CommentService.java @@ -9,6 +9,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @RequiredArgsConstructor @@ -39,6 +41,17 @@ public void makeCommentByFeedIdAndContents(Long feedId, String insertedContent) feed.enrollComment(comment); } + public Comment findCommentById(List commentList, Long commentId){ + Comment result = null; + for (Comment comment : commentList){ + if (comment.getId().equals(commentId)){ + return comment; + + } + } + return result; + } + // @Transactional // public String likeOrDislikeCommentByFeedIdAndCommentId(Long feedId, int commentId) { // Username username = Username.create("jihwan"); From bd98896cdcf1558620f427d11abb32917011dc66 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 00:28:56 +0900 Subject: [PATCH 036/153] =?UTF-8?q?*=20UserSessionService=20=EC=9D=B4?= =?UTF-8?q?=EC=9A=A9=ED=95=B4=EC=84=9C=20=EC=9C=A0=EC=A0=80=20=EC=B0=BE?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/CommentController.java | 4 +++- .../com/example/demo/feed/service/CommentService.java | 10 +++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/feed/controller/CommentController.java b/src/main/java/com/example/demo/feed/controller/CommentController.java index d05d741..8091df2 100644 --- a/src/main/java/com/example/demo/feed/controller/CommentController.java +++ b/src/main/java/com/example/demo/feed/controller/CommentController.java @@ -5,6 +5,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.nio.file.AccessDeniedException; + @RestController @RequiredArgsConstructor public class CommentController { @@ -14,7 +16,7 @@ public class CommentController { @PostMapping("/feed/{feedId}/comments") public void makeComment(@PathVariable Long feedId, - @RequestBody String contents){ + @RequestBody String contents) throws AccessDeniedException { commentService.makeCommentByFeedIdAndContents(feedId, contents); } diff --git a/src/main/java/com/example/demo/feed/service/CommentService.java b/src/main/java/com/example/demo/feed/service/CommentService.java index 829e18a..041ed13 100644 --- a/src/main/java/com/example/demo/feed/service/CommentService.java +++ b/src/main/java/com/example/demo/feed/service/CommentService.java @@ -5,10 +5,12 @@ import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; +import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.nio.file.AccessDeniedException; import java.util.List; @@ -19,16 +21,14 @@ public class CommentService { private final FeedRepository feedRepository; private final UserRepository userRepository; + private final UserSessionService userSessionService; @Transactional - public void makeCommentByFeedIdAndContents(Long feedId, String insertedContent) { + public void makeCommentByFeedIdAndContents(Long feedId, String insertedContent) throws AccessDeniedException { // Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Feed feed = feedRepository.findFeedByIdAndDeleted(feedId, false); // Username username = Username.create(authentication.getName()); - Username username = Username.create("jihwan"); - - - User user = userRepository.findByUserBasicInfo_Username(username); + User user = userSessionService.getLoggeddUser(); Content content = Content.create(insertedContent); From 70fb2283a78eeb27af814cf8cabff70e65ff425a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 00:30:16 +0900 Subject: [PATCH 037/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EC=97=B4=EA=B1=B0=EC=83=81=EC=88=98=20=EC=B6=94=EA=B0=80[COMME?= =?UTF-8?q?NT=5FNOT=5FFOUND]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/preferredperson/service/PreferenceResult.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java b/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java index a570225..45396f7 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java @@ -2,6 +2,7 @@ public enum PreferenceResult { FEED_NOT_FOUND, + COMMENT_NOT_FOUND, NOT_MY_FRIEND, MY_FEED_ERROR, SUCCESS From 61e69e6c40193c6d6ad45968b3cfe904f16b0a9e Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 00:31:30 +0900 Subject: [PATCH 038/153] =?UTF-8?q?*=20=EB=8C=93=EA=B8=80=20=EC=A2=8B?= =?UTF-8?q?=EC=95=84=EC=9A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EC=A4=91=20=201)=20=ED=94=BC=EB=93=9C=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=202)=20=EA=B8=80=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=9E=90=EA=B0=80=20=EC=B9=9C=EA=B5=AC=EA=B0=80=20=EC=95=84?= =?UTF-8?q?=EB=8B=90=20=EA=B2=BD=EC=9A=B0=20=20=EA=B5=AC=ED=98=84=20,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferredPersonService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index 5f0a802..1ee9f58 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -1,8 +1,10 @@ package com.example.demo.preferredperson.service; +import com.example.demo.feed.domain.Comment; import com.example.demo.feed.domain.Feed; import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.service.CommentService; import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.friend.domain.Identfication; import com.example.demo.preferredperson.domain.PreferenceStatus; @@ -16,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import java.nio.file.AccessDeniedException; +import java.util.List; @Service @RequiredArgsConstructor @@ -25,6 +28,7 @@ public class PreferredPersonService { private final UserSessionService userSessionService; private final PreferredPersonRepository preferredPersonRepository; private final FriendShipRepository friendShipRepository; + private final CommentService commentService; @Transactional @@ -91,6 +95,10 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen return PreferenceResult.NOT_MY_FRIEND; } + if(commentService.findCommentById(feed.getComments(), commentId)==null){ + return PreferenceResult. + } + } private User getLoggedUser() throws AccessDeniedException { @@ -98,4 +106,6 @@ private User getLoggedUser() throws AccessDeniedException { } + + } From 57c48b1833c09a3f67280b96fa9ce03dfedba6d5 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 00:33:23 +0900 Subject: [PATCH 039/153] =?UTF-8?q?*=20=EB=8C=93=EA=B8=80=20=EC=A2=8B?= =?UTF-8?q?=EC=95=84=EC=9A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EC=A4=91=20[=EB=8C=93=EA=B8=80=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0]=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferredperson/service/PreferredPersonService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index 1ee9f58..aa4bff4 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -96,7 +96,7 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen } if(commentService.findCommentById(feed.getComments(), commentId)==null){ - return PreferenceResult. + return PreferenceResult.COMMENT_NOT_FOUND; } } From e5656c055da8715ec3177b00794e08d49a5160e3 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 18:19:17 +0900 Subject: [PATCH 040/153] =?UTF-8?q?*=20comment=20=EB=82=B4=20=EB=8F=85?= =?UTF-8?q?=EB=A6=BD=EC=84=B1=20=ED=95=B4=EC=B9=98=EB=8A=94=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20=20=20=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EC=9D=B4=EB=A6=84=20=EC=9D=98=EB=AF=B8=20?= =?UTF-8?q?=EB=AA=85=ED=99=95=ED=95=98=EA=B2=8C=20=EB=B3=80=EA=B2=BD=20=20?= =?UTF-8?q?=20[PreferredPerson->=20PreferenceInfo]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Comment.java | 6 +---- ...eferredPerson.java => PreferenceInfo.java} | 8 +++---- .../domain/PreferredPersonRepository.java | 4 ++-- .../service/PreferredPersonService.java | 24 +++++++++---------- 4 files changed, 19 insertions(+), 23 deletions(-) rename src/main/java/com/example/demo/preferredperson/domain/{PreferredPerson.java => PreferenceInfo.java} (75%) diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index 7cb1058..8df685e 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -1,7 +1,7 @@ package com.example.demo.feed.domain; -import com.example.demo.preferredperson.domain.PreferredPerson; +import com.example.demo.preferredperson.domain.PreferenceInfo; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AccessLevel; import lombok.Getter; @@ -28,8 +28,6 @@ public class Comment { @JsonIgnoreProperties("feed") private Feed feed; - @OneToMany - private List preferredPeople; @Embedded private Writer writer; @@ -61,9 +59,7 @@ public static Comment create(Writer writer, Content content) { return new Comment(writer, content); } - public void likeOrDislike() { - } // public boolean checkPossibleOfLike(User user) { // String writerId = this.getWriter().getWrtName(); diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java b/src/main/java/com/example/demo/preferredperson/domain/PreferenceInfo.java similarity index 75% rename from src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java rename to src/main/java/com/example/demo/preferredperson/domain/PreferenceInfo.java index 7070b4e..a1365a2 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPerson.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferenceInfo.java @@ -12,7 +12,7 @@ @Setter(AccessLevel.PACKAGE) @Entity @NoArgsConstructor -public class PreferredPerson { +public class PreferenceInfo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -26,15 +26,15 @@ public class PreferredPerson { private PreferenceStatus preferenceStatus; - private PreferredPerson(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ + private PreferenceInfo(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ this.preferredPersonId = preferredPersonId; this.documentId = documentId; this.location = location; this.preferenceStatus = PreferenceStatus.DISLIKE; } - public static PreferredPerson create(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ - return new PreferredPerson(preferredPersonId, documentId, location ); + public static PreferenceInfo create(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ + return new PreferenceInfo(preferredPersonId, documentId, location ); } diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java index a098e18..aaee735 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java +++ b/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java @@ -2,7 +2,7 @@ import org.springframework.data.jpa.repository.JpaRepository; -public interface PreferredPersonRepository extends JpaRepository { +public interface PreferredPersonRepository extends JpaRepository { - PreferredPerson findByDocumentIdAndPreferredPersonId(Long documentId, Long PreferredPersonId); + PreferenceInfo findByDocumentIdAndPreferredPersonId(Long documentId, Long PreferredPersonId); } diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java index aa4bff4..fded791 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java @@ -8,7 +8,7 @@ import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.friend.domain.Identfication; import com.example.demo.preferredperson.domain.PreferenceStatus; -import com.example.demo.preferredperson.domain.PreferredPerson; +import com.example.demo.preferredperson.domain.PreferenceInfo; import com.example.demo.preferredperson.domain.PreferredPersonInfoLocation; import com.example.demo.preferredperson.domain.PreferredPersonRepository; import com.example.demo.user.domain.User; @@ -18,7 +18,6 @@ import org.springframework.transaction.annotation.Transactional; import java.nio.file.AccessDeniedException; -import java.util.List; @Service @RequiredArgsConstructor @@ -51,10 +50,10 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { if (preferredPersonRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ - PreferredPerson preferredPerson = PreferredPerson.create(user.getId(), feed.getId(), PreferredPersonInfoLocation.FEED); - preferredPerson.locate(PreferredPersonInfoLocation.FEED); - preferredPerson.like(); - preferredPersonRepository.save(preferredPerson); + PreferenceInfo preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferredPersonInfoLocation.FEED); + preferenceInfo.locate(PreferredPersonInfoLocation.FEED); + preferenceInfo.like(); + preferredPersonRepository.save(preferenceInfo); feed.like(); @@ -62,19 +61,19 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { } - PreferredPerson preferredPerson + PreferenceInfo preferenceInfo = preferredPersonRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId()); - if (preferredPerson.findState()==PreferenceStatus.LIKE){ - preferredPerson.disLike(); + if (preferenceInfo.findState()==PreferenceStatus.LIKE){ + preferenceInfo.disLike(); feed.disLike(); return PreferenceResult.SUCCESS; } - if (preferredPerson.findState()==PreferenceStatus.INDIFFERENCE){ - preferredPerson.like(); + if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ + preferenceInfo.like(); feed.like(); } return PreferenceResult.SUCCESS; @@ -85,6 +84,7 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws AccessDeniedException { User user = getLoggedUser(); Feed feed; + Comment comment; if ((feed=feedRepository.findFeedByIdAndDeleted(feedId, false))==null){ return PreferenceResult.FEED_NOT_FOUND; @@ -95,7 +95,7 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen return PreferenceResult.NOT_MY_FRIEND; } - if(commentService.findCommentById(feed.getComments(), commentId)==null){ + if((comment = commentService.findCommentById(feed.getComments(), commentId))==null){ return PreferenceResult.COMMENT_NOT_FOUND; } From fb068a2071bc1b5d48dda6a5a22d9c6fd5e2f03b Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 18:24:39 +0900 Subject: [PATCH 041/153] =?UTF-8?q?*=20=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9D=98=EB=AF=B8=20=EB=AA=85=ED=99=95?= =?UTF-8?q?=ED=95=98=EA=B2=8C=20=EB=B3=80=EA=B2=BD=20=20=20[PreferredPerso?= =?UTF-8?q?n->=20PreferenceInfo]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Comment.java | 2 -- .../controller/PreferenceInfoController.java} | 12 +++++----- .../domain/PreferenceDocument.java | 6 +++++ .../domain/PreferenceInfo.java | 10 ++++---- .../domain/PreferenceInfoRepository.java} | 4 ++-- .../domain/PreferenceStatus.java | 2 +- .../service/PreferenceInfoService.java} | 24 +++++++++---------- .../service/PreferenceResult.java | 2 +- .../domain/PreferredPersonInfoLocation.java | 6 ----- 9 files changed, 33 insertions(+), 35 deletions(-) rename src/main/java/com/example/demo/{preferredperson/controller/PreferredPersonController.java => preferenceinfo/controller/PreferenceInfoController.java} (70%) create mode 100644 src/main/java/com/example/demo/preferenceinfo/domain/PreferenceDocument.java rename src/main/java/com/example/demo/{preferredperson => preferenceinfo}/domain/PreferenceInfo.java (81%) rename src/main/java/com/example/demo/{preferredperson/domain/PreferredPersonRepository.java => preferenceinfo/domain/PreferenceInfoRepository.java} (54%) rename src/main/java/com/example/demo/{preferredperson => preferenceinfo}/domain/PreferenceStatus.java (60%) rename src/main/java/com/example/demo/{preferredperson/service/PreferredPersonService.java => preferenceinfo/service/PreferenceInfoService.java} (81%) rename src/main/java/com/example/demo/{preferredperson => preferenceinfo}/service/PreferenceResult.java (71%) delete mode 100644 src/main/java/com/example/demo/preferredperson/domain/PreferredPersonInfoLocation.java diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index 8df685e..621a093 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -1,7 +1,6 @@ package com.example.demo.feed.domain; -import com.example.demo.preferredperson.domain.PreferenceInfo; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AccessLevel; import lombok.Getter; @@ -10,7 +9,6 @@ import javax.persistence.*; import java.time.Instant; -import java.util.List; @Entity @Table(name = "comment") diff --git a/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java similarity index 70% rename from src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java rename to src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java index 7467ee4..033f93f 100644 --- a/src/main/java/com/example/demo/preferredperson/controller/PreferredPersonController.java +++ b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java @@ -1,7 +1,7 @@ -package com.example.demo.preferredperson.controller; +package com.example.demo.preferenceinfo.controller; -import com.example.demo.preferredperson.service.PreferenceResult; -import com.example.demo.preferredperson.service.PreferredPersonService; +import com.example.demo.preferenceinfo.service.PreferenceResult; +import com.example.demo.preferenceinfo.service.PreferenceInfoService; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -14,13 +14,13 @@ @RestController @RequiredArgsConstructor -public class PreferredPersonController { +public class PreferenceInfoController { - private final PreferredPersonService preferredPersonService; + private final PreferenceInfoService preferenceInfoService; @PostMapping("/feeds/{feedId}/likes") public void likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { - PreferenceResult result = preferredPersonService.likeFeedByFeedId(feedId); + PreferenceResult result = preferenceInfoService.likeFeedByFeedId(feedId); switch (result){ case SUCCESS: diff --git a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceDocument.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceDocument.java new file mode 100644 index 0000000..ce84594 --- /dev/null +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceDocument.java @@ -0,0 +1,6 @@ +package com.example.demo.preferenceinfo.domain; + +public enum PreferenceDocument { + FEED, + COMMENT +} diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferenceInfo.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java similarity index 81% rename from src/main/java/com/example/demo/preferredperson/domain/PreferenceInfo.java rename to src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java index a1365a2..46cfcc4 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferenceInfo.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java @@ -1,4 +1,4 @@ -package com.example.demo.preferredperson.domain; +package com.example.demo.preferenceinfo.domain; import lombok.AccessLevel; @@ -20,20 +20,20 @@ public class PreferenceInfo { private Long preferredPersonId; - private PreferredPersonInfoLocation location; + private PreferenceDocument location; private Long documentId; private PreferenceStatus preferenceStatus; - private PreferenceInfo(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ + private PreferenceInfo(Long preferredPersonId, Long documentId, PreferenceDocument location ){ this.preferredPersonId = preferredPersonId; this.documentId = documentId; this.location = location; this.preferenceStatus = PreferenceStatus.DISLIKE; } - public static PreferenceInfo create(Long preferredPersonId, Long documentId, PreferredPersonInfoLocation location ){ + public static PreferenceInfo create(Long preferredPersonId, Long documentId, PreferenceDocument location ){ return new PreferenceInfo(preferredPersonId, documentId, location ); } @@ -42,7 +42,7 @@ public void like() { this.preferenceStatus = PreferenceStatus.LIKE; } - public void locate(PreferredPersonInfoLocation location) { + public void locate(PreferenceDocument location) { this.location = location; } diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfoRepository.java similarity index 54% rename from src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java rename to src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfoRepository.java index aaee735..be42764 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonRepository.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfoRepository.java @@ -1,8 +1,8 @@ -package com.example.demo.preferredperson.domain; +package com.example.demo.preferenceinfo.domain; import org.springframework.data.jpa.repository.JpaRepository; -public interface PreferredPersonRepository extends JpaRepository { +public interface PreferenceInfoRepository extends JpaRepository { PreferenceInfo findByDocumentIdAndPreferredPersonId(Long documentId, Long PreferredPersonId); } diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceStatus.java similarity index 60% rename from src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java rename to src/main/java/com/example/demo/preferenceinfo/domain/PreferenceStatus.java index 4d0492d..ea7f3d1 100644 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferenceStatus.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceStatus.java @@ -1,4 +1,4 @@ -package com.example.demo.preferredperson.domain; +package com.example.demo.preferenceinfo.domain; public enum PreferenceStatus { LIKE, diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java similarity index 81% rename from src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java rename to src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index fded791..26ce279 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferredPersonService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -1,4 +1,4 @@ -package com.example.demo.preferredperson.service; +package com.example.demo.preferenceinfo.service; import com.example.demo.feed.domain.Comment; @@ -7,10 +7,10 @@ import com.example.demo.feed.service.CommentService; import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.friend.domain.Identfication; -import com.example.demo.preferredperson.domain.PreferenceStatus; -import com.example.demo.preferredperson.domain.PreferenceInfo; -import com.example.demo.preferredperson.domain.PreferredPersonInfoLocation; -import com.example.demo.preferredperson.domain.PreferredPersonRepository; +import com.example.demo.preferenceinfo.domain.PreferenceStatus; +import com.example.demo.preferenceinfo.domain.PreferenceInfo; +import com.example.demo.preferenceinfo.domain.PreferenceDocument; +import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; import com.example.demo.user.domain.User; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; @@ -21,11 +21,11 @@ @Service @RequiredArgsConstructor -public class PreferredPersonService { +public class PreferenceInfoService { private final FeedRepository feedRepository; private final UserSessionService userSessionService; - private final PreferredPersonRepository preferredPersonRepository; + private final PreferenceInfoRepository preferenceInfoRepository; private final FriendShipRepository friendShipRepository; private final CommentService commentService; @@ -48,12 +48,12 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { return PreferenceResult.MY_FEED_ERROR; } - if (preferredPersonRepository + if (preferenceInfoRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ - PreferenceInfo preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferredPersonInfoLocation.FEED); - preferenceInfo.locate(PreferredPersonInfoLocation.FEED); + PreferenceInfo preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferenceDocument.FEED); + preferenceInfo.locate(PreferenceDocument.FEED); preferenceInfo.like(); - preferredPersonRepository.save(preferenceInfo); + preferenceInfoRepository.save(preferenceInfo); feed.like(); @@ -62,7 +62,7 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { } PreferenceInfo preferenceInfo - = preferredPersonRepository + = preferenceInfoRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId()); if (preferenceInfo.findState()==PreferenceStatus.LIKE){ diff --git a/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceResult.java similarity index 71% rename from src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java rename to src/main/java/com/example/demo/preferenceinfo/service/PreferenceResult.java index 45396f7..5607679 100644 --- a/src/main/java/com/example/demo/preferredperson/service/PreferenceResult.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceResult.java @@ -1,4 +1,4 @@ -package com.example.demo.preferredperson.service; +package com.example.demo.preferenceinfo.service; public enum PreferenceResult { FEED_NOT_FOUND, diff --git a/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonInfoLocation.java b/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonInfoLocation.java deleted file mode 100644 index 5d57a2b..0000000 --- a/src/main/java/com/example/demo/preferredperson/domain/PreferredPersonInfoLocation.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.demo.preferredperson.domain; - -public enum PreferredPersonInfoLocation { - FEED, - COMMENT -} From 9ff223d2e5a9941d7d987d618d1f5e2b607e48cc Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 18:25:47 +0900 Subject: [PATCH 042/153] =?UTF-8?q?*=20=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9D=98=EB=AF=B8=20=EB=AA=85=ED=99=95?= =?UTF-8?q?=ED=95=98=EA=B2=8C=20=EB=B3=80=EA=B2=BD=20=20=20[PreferenceDocu?= =?UTF-8?q?ment=20->PreferenceLocation]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferenceinfo/domain/PreferenceInfo.java | 8 ++++---- .../{PreferenceDocument.java => PreferenceLocation.java} | 2 +- .../preferenceinfo/service/PreferenceInfoService.java | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) rename src/main/java/com/example/demo/preferenceinfo/domain/{PreferenceDocument.java => PreferenceLocation.java} (68%) diff --git a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java index 46cfcc4..d41a04e 100644 --- a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java @@ -20,20 +20,20 @@ public class PreferenceInfo { private Long preferredPersonId; - private PreferenceDocument location; + private PreferenceLocation location; private Long documentId; private PreferenceStatus preferenceStatus; - private PreferenceInfo(Long preferredPersonId, Long documentId, PreferenceDocument location ){ + private PreferenceInfo(Long preferredPersonId, Long documentId, PreferenceLocation location ){ this.preferredPersonId = preferredPersonId; this.documentId = documentId; this.location = location; this.preferenceStatus = PreferenceStatus.DISLIKE; } - public static PreferenceInfo create(Long preferredPersonId, Long documentId, PreferenceDocument location ){ + public static PreferenceInfo create(Long preferredPersonId, Long documentId, PreferenceLocation location ){ return new PreferenceInfo(preferredPersonId, documentId, location ); } @@ -42,7 +42,7 @@ public void like() { this.preferenceStatus = PreferenceStatus.LIKE; } - public void locate(PreferenceDocument location) { + public void locate(PreferenceLocation location) { this.location = location; } diff --git a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceDocument.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceLocation.java similarity index 68% rename from src/main/java/com/example/demo/preferenceinfo/domain/PreferenceDocument.java rename to src/main/java/com/example/demo/preferenceinfo/domain/PreferenceLocation.java index ce84594..4794b7a 100644 --- a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceDocument.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceLocation.java @@ -1,6 +1,6 @@ package com.example.demo.preferenceinfo.domain; -public enum PreferenceDocument { +public enum PreferenceLocation { FEED, COMMENT } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 26ce279..7e93fb8 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -9,7 +9,7 @@ import com.example.demo.friend.domain.Identfication; import com.example.demo.preferenceinfo.domain.PreferenceStatus; import com.example.demo.preferenceinfo.domain.PreferenceInfo; -import com.example.demo.preferenceinfo.domain.PreferenceDocument; +import com.example.demo.preferenceinfo.domain.PreferenceLocation; import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; import com.example.demo.user.domain.User; import com.example.demo.user.service.UserSessionService; @@ -50,8 +50,8 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { if (preferenceInfoRepository .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ - PreferenceInfo preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferenceDocument.FEED); - preferenceInfo.locate(PreferenceDocument.FEED); + PreferenceInfo preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferenceLocation.FEED); + preferenceInfo.locate(PreferenceLocation.FEED); preferenceInfo.like(); preferenceInfoRepository.save(preferenceInfo); From 238fbf821ebf37555e6743544a4531a4808af668 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 18:28:25 +0900 Subject: [PATCH 043/153] =?UTF-8?q?*=20=20[=EC=A2=8B=EC=95=84=EC=9A=94=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90]=EC=9D=98=20=EC=9D=98=EB=AF=B8=EA=B0=80=20?= =?UTF-8?q?=EB=AA=85=ED=99=95=ED=95=98=EA=B2=8C=20=EC=A0=84=EB=8B=AC?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20=20=20[Prefe?= =?UTF-8?q?rence->PreferenceCount]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Comment.java | 4 ++-- .../java/com/example/demo/feed/domain/Feed.java | 8 ++++---- .../{Preference.java => PreferenceCount.java} | 16 ++++++++-------- .../service/PreferenceInfoService.java | 2 ++ .../demo/timeline/service/TimeLineService.java | 4 ++-- 5 files changed, 18 insertions(+), 16 deletions(-) rename src/main/java/com/example/demo/feed/domain/{Preference.java => PreferenceCount.java} (56%) diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index 621a093..6e23b76 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -36,14 +36,14 @@ public class Comment { private Content content; @Embedded - private Preference preferenceInfo; + private PreferenceCount preferenceCountInfo; private boolean deleted; public Comment(Writer writer, Content content){ this.writer = writer; this.content = content; - this.preferenceInfo = Preference.create(); + this.preferenceCountInfo = PreferenceCount.create(); this.wrtTime = Instant.now(); this.deleted = false; } diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index 0e89fa6..29e8410 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -29,7 +29,7 @@ public class Feed { private Content content; @Column(name = "preference") - private Preference preferenceInfo; + private PreferenceCount preferenceCountInfo; @Column(name = "wrt_time") private Instant wrtTime; @@ -45,7 +45,7 @@ private Feed(Writer writer, Content content){ this.writer = writer; this.content = content; this.wrtTime = Instant.now(); - this.preferenceInfo = Preference.create(); + this.preferenceCountInfo = PreferenceCount.create(); this.deleted = false; } @@ -59,7 +59,7 @@ public static Feed create(Writer writer, Content content) { } public void like(){ - this.preferenceInfo = this.preferenceInfo.like(); + this.preferenceCountInfo = this.preferenceCountInfo.like(); } public void enrollComment(Comment comment) { @@ -73,6 +73,6 @@ public Comment getComment(int commentId) { } public void disLike() { - this.preferenceInfo = Preference.create(this.preferenceInfo.getPreference()-1L); + this.preferenceCountInfo = PreferenceCount.create(this.preferenceCountInfo.getPreference()-1L); } } diff --git a/src/main/java/com/example/demo/feed/domain/Preference.java b/src/main/java/com/example/demo/feed/domain/PreferenceCount.java similarity index 56% rename from src/main/java/com/example/demo/feed/domain/Preference.java rename to src/main/java/com/example/demo/feed/domain/PreferenceCount.java index 0d5df62..437af28 100644 --- a/src/main/java/com/example/demo/feed/domain/Preference.java +++ b/src/main/java/com/example/demo/feed/domain/PreferenceCount.java @@ -13,29 +13,29 @@ @Setter(AccessLevel.PACKAGE) @Embeddable @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class Preference { +public class PreferenceCount { @Column(name = "preference") private long preference = 0L; - private Preference(long like){ + private PreferenceCount(long like){ this.preference = like; } - public Preference like(){ - return new Preference(this.preference +1L); + public PreferenceCount like(){ + return new PreferenceCount(this.preference +1L); } - public static Preference create(){ - return new Preference(); + public static PreferenceCount create(){ + return new PreferenceCount(); } - public static Preference create(long preference){ - return new Preference(); + public static PreferenceCount create(long preference){ + return new PreferenceCount(); } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 7e93fb8..f82bc79 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -99,6 +99,8 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen return PreferenceResult.COMMENT_NOT_FOUND; } + + } private User getLoggedUser() throws AccessDeniedException { diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 7495782..49b5a67 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -51,7 +51,7 @@ public FeedDto toFeedDto(Feed feed){ ,feed.getWriter().getName() ,feed.getContent().getContent() ,feed.getComments().stream().map(this::toCommentDto).collect(Collectors.toList()) - ,feed.getPreferenceInfo().getPreference() + ,feed.getPreferenceCountInfo().getPreference() ,feed.getWrtTime() ); } @@ -62,7 +62,7 @@ public CommentDto toCommentDto(Comment comment){ ,comment.getWriter().getId() ,comment.getWriter().getName() ,comment.getContent() - ,comment.getPreferenceInfo().getPreference() + ,comment.getPreferenceCountInfo().getPreference() ,comment.getWrtTime() ); } From dc6aa7f88554ca7df5af7380e02bee2c781cd282 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 18:31:23 +0900 Subject: [PATCH 044/153] =?UTF-8?q?*=20=20Feed=20=EC=99=80=20Comment=20?= =?UTF-8?q?=EC=9D=98=20=EC=84=A0=ED=98=B8=20=EC=A0=95=EB=B3=B4=20=ED=98=BC?= =?UTF-8?q?=EB=8F=99=EB=90=A0=20=EC=88=98=20=EC=9E=88=EC=9C=BC=EB=AF=80?= =?UTF-8?q?=EB=A1=9C,=20repository=20=EB=A9=94=EC=86=8C=EB=93=9C=EC=97=90?= =?UTF-8?q?=20=EB=A7=A4=EA=B0=9C=EB=B3=80=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferenceinfo/domain/PreferenceInfoRepository.java | 2 +- .../demo/preferenceinfo/service/PreferenceInfoService.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfoRepository.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfoRepository.java index be42764..0767f5c 100644 --- a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfoRepository.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfoRepository.java @@ -4,5 +4,5 @@ public interface PreferenceInfoRepository extends JpaRepository { - PreferenceInfo findByDocumentIdAndPreferredPersonId(Long documentId, Long PreferredPersonId); + PreferenceInfo findByDocumentIdAndPreferredPersonIdAndLocation(Long documentId, Long PreferredPersonId, PreferenceLocation location); } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index f82bc79..57cdcca 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -49,7 +49,7 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { } if (preferenceInfoRepository - .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId())==null){ + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), user.getId(), PreferenceLocation.FEED)==null){ PreferenceInfo preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferenceLocation.FEED); preferenceInfo.locate(PreferenceLocation.FEED); preferenceInfo.like(); @@ -63,7 +63,7 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { PreferenceInfo preferenceInfo = preferenceInfoRepository - .findByDocumentIdAndPreferredPersonId(feed.getId(), user.getId()); + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), user.getId(), PreferenceLocation.FEED); if (preferenceInfo.findState()==PreferenceStatus.LIKE){ preferenceInfo.disLike(); From 392fd84b26516a093d937496ca1d5973f9e1037d Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 18:40:02 +0900 Subject: [PATCH 045/153] =?UTF-8?q?*=20=20=EB=8C=93=EA=B8=80=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EC=A2=8B=EC=95=84=EC=9A=94=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Comment.java | 7 +++++ .../service/PreferenceInfoService.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/main/java/com/example/demo/feed/domain/Comment.java b/src/main/java/com/example/demo/feed/domain/Comment.java index 6e23b76..6507127 100644 --- a/src/main/java/com/example/demo/feed/domain/Comment.java +++ b/src/main/java/com/example/demo/feed/domain/Comment.java @@ -57,6 +57,13 @@ public static Comment create(Writer writer, Content content) { return new Comment(writer, content); } + public void disLike() { + this.preferenceCountInfo = PreferenceCount.create(this.preferenceCountInfo.getPreference()-1L); + } + + public void like() { + this.preferenceCountInfo = PreferenceCount.create(this.preferenceCountInfo.getPreference()+1L); + } // public boolean checkPossibleOfLike(User user) { diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 57cdcca..f0a7139 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -85,6 +85,7 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen User user = getLoggedUser(); Feed feed; Comment comment; + PreferenceInfo preferenceInfo; if ((feed=feedRepository.findFeedByIdAndDeleted(feedId, false))==null){ return PreferenceResult.FEED_NOT_FOUND; @@ -99,6 +100,33 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen return PreferenceResult.COMMENT_NOT_FOUND; } + if ((preferenceInfo = preferenceInfoRepository + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), user.getId(), PreferenceLocation.COMMENT))==null){ + preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferenceLocation.COMMENT); + preferenceInfo.locate(PreferenceLocation.COMMENT); + preferenceInfo.like(); + preferenceInfoRepository.save(preferenceInfo); + + feed.like(); + + return PreferenceResult.SUCCESS; + + } + + + if (preferenceInfo.findState()==PreferenceStatus.LIKE){ + preferenceInfo.disLike(); + comment.disLike(); + + return PreferenceResult.SUCCESS; + } + + if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ + preferenceInfo.like(); + comment.like(); + } + return PreferenceResult.SUCCESS; + } From 25104dc3af141bf62e0582377c8ca12b2f2bf3ff Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 19:00:21 +0900 Subject: [PATCH 046/153] =?UTF-8?q?*=20=EA=B4=80=EA=B3=84=EB=A5=BC=20?= =?UTF-8?q?=EC=A2=80=20=EB=8D=94=20=EB=AA=85=ED=99=95=ED=9E=88=20=EB=82=98?= =?UTF-8?q?=ED=83=80=EB=82=B4=EB=8A=94=20=EC=9D=B4=EB=A6=84=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20[UserInfo->=20Friender,=20Frie?= =?UTF-8?q?nd->Friendee]=20=20=EB=B0=8F=20User=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=EA=B3=BC=20=ED=97=B7=EA=B0=88=EB=A6=B4=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8A=94=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=20[Identification=20->=20PersonId,=20Name=20->=20PersonName]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/domain/FriendShipRepository.java | 10 +++--- .../domain/{Friend.java => Friendee.java} | 12 +++---- .../domain/{UserInfo.java => Friender.java} | 12 +++---- .../demo/friend/domain/Friendship.java | 8 ++--- .../{Identfication.java => PersonId.java} | 8 ++--- .../domain/{Name.java => PersonName.java} | 8 ++--- .../friend/service/FriendShipService.java | 34 +++++++++---------- .../service/PreferenceInfoService.java | 6 ++-- .../timeline/service/TimeLineService.java | 10 +++--- .../friend/service/FriendShipServiceTest.java | 8 ----- 10 files changed, 54 insertions(+), 62 deletions(-) rename src/main/java/com/example/demo/friend/domain/{Friend.java => Friendee.java} (69%) rename src/main/java/com/example/demo/friend/domain/{UserInfo.java => Friender.java} (73%) rename src/main/java/com/example/demo/friend/domain/{Identfication.java => PersonId.java} (69%) rename src/main/java/com/example/demo/friend/domain/{Name.java => PersonName.java} (70%) diff --git a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java index a7075db..d5244e7 100644 --- a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java +++ b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java @@ -9,14 +9,14 @@ public interface FriendShipRepository extends JpaRepository { - Page findAllByUserInfo(UserInfo user, Pageable pageable); + Page findAllByUserInfo(Friender user, Pageable pageable); - List findAllByUserInfo(UserInfo userInfo); + List findAllByUserInfo(Friender userInfo); - Friendship findFriendshipByUserInfoAndFriend_FriendId(UserInfo user, Identfication id); + Friendship findFriendshipByUserInfoAndFriend_FriendId(Friender user, PersonId id); - Friendship findFriendshipByFriend_FriendIdAndUserInfo_UserId(Identfication friendId, Identfication userId); + Friendship findFriendshipByFriend_FriendIdAndUserInfo_UserId(PersonId friendId, PersonId userId); - Page findAllByFriend_FriendId(Identfication friendId, Pageable pageable); + Page findAllByFriend_FriendId(PersonId friendId, Pageable pageable); } diff --git a/src/main/java/com/example/demo/friend/domain/Friend.java b/src/main/java/com/example/demo/friend/domain/Friendee.java similarity index 69% rename from src/main/java/com/example/demo/friend/domain/Friend.java rename to src/main/java/com/example/demo/friend/domain/Friendee.java index b07e88d..63cf09d 100644 --- a/src/main/java/com/example/demo/friend/domain/Friend.java +++ b/src/main/java/com/example/demo/friend/domain/Friendee.java @@ -12,7 +12,7 @@ @Setter(AccessLevel.PACKAGE) @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class Friend extends BasicInfo{ +public class Friendee extends BasicInfo{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -20,18 +20,18 @@ public class Friend extends BasicInfo{ private Long id; @Embedded - private Identfication friendId; + private PersonId friendId; @Embedded - private Name friendname; + private PersonName friendname; - private Friend(Identfication friendId, Name friendname){ + private Friendee(PersonId friendId, PersonName friendname){ this.friendId = friendId; this.friendname = friendname; } - public static Friend create(Identfication friendId, Name friendname) { - return new Friend(friendId, friendname); + public static Friendee create(PersonId friendId, PersonName friendname) { + return new Friendee(friendId, friendname); } @Override diff --git a/src/main/java/com/example/demo/friend/domain/UserInfo.java b/src/main/java/com/example/demo/friend/domain/Friender.java similarity index 73% rename from src/main/java/com/example/demo/friend/domain/UserInfo.java rename to src/main/java/com/example/demo/friend/domain/Friender.java index a0519da..c4112bb 100644 --- a/src/main/java/com/example/demo/friend/domain/UserInfo.java +++ b/src/main/java/com/example/demo/friend/domain/Friender.java @@ -14,29 +14,29 @@ @Setter(AccessLevel.PACKAGE) @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class UserInfo extends BasicInfo{ +public class Friender extends BasicInfo{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Embedded - private Identfication userId; + private PersonId userId; @OneToMany(mappedBy = "user") private List friendships = new ArrayList<>(); @Embedded - private Name username; + private PersonName username; - private UserInfo(Identfication userId, Name username){ + private Friender(PersonId userId, PersonName username){ this.userId = userId; this.username = username; } - public static UserInfo create(Identfication userId, Name userName){ - return new UserInfo(userId, userName); + public static Friender create(PersonId userId, PersonName userName){ + return new Friender(userId, userName); } @Override diff --git a/src/main/java/com/example/demo/friend/domain/Friendship.java b/src/main/java/com/example/demo/friend/domain/Friendship.java index 9f900cc..e82c93e 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendship.java +++ b/src/main/java/com/example/demo/friend/domain/Friendship.java @@ -19,22 +19,22 @@ public class Friendship { @ManyToOne @JoinColumn(name = "user_id") - private UserInfo userInfo; + private Friender userInfo; @ManyToOne @JoinColumn(name = "friend_id") - private Friend friend; + private Friendee friend; @Column(name = "friend_state") private Boolean friendState; - private Friendship(UserInfo userInfo, Friend friend){ + private Friendship(Friender userInfo, Friendee friend){ this.userInfo = userInfo; this.friend = friend; this.friendState = false; } - public static Friendship create(UserInfo user, Friend friend) { + public static Friendship create(Friender user, Friendee friend) { return new Friendship(user, friend); } diff --git a/src/main/java/com/example/demo/friend/domain/Identfication.java b/src/main/java/com/example/demo/friend/domain/PersonId.java similarity index 69% rename from src/main/java/com/example/demo/friend/domain/Identfication.java rename to src/main/java/com/example/demo/friend/domain/PersonId.java index 1b2bb92..e15eb29 100644 --- a/src/main/java/com/example/demo/friend/domain/Identfication.java +++ b/src/main/java/com/example/demo/friend/domain/PersonId.java @@ -12,17 +12,17 @@ @Setter(AccessLevel.PROTECTED) @Embeddable @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class Identfication { +public class PersonId { private Long id; - private Identfication(Long id) { + private PersonId(Long id) { this.id = id; } - public static Identfication create(Long id){ - return new Identfication(id); + public static PersonId create(Long id){ + return new PersonId(id); } diff --git a/src/main/java/com/example/demo/friend/domain/Name.java b/src/main/java/com/example/demo/friend/domain/PersonName.java similarity index 70% rename from src/main/java/com/example/demo/friend/domain/Name.java rename to src/main/java/com/example/demo/friend/domain/PersonName.java index 5ab7ae7..c22788f 100644 --- a/src/main/java/com/example/demo/friend/domain/Name.java +++ b/src/main/java/com/example/demo/friend/domain/PersonName.java @@ -12,15 +12,15 @@ @Setter(AccessLevel.PACKAGE) @Embeddable @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class Name { +public class PersonName { private String name; - private Name(String name) { + private PersonName(String name) { this.name = name; } - public static Name create(String name){ - return new Name(name); + public static PersonName create(String name){ + return new PersonName(name); } } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 51eecce..21eb953 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -26,8 +26,8 @@ public class FriendShipService { @Transactional public List getMyFriends(int page, int size) throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); - Identfication userId = Identfication.create(user.getId()); - UserInfo userInfo = createUserInfo(user, userId); + PersonId userId = PersonId.create(user.getId()); + Friender userInfo = createUserInfo(user, userId); List friendshipList @@ -48,12 +48,12 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep @Transactional public FriendShipResult create(Long inputedFriendId) throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); - Identfication myId = Identfication.create(user.getId()); - UserInfo myInfo = createUserInfo(user, myId); + PersonId myId = PersonId.create(user.getId()); + Friender myInfo = createUserInfo(user, myId); User friend = userRepository.findUserById(inputedFriendId); - Identfication friendId = Identfication.create(inputedFriendId); - UserInfo friendInfo = createUserInfo(friend, friendId); + PersonId friendId = PersonId.create(inputedFriendId); + Friender friendInfo = createUserInfo(friend, friendId); @@ -91,11 +91,11 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio - private Friendship createFriendship(UserInfo user, UserInfo friendUserInfo) { - Identfication friendsId = Identfication.create(friendUserInfo.getId()); - Name friendName = Name.create(friendUserInfo.getName()); + private Friendship createFriendship(Friender user, Friender friendUserInfo) { + PersonId friendsId = PersonId.create(friendUserInfo.getId()); + PersonName friendName = PersonName.create(friendUserInfo.getName()); - Friend friend = Friend.create(friendsId, friendName); + Friendee friend = Friendee.create(friendsId, friendName); return Friendship.create(user, friend); } @@ -103,10 +103,10 @@ private Friendship createFriendship(UserInfo user, UserInfo friendUserInfo) { public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); - Identfication myId = Identfication.create(user.getId()); - UserInfo myInfo = createUserInfo(user, myId); + PersonId myId = PersonId.create(user.getId()); + Friender myInfo = createUserInfo(user, myId); - Identfication friendId = Identfication.create(inputedId); + PersonId friendId = PersonId.create(inputedId); if ((friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(myInfo, friendId))==null){ @@ -122,17 +122,17 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen } - private UserInfo createUserInfo(User user, Identfication id) { + private Friender createUserInfo(User user, PersonId id) { - Name name = Name.create(user.getUserBasicInfo().getUsername()); - return UserInfo.create(id, name); + PersonName name = PersonName.create(user.getUserBasicInfo().getUsername()); + return Friender.create(id, name); } public ListfindRequestForMe(int page, int size) throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); - Identfication myId = Identfication.create(user.getId()); + PersonId myId = PersonId.create(user.getId()); List friendshipList = friendShipRepository.findAllByFriend_FriendId(myId, PageRequest.of(page, size)) .stream() diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index f0a7139..7b810c3 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -6,7 +6,7 @@ import com.example.demo.feed.domain.FeedRepository; import com.example.demo.feed.service.CommentService; import com.example.demo.friend.domain.FriendShipRepository; -import com.example.demo.friend.domain.Identfication; +import com.example.demo.friend.domain.PersonId; import com.example.demo.preferenceinfo.domain.PreferenceStatus; import com.example.demo.preferenceinfo.domain.PreferenceInfo; import com.example.demo.preferenceinfo.domain.PreferenceLocation; @@ -40,7 +40,7 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { } if (friendShipRepository.findFriendshipByFriend_FriendIdAndUserInfo_UserId( - Identfication.create(user.getId()), Identfication.create(feed.getWriter().getId()))==null){ + PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ return PreferenceResult.NOT_MY_FRIEND; } @@ -92,7 +92,7 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen } if (friendShipRepository.findFriendshipByFriend_FriendIdAndUserInfo_UserId( - Identfication.create(user.getId()), Identfication.create(feed.getWriter().getId()))==null){ + PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ return PreferenceResult.NOT_MY_FRIEND; } diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 49b5a67..4d7e069 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -27,7 +27,7 @@ public class TimeLineService { public List findMyTimeLine(int page, int pageSize) throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); - UserInfo userInfo = createUserInfo(user); + Friender userInfo = createUserInfo(user); List writerList = friendShipRepository @@ -67,11 +67,11 @@ public CommentDto toCommentDto(Comment comment){ ); } - private UserInfo createUserInfo(User user) throws AccessDeniedException { + private Friender createUserInfo(User user) throws AccessDeniedException { - Identfication userId = Identfication.create(user.getId()); - Name name = Name.create(user.getUserBasicInfo().getUsername()); - return UserInfo.create(userId, name); + PersonId userId = PersonId.create(user.getId()); + PersonName name = PersonName.create(user.getUserBasicInfo().getUsername()); + return Friender.create(userId, name); } } diff --git a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java index fcabe7c..313d22b 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java @@ -2,21 +2,13 @@ import com.example.demo.feed.domain.FeedRepository; import com.example.demo.friend.domain.FriendShipRepository; -import com.example.demo.friend.domain.Identfication; -import com.example.demo.friend.domain.UserInfo; -import com.example.demo.user.domain.Password; -import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; -import com.example.demo.user.domain.Username; import com.example.demo.user.service.UserSessionService; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) From 4ccd61a861155e03ae49326f9c05f2ff4564b2cc Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 19:04:36 +0900 Subject: [PATCH 047/153] =?UTF-8?q?*=20=EC=88=98=EC=A0=95=EB=90=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/domain/Friendee.java | 14 +++++++------- .../com/example/demo/friend/domain/Friendship.java | 14 +++++++------- .../demo/timeline/service/TimeLineService.java | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/Friendee.java b/src/main/java/com/example/demo/friend/domain/Friendee.java index 63cf09d..0cc6abe 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendee.java +++ b/src/main/java/com/example/demo/friend/domain/Friendee.java @@ -20,14 +20,14 @@ public class Friendee extends BasicInfo{ private Long id; @Embedded - private PersonId friendId; + private PersonId friendeeId; @Embedded - private PersonName friendname; + private PersonName friendeeName; - private Friendee(PersonId friendId, PersonName friendname){ - this.friendId = friendId; - this.friendname = friendname; + private Friendee(PersonId friendeeId, PersonName friendeeName){ + this.friendeeId = friendeeId; + this.friendeeName = friendeeName; } public static Friendee create(PersonId friendId, PersonName friendname) { @@ -36,11 +36,11 @@ public static Friendee create(PersonId friendId, PersonName friendname) { } @Override public Long getId(){ - return this.friendId.getId(); + return this.friendeeId.getId(); } @Override public String getName(){ - return this.friendname.getName(); + return this.friendeeName.getName(); } } diff --git a/src/main/java/com/example/demo/friend/domain/Friendship.java b/src/main/java/com/example/demo/friend/domain/Friendship.java index e82c93e..fc57caa 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendship.java +++ b/src/main/java/com/example/demo/friend/domain/Friendship.java @@ -19,18 +19,18 @@ public class Friendship { @ManyToOne @JoinColumn(name = "user_id") - private Friender userInfo; + private Friender friender; @ManyToOne @JoinColumn(name = "friend_id") - private Friendee friend; + private Friendee friendee; @Column(name = "friend_state") private Boolean friendState; - private Friendship(Friender userInfo, Friendee friend){ - this.userInfo = userInfo; - this.friend = friend; + private Friendship(Friender friender, Friendee friendee){ + this.friender = friender; + this.friendee = friendee; this.friendState = false; } @@ -38,8 +38,8 @@ public static Friendship create(Friender user, Friendee friend) { return new Friendship(user, friend); } - public Long getFriendId(){ - return this.friend.getId(); + public Long getFriendeeId(){ + return this.friendee.getId(); } public void acceptFriendShip() { diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 4d7e069..b6d64d9 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -33,7 +33,7 @@ public List findMyTimeLine(int page, int pageSize) throws AccessDeniedE friendShipRepository .findAllByUserInfo(userInfo) .stream() - .map(Friendship::getFriendId) + .map(Friendship::getFriendeeId) .map(WriterId::create) .collect(Collectors.toList()); writerList.add(WriterId.create(user.getId())); From c8b893e7e48b1716c91881d4f6ee775faad11a71 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 19:05:56 +0900 Subject: [PATCH 048/153] =?UTF-8?q?*=20=EC=88=98=EC=A0=95=EB=90=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/domain/Friender.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/Friender.java b/src/main/java/com/example/demo/friend/domain/Friender.java index c4112bb..56d654f 100644 --- a/src/main/java/com/example/demo/friend/domain/Friender.java +++ b/src/main/java/com/example/demo/friend/domain/Friender.java @@ -21,17 +21,17 @@ public class Friender extends BasicInfo{ private Long id; @Embedded - private PersonId userId; + private PersonId frienderId; @OneToMany(mappedBy = "user") private List friendships = new ArrayList<>(); @Embedded - private PersonName username; + private PersonName frienderName; - private Friender(PersonId userId, PersonName username){ - this.userId = userId; - this.username = username; + private Friender(PersonId frienderId, PersonName frienderName){ + this.frienderId = frienderId; + this.frienderName = frienderName; } @@ -41,12 +41,12 @@ public static Friender create(PersonId userId, PersonName userName){ @Override public Long getId(){ - return this.userId.getId(); + return this.frienderId.getId(); } @Override public String getName(){ - return this.username.getName(); + return this.frienderName.getName(); } From 66708674e0b370464ce9f5e72dd32e8bccb87a8c Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 19:22:25 +0900 Subject: [PATCH 049/153] =?UTF-8?q?*=20=EC=88=98=EC=A0=95=EB=90=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/domain/FriendShipRepository.java | 10 +++++----- .../demo/friend/service/FriendShipService.java | 18 +++++++++--------- .../demo/timeline/service/TimeLineService.java | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java index d5244e7..bdc7966 100644 --- a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java +++ b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java @@ -9,14 +9,14 @@ public interface FriendShipRepository extends JpaRepository { - Page findAllByUserInfo(Friender user, Pageable pageable); + Page findAllByFriender(Friender user, Pageable pageable); - List findAllByUserInfo(Friender userInfo); + List findAllByFriender(Friender userInfo); - Friendship findFriendshipByUserInfoAndFriend_FriendId(Friender user, PersonId id); + Friendship findFriendshipByFrienderAndFriendee_FriendeeId(Friender user, PersonId id); - Friendship findFriendshipByFriend_FriendIdAndUserInfo_UserId(PersonId friendId, PersonId userId); + Friendship findFriendshipByFriender_FrienderIdAndAndFriendee_FriendeeId(PersonId frienderId, PersonId friendeeId); - Page findAllByFriend_FriendId(PersonId friendId, Pageable pageable); + Page findAllByFriendee_FriendeeId(PersonId friendId, Pageable pageable); } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 21eb953..293c06d 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -32,10 +32,10 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep List friendshipList = friendShipRepository - .findAllByUserInfo(userInfo, PageRequest.of(page, size)) + .findAllByFriender(userInfo, PageRequest.of(page, size)) .stream() .filter(Friendship::getFriendState) - .map(Friendship::getFriend) + .map(Friendship::getFriendee) .map(this::toFriendDto) .collect(Collectors.toList()); @@ -58,7 +58,7 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio - if ((friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(myInfo, friendId))==null){ + if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId))==null){ Friendship forwardFriendShip = createFriendship(myInfo, friendInfo); forwardFriendShip.acceptFriendShip(); @@ -73,9 +73,9 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio }else { Friendship forwardFriendShip - = friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(myInfo, friendId); + = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId); Friendship backwardFriendShip - = friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(friendInfo, myId); + = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(friendInfo, myId); if (forwardFriendShip.getFriendState()){ return FriendShipResult.ALREADY_ACCEPT; @@ -108,13 +108,13 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen PersonId friendId = PersonId.create(inputedId); - if ((friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(myInfo, friendId))==null){ + if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId))==null){ return FriendShipResult.NEVER_REQUESTED; }else { Friendship forwardFriendShip - = friendShipRepository.findFriendshipByUserInfoAndFriend_FriendId(myInfo, friendId); + = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId); forwardFriendShip.deleteFriendShip(); return FriendShipResult.SUCCESS; @@ -134,10 +134,10 @@ private Friender createUserInfo(User user, PersonId id) { User user = userSessionService.getLoggeddUser(); PersonId myId = PersonId.create(user.getId()); - List friendshipList = friendShipRepository.findAllByFriend_FriendId(myId, PageRequest.of(page, size)) + List friendshipList = friendShipRepository.findAllByFriendee_FriendeeId(myId, PageRequest.of(page, size)) .stream() .filter(Friendship::getFriendState) - .map(Friendship::getUserInfo) + .map(Friendship::getFriender) .map(this::toFriendDto) .collect(Collectors.toList()); diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index b6d64d9..8d646c9 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -31,7 +31,7 @@ public List findMyTimeLine(int page, int pageSize) throws AccessDeniedE List writerList = friendShipRepository - .findAllByUserInfo(userInfo) + .findAllByFriender(userInfo) .stream() .map(Friendship::getFriendeeId) .map(WriterId::create) From f6fef787a435dda225f2ef583dbda95b1acec512 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 19:23:15 +0900 Subject: [PATCH 050/153] =?UTF-8?q?*=20=EC=88=98=EC=A0=95=EB=90=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferenceinfo/service/PreferenceInfoService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 7b810c3..53d3949 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -39,7 +39,7 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { return PreferenceResult.FEED_NOT_FOUND; } - if (friendShipRepository.findFriendshipByFriend_FriendIdAndUserInfo_UserId( + if (friendShipRepository.findFriendshipByFriender_FrienderIdAndAndFriendee_FriendeeId( PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ return PreferenceResult.NOT_MY_FRIEND; } @@ -91,7 +91,7 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen return PreferenceResult.FEED_NOT_FOUND; } - if (friendShipRepository.findFriendshipByFriend_FriendIdAndUserInfo_UserId( + if (friendShipRepository.findFriendshipByFriender_FrienderIdAndAndFriendee_FriendeeId( PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ return PreferenceResult.NOT_MY_FRIEND; } From 598ee4673f61c3b1a644e6b3c85ecd285a58b4b3 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 19:28:12 +0900 Subject: [PATCH 051/153] =?UTF-8?q?*=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/domain/FriendShipRepository.java | 2 +- .../demo/preferenceinfo/service/PreferenceInfoService.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java index bdc7966..5fdaa2a 100644 --- a/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java +++ b/src/main/java/com/example/demo/friend/domain/FriendShipRepository.java @@ -16,7 +16,7 @@ public interface FriendShipRepository extends JpaRepository { Friendship findFriendshipByFrienderAndFriendee_FriendeeId(Friender user, PersonId id); - Friendship findFriendshipByFriender_FrienderIdAndAndFriendee_FriendeeId(PersonId frienderId, PersonId friendeeId); + Friendship findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId(PersonId frienderId, PersonId friendeeId); Page findAllByFriendee_FriendeeId(PersonId friendId, Pageable pageable); } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 53d3949..aa9aa2c 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -39,7 +39,7 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { return PreferenceResult.FEED_NOT_FOUND; } - if (friendShipRepository.findFriendshipByFriender_FrienderIdAndAndFriendee_FriendeeId( + if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ return PreferenceResult.NOT_MY_FRIEND; } @@ -91,7 +91,7 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen return PreferenceResult.FEED_NOT_FOUND; } - if (friendShipRepository.findFriendshipByFriender_FrienderIdAndAndFriendee_FriendeeId( + if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ return PreferenceResult.NOT_MY_FRIEND; } From 4e2e3fe8a93382a64560ecbd7dfe0718af61fbca Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 19:35:46 +0900 Subject: [PATCH 052/153] =?UTF-8?q?*=20=EC=A2=80=20=EB=8D=94=20=EA=B0=84?= =?UTF-8?q?=EB=8B=A8=ED=95=98=EA=B2=8C=20=EB=8B=A4=EB=8C=80=EB=8B=A4=20?= =?UTF-8?q?=EA=B4=80=EA=B3=84=EC=B2=98=EB=9F=BC=20=EB=8F=99=EC=9E=91?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/friend/domain/Friendee.java | 7 +------ src/main/java/com/example/demo/friend/domain/Friender.java | 3 +-- .../java/com/example/demo/friend/domain/Friendship.java | 7 +++---- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/Friendee.java b/src/main/java/com/example/demo/friend/domain/Friendee.java index 0cc6abe..55698c4 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendee.java +++ b/src/main/java/com/example/demo/friend/domain/Friendee.java @@ -8,16 +8,11 @@ import javax.persistence.*; -@Entity +@Embeddable @Setter(AccessLevel.PACKAGE) -@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Friendee extends BasicInfo{ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "friend_pk") - private Long id; @Embedded private PersonId friendeeId; diff --git a/src/main/java/com/example/demo/friend/domain/Friender.java b/src/main/java/com/example/demo/friend/domain/Friender.java index 56d654f..514f75f 100644 --- a/src/main/java/com/example/demo/friend/domain/Friender.java +++ b/src/main/java/com/example/demo/friend/domain/Friender.java @@ -10,9 +10,8 @@ import java.util.ArrayList; import java.util.List; -@Entity +@Embeddable @Setter(AccessLevel.PACKAGE) -@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Friender extends BasicInfo{ diff --git a/src/main/java/com/example/demo/friend/domain/Friendship.java b/src/main/java/com/example/demo/friend/domain/Friendship.java index fc57caa..05e02c0 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendship.java +++ b/src/main/java/com/example/demo/friend/domain/Friendship.java @@ -17,12 +17,11 @@ public class Friendship { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne - @JoinColumn(name = "user_id") + @Embedded private Friender friender; - @ManyToOne - @JoinColumn(name = "friend_id") + + @Embedded private Friendee friendee; @Column(name = "friend_state") From 5cfa3fbd213cde19cd196a78002084eae86b7d17 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 20:32:27 +0900 Subject: [PATCH 053/153] =?UTF-8?q?*=20=EB=8B=A8=EC=88=9C=20=EB=9D=84?= =?UTF-8?q?=EC=96=B4=EC=93=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/friend/domain/Friendship.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/example/demo/friend/domain/Friendship.java b/src/main/java/com/example/demo/friend/domain/Friendship.java index 05e02c0..81b48ec 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendship.java +++ b/src/main/java/com/example/demo/friend/domain/Friendship.java @@ -20,7 +20,6 @@ public class Friendship { @Embedded private Friender friender; - @Embedded private Friendee friendee; From 6cf26d9d322d0cb34db2089444d99ba7f75a6819 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 20:42:54 +0900 Subject: [PATCH 054/153] =?UTF-8?q?*=20=EC=9E=A0=EC=8B=9C=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=A7=9C=EB=B3=B4?= =?UTF-8?q?=EB=8A=94=20=EC=A4=91=20=20->=20FriendShipService=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD=EC=9D=B4=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EA=B2=83=EC=9D=84=20=EB=8A=90=EB=82=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipServiceTest.java | 87 +++++++++++-------- 1 file changed, 52 insertions(+), 35 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java index 313d22b..243945a 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java @@ -1,14 +1,23 @@ package com.example.demo.friend.service; import com.example.demo.feed.domain.FeedRepository; -import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.*; +import com.example.demo.user.domain.Password; +import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; +import com.example.demo.user.domain.Username; import com.example.demo.user.service.UserSessionService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static org.mockito.ArgumentMatchers.any; +import java.nio.file.AccessDeniedException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -26,40 +35,48 @@ class FriendShipServiceTest { @Mock UserSessionService userSessionService; + User user; + PersonId personId; + Friendee friendee; + Friender friender; + + + @DisplayName("친구관계 맺기 테스트 1. 처음 신청") + @Test + void createFriendShip() throws AccessDeniedException { + FriendShipService friendShipService + = new FriendShipService(friendShipRepository, + userRepository, + userSessionService); + //given + PersonName myName = PersonName.create("jihwan"); + Password myPassword = Password.create("1234"); + + Friender me = Friender.create(PersonId.create(1L), myName); + + + PersonName friendName = PersonName.create("jihwan"); + Password friendPassword = Password.create("1234"); + + when(userSessionService.getLoggeddUser()) + .thenReturn(null); + + when(userRepository.findUserById(anyLong())) + .thenReturn(null); + + when(PersonId.create(anyLong())) + .thenReturn(null); + + when(friendShipService.creat) + + + //when + FriendShipResult result = friendShipService.create(any()); + + //then + assertEquals(FriendShipResult.SUCCESS, result); + } -// @Test -// void createFriendShip(){ -// -// FriendShipService friendShipService = new FriendShipService(friendShipRepository, userRepository); -// -// Username myName = Username.create("MyName"); -// Password myPassword = Password.create("MyPassword"); -// -// User me = User.create(myName, myPassword); -// -// Identfication myId = Identfication.create(1L); -// -// Username friendName = Username.create("FriendName"); -// Password friendPassword = Password.create("FriendPassword"); -// -// User friend = User.create(friendName, friendPassword); -// -// Identfication friendId = Identfication.create(2L); -// -// when(friendShipService.findUser()).thenReturn(me).thenReturn(friend); -// -// -// -// when(Identfication.create(any())) -// .thenReturn(myId) -// .thenReturn(friendId); -// -// when(UserInfo.create(any(), any())) -// .thenReturn(UserInfo.create(myId, myName)); -// -// -// -// } } \ No newline at end of file From c509e77c2209d647737f6886954c7426c01948c4 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 20:53:43 +0900 Subject: [PATCH 055/153] =?UTF-8?q?*=20=20FriendShipService=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20User=20=EC=97=90=20=EC=A2=80=20=EB=8D=94=20?= =?UTF-8?q?=EB=8D=9C=20=EC=9D=98=EC=A1=B4=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 293c06d..03f1150 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -23,11 +23,12 @@ public class FriendShipService { private final UserSessionService userSessionService; + @Transactional public List getMyFriends(int page, int size) throws AccessDeniedException { - User user = userSessionService.getLoggeddUser(); + User user = PersonId userId = PersonId.create(user.getId()); - Friender userInfo = createUserInfo(user, userId); + PersonName userName = PersonName.create(user.getUserBasicInfo().getUsername()); List friendshipList @@ -48,14 +49,13 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep @Transactional public FriendShipResult create(Long inputedFriendId) throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); - PersonId myId = PersonId.create(user.getId()); - Friender myInfo = createUserInfo(user, myId); - User friend = userRepository.findUserById(inputedFriendId); - PersonId friendId = PersonId.create(inputedFriendId); - Friender friendInfo = createUserInfo(friend, friendId); + PersonId myId = PersonId.create(user.getId()); + PersonId friendId = PersonId.create(inputedFriendId); + PersonName myName = PersonName.create(user.getUserBasicInfo().getUsername()); + PersonName friendName = PersonName.create(friend.getUserBasicInfo().getUsername()); if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId))==null){ @@ -91,7 +91,7 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio - private Friendship createFriendship(Friender user, Friender friendUserInfo) { + public Friendship createFriendship(Friender user, Friendee friendUserInfo) { PersonId friendsId = PersonId.create(friendUserInfo.getId()); PersonName friendName = PersonName.create(friendUserInfo.getName()); @@ -122,12 +122,18 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen } - private Friender createUserInfo(User user, PersonId id) { + private Friender createFriender(User user, PersonId id) { PersonName name = PersonName.create(user.getUserBasicInfo().getUsername()); return Friender.create(id, name); } + private Friendee createFriendee(User user, PersonId id) { + + PersonName name = PersonName.create(user.getUserBasicInfo().getUsername()); + return Friendee.create(id, name); + } + public ListfindRequestForMe(int page, int size) throws AccessDeniedException { From 4bd37b8993659fbe75e12ba9583789305eeeef90 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 12 Apr 2021 21:00:11 +0900 Subject: [PATCH 056/153] =?UTF-8?q?*=20=20FriendShipService=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20User=20=EC=97=90=20=EC=A2=80=20=EB=8D=94=20?= =?UTF-8?q?=EB=8D=9C=20=EC=9D=98=EC=A1=B4=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=8B=9C=EB=8F=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 03f1150..546e86f 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -22,6 +22,13 @@ public class FriendShipService { private final UserRepository userRepository; private final UserSessionService userSessionService; + String[] userInfo = findUser(); + + public String findUser() throws AccessDeniedException { + String[] answer = + return userSessionService.getLoggeddUser(); + } + @Transactional From d8672f88454a70d5e313eaaf88b43116eeffaaec Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 13 Apr 2021 23:01:42 +0900 Subject: [PATCH 057/153] =?UTF-8?q?*=20User=20=EC=97=90=20=EB=8D=9C=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=ED=95=98=EB=8F=84=EB=A1=9D=20=20=20User=20?= =?UTF-8?q?=EB=82=B4=EB=B6=80=20=EC=A0=95=EB=B3=B4=20=EB=BD=91=EC=95=84?= =?UTF-8?q?=EC=84=9C=20=EC=A0=80=EC=9E=A5=ED=95=98=EB=8A=94=20=EB=B0=A9?= =?UTF-8?q?=EB=B2=95=EC=9C=BC=EB=A1=9C=20=EA=B5=AC=ED=98=84=20=EC=8B=9C?= =?UTF-8?q?=EB=8F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/friend/service/FriendShipService.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 546e86f..056d7dd 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -22,20 +22,18 @@ public class FriendShipService { private final UserRepository userRepository; private final UserSessionService userSessionService; - String[] userInfo = findUser(); - public String findUser() throws AccessDeniedException { - String[] answer = - return userSessionService.getLoggeddUser(); + public Object[] findUser() throws AccessDeniedException { + return new Object[]{userSessionService.getLoggeddUser().getId(), userSessionService.getLoggeddUser().getUserBasicInfo().getUsername()}; } @Transactional public List getMyFriends(int page, int size) throws AccessDeniedException { - User user = - PersonId userId = PersonId.create(user.getId()); - PersonName userName = PersonName.create(user.getUserBasicInfo().getUsername()); + Object[] userInfo = findUser(); + PersonId userId = PersonId.create((Long)userInfo[0]); + PersonName userName = PersonName.create((String)userInfo[1]); List friendshipList From 8c10d442def49150694993affab49fe1a3401332 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 13 Apr 2021 23:09:26 +0900 Subject: [PATCH 058/153] =?UTF-8?q?*=20UserService=20=EC=97=90=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EC=B0=BE=EB=8A=94=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=ED=9B=84=20FriendShipService=20=EC=97=90?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 24 ++++++++++--------- .../demo/user/service/UserService.java | 14 +++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 056d7dd..3f1a75c 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -3,6 +3,7 @@ import com.example.demo.friend.domain.*; import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; +import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; @@ -21,24 +22,25 @@ public class FriendShipService { private final FriendShipRepository friendShipRepository; private final UserRepository userRepository; private final UserSessionService userSessionService; + private final UserService userService; + - public Object[] findUser() throws AccessDeniedException { - return new Object[]{userSessionService.getLoggeddUser().getId(), userSessionService.getLoggeddUser().getUserBasicInfo().getUsername()}; - } @Transactional public List getMyFriends(int page, int size) throws AccessDeniedException { - Object[] userInfo = findUser(); + Object[] userInfo = userService.findUserInfo(); PersonId userId = PersonId.create((Long)userInfo[0]); PersonName userName = PersonName.create((String)userInfo[1]); + Friender friender = Friender.create(userId, userName); + List friendshipList = friendShipRepository - .findAllByFriender(userInfo, PageRequest.of(page, size)) + .findAllByFriender(friender, PageRequest.of(page, size)) .stream() .filter(Friendship::getFriendState) .map(Friendship::getFriendee) @@ -53,14 +55,14 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep @Transactional public FriendShipResult create(Long inputedFriendId) throws AccessDeniedException { - User user = userSessionService.getLoggeddUser(); - User friend = userRepository.findUserById(inputedFriendId); + Object[] user = userService.findUserInfo(); + Object[] friend = userService.findUserInfo(inputedFriendId); - PersonId myId = PersonId.create(user.getId()); - PersonId friendId = PersonId.create(inputedFriendId); + PersonId myId = PersonId.create((Long) user[0]); + PersonId friendId = PersonId.create((Long) friend[0]); - PersonName myName = PersonName.create(user.getUserBasicInfo().getUsername()); - PersonName friendName = PersonName.create(friend.getUserBasicInfo().getUsername()); + PersonName myName = PersonName.create(user[1]); + PersonName friendName = PersonName.create(friend[1]); if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId))==null){ diff --git a/src/main/java/com/example/demo/user/service/UserService.java b/src/main/java/com/example/demo/user/service/UserService.java index 5d58780..2c8ac3d 100644 --- a/src/main/java/com/example/demo/user/service/UserService.java +++ b/src/main/java/com/example/demo/user/service/UserService.java @@ -9,12 +9,15 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.nio.file.AccessDeniedException; + @Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; + private final UserSessionService userSessionService; @Transactional public void signup(SignupRequest signupRequest){ @@ -30,5 +33,16 @@ public void signup(SignupRequest signupRequest){ public void login(LoginRequest loginRequest) { } + + public Object[] findUserInfo() throws AccessDeniedException { + User user = userSessionService.getLoggeddUser(); + return new Object[]{user.getId(), user.getUserBasicInfo().getUsername()}; + } + + public Object[] findUserInfo(Long id) throws AccessDeniedException { + User user = userRepository.findUserById(id); + return new Object[]{user.getId(), + user.getUserBasicInfo().getUsername()}; + } } From a2b1c14993b8786efd275b610d1ca7c758814d9f Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 13 Apr 2021 23:16:05 +0900 Subject: [PATCH 059/153] =?UTF-8?q?*=20UserService=20=EC=97=90=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EC=B0=BE=EB=8A=94=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=ED=9B=84=20FriendShipService=20=EC=97=90?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 3f1a75c..04dece3 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -61,15 +61,22 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio PersonId myId = PersonId.create((Long) user[0]); PersonId friendId = PersonId.create((Long) friend[0]); - PersonName myName = PersonName.create(user[1]); - PersonName friendName = PersonName.create(friend[1]); + PersonName myName = PersonName.create((String) user[1]); + PersonName friendName = PersonName.create((String) friend[1]); + Friender frienderMe = Friender.create(myId, myName); + Friendee friendeeYou = Friendee.create(friendId, friendName); - if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId))==null){ - Friendship forwardFriendShip = createFriendship(myInfo, friendInfo); + Friender frienderYou = Friender.create(friendId, friendName); + Friendee friendeeMe = Friendee.create(myId, myName); + + + + if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(frienderMe, friendId))==null){ + Friendship forwardFriendShip = createFriendship(frienderMe, friendeeYou); forwardFriendShip.acceptFriendShip(); - Friendship backwardFriendShip = createFriendship(friendInfo, myInfo); + Friendship backwardFriendShip = createFriendship(frienderYou, friendeeMe); friendShipRepository.save(forwardFriendShip); friendShipRepository.save(backwardFriendShip); @@ -80,9 +87,9 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio }else { Friendship forwardFriendShip - = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId); + = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(frienderMe, friendId); Friendship backwardFriendShip - = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(friendInfo, myId); + = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(frienderYou, myId); if (forwardFriendShip.getFriendState()){ return FriendShipResult.ALREADY_ACCEPT; @@ -109,9 +116,10 @@ public Friendship createFriendship(Friender user, Friendee friendUserInfo) { public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDeniedException { - User user = userSessionService.getLoggeddUser(); - PersonId myId = PersonId.create(user.getId()); - Friender myInfo = createUserInfo(user, myId); + Object[] userInfo = userService.findUserInfo(); + PersonId myId = PersonId.create((Long) userInfo[0]); + PersonName myName = PersonName.create((String) userInfo[1]); + Friender myInfo = Friender.create(myId, myName); PersonId friendId = PersonId.create(inputedId); From a8f1e8f8c0e567e32d65652806fe31d776b5f164 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 13 Apr 2021 23:16:40 +0900 Subject: [PATCH 060/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/friend/service/FriendShipService.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 04dece3..862c23c 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -20,7 +20,6 @@ public class FriendShipService { private final FriendShipRepository friendShipRepository; - private final UserRepository userRepository; private final UserSessionService userSessionService; private final UserService userService; @@ -137,17 +136,6 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen } - private Friender createFriender(User user, PersonId id) { - - PersonName name = PersonName.create(user.getUserBasicInfo().getUsername()); - return Friender.create(id, name); - } - - private Friendee createFriendee(User user, PersonId id) { - - PersonName name = PersonName.create(user.getUserBasicInfo().getUsername()); - return Friendee.create(id, name); - } public ListfindRequestForMe(int page, int size) throws AccessDeniedException { From 87265f93538e56040d5d4a1388f3af32b95d4841 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 13 Apr 2021 23:18:23 +0900 Subject: [PATCH 061/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/friend/service/FriendShipService.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 862c23c..70fc400 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -104,13 +104,9 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio - public Friendship createFriendship(Friender user, Friendee friendUserInfo) { - PersonId friendsId = PersonId.create(friendUserInfo.getId()); - PersonName friendName = PersonName.create(friendUserInfo.getName()); + public Friendship createFriendship(Friender friender, Friendee friendee) { - Friendee friend = Friendee.create(friendsId, friendName); - - return Friendship.create(user, friend); + return Friendship.create(friender, friendee); } From bd5148d9b350f0512f3863a1e856f06547f17c47 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 13 Apr 2021 23:46:26 +0900 Subject: [PATCH 062/153] =?UTF-8?q?*=20=EC=95=84=EB=AC=B4=20=EA=B4=80?= =?UTF-8?q?=EA=B3=84=EB=8F=84=20=EC=95=84=EB=8B=8C=20=EC=9C=A0=EC=A0=80?= =?UTF-8?q?=EB=81=BC=EB=A6=AC=EC=9D=98=20=EC=B9=9C=EA=B5=AC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 8 ++-- .../demo/user/service/UserService.java | 8 ++-- .../friend/service/FriendShipServiceTest.java | 44 +++++++------------ 3 files changed, 24 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 70fc400..0352d97 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -54,11 +54,11 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep @Transactional public FriendShipResult create(Long inputedFriendId) throws AccessDeniedException { - Object[] user = userService.findUserInfo(); - Object[] friend = userService.findUserInfo(inputedFriendId); + String[] user = userService.findUserInfo(); + String [] friend = userService.findUserInfo(inputedFriendId); - PersonId myId = PersonId.create((Long) user[0]); - PersonId friendId = PersonId.create((Long) friend[0]); + PersonId myId = PersonId.create(Long.parseLong(user[0]) ); + PersonId friendId = PersonId.create(Long.parseLong(friend[0])); PersonName myName = PersonName.create((String) user[1]); PersonName friendName = PersonName.create((String) friend[1]); diff --git a/src/main/java/com/example/demo/user/service/UserService.java b/src/main/java/com/example/demo/user/service/UserService.java index 2c8ac3d..04a2a72 100644 --- a/src/main/java/com/example/demo/user/service/UserService.java +++ b/src/main/java/com/example/demo/user/service/UserService.java @@ -34,14 +34,14 @@ public void login(LoginRequest loginRequest) { } - public Object[] findUserInfo() throws AccessDeniedException { + public String[] findUserInfo() throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); - return new Object[]{user.getId(), user.getUserBasicInfo().getUsername()}; + return new String[]{String.valueOf(user.getId()), user.getUserBasicInfo().getUsername()}; } - public Object[] findUserInfo(Long id) throws AccessDeniedException { + public String[] findUserInfo(Long id) throws AccessDeniedException { User user = userRepository.findUserById(id); - return new Object[]{user.getId(), + return new String[]{String.valueOf(user.getId()), user.getUserBasicInfo().getUsername()}; } } diff --git a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java index 243945a..8d91b2b 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java @@ -6,6 +6,7 @@ import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; +import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -23,11 +24,6 @@ @ExtendWith(MockitoExtension.class) class FriendShipServiceTest { - @Mock - FeedRepository feedRepository; - - @Mock - UserRepository userRepository; @Mock FriendShipRepository friendShipRepository; @@ -35,46 +31,38 @@ class FriendShipServiceTest { @Mock UserSessionService userSessionService; - User user; - PersonId personId; - Friendee friendee; - Friender friender; + @Mock + UserService userService; + @DisplayName("친구관계 맺기 테스트 1. 처음 신청") @Test void createFriendShip() throws AccessDeniedException { + FriendShipService friendShipService = new FriendShipService(friendShipRepository, - userRepository, - userSessionService); + userSessionService, userService); //given - PersonName myName = PersonName.create("jihwan"); - Password myPassword = Password.create("1234"); - - Friender me = Friender.create(PersonId.create(1L), myName); - - PersonName friendName = PersonName.create("jihwan"); - Password friendPassword = Password.create("1234"); + String[] friender = { "1", "jihwan"}; + String [] friendee = { "2", "friendee"}; - when(userSessionService.getLoggeddUser()) - .thenReturn(null); - when(userRepository.findUserById(anyLong())) - .thenReturn(null); + //when + when(userService.findUserInfo()) + .thenReturn(friender); - when(PersonId.create(anyLong())) - .thenReturn(null); + when(userService.findUserInfo(any())) + .thenReturn(friendee); - when(friendShipService.creat) + FriendShipResult result = friendShipService.create(1L); - //when - FriendShipResult result = friendShipService.create(any()); + System.out.println(result); //then - assertEquals(FriendShipResult.SUCCESS, result); + assertEquals(FriendShipResult.TRY_TO_MAKE_FRIENDSHIP, result); } From de1fb9f0cd27bdd4f839652341860445bf3c6115 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 13 Apr 2021 23:46:56 +0900 Subject: [PATCH 063/153] =?UTF-8?q?*=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=9D=BC=EB=B6=80=20=EC=BD=94=EB=93=9C=20=EC=9C=84=EC=B9=98=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/friend/service/FriendShipServiceTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java index 8d91b2b..a3f2ee9 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java @@ -48,7 +48,6 @@ void createFriendShip() throws AccessDeniedException { String[] friender = { "1", "jihwan"}; String [] friendee = { "2", "friendee"}; - //when when(userService.findUserInfo()) .thenReturn(friender); @@ -57,11 +56,13 @@ void createFriendShip() throws AccessDeniedException { .thenReturn(friendee); - FriendShipResult result = friendShipService.create(1L); - System.out.println(result); + + //then + FriendShipResult result = friendShipService.create(1L); + System.out.println(result); assertEquals(FriendShipResult.TRY_TO_MAKE_FRIENDSHIP, result); } From a78a3dcaca0ac31f644c56d7292c841d5141b5fe Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 00:14:12 +0900 Subject: [PATCH 064/153] =?UTF-8?q?*=20CRUD=20=EA=B0=81=EA=B0=81=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=ED=95=B4=EB=B3=B4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...iceTest.java => FriendShipCreateTest.java} | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) rename src/test/java/com/example/demo/friend/service/{FriendShipServiceTest.java => FriendShipCreateTest.java} (65%) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java similarity index 65% rename from src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java rename to src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java index a3f2ee9..a668543 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipServiceTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java @@ -22,7 +22,7 @@ @ExtendWith(MockitoExtension.class) -class FriendShipServiceTest { +class FriendShipCreateTest { @Mock @@ -57,6 +57,39 @@ void createFriendShip() throws AccessDeniedException { + //then + FriendShipResult result = friendShipService.create(1L); + System.out.println(result); + assertEquals(FriendShipResult.TRY_TO_MAKE_FRIENDSHIP, result); + + } + + @DisplayName("친구관계 맺기 테스트 2. 이미 신청 또는 수락된 경우 ") + @Test + void testForAlreadyAccept() throws AccessDeniedException { + + FriendShipService friendShipService + = new FriendShipService(friendShipRepository, + userSessionService, userService); + + //given + + String[] friender = { "1", "jihwan"}; + String [] friendee = { "2", "friendee"}; + + Friender friender1 = Friender.create(PersonId.create(1L), ) + + Friendee friendee1; + + //when + when(userService.findUserInfo()) + .thenReturn(friender); + + when(userService.findUserInfo(any())) + .thenReturn(friendee); + + + From 10b48818e50a7ffa746a491d209a574529e9490c Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 00:23:00 +0900 Subject: [PATCH 065/153] =?UTF-8?q?*=20Create=20=EC=A4=91=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=20=EC=9A=94=EC=B2=AD=20=EB=98=90=EB=8A=94=20=EC=88=98?= =?UTF-8?q?=EB=9D=BD=EB=90=9C=20=EA=B2=BD=EC=9A=B0=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipCreateTest.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java index a668543..bba214c 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java @@ -77,9 +77,25 @@ void testForAlreadyAccept() throws AccessDeniedException { String[] friender = { "1", "jihwan"}; String [] friendee = { "2", "friendee"}; - Friender friender1 = Friender.create(PersonId.create(1L), ) + PersonId myId = PersonId.create(Long.parseLong(friender[0]) ); + PersonId friendId = PersonId.create(Long.parseLong(friendee[0])); + + PersonName myName = PersonName.create((String) friender[1]); + PersonName friendName = PersonName.create((String) friendee[1]); + + Friender frienderMe = Friender.create(myId, myName); + Friendee friendeeYou = Friendee.create(friendId, friendName); + + Friender frienderYou = Friender.create(friendId, friendName); + Friendee friendeeMe = Friendee.create(myId, myName); + + Friendship forwardFriendShip + = Friendship.create(frienderMe, friendeeYou); + forwardFriendShip.acceptFriendShip(); + + Friendship backwardFriendShip + = Friendship.create(frienderYou, friendeeMe); - Friendee friendee1; //when when(userService.findUserInfo()) @@ -88,15 +104,19 @@ void testForAlreadyAccept() throws AccessDeniedException { when(userService.findUserInfo(any())) .thenReturn(friendee); - - + when(friendShipRepository + .findFriendshipByFrienderAndFriendee_FriendeeId( + any(), any() + )).thenReturn(forwardFriendShip) + .thenReturn(forwardFriendShip) + .thenReturn(backwardFriendShip); //then FriendShipResult result = friendShipService.create(1L); System.out.println(result); - assertEquals(FriendShipResult.TRY_TO_MAKE_FRIENDSHIP, result); + assertEquals(FriendShipResult.ALREADY_ACCEPT, result); } From f668332def8b012ba7774324b29ea05a5e9cd20d Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 00:30:25 +0900 Subject: [PATCH 066/153] =?UTF-8?q?*=20Create=20=EC=A4=91=20=EC=88=98?= =?UTF-8?q?=EB=9D=BD=ED=95=98=EB=8A=94=20=EA=B2=BD=EC=9A=B0=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipCreateTest.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java index bba214c..6eba589 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java @@ -120,5 +120,61 @@ void testForAlreadyAccept() throws AccessDeniedException { } + @DisplayName("친구관계 맺기 테스트 2. 이미 신청 또는 수락된 경우 ") + @Test + void testForAccept() throws AccessDeniedException { + + FriendShipService friendShipService + = new FriendShipService(friendShipRepository, + userSessionService, userService); + + //given + + String[] friender = { "1", "jihwan"}; + String [] friendee = { "2", "friendee"}; + + PersonId myId = PersonId.create(Long.parseLong(friender[0]) ); + PersonId friendId = PersonId.create(Long.parseLong(friendee[0])); + + PersonName myName = PersonName.create((String) friender[1]); + PersonName friendName = PersonName.create((String) friendee[1]); + + Friender frienderMe = Friender.create(myId, myName); + Friendee friendeeYou = Friendee.create(friendId, friendName); + + Friender frienderYou = Friender.create(friendId, friendName); + Friendee friendeeMe = Friendee.create(myId, myName); + + Friendship forwardFriendShip + = Friendship.create(frienderMe, friendeeYou); + + Friendship backwardFriendShip + = Friendship.create(frienderYou, friendeeMe); + backwardFriendShip.acceptFriendShip(); + + + //when + when(userService.findUserInfo()) + .thenReturn(friender); + + when(userService.findUserInfo(any())) + .thenReturn(friendee); + + when(friendShipRepository + .findFriendshipByFrienderAndFriendee_FriendeeId( + any(), any() + )).thenReturn(forwardFriendShip) + .thenReturn(forwardFriendShip) + .thenReturn(backwardFriendShip); + + + + //then + FriendShipResult result = friendShipService.create(1L); + System.out.println(result); + assertEquals(FriendShipResult.SUCCESS, result); + + } + } \ No newline at end of file From d95123236b7ad6e78869e0a815ed4a00f8c216e0 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 00:31:04 +0900 Subject: [PATCH 067/153] =?UTF-8?q?*=20=EC=98=A4=ED=83=80=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipCreateTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java index 6eba589..bff9ab3 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java @@ -120,7 +120,7 @@ void testForAlreadyAccept() throws AccessDeniedException { } - @DisplayName("친구관계 맺기 테스트 2. 이미 신청 또는 수락된 경우 ") + @DisplayName("친구관계 맺기 테스트 3. 요청 수락 ") @Test void testForAccept() throws AccessDeniedException { From 5581d21f3cb262ee17cf0ea87b5938871ab61721 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 23:30:17 +0900 Subject: [PATCH 068/153] =?UTF-8?q?*userService=20=EB=A1=9C=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EC=B0=BE=EB=8F=84=EB=A1=9D=20=EC=97=AD=ED=95=A0=20?= =?UTF-8?q?=EC=9C=84=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 0352d97..16e6789 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -136,8 +136,8 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen public ListfindRequestForMe(int page, int size) throws AccessDeniedException { - User user = userSessionService.getLoggeddUser(); - PersonId myId = PersonId.create(user.getId()); + + PersonId myId = PersonId.create(Long.parseLong(userService.findUserInfo()[0])); List friendshipList = friendShipRepository.findAllByFriendee_FriendeeId(myId, PageRequest.of(page, size)) .stream() From 22d62dd90c3708af1addcc32a8051777373646ca Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 23:30:35 +0900 Subject: [PATCH 069/153] =?UTF-8?q?*=EC=B9=9C=EA=B5=AC=EA=B4=80=EA=B3=84?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipDeleteTest.java | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java diff --git a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java new file mode 100644 index 0000000..1a8f4b0 --- /dev/null +++ b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java @@ -0,0 +1,86 @@ +package com.example.demo.friend.service; + + +import com.example.demo.friend.domain.*; +import com.example.demo.user.service.UserService; +import com.example.demo.user.service.UserSessionService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.AccessDeniedException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class FriendShipDeleteTest { + + @Mock + FriendShipRepository friendShipRepository; + + @Mock + UserSessionService userSessionService; + + @Mock + UserService userService; + + @DisplayName("친구관계 삭제 테스트 3. 요청 수락 ") + @Test + void testForAccept() throws AccessDeniedException { + + FriendShipService friendShipService + = new FriendShipService(friendShipRepository, + userSessionService, userService); + + //given + + String[] friender = { "1", "jihwan"}; + String [] friendee = { "2", "friendee"}; + + PersonId myId = PersonId.create(Long.parseLong(friender[0]) ); + PersonId friendId = PersonId.create(Long.parseLong(friendee[0])); + + PersonName myName = PersonName.create((String) friender[1]); + PersonName friendName = PersonName.create((String) friendee[1]); + + Friender frienderMe = Friender.create(myId, myName); + Friendee friendeeYou = Friendee.create(friendId, friendName); + + Friender frienderYou = Friender.create(friendId, friendName); + Friendee friendeeMe = Friendee.create(myId, myName); + + Friendship forwardFriendShip + = Friendship.create(frienderMe, friendeeYou); + + Friendship backwardFriendShip + = Friendship.create(frienderYou, friendeeMe); + backwardFriendShip.acceptFriendShip(); + + + //when + when(userService.findUserInfo()) + .thenReturn(friender); + + when(userService.findUserInfo(any())) + .thenReturn(friendee); + + when(friendShipRepository + .findFriendshipByFrienderAndFriendee_FriendeeId( + any(), any() + )).thenReturn(forwardFriendShip) + .thenReturn(forwardFriendShip) + .thenReturn(backwardFriendShip); + + + + //then + FriendShipResult result = friendShipService.create(1L); + System.out.println(result); + assertEquals(FriendShipResult.SUCCESS, result); + + } +} From 5f6843a3169814c9d300e30f3fad7aa64fed7452 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 23:35:36 +0900 Subject: [PATCH 070/153] =?UTF-8?q?*=EC=9E=98=EB=AA=BB=EB=90=9C=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 16e6789..b88d069 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -111,8 +111,8 @@ public Friendship createFriendship(Friender friender, Friendee friendee) { public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDeniedException { - Object[] userInfo = userService.findUserInfo(); - PersonId myId = PersonId.create((Long) userInfo[0]); + String[] userInfo = userService.findUserInfo(); + PersonId myId = PersonId.create(Long.parseLong(userInfo[0])); PersonName myName = PersonName.create((String) userInfo[1]); Friender myInfo = Friender.create(myId, myName); From 47a28b2671544192d35aa8d3812ee8488d30e4ff Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 23:36:35 +0900 Subject: [PATCH 071/153] =?UTF-8?q?*=EC=82=AD=EC=A0=9C=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipDeleteTest.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java index 1a8f4b0..4e44908 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java @@ -28,7 +28,35 @@ public class FriendShipDeleteTest { @Mock UserService userService; - @DisplayName("친구관계 삭제 테스트 3. 요청 수락 ") + @DisplayName("친구관계 삭제 테스트 1. 친구 관계가 없는 경우 ") + @Test + void testForDeleteFail() throws AccessDeniedException { + + FriendShipService friendShipService + = new FriendShipService(friendShipRepository, + userSessionService, userService); + + //given + + String[] friender = { "1", "jihwan"}; + String [] friendee = { "2", "friendee"}; + + + //when + when(userService.findUserInfo()) + .thenReturn(friender); + + + //then + FriendShipResult result = friendShipService.deleteFriendShipRequest(1L); + System.out.println(result); + assertEquals(FriendShipResult.NEVER_REQUESTED, result); + + } + + + + @DisplayName("친구관계 삭제 테스트 1. 친구 관계 삭제 ") @Test void testForAccept() throws AccessDeniedException { From ef9faca4cf2a2b054525ba1843fa4ad3c50024b3 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 23:40:28 +0900 Subject: [PATCH 072/153] =?UTF-8?q?*=EC=82=AD=EC=A0=9C=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipDeleteTest.java | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java index 4e44908..25cb9d7 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java @@ -54,9 +54,9 @@ void testForDeleteFail() throws AccessDeniedException { } - - @DisplayName("친구관계 삭제 테스트 1. 친구 관계 삭제 ") + + @DisplayName("친구관계 삭제 테스트 2. 친구 관계 삭제 ") @Test void testForAccept() throws AccessDeniedException { @@ -72,43 +72,32 @@ void testForAccept() throws AccessDeniedException { PersonId myId = PersonId.create(Long.parseLong(friender[0]) ); PersonId friendId = PersonId.create(Long.parseLong(friendee[0])); - PersonName myName = PersonName.create((String) friender[1]); - PersonName friendName = PersonName.create((String) friendee[1]); + PersonName myName = PersonName.create( friender[1]); + PersonName friendName = PersonName.create(friendee[1]); Friender frienderMe = Friender.create(myId, myName); Friendee friendeeYou = Friendee.create(friendId, friendName); - Friender frienderYou = Friender.create(friendId, friendName); - Friendee friendeeMe = Friendee.create(myId, myName); Friendship forwardFriendShip = Friendship.create(frienderMe, friendeeYou); - - Friendship backwardFriendShip - = Friendship.create(frienderYou, friendeeMe); - backwardFriendShip.acceptFriendShip(); - + forwardFriendShip.acceptFriendShip(); //when when(userService.findUserInfo()) .thenReturn(friender); - when(userService.findUserInfo(any())) - .thenReturn(friendee); when(friendShipRepository .findFriendshipByFrienderAndFriendee_FriendeeId( any(), any() - )).thenReturn(forwardFriendShip) - .thenReturn(forwardFriendShip) - .thenReturn(backwardFriendShip); - + )).thenReturn(forwardFriendShip); //then - FriendShipResult result = friendShipService.create(1L); - System.out.println(result); - assertEquals(FriendShipResult.SUCCESS, result); + FriendShipResult result = friendShipService.deleteFriendShipRequest(1L); + System.out.println(forwardFriendShip.getFriendState()); + assertEquals(false, forwardFriendShip.getFriendState()); } } From 2b4b7ea6282da29f8ebde0c85755f0357899c56a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 23:46:51 +0900 Subject: [PATCH 073/153] =?UTF-8?q?*=EC=B9=9C=EA=B5=AC=20=EA=B4=80?= =?UTF-8?q?=EA=B3=84=20=EC=9E=98=EB=AA=BB=20=EA=B5=AC=ED=98=84=EB=90=9C=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=20=EC=97=B4=EA=B1=B0=ED=98=95=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/friend/domain/FriendShipState.java | 7 ++++++ .../friend/service/FriendShipFindTest.java | 22 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/main/java/com/example/demo/friend/domain/FriendShipState.java create mode 100644 src/test/java/com/example/demo/friend/service/FriendShipFindTest.java diff --git a/src/main/java/com/example/demo/friend/domain/FriendShipState.java b/src/main/java/com/example/demo/friend/domain/FriendShipState.java new file mode 100644 index 0000000..cd8b5cc --- /dev/null +++ b/src/main/java/com/example/demo/friend/domain/FriendShipState.java @@ -0,0 +1,7 @@ +package com.example.demo.friend.domain; + +public enum FriendShipState { + REQUEST, + REQUESTED, + ACCEPT, +} diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java new file mode 100644 index 0000000..86243ea --- /dev/null +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -0,0 +1,22 @@ +package com.example.demo.friend.service; + + +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.user.service.UserService; +import com.example.demo.user.service.UserSessionService; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +public class FriendShipFindTest { + + @Mock + FriendShipRepository friendShipRepository; + + @Mock + UserSessionService userSessionService; + + @Mock + UserService userService; +} From 5244f24e1d252f84d933a8be781fdb27db56e11c Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 14 Apr 2021 23:54:22 +0900 Subject: [PATCH 074/153] =?UTF-8?q?*=20=EC=B9=9C=EA=B5=AC=EA=B4=80?= =?UTF-8?q?=EA=B3=84=20=ED=91=9C=ED=98=84=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=97=B4=EA=B1=B0=ED=98=95=20=EC=83=9D=EC=84=B1=20=ED=9B=84,?= =?UTF-8?q?=20=20=20=EC=9D=B4=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/friend/domain/FriendShipState.java | 1 + .../example/demo/friend/domain/Friendship.java | 12 ++++++++---- .../demo/friend/service/FriendShipService.java | 16 +++++++++------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/FriendShipState.java b/src/main/java/com/example/demo/friend/domain/FriendShipState.java index cd8b5cc..6882eba 100644 --- a/src/main/java/com/example/demo/friend/domain/FriendShipState.java +++ b/src/main/java/com/example/demo/friend/domain/FriendShipState.java @@ -4,4 +4,5 @@ public enum FriendShipState { REQUEST, REQUESTED, ACCEPT, + DELETED } diff --git a/src/main/java/com/example/demo/friend/domain/Friendship.java b/src/main/java/com/example/demo/friend/domain/Friendship.java index 81b48ec..bbc9a69 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendship.java +++ b/src/main/java/com/example/demo/friend/domain/Friendship.java @@ -24,12 +24,12 @@ public class Friendship { private Friendee friendee; @Column(name = "friend_state") - private Boolean friendState; + private FriendShipState friendState; private Friendship(Friender friender, Friendee friendee){ this.friender = friender; this.friendee = friendee; - this.friendState = false; + this.friendState = FriendShipState.REQUESTED; } public static Friendship create(Friender user, Friendee friend) { @@ -41,10 +41,14 @@ public Long getFriendeeId(){ } public void acceptFriendShip() { - this.friendState = true; + this.friendState = FriendShipState.ACCEPT; + } + + public void requestFriendShip(){ + this.friendState = FriendShipState.REQUEST; } public void deleteFriendShip() { - this.friendState = false; + this.friendState = FriendShipState.DELETED; } } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index b88d069..cb241a5 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -41,7 +41,7 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep = friendShipRepository .findAllByFriender(friender, PageRequest.of(page, size)) .stream() - .filter(Friendship::getFriendState) + .filter(friendship -> friendship.getFriendState()==FriendShipState.ACCEPT) .map(Friendship::getFriendee) .map(this::toFriendDto) .collect(Collectors.toList()); @@ -60,8 +60,8 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio PersonId myId = PersonId.create(Long.parseLong(user[0]) ); PersonId friendId = PersonId.create(Long.parseLong(friend[0])); - PersonName myName = PersonName.create((String) user[1]); - PersonName friendName = PersonName.create((String) friend[1]); + PersonName myName = PersonName.create(user[1]); + PersonName friendName = PersonName.create( friend[1]); Friender frienderMe = Friender.create(myId, myName); Friendee friendeeYou = Friendee.create(friendId, friendName); @@ -73,7 +73,7 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(frienderMe, friendId))==null){ Friendship forwardFriendShip = createFriendship(frienderMe, friendeeYou); - forwardFriendShip.acceptFriendShip(); + forwardFriendShip.requestFriendShip(); Friendship backwardFriendShip = createFriendship(frienderYou, friendeeMe); @@ -90,9 +90,11 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio Friendship backwardFriendShip = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(frienderYou, myId); - if (forwardFriendShip.getFriendState()){ + if (forwardFriendShip.getFriendState()==FriendShipState.ACCEPT + || forwardFriendShip.getFriendState()==FriendShipState.REQUEST){ return FriendShipResult.ALREADY_ACCEPT; - }else if (!forwardFriendShip.getFriendState() && backwardFriendShip.getFriendState()){ + }else if (forwardFriendShip.getFriendState()==FriendShipState.REQUESTED + && backwardFriendShip.getFriendState()==FriendShipState.REQUEST){ forwardFriendShip.acceptFriendShip(); return FriendShipResult.SUCCESS; }else { @@ -141,7 +143,7 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen List friendshipList = friendShipRepository.findAllByFriendee_FriendeeId(myId, PageRequest.of(page, size)) .stream() - .filter(Friendship::getFriendState) + .filter(friendship -> friendship.getFriendState()==FriendShipState.REQUEST) .map(Friendship::getFriender) .map(this::toFriendDto) .collect(Collectors.toList()); From 6f18cc1026fcc34ae66790be757bc338eb6f4ae7 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 00:08:47 +0900 Subject: [PATCH 075/153] =?UTF-8?q?*=20=EC=B9=9C=EA=B5=AC=EA=B4=80?= =?UTF-8?q?=EA=B3=84=20=ED=91=9C=ED=98=84=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=97=B4=EA=B1=B0=ED=98=95=20=EC=83=9D=EC=84=B1=20=ED=9B=84,?= =?UTF-8?q?=20=20=20=EC=9D=B4=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/friend/controller/FriendShipController.java | 3 +++ .../com/example/demo/friend/service/FriendShipService.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/com/example/demo/friend/controller/FriendShipController.java b/src/main/java/com/example/demo/friend/controller/FriendShipController.java index ec186fb..9f167f9 100644 --- a/src/main/java/com/example/demo/friend/controller/FriendShipController.java +++ b/src/main/java/com/example/demo/friend/controller/FriendShipController.java @@ -23,6 +23,9 @@ public class FriendShipController { // request query로 받는 값들 public List getMyFriends(@RequestParam(value="page") int page, @RequestParam(value = "size") int size) throws AccessDeniedException { + if (page<0 || size<0){ + ResponseEntity.status(HttpStatus.BAD_REQUEST); + } return friendShipService.getMyFriends(page, size); } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index cb241a5..04b8279 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -7,6 +7,7 @@ import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.transaction.Transactional; @@ -37,6 +38,7 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep Friender friender = Friender.create(userId, userName); + List friendshipList = friendShipRepository .findAllByFriender(friender, PageRequest.of(page, size)) From 67ea0bdedc399e4bd06ed0c9cc03b0a9a11ab79d Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 00:21:11 +0900 Subject: [PATCH 076/153] =?UTF-8?q?*=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9D=BC=EB=8B=A8=20=ED=8C=A8=EC=8A=A4=20?= =?UTF-8?q?..=20=EB=82=98=EC=A4=91=EC=97=90=20=EB=8B=A4=EC=8B=9C=20?= =?UTF-8?q?=EC=8B=9C=EB=8F=84=ED=95=A0=20=EA=B2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 6 +- .../friend/service/FriendShipFindTest.java | 64 ++++++++++++++++++- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 04b8279..68f41a4 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -31,9 +31,9 @@ public class FriendShipService { @Transactional public List getMyFriends(int page, int size) throws AccessDeniedException { - Object[] userInfo = userService.findUserInfo(); - PersonId userId = PersonId.create((Long)userInfo[0]); - PersonName userName = PersonName.create((String)userInfo[1]); + String[] userInfo = userService.findUserInfo(); + PersonId userId = PersonId.create(Long.parseLong(userInfo[0])); + PersonName userName = PersonName.create(userInfo[1]); Friender friender = Friender.create(userId, userName); diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 86243ea..9c60e2e 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -1,13 +1,22 @@ package com.example.demo.friend.service; -import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.*; import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.nio.file.AccessDeniedException; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + @ExtendWith(MockitoExtension.class) public class FriendShipFindTest { @@ -19,4 +28,57 @@ public class FriendShipFindTest { @Mock UserService userService; + + @DisplayName("친구관계 찾기 테스트 ") + @Test + void testForAccept() throws AccessDeniedException { + + FriendShipService friendShipService + = new FriendShipService(friendShipRepository, + userSessionService, userService); + + //given + + String[] friender1Info = { "1", "friender1"}; + String [] friender2Info = { "2", "friender2"}; + String [] friendee1Info = {"3", "friendee1"}; + String [] friendee2Info = {"4", "friendee2"}; + + PersonId friender1Id = PersonId.create(Long.parseLong(friender1Info[0]) ); + PersonId friender2Id = PersonId.create(Long.parseLong(friender2Info[0])); + PersonId friendee1Id = PersonId.create(Long.parseLong(friendee1Info[0])); + PersonId friendee2Id = PersonId.create(Long.parseLong(friendee2Info[0])); + + PersonName friender1Name = PersonName.create( friender1Info[1]); + PersonName friender2Name = PersonName.create(friender2Info[1]); + PersonName friendee1Name = PersonName.create(friendee1Info[1]); + PersonName friendee2Name = PersonName.create(friendee2Info[1]); + + Friender friender1 = Friender.create(friender1Id, friender1Name); + Friender friender2 = Friender.create(friender2Id, friender2Name); + + Friendee friendee1 = Friendee.create(friendee1Id, friendee1Name); + Friendee friendee2 = Friendee.create(friendee2Id, friendee2Name); + + Friendship friendship1 = Friendship.create(friender1, friendee1); + Friendship friendship2 = Friendship.create(friender2, friendee1); + + friendShipRepository.save(friendship1); + friendShipRepository.save(friendship2); + + when(userService.findUserInfo()) + .thenReturn(friendee1Info); + + + + //when + + + + //then + List friendList = friendShipService.getMyFriends(0, 2); + System.out.println(friendList.toString()); + + } + } From 217fb6ba7bb22c4f5121f9c2ede4710e4dcfec49 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 00:37:38 +0900 Subject: [PATCH 077/153] =?UTF-8?q?*=20=EC=82=AD=EC=A0=9C=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=EB=B0=98=ED=99=98=20=EA=B0=92=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/domain/RequestResult.java | 9 ++++++ .../demo/feed/service/FeedService.java | 30 +++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/example/demo/feed/domain/RequestResult.java diff --git a/src/main/java/com/example/demo/feed/domain/RequestResult.java b/src/main/java/com/example/demo/feed/domain/RequestResult.java new file mode 100644 index 0000000..b58e4c5 --- /dev/null +++ b/src/main/java/com/example/demo/feed/domain/RequestResult.java @@ -0,0 +1,9 @@ +package com.example.demo.feed.domain; + +public enum RequestResult { + BAD_REQUEST, + UNAUTHORIZED, + FORBIDDEN, + OK + +} diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index c80552c..e798819 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -2,11 +2,21 @@ import com.example.demo.feed.domain.*; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.FriendShipState; +import com.example.demo.friend.domain.Friendship; +import com.example.demo.friend.domain.PersonId; import com.example.demo.user.domain.User; +import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.HttpClientErrorException; + +import java.net.http.HttpResponse; import java.nio.file.AccessDeniedException; @Service @@ -14,12 +24,28 @@ public class FeedService { private final FeedRepository feedRepository; private final UserSessionService userSessionService; - + private final FriendShipRepository friendShipRepository; + private final UserService userService; @Transactional - public void deleteFeedByFeedId(Long id) { + public RequestResult deleteFeedByFeedId(Long id) throws AccessDeniedException { Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); + PersonId myId = PersonId.create(Long.parseLong(userService.findUserInfo()[0])); + PersonId friendId = PersonId.create(feed.getId()); + Friendship friendship; + + if ((friendship=friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId(myId, friendId))==null){ + return RequestResult.BAD_REQUEST; + } + + if (myId.getId().equals(friendId.getId())){ + + }else if (friendship.getFriendState()!= FriendShipState.ACCEPT){ + return RequestResult.UNAUTHORIZED; + } + feed.delete(); + return RequestResult.OK; } From d635104cb1dc93c77d2004ccb9083719e4b0a8fe Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 00:40:04 +0900 Subject: [PATCH 078/153] =?UTF-8?q?*=20Controller=20=EC=B8=B5=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=82=AD=EC=A0=9C=EC=9A=94=EC=B2=AD=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=EA=B2=B0=EA=B3=BC=20=EA=B0=92=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=EC=9D=91=EB=8B=B5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/FeedController.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/feed/controller/FeedController.java b/src/main/java/com/example/demo/feed/controller/FeedController.java index ccee030..3c0a61c 100644 --- a/src/main/java/com/example/demo/feed/controller/FeedController.java +++ b/src/main/java/com/example/demo/feed/controller/FeedController.java @@ -2,9 +2,12 @@ import com.example.demo.feed.domain.Feed; +import com.example.demo.feed.domain.RequestResult; import com.example.demo.feed.service.FeedService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.web.bind.annotation.*; @@ -35,8 +38,22 @@ public void makeFeed(@RequestBody String contents) throws AccessDeniedException } @DeleteMapping("/feeds/{feedId}") - public void deleteFeedByFeedId(@PathVariable Long feedId){ - feedService.deleteFeedByFeedId(feedId); + public void deleteFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { + RequestResult result = feedService.deleteFeedByFeedId(feedId); + + switch (result){ + case OK: + ResponseEntity.ok(); + break; + case BAD_REQUEST: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + break; + case FORBIDDEN: + ResponseEntity.status(HttpStatus.FORBIDDEN); + break; + case UNAUTHORIZED: + ResponseEntity.status(HttpStatus.UNAUTHORIZED); + } } From 432c4fc9f68403dc68b1f158cf88a1343e332133 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:14:55 +0900 Subject: [PATCH 079/153] =?UTF-8?q?*=20Feed=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EA=B0=92=20=EC=84=A4=EC=A0=95=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20-=20=EC=A2=80=20=EB=B6=88=EC=95=88=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/FeedController.java | 38 ++++++++++-- .../demo/feed/service/FeedService.java | 62 +++++++++++++++---- 2 files changed, 83 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/example/demo/feed/controller/FeedController.java b/src/main/java/com/example/demo/feed/controller/FeedController.java index 3c0a61c..c2d7da5 100644 --- a/src/main/java/com/example/demo/feed/controller/FeedController.java +++ b/src/main/java/com/example/demo/feed/controller/FeedController.java @@ -3,6 +3,7 @@ import com.example.demo.feed.domain.Feed; import com.example.demo.feed.domain.RequestResult; +import com.example.demo.feed.service.FeedDto; import com.example.demo.feed.service.FeedService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; @@ -24,16 +25,41 @@ public class FeedController { private final FeedService feedService; - @PreAuthorize("hasRole('ROLE_ADMIN')") @GetMapping("/feeds/{feedId}") - public Feed findFeedDetailByFeedId(@PathVariable Long feedId){ - return feedService.findFeedDetailByFeedId(feedId); + public Object findFeedDetailByFeedId(@PathVariable Long feedId) throws AccessDeniedException { + Object result = feedService.findFeedDetailByFeedId(feedId); + if (result instanceof FeedDto){ + ResponseEntity.ok(); + return result; + }else { + switch ((RequestResult)result){ + case BAD_REQUEST: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + break; + case UNAUTHORIZED: + ResponseEntity.status(HttpStatus.UNAUTHORIZED); + break; + } + return result; + } } - @PreAuthorize("hasRole('ROLE_ADMIN')") + @PostMapping("/feeds") - public void makeFeed(@RequestBody String contents) throws AccessDeniedException { - feedService.makeFeedByContents(contents); + public Object makeFeed(@RequestBody String contents) throws AccessDeniedException { + Object result = feedService.makeFeedByContents(contents); + + if (result instanceof FeedDto){ + ResponseEntity.ok(); + return result; + }else { + switch ((RequestResult)result){ + case BAD_REQUEST: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + break; + } + return result; + } } diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index e798819..4e64785 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -10,14 +10,11 @@ import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; + import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.client.HttpClientErrorException; - -import java.net.http.HttpResponse; import java.nio.file.AccessDeniedException; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -49,26 +46,69 @@ public RequestResult deleteFeedByFeedId(Long id) throws AccessDeniedException { } - public Feed findFeedDetailByFeedId(Long id) { + public Object findFeedDetailByFeedId(Long id) throws AccessDeniedException { Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); - return feed; + PersonId myId = PersonId.create(Long.parseLong(userService.findUserInfo()[0])); + PersonId friendId = PersonId.create(feed.getId()); + Friendship friendship; + + if ((friendship=friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId(myId, friendId))==null){ + return RequestResult.BAD_REQUEST; + } + if (myId.getId().equals(friendId.getId())){ + + }else if (friendship.getFriendState()!= FriendShipState.ACCEPT){ + return RequestResult.UNAUTHORIZED; + } + + FeedDto feedDto = toFriendDto(feed); + return feedDto; + } + + private FeedDto toFriendDto(Feed feed) { + return new FeedDto( + feed.getId(), + feed.getWriter().getId(), + feed.getWriter().getName(), + feed.getContent().getContent(), + feed.getComments().stream() + .map(this::toCommentDto).collect(Collectors.toList()), + feed.getPreferenceCountInfo().getPreference(), + feed.getWrtTime() + ); + } + + private CommentDto toCommentDto(Comment comment){ + return new CommentDto( + comment.getId(), + comment.getWriter().getId(), + comment.getWriter().getName(), + comment.getContent(), + comment.getPreferenceCountInfo().getPreference(), + comment.getWrtTime() + ); + } + public Object makeFeedByContents(String insertedContent) throws AccessDeniedException { - public void makeFeedByContents(String InsertedContent) throws AccessDeniedException { + if (insertedContent.length()==0){ + return RequestResult.BAD_REQUEST; + } User user = userSessionService.getLoggeddUser(); WriterId id = WriterId.create(user.getId()); WriterName wrtName = WriterName.create(user.getUserBasicInfo().getUsername()); Writer writer = Writer.create(id, wrtName); - Content content = Content.create(InsertedContent); + Content content = Content.create(insertedContent); Feed feed = Feed.create(writer, content); + feedRepository.save(feed); + FeedDto feedDto = toFriendDto(feed); + return feedDto; - feedRepository.save(feed); - System.out.println("새로운 feed 생성 완료"); } From d960b7f95a4b8907bfe7d61e1e9d33977fa25df8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:24:03 +0900 Subject: [PATCH 080/153] =?UTF-8?q?*=20FriendShip=20=EC=B9=9C=EA=B5=AC=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EB=8A=94=20=EA=B2=83=20=20=20=EB=B0=98=ED=99=98=20=EA=B0=92=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/controller/FriendShipController.java | 16 ++++++++++++---- .../demo/friend/service/FriendShipService.java | 6 +++++- .../demo/friend/service/FriendShipFindTest.java | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/friend/controller/FriendShipController.java b/src/main/java/com/example/demo/friend/controller/FriendShipController.java index 9f167f9..5c9ba9d 100644 --- a/src/main/java/com/example/demo/friend/controller/FriendShipController.java +++ b/src/main/java/com/example/demo/friend/controller/FriendShipController.java @@ -21,12 +21,20 @@ public class FriendShipController { @GetMapping // request query로 받는 값들 - public List getMyFriends(@RequestParam(value="page") int page, + public Object getMyFriends(@RequestParam(value="page") int page, @RequestParam(value = "size") int size) throws AccessDeniedException { - if (page<0 || size<0){ - ResponseEntity.status(HttpStatus.BAD_REQUEST); + + Object result = friendShipService.getMyFriends(page, size); + + if (result instanceof FriendShipResult){ + switch ((FriendShipResult)result){ + case DENIED: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + } + }else { + ResponseEntity.ok(); } - return friendShipService.getMyFriends(page, size); + return result; } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 68f41a4..3393a71 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -30,7 +30,11 @@ public class FriendShipService { @Transactional - public List getMyFriends(int page, int size) throws AccessDeniedException { + public Object getMyFriends(int page, int size) throws AccessDeniedException { + if (page<0 || size<0){ + return FriendShipResult.DENIED; + } + String[] userInfo = userService.findUserInfo(); PersonId userId = PersonId.create(Long.parseLong(userInfo[0])); PersonName userName = PersonName.create(userInfo[1]); diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 9c60e2e..6d02df3 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -76,7 +76,7 @@ void testForAccept() throws AccessDeniedException { //then - List friendList = friendShipService.getMyFriends(0, 2); + System.out.println(friendList.toString()); } From 66c6eadc34086858020572cf341093708d0cfdc6 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:24:39 +0900 Subject: [PATCH 081/153] =?UTF-8?q?*=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EB=82=B4=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EB=B0=9C=EC=83=9D=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipFindTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 6d02df3..4995064 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -77,7 +77,7 @@ void testForAccept() throws AccessDeniedException { //then - System.out.println(friendList.toString()); + } From b07c92fb695464f0db96830b6e45b51c90e6ae5e Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:28:13 +0900 Subject: [PATCH 082/153] =?UTF-8?q?*=20=EC=B9=9C=EA=B5=AC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=EA=B8=B0=EB=8A=A5=20=20=EC=9D=91=EB=8B=B5=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/controller/FriendShipController.java | 9 ++++++++- .../demo/friend/service/FriendShipService.java | 15 +++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/friend/controller/FriendShipController.java b/src/main/java/com/example/demo/friend/controller/FriendShipController.java index 5c9ba9d..127d783 100644 --- a/src/main/java/com/example/demo/friend/controller/FriendShipController.java +++ b/src/main/java/com/example/demo/friend/controller/FriendShipController.java @@ -53,7 +53,14 @@ public void createFriendShip(@PathVariable Long friendId) throws AccessDeniedExc @DeleteMapping("/{friendId}") public void deleteFriendShip(@PathVariable Long friendId) throws AccessDeniedException { - friendShipService.deleteFriendShipRequest(friendId); + FriendShipResult result = friendShipService.deleteFriendShipRequest(friendId); + switch ((FriendShipResult)result){ + case NEVER_REQUESTED: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + break; + case SUCCESS: + ResponseEntity.ok(); + } } @GetMapping("/request") diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 3393a71..877ab3d 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -21,14 +21,9 @@ public class FriendShipService { private final FriendShipRepository friendShipRepository; - private final UserSessionService userSessionService; private final UserService userService; - - - - @Transactional public Object getMyFriends(int page, int size) throws AccessDeniedException { if (page<0 || size<0){ @@ -112,11 +107,6 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio - public Friendship createFriendship(Friender friender, Friendee friendee) { - - return Friendship.create(friender, friendee); - } - public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDeniedException { String[] userInfo = userService.findUserInfo(); @@ -157,6 +147,11 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen return friendshipList; } + public Friendship createFriendship(Friender friender, Friendee friendee) { + + return Friendship.create(friender, friendee); + } + private FriendDto toFriendDto(BasicInfo basicInfo) { return new FriendDto( basicInfo.getId(), From 26f8b4dd4518c858e4eef2a8ec632e65330f1886 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:31:32 +0900 Subject: [PATCH 083/153] =?UTF-8?q?*=20[=EB=82=B4=EA=B2=8C=20=EC=98=A8=20?= =?UTF-8?q?=EC=B9=9C=EA=B5=AC=EC=9A=94=EC=B2=AD=20=EC=B0=BE=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5]=20=EC=9D=98=20=20=20=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/controller/FriendShipController.java | 14 ++++++++++++-- .../demo/friend/service/FriendShipService.java | 5 ++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/friend/controller/FriendShipController.java b/src/main/java/com/example/demo/friend/controller/FriendShipController.java index 127d783..9385e45 100644 --- a/src/main/java/com/example/demo/friend/controller/FriendShipController.java +++ b/src/main/java/com/example/demo/friend/controller/FriendShipController.java @@ -64,8 +64,18 @@ public void deleteFriendShip(@PathVariable Long friendId) throws AccessDeniedExc } @GetMapping("/request") - public List findRequestToMe(@RequestParam(value="page") int page, + public Object findRequestToMe(@RequestParam(value="page") int page, @RequestParam(value = "size") int size) throws AccessDeniedException { - return friendShipService.findRequestForMe(page, size); + Object result = friendShipService.findRequestForMe(page, size); + + if (result instanceof FriendShipResult){ + switch ((FriendShipResult) result){ + case DENIED: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + } + }else { + ResponseEntity.ok(); + } + return result; } } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 877ab3d..2501f69 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -132,7 +132,10 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen - public ListfindRequestForMe(int page, int size) throws AccessDeniedException { + public Object findRequestForMe(int page, int size) throws AccessDeniedException { + if (page<0 || size<0){ + return FriendShipResult.DENIED; + } PersonId myId = PersonId.create(Long.parseLong(userService.findUserInfo()[0])); From b1a66d31b2cf84e4f65d16709810ddd1c96ab5a9 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:32:17 +0900 Subject: [PATCH 084/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipService.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 2501f69..3825526 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -1,13 +1,9 @@ package com.example.demo.friend.service; import com.example.demo.friend.domain.*; -import com.example.demo.user.domain.User; -import com.example.demo.user.domain.UserRepository; import com.example.demo.user.service.UserService; -import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.transaction.Transactional; From 151aefa82fee9c43baa4a57d0cbd3322a5e18028 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:41:54 +0900 Subject: [PATCH 085/153] =?UTF-8?q?*=20[=EB=82=B4=20=ED=83=80=EC=9E=84?= =?UTF-8?q?=EB=9D=BC=EC=9D=B8=20=EC=B0=BE=EA=B8=B0]=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TimeLineController.java | 28 +++++++++++++++++++ .../timeline/service/TimeLineFindResult.java | 6 ++++ .../timeline/service/TimeLineService.java | 17 +++++++---- 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/example/demo/timeline/service/TimeLineFindResult.java diff --git a/src/main/java/com/example/demo/timeline/controller/TimeLineController.java b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java index 6c9e580..ab5a3ea 100644 --- a/src/main/java/com/example/demo/timeline/controller/TimeLineController.java +++ b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java @@ -1,8 +1,36 @@ package com.example.demo.timeline.controller; +import com.example.demo.timeline.service.TimeLineFindResult; +import com.example.demo.timeline.service.TimeLineService; +import lombok.AllArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.nio.file.AccessDeniedException; @Controller +@AllArgsConstructor public class TimeLineController { + + private final TimeLineService timeLineService; + + @GetMapping("/feeds") + public Object findMyTimeLine(@RequestParam(value="page") int page, + @RequestParam(value = "size") int size) throws AccessDeniedException { + Object result = timeLineService.findMyTimeLine(page, size); + + if (result instanceof TimeLineFindResult){ + switch ((TimeLineFindResult)result){ + case BAD_REQUEST: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + } + }else { + ResponseEntity.ok(); + } + return result; + } } diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineFindResult.java b/src/main/java/com/example/demo/timeline/service/TimeLineFindResult.java new file mode 100644 index 0000000..6e518af --- /dev/null +++ b/src/main/java/com/example/demo/timeline/service/TimeLineFindResult.java @@ -0,0 +1,6 @@ +package com.example.demo.timeline.service; + +public enum TimeLineFindResult { + OK, + BAD_REQUEST +} diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 8d646c9..7deb83d 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -6,6 +6,7 @@ import com.example.demo.feed.service.FeedDto; import com.example.demo.friend.domain.*; import com.example.demo.user.domain.User; +import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; @@ -22,17 +23,23 @@ public class TimeLineService { private final FeedRepository feedRepository; - private final UserSessionService userSessionService; + private final UserService userService; - public List findMyTimeLine(int page, int pageSize) throws AccessDeniedException { + public Object findMyTimeLine(int page, int pageSize) throws AccessDeniedException { + if (page<0 || pageSize<0){ + return TimeLineFindResult.BAD_REQUEST; + } - User user = userSessionService.getLoggeddUser(); - Friender userInfo = createUserInfo(user); + String [] userInfo = userService.findUserInfo(); + PersonId myId = PersonId.create(Long.parseLong(userInfo[0])); + PersonName myName = PersonName.create(userInfo[1]); + Friender user = Friender.create(myId, myName); List writerList = friendShipRepository - .findAllByFriender(userInfo) + .findAllByFriender(user) .stream() + .filter(friendship -> friendship.getFriendState()==FriendShipState.ACCEPT) .map(Friendship::getFriendeeId) .map(WriterId::create) .collect(Collectors.toList()); From 41e69491d2f8217786dca2779fd275ddc9f624f5 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 01:43:54 +0900 Subject: [PATCH 086/153] =?UTF-8?q?*=20user=20=EC=A0=95=EB=B3=B4=20userser?= =?UTF-8?q?vice=EC=97=90=EC=84=9C=20=EC=B0=BE=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/feed/service/FeedService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 4e64785..3870f72 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -97,10 +97,10 @@ public Object makeFeedByContents(String insertedContent) throws AccessDeniedExce return RequestResult.BAD_REQUEST; } - User user = userSessionService.getLoggeddUser(); + String[] userInfo = userService.findUserInfo(); - WriterId id = WriterId.create(user.getId()); - WriterName wrtName = WriterName.create(user.getUserBasicInfo().getUsername()); + WriterId id = WriterId.create(Long.parseLong(userInfo[0])); + WriterName wrtName = WriterName.create(userInfo[1]); Writer writer = Writer.create(id, wrtName); Content content = Content.create(insertedContent); Feed feed = Feed.create(writer, content); From 20db8c55aaacb3741ab5965394515421c3b7ccf2 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 19:26:10 +0900 Subject: [PATCH 087/153] =?UTF-8?q?*=20[Comment=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0]=20=EC=9D=91=EB=8B=B5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feed/controller/CommentController.java | 20 +++++- .../demo/feed/service/CommentService.java | 62 ++++++++++++------- .../friend/service/FriendShipService.java | 1 + 3 files changed, 57 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/example/demo/feed/controller/CommentController.java b/src/main/java/com/example/demo/feed/controller/CommentController.java index 8091df2..72062b4 100644 --- a/src/main/java/com/example/demo/feed/controller/CommentController.java +++ b/src/main/java/com/example/demo/feed/controller/CommentController.java @@ -1,8 +1,12 @@ package com.example.demo.feed.controller; +import com.example.demo.feed.service.CommentDto; import com.example.demo.feed.service.CommentService; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.RequestEntity; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.nio.file.AccessDeniedException; @@ -16,8 +20,20 @@ public class CommentController { @PostMapping("/feed/{feedId}/comments") public void makeComment(@PathVariable Long feedId, - @RequestBody String contents) throws AccessDeniedException { - commentService.makeCommentByFeedIdAndContents(feedId, contents); + @RequestBody String contents) throws AccessDeniedException, IllegalAccessException { + + try { + CommentDto result = commentService.makeCommentByFeedIdAndContents(feedId, contents); + ResponseEntity.ok().body(result); + }catch (IllegalArgumentException e){ + ResponseEntity.status(HttpStatus.BAD_REQUEST); + + }catch (IllegalAccessException e){ + ResponseEntity.status(HttpStatus.UNAUTHORIZED); + + } + + } // @PostMapping("/feed/{feedId}/comments/{commentId}/like") diff --git a/src/main/java/com/example/demo/feed/service/CommentService.java b/src/main/java/com/example/demo/feed/service/CommentService.java index 041ed13..a55da38 100644 --- a/src/main/java/com/example/demo/feed/service/CommentService.java +++ b/src/main/java/com/example/demo/feed/service/CommentService.java @@ -2,9 +2,12 @@ import com.example.demo.feed.domain.*; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.PersonId; import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; +import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -19,26 +22,51 @@ public class CommentService { private final FeedRepository feedRepository; - - private final UserRepository userRepository; - private final UserSessionService userSessionService; + private final UserService userService; + private final FriendShipRepository friendShipRepository; @Transactional - public void makeCommentByFeedIdAndContents(Long feedId, String insertedContent) throws AccessDeniedException { -// Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + public CommentDto makeCommentByFeedIdAndContents(Long feedId, String insertedContent) throws AccessDeniedException, IllegalAccessException { + + if (insertedContent.length()==0 || feedId<1){ + throw new IllegalArgumentException(); + } + Feed feed = feedRepository.findFeedByIdAndDeleted(feedId, false); -// Username username = Username.create(authentication.getName()); - User user = userSessionService.getLoggeddUser(); + String[] userInfo = userService.findUserInfo(); + Long friendId = feed.getWriter().getId(); + + if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + PersonId.create(friendId), + PersonId.create(Long.parseLong(userInfo[0])) + )==null){ + throw new IllegalAccessException(); + } Content content = Content.create(insertedContent); - WriterId id = WriterId.create(user.getId()); - WriterName wrtName = WriterName.create(user.getUserBasicInfo().getUsername()); + WriterId id = WriterId.create(Long.parseLong(userInfo[0])); + WriterName wrtName = WriterName.create(userInfo[1]); Writer writer = Writer.create(id, wrtName); Comment comment = Comment.create(writer, content); feed.enrollComment(comment); + + CommentDto commentDto = toCommentDto(comment); + + return commentDto; + } + + private CommentDto toCommentDto(Comment comment) { + return new CommentDto( + comment.getId(), + comment.getWriter().getId(), + comment.getWriter().getName(), + comment.getContent(), + comment.getPreferenceCountInfo().getPreference(), + comment.getWrtTime() + ); } public Comment findCommentById(List commentList, Long commentId){ @@ -52,19 +80,5 @@ public Comment findCommentById(List commentList, Long commentId){ return result; } -// @Transactional -// public String likeOrDislikeCommentByFeedIdAndCommentId(Long feedId, int commentId) { -// Username username = Username.create("jihwan"); -// User user = userRepository.findByUserBasicInfo_Username(username); -// try { -// Feed feed = feedRepository.findFeedByIdAndDeleted(feedId, false); -// Comment comment = feed.getComment(commentId); -// if(comment.checkPossibleOfLike(user)){ -// comment.likeOrDislike(); -// } -// } catch (Exception e){ -// -// } -// return null; -// } + } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 3825526..d9699b0 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -93,6 +93,7 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio }else if (forwardFriendShip.getFriendState()==FriendShipState.REQUESTED && backwardFriendShip.getFriendState()==FriendShipState.REQUEST){ forwardFriendShip.acceptFriendShip(); + backwardFriendShip.acceptFriendShip(); return FriendShipResult.SUCCESS; }else { return FriendShipResult.DENIED; From 3a10eef7d0214a427ed19f72ce7426f888396572 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 19:26:49 +0900 Subject: [PATCH 088/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/controller/CommentController.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/example/demo/feed/controller/CommentController.java b/src/main/java/com/example/demo/feed/controller/CommentController.java index 72062b4..6d59285 100644 --- a/src/main/java/com/example/demo/feed/controller/CommentController.java +++ b/src/main/java/com/example/demo/feed/controller/CommentController.java @@ -36,10 +36,5 @@ public void makeComment(@PathVariable Long feedId, } -// @PostMapping("/feed/{feedId}/comments/{commentId}/like") -// public void likeOrDislikeCommentById(@PathVariable Long feedId, -// @PathVariable int commentId){ -// commentService.likeOrDislikeCommentByFeedIdAndCommentId(feedId, commentId); -// } } From d2762e0ce0f41e19ef99e7389b9517b9e7c3a4db Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 22:10:24 +0900 Subject: [PATCH 089/153] =?UTF-8?q?*=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EC=9A=B4=20=EB=A0=88=EC=9D=B4=EC=96=B4=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/security/service.java | 4 ---- .../example/demo/security/{ => service}/UserSessionUtils.java | 2 +- .../com/example/demo/user/service/UserSessionService.java | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 src/main/java/com/example/demo/security/service.java rename src/main/java/com/example/demo/security/{ => service}/UserSessionUtils.java (93%) diff --git a/src/main/java/com/example/demo/security/service.java b/src/main/java/com/example/demo/security/service.java deleted file mode 100644 index 1844591..0000000 --- a/src/main/java/com/example/demo/security/service.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.demo.security; - -public class service { -} diff --git a/src/main/java/com/example/demo/security/UserSessionUtils.java b/src/main/java/com/example/demo/security/service/UserSessionUtils.java similarity index 93% rename from src/main/java/com/example/demo/security/UserSessionUtils.java rename to src/main/java/com/example/demo/security/service/UserSessionUtils.java index 686b316..3d8ba65 100644 --- a/src/main/java/com/example/demo/security/UserSessionUtils.java +++ b/src/main/java/com/example/demo/security/service/UserSessionUtils.java @@ -1,4 +1,4 @@ -package com.example.demo.security; +package com.example.demo.security.service; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.SecurityUser; diff --git a/src/main/java/com/example/demo/user/service/UserSessionService.java b/src/main/java/com/example/demo/user/service/UserSessionService.java index 42c0a5c..c7ec2c3 100644 --- a/src/main/java/com/example/demo/user/service/UserSessionService.java +++ b/src/main/java/com/example/demo/user/service/UserSessionService.java @@ -1,7 +1,7 @@ package com.example.demo.user.service; -import com.example.demo.security.UserSessionUtils; +import com.example.demo.security.service.UserSessionUtils; import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import lombok.RequiredArgsConstructor; From c181c05743cdf2b096ac580aa1d42a1b9602f2d4 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 22:25:58 +0900 Subject: [PATCH 090/153] =?UTF-8?q?*=20=EC=8A=A4=ED=94=84=EB=A7=81=20?= =?UTF-8?q?=EC=8B=9C=ED=81=90=EB=A6=AC=ED=8B=B0=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20userDetails=20=EB=A5=BC=20?= =?UTF-8?q?=EB=B0=9B=EC=95=84=EC=98=A4=EA=B8=B0=20=EC=9C=84=ED=95=9C=20ser?= =?UTF-8?q?vice=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/WebSecurityConfig.java | 18 +++++++++++++++++- .../security/service/UserDetailsService.java | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/demo/security/service/UserDetailsService.java diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index 564d4f8..ce96016 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -2,23 +2,39 @@ import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; @Configuration @EnableWebSecurity @RequiredArgsConstructor public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + @Bean + public PasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + + @Override + protected void configure(AuthenticationManagerBuilder auth){ + auth.userDetailsService(); + } + protected void configure(HttpSecurity http) throws Exception { // super.configure(http); http .csrf().disable() .authorizeRequests() + .antMatchers("/account/**") + .permitAll() .anyRequest() - .permitAll(); + .authenticated(); } } diff --git a/src/main/java/com/example/demo/security/service/UserDetailsService.java b/src/main/java/com/example/demo/security/service/UserDetailsService.java new file mode 100644 index 0000000..b8cfc90 --- /dev/null +++ b/src/main/java/com/example/demo/security/service/UserDetailsService.java @@ -0,0 +1,18 @@ +package com.example.demo.security.service; + + +import com.example.demo.user.domain.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class UserDetailsService { + + private final UserRepository userRepository; + + @Override + public UserDetails loadUserByUsername(Username){ + return null; + } +} From 6cc8916993f62534633182b7bcf73b446fdf4567 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:00:35 +0900 Subject: [PATCH 091/153] =?UTF-8?q?*=20UserDetailsService=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20=EA=B7=B8=EC=97=90=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=EB=93=A4=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=A4=91=20(1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/WebSecurityConfig.java | 3 +++ .../security/service/UserDetailsService.java | 19 +++++++++++++++++-- .../demo/user/domain/UserRepository.java | 5 +++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index ce96016..180fb00 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -1,6 +1,7 @@ package com.example.demo.security.infrastructure; +import com.example.demo.security.service.UserDetailsService; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -16,6 +17,8 @@ @RequiredArgsConstructor public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + private final UserDetailsService userDetailsService; + @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); diff --git a/src/main/java/com/example/demo/security/service/UserDetailsService.java b/src/main/java/com/example/demo/security/service/UserDetailsService.java index b8cfc90..94af574 100644 --- a/src/main/java/com/example/demo/security/service/UserDetailsService.java +++ b/src/main/java/com/example/demo/security/service/UserDetailsService.java @@ -2,17 +2,32 @@ import com.example.demo.user.domain.UserRepository; +import com.example.demo.user.domain.Username; import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.SecurityUser; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Service; +import java.util.Optional; + @Service @RequiredArgsConstructor -public class UserDetailsService { +public class UserDetailsService implements org.springframework.security.core.userdetails.UserDetailsService { private final UserRepository userRepository; @Override - public UserDetails loadUserByUsername(Username){ + public UserDetails loadUserByUsername(String username){ + Username name = Username.create(username); + + Optional user1 = userRepository + .findUserByUserBasicInfo_Username(name) + .map(user -> new SecurityUser( + user.getId(), + user.getUserBasicInfo().getUsername(), + user.g + )) return null; } } diff --git a/src/main/java/com/example/demo/user/domain/UserRepository.java b/src/main/java/com/example/demo/user/domain/UserRepository.java index a3c9456..048458a 100644 --- a/src/main/java/com/example/demo/user/domain/UserRepository.java +++ b/src/main/java/com/example/demo/user/domain/UserRepository.java @@ -4,6 +4,8 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface UserRepository extends JpaRepository { @@ -13,4 +15,7 @@ public interface UserRepository extends JpaRepository { User findByUserBasicInfo_Username(Username username); + + + Optional findUserByUserBasicInfo_Username(Username username); } From e1ce8d32c2e71c82f0d03d9072e91ac5c851ab6a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:04:23 +0900 Subject: [PATCH 092/153] =?UTF-8?q?*=20UserDetailsService=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=B0=8F=20=EA=B7=B8=EC=97=90=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=EB=93=A4=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=A4=91=20(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/service/UserDetailsService.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/security/service/UserDetailsService.java b/src/main/java/com/example/demo/security/service/UserDetailsService.java index 94af574..28f2a71 100644 --- a/src/main/java/com/example/demo/security/service/UserDetailsService.java +++ b/src/main/java/com/example/demo/security/service/UserDetailsService.java @@ -1,15 +1,19 @@ package com.example.demo.security.service; +import com.example.demo.user.domain.Authority; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; import lombok.RequiredArgsConstructor; +import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.SecurityUser; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import java.util.Optional; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -26,8 +30,14 @@ public UserDetails loadUserByUsername(String username){ .map(user -> new SecurityUser( user.getId(), user.getUserBasicInfo().getUsername(), - user.g - )) - return null; + user.getUserBasicInfo().getPassword(), + user.getAuthorities() + .stream() + .map(Authority::getAuthority) + .map(SimpleGrantedAuthority::new) + .collect(Collectors.toSet()) + )); + return user1.orElseThrow( + ()-> new UsernameNotFoundException("Can't find by your username")); } } From ad66c506658dc39ef04e1b59f697c26d0c828559 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:11:01 +0900 Subject: [PATCH 093/153] =?UTF-8?q?*=20WebSecurityConfig=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/WebSecurityConfig.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index 180fb00..1aaf500 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -5,6 +5,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -19,6 +22,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final UserDetailsService userDetailsService; + private final PasswordEncoder passwordEncoder; + @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); @@ -37,7 +42,23 @@ protected void configure(HttpSecurity http) throws Exception { .antMatchers("/account/**") .permitAll() .anyRequest() - .authenticated(); + .authenticated() + .and() + .addFilter(new UserAuthenticationFilter(authenticationManagerBean(), objectMapper)) + + } + + @Bean + @Override + public AuthenticationManager authenticationManagerBean() throws Exception{ + return super.authenticationManagerBean(); + } + @Bean + public AuthenticationProvider daoAuthenticationProvider(){ + DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider(); + daoAuthenticationProvider.setPasswordEncoder(passwordEncoder); + daoAuthenticationProvider.setUserDetailsService(userDetailsService); + return daoAuthenticationProvider; } } From 5c8a2dfe70c98b6e13ffed8ef79cc31a6c9ed5a7 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:13:43 +0900 Subject: [PATCH 094/153] =?UTF-8?q?*=20=EC=82=AC=EC=9A=A9=ED=95=A0=20filte?= =?UTF-8?q?r=20=ED=8B=80=20=EB=A7=8C=EB=93=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserAuthenticationFilter.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java new file mode 100644 index 0000000..39a1513 --- /dev/null +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -0,0 +1,18 @@ +package com.example.demo.security.infrastructure; + +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; +import org.springframework.stereotype.Component; + + +@Component +public class UserAuthenticationFilter extends BasicAuthenticationFilter { + public UserAuthenticationFilter(AuthenticationManager authenticationManager) { + super(authenticationManager); + } + + public UserAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint) { + super(authenticationManager, authenticationEntryPoint); + } +} From 89ac10050178bf35feae35121fe2765c84db8e29 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:15:24 +0900 Subject: [PATCH 095/153] =?UTF-8?q?*=20InputStream=20=EC=9D=98=20=ED=95=9C?= =?UTF-8?q?=EB=B2=84=20=EC=9D=BD=ED=9E=88=EB=A9=B4=20=EB=8B=AB=ED=9E=88?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=20=20Wrapper=20=EC=83=9D=EC=84=B1=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20=EC=83=88=EB=A1=9C=EC=9A=B4=20=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 117b4bd..2498735 100644 --- a/build.gradle +++ b/build.gradle @@ -39,6 +39,8 @@ dependencies { testImplementation 'org.springframework.security:spring-security-test' + implementation group: 'com.google.guava', name: 'guava', version: '11.0.2' + //2차 implementation 'io.jsonwebtoken:jjwt:0.9.1' From 8db158095156d7b80cc7a21f6f7fff748fa88c29 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:17:38 +0900 Subject: [PATCH 096/153] =?UTF-8?q?*=20InputStream=20=EC=9D=98=20=ED=95=9C?= =?UTF-8?q?=EB=B2=84=20=EC=9D=BD=ED=9E=88=EB=A9=B4=20=EB=8B=AB=ED=9E=88?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=20=20Wrapper=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadableRequestBodyWrapper.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java diff --git a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java new file mode 100644 index 0000000..57caf8c --- /dev/null +++ b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java @@ -0,0 +1,23 @@ +package com.example.demo.security.infrastructure; + +import com.google.common.io.ByteStreams; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.IOException; + +public class ReadableRequestBodyWrapper extends HttpServletRequestWrapper { + + private final String requestBody; + /** + * Constructs a request object wrapping the given request. + * + * @param request The request to wrap + * @throws IllegalArgumentException if the request is null + */ + public ReadableRequestBodyWrapper(HttpServletRequest request) throws IOException { + super(request); + byte[] bytes = ByteStreams.toByteArray(super.getInputStream()); + this.requestBody = new String(bytes); + } +} From da2aa849e4fd32fb02487e3fda64a41dfcf428ba Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:19:55 +0900 Subject: [PATCH 097/153] =?UTF-8?q?*=20ObjectMapper=20=EB=84=A3=EC=96=B4?= =?UTF-8?q?=EC=A4=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/infrastructure/UserAuthenticationFilter.java | 3 ++- .../demo/security/infrastructure/WebSecurityConfig.java | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java index 39a1513..5efa23e 100644 --- a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -1,5 +1,6 @@ package com.example.demo.security.infrastructure; +import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; @@ -8,7 +9,7 @@ @Component public class UserAuthenticationFilter extends BasicAuthenticationFilter { - public UserAuthenticationFilter(AuthenticationManager authenticationManager) { + public UserAuthenticationFilter(AuthenticationManager authenticationManager, ObjectMapper objectMapper) { super(authenticationManager); } diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index 1aaf500..ce1656e 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -2,6 +2,7 @@ import com.example.demo.security.service.UserDetailsService; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -24,6 +25,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final PasswordEncoder passwordEncoder; + private final ObjectMapper objectMapper; + @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); @@ -44,7 +47,7 @@ protected void configure(HttpSecurity http) throws Exception { .anyRequest() .authenticated() .and() - .addFilter(new UserAuthenticationFilter(authenticationManagerBean(), objectMapper)) + .addFilter(new UserAuthenticationFilter(authenticationManagerBean(), objectMapper)); } From f92e55892219955d46ba0c100d0236ebe04fdd07 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:25:20 +0900 Subject: [PATCH 098/153] =?UTF-8?q?*=20UserAuthenticationFilter=20?= =?UTF-8?q?=EC=97=90=20Object=20Mapper=20=EB=84=A3=EC=96=B4=EC=A4=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserAuthenticationFilter.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java index 5efa23e..bf21799 100644 --- a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -6,14 +6,30 @@ import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; import org.springframework.stereotype.Component; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + + -@Component public class UserAuthenticationFilter extends BasicAuthenticationFilter { + + private final ObjectMapper objectMapper; + public UserAuthenticationFilter(AuthenticationManager authenticationManager, ObjectMapper objectMapper) { super(authenticationManager); + this.objectMapper = objectMapper; } - public UserAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint) { + public UserAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint, ObjectMapper objectMapper) { super(authenticationManager, authenticationEntryPoint); + this.objectMapper = objectMapper; + } + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { + super.doFilterInternal(request, response, chain); } } From 3f107e604437b9030c54e6018276c4d3bda6bb46 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:29:22 +0900 Subject: [PATCH 099/153] =?UTF-8?q?*=20=EB=82=B4=EB=B6=80=EC=97=90=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=ED=95=98=EB=82=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/infrastructure/ReadableRequestBodyWrapper.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java index 57caf8c..55d472d 100644 --- a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java +++ b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java @@ -9,6 +9,7 @@ public class ReadableRequestBodyWrapper extends HttpServletRequestWrapper { private final String requestBody; + private final byte[] bytes; /** * Constructs a request object wrapping the given request. * @@ -17,7 +18,9 @@ public class ReadableRequestBodyWrapper extends HttpServletRequestWrapper { */ public ReadableRequestBodyWrapper(HttpServletRequest request) throws IOException { super(request); - byte[] bytes = ByteStreams.toByteArray(super.getInputStream()); + this.bytes = ByteStreams.toByteArray(super.getInputStream()); this.requestBody = new String(bytes); } + + } From f276ba37c2c4f3f912432e5141c2c7c4d9133878 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:41:07 +0900 Subject: [PATCH 100/153] =?UTF-8?q?*=20Filter=20=EC=97=90=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=20=EA=B0=80=EC=A7=80=EA=B3=A0=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EA=B3=BC=EC=A0=95=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=20-=20=EC=82=AC=EC=8B=A4=20=EB=82=B4=EA=B0=80=20=EB=B3=B4?= =?UTF-8?q?=EB=A9=B4=EC=84=9C=20=EC=A7=9C=EA=B3=A0=EC=9E=88=EB=8A=94?= =?UTF-8?q?=EB=8D=B0,=20=EC=9D=B4=ED=95=B4=20=EC=95=88=EB=90=A8.=20?= =?UTF-8?q?=EA=B7=B8=EB=83=A5=20=EC=95=84~=EC=A3=BC=20=EB=8C=80=EB=9E=B5?= =?UTF-8?q?=EC=A0=81=EC=9D=B8=20=ED=9D=90=EB=A6=84=EB=A7=8C=20=EC=9D=B4?= =?UTF-8?q?=EB=A0=87=EA=B2=8C=20=EB=90=98=EA=B2=A0=EA=B1=B0=EB=8B=88=20?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=83=81=ED=83=9C=EB=A1=9C=20=EC=A0=81?= =?UTF-8?q?=EB=8A=94=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadableRequestBodyWrapper.java | 4 ++ .../UserAuthenticationFilter.java | 72 ++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java index 55d472d..b33879d 100644 --- a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java +++ b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java @@ -22,5 +22,9 @@ public ReadableRequestBodyWrapper(HttpServletRequest request) throws IOException this.requestBody = new String(bytes); } + public String getRequestBody() { + return requestBody; + } + } diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java index bf21799..de77d3e 100644 --- a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -1,7 +1,14 @@ package com.example.demo.security.infrastructure; +import com.example.demo.user.controller.UserController; import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.boot.json.JsonParseException; +import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; import org.springframework.stereotype.Component; @@ -30,6 +37,69 @@ public UserAuthenticationFilter(AuthenticationManager authenticationManager, Aut @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { - super.doFilterInternal(request, response, chain); + ReadableRequestBodyWrapper readableRequestBodyWrapper + = new ReadableRequestBodyWrapper(request); + + String requestBody = readableRequestBodyWrapper.getRequestBody(); + UserController.SignupParameter parameter; + try { + parameter= + objectMapper.readValue(requestBody, + UserController.SignupParameter.class); + }catch (JsonParseException e){ + chain.doFilter(request, response); + + return; + } + + String username = parameter.getUsername(); + String password = parameter.getPassword(); + + UsernamePasswordAuthenticationToken token + = new UsernamePasswordAuthenticationToken(username, password); + + try { + // 인증 요구되는 상황 + if (authenticationIsRequired(username)){ + Authentication authResult + = this.getAuthenticationManager().authenticate(token); + SecurityContextHolder.getContext().setAuthentication(authResult); + onSuccessfulAuthentication(request, response, authResult); + } + }catch (AuthenticationException ex){ + // 인증이 실해한 상황 + SecurityContextHolder.clearContext(); + onUnsuccessfulAuthentication(request, response, ex); + + chain.doFilter(request, response); + + return; + } + + chain.doFilter(request, response); + } + + private boolean authenticationIsRequired(String username) { + // Only reauthenticate if username doesn't match SecurityContextHolder and user + // isn't authenticated (see SEC-53) + Authentication existingAuth = SecurityContextHolder.getContext().getAuthentication(); + if (existingAuth == null || !existingAuth.isAuthenticated()) { + return true; + } + // Limit username comparison to providers which use usernames (ie + // UsernamePasswordAuthenticationToken) (see SEC-348) + if (existingAuth instanceof UsernamePasswordAuthenticationToken && !existingAuth.getName().equals(username)) { + return true; + } + // Handle unusual condition where an AnonymousAuthenticationToken is already + // present. This shouldn't happen very often, as BasicProcessingFitler is meant to + // be earlier in the filter chain than AnonymousAuthenticationFilter. + // Nevertheless, presence of both an AnonymousAuthenticationToken together with a + // BASIC authentication request header should indicate reauthentication using the + // BASIC protocol is desirable. This behaviour is also consistent with that + // provided by form and digest, both of which force re-authentication if the + // respective header is detected (and in doing so replace/ any existing + // AnonymousAuthenticationToken). See SEC-610. + return (existingAuth instanceof AnonymousAuthenticationToken); } } From a4deb5c3e37c0a6f6368fb13c490ae4f829fa8af Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:47:43 +0900 Subject: [PATCH 101/153] =?UTF-8?q?*=20=EC=9D=BC=EB=8B=A8=20=EC=A7=A0?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadableRequestBodyWrapper.java | 37 +++++++++++++++++++ .../infrastructure/WebSecurityConfig.java | 5 ++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java index b33879d..a2b8df4 100644 --- a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java +++ b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java @@ -2,8 +2,11 @@ import com.google.common.io.ByteStreams; +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; +import java.io.ByteArrayInputStream; import java.io.IOException; public class ReadableRequestBodyWrapper extends HttpServletRequestWrapper { @@ -22,9 +25,43 @@ public ReadableRequestBodyWrapper(HttpServletRequest request) throws IOException this.requestBody = new String(bytes); } + @Override + public ServletInputStream getInputStream() throws IOException { + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + return new WrapperInputStream(bais); + + } + public String getRequestBody() { return requestBody; } + private class WrapperInputStream extends ServletInputStream { + private final ByteArrayInputStream bais; + public WrapperInputStream(ByteArrayInputStream bais) { + this.bais = bais; + } + + @Override + public boolean isFinished() { + return true; + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setReadListener(ReadListener listener) { + + } + + @Override + public int read() throws IOException { + return bais.read(); + } + } + } diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index ce1656e..e0e8515 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -33,8 +33,9 @@ public PasswordEncoder passwordEncoder(){ } @Override - protected void configure(AuthenticationManagerBuilder auth){ - auth.userDetailsService(); + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.authenticationProvider(daoAuthenticationProvider()); + } protected void configure(HttpSecurity http) throws Exception { From c7ad150ef2dfca4b6f9497c39c64b6d867877e1a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Thu, 15 Apr 2021 23:54:58 +0900 Subject: [PATCH 102/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/timeline/domain/TimeLine.java | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 src/main/java/com/example/demo/timeline/domain/TimeLine.java diff --git a/src/main/java/com/example/demo/timeline/domain/TimeLine.java b/src/main/java/com/example/demo/timeline/domain/TimeLine.java deleted file mode 100644 index 92e6b3c..0000000 --- a/src/main/java/com/example/demo/timeline/domain/TimeLine.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.demo.timeline.domain; - - -import javax.persistence.Entity; - -@Entity -public class TimeLine { -} From d360a5276a10b71b82a56e81a26627249bcaeb5f Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Fri, 16 Apr 2021 00:10:22 +0900 Subject: [PATCH 103/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/friend/domain/Friender.java | 3 --- .../com/example/demo/preferenceinfo/domain/PreferenceInfo.java | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/friend/domain/Friender.java b/src/main/java/com/example/demo/friend/domain/Friender.java index 514f75f..085ac48 100644 --- a/src/main/java/com/example/demo/friend/domain/Friender.java +++ b/src/main/java/com/example/demo/friend/domain/Friender.java @@ -22,9 +22,6 @@ public class Friender extends BasicInfo{ @Embedded private PersonId frienderId; - @OneToMany(mappedBy = "user") - private List friendships = new ArrayList<>(); - @Embedded private PersonName frienderName; diff --git a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java index d41a04e..474591d 100644 --- a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java @@ -10,6 +10,7 @@ @Getter @Setter(AccessLevel.PACKAGE) +@Table(name = "preference_info") @Entity @NoArgsConstructor public class PreferenceInfo { @@ -18,6 +19,7 @@ public class PreferenceInfo { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + private Long preferredPersonId; private PreferenceLocation location; From 9a15b1cc13a8010e83f7b963e43996e23d368af8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Fri, 16 Apr 2021 00:24:59 +0900 Subject: [PATCH 104/153] =?UTF-8?q?*=20=ED=95=84=ED=84=B0=EB=A7=81=20?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=EB=8B=A4=EB=8A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/infrastructure/UserAuthenticationFilter.java | 8 ++++++++ .../example/demo/security/service/UserSessionUtils.java | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java index de77d3e..19af543 100644 --- a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -102,4 +102,12 @@ private boolean authenticationIsRequired(String username) { // AnonymousAuthenticationToken). See SEC-610. return (existingAuth instanceof AnonymousAuthenticationToken); } + + @Override + protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException { + if(request.getRequestURI().startsWith("/account/**")){ + return true; + } + return false; + } } diff --git a/src/main/java/com/example/demo/security/service/UserSessionUtils.java b/src/main/java/com/example/demo/security/service/UserSessionUtils.java index 3d8ba65..21e2f8c 100644 --- a/src/main/java/com/example/demo/security/service/UserSessionUtils.java +++ b/src/main/java/com/example/demo/security/service/UserSessionUtils.java @@ -7,6 +7,10 @@ public class UserSessionUtils { + private UserSessionUtils(){ + + } + public static SecurityUser getSessionUser() throws AccessDeniedException { Object detais = SecurityContextHolder.getContext().getAuthentication().getDetails(); From e7520e27a58ecfe080b7621fb46af77db7c02463 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Fri, 16 Apr 2021 00:58:50 +0900 Subject: [PATCH 105/153] =?UTF-8?q?*=20=EC=9D=91=EB=8B=B5=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95=20-=20=EA=B7=B8=EB=9F=AC?= =?UTF-8?q?=EB=82=98=20=EC=95=84=EC=A7=81=20=EC=9E=98=20=EB=AA=A8=EB=A5=B4?= =?UTF-8?q?=EA=B2=A0=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserAuthenticationFilter.java | 2 -- .../controller/TimeLineController.java | 26 +++++++++++-------- .../timeline/service/TimeLineService.java | 5 ++-- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java index 19af543..2f2d64e 100644 --- a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -11,8 +11,6 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; -import org.springframework.stereotype.Component; - import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; diff --git a/src/main/java/com/example/demo/timeline/controller/TimeLineController.java b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java index ab5a3ea..92c5530 100644 --- a/src/main/java/com/example/demo/timeline/controller/TimeLineController.java +++ b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java @@ -1,6 +1,7 @@ package com.example.demo.timeline.controller; +import com.example.demo.feed.service.FeedDto; import com.example.demo.timeline.service.TimeLineFindResult; import com.example.demo.timeline.service.TimeLineService; import lombok.AllArgsConstructor; @@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestParam; import java.nio.file.AccessDeniedException; +import java.util.List; @Controller @AllArgsConstructor @@ -19,18 +21,20 @@ public class TimeLineController { private final TimeLineService timeLineService; @GetMapping("/feeds") - public Object findMyTimeLine(@RequestParam(value="page") int page, - @RequestParam(value = "size") int size) throws AccessDeniedException { - Object result = timeLineService.findMyTimeLine(page, size); - - if (result instanceof TimeLineFindResult){ - switch ((TimeLineFindResult)result){ - case BAD_REQUEST: - ResponseEntity.status(HttpStatus.BAD_REQUEST); - } - }else { + public List findMyTimeLine(@RequestParam(value="page") int page, + @RequestParam(value = "size") int size) throws AccessDeniedException { + + + try { + List result = timeLineService.findMyTimeLine(page, size); ResponseEntity.ok(); + return result; + }catch (IllegalArgumentException ae){ + List failedList = null; + ResponseEntity.status(HttpStatus.BAD_REQUEST); + return failedList; } - return result; + + } } diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 7deb83d..5836548 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -25,9 +25,10 @@ public class TimeLineService { private final UserService userService; - public Object findMyTimeLine(int page, int pageSize) throws AccessDeniedException { + public List findMyTimeLine(int page, int pageSize) throws AccessDeniedException { if (page<0 || pageSize<0){ - return TimeLineFindResult.BAD_REQUEST; + throw new IllegalArgumentException(); + } String [] userInfo = userService.findUserInfo(); From 54f3237aaff1321d297e73f1ac1812a08846d61b Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 18 Apr 2021 21:13:47 +0900 Subject: [PATCH 106/153] =?UTF-8?q?*=201.=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20-=20Basic?= =?UTF-8?q?Info.java,=20Feed=20Repository=20=EB=82=B4=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2. @AttributeOverride 사용 - Friender, Friendee 3, @Transient 사용 - Friender, Friendee, FriendShip 의 getter에 적용 4. @Enumrated 사용 - FriendShipState 의 열거타입 필드에 사용 5. controller 부분의 응답 코드 올바르게 적용 - PreferenceInfoController.java, TimeLineController 에 적용 6. PasswordEncoder 책임 다른 부분에 떠넘김 --- ...ion$$EnhancerBySpringCGLIB$$2d9d13d9.class | Bin 0 -> 4050 bytes com.example.demo.DemoApplication.class | Bin 0 -> 996 bytes ...mo.feed.controller.CommentController.class | Bin 0 -> 2484 bytes ....demo.feed.controller.FeedController.class | Bin 0 -> 3321 bytes com.example.demo.feed.domain.Comment.class | Bin 0 -> 4105 bytes com.example.demo.feed.domain.Content.class | Bin 0 -> 1184 bytes com.example.demo.feed.domain.Feed.class | Bin 0 -> 5249 bytes ...ple.demo.feed.domain.PreferenceCount.class | Bin 0 -> 1481 bytes com.example.demo.feed.domain.Writer.class | Bin 0 -> 1829 bytes com.example.demo.feed.domain.WriterId.class | Bin 0 -> 1218 bytes com.example.demo.feed.domain.WriterName.class | Bin 0 -> 1242 bytes ...ice$$EnhancerBySpringCGLIB$$84949dd5.class | Bin 0 -> 13680 bytes ...ple.demo.feed.service.CommentService.class | Bin 0 -> 5713 bytes ...ice$$EnhancerBySpringCGLIB$$7434941e.class | Bin 0 -> 14235 bytes ...xample.demo.feed.service.FeedService.class | Bin 0 -> 7639 bytes ...iend.controller.FriendShipController.class | Bin 0 -> 3729 bytes ...example.demo.friend.domain.BasicInfo.class | Bin 0 -> 823 bytes ...e.demo.friend.domain.FriendShipState.class | Bin 0 -> 1633 bytes com.example.demo.friend.domain.Friendee.class | Bin 0 -> 2254 bytes com.example.demo.friend.domain.Friender.class | Bin 0 -> 2250 bytes ...xample.demo.friend.domain.Friendship.class | Bin 0 -> 3055 bytes com.example.demo.friend.domain.PersonId.class | Bin 0 -> 1141 bytes ...xample.demo.friend.domain.PersonName.class | Bin 0 -> 1163 bytes ...ice$$EnhancerBySpringCGLIB$$ec19504a.class | Bin 0 -> 15210 bytes ...emo.friend.service.FriendShipService.class | Bin 0 -> 8858 bytes ....controller.PreferenceInfoController.class | Bin 0 -> 3038 bytes ...preferenceinfo.domain.PreferenceInfo.class | Bin 0 -> 3369 bytes ...erenceinfo.domain.PreferenceLocation.class | Bin 0 -> 1590 bytes ...eferenceinfo.domain.PreferenceStatus.class | Bin 0 -> 1635 bytes ...ice$$EnhancerBySpringCGLIB$$9017d39e.class | Bin 0 -> 14157 bytes ...ceinfo.service.PreferenceInfoService.class | Bin 0 -> 5873 bytes ...92$$FastClassBySpringCGLIB$$bf0bec24.class | Bin 0 -> 5739 bytes ...fig$$EnhancerBySpringCGLIB$$ab722492.class | Bin 0 -> 4896 bytes ...ig$$FastClassBySpringCGLIB$$c3458f2c.class | Bin 0 -> 3162 bytes ...infrastructure.PasswordEncoderConfig.class | Bin 0 -> 1028 bytes ...rastructure.UserAuthenticationFilter.class | Bin 0 -> 5956 bytes ...e5$$FastClassBySpringCGLIB$$e01bd749.class | Bin 0 -> 12453 bytes ...fig$$EnhancerBySpringCGLIB$$82529ae5.class | Bin 0 -> 6207 bytes ...ig$$FastClassBySpringCGLIB$$faef6e1f.class | Bin 0 -> 9548 bytes ...ity.infrastructure.WebSecurityConfig.class | Bin 0 -> 4936 bytes ....security.service.UserDetailsService.class | Bin 0 -> 4477 bytes ...meline.controller.TimeLineController.class | Bin 0 -> 2240 bytes ...emo.timeline.service.TimeLineService.class | Bin 0 -> 7521 bytes ....demo.user.controller.UserController.class | Bin 0 -> 2658 bytes com.example.demo.user.domain.Password.class | Bin 0 -> 1075 bytes com.example.demo.user.domain.User.class | Bin 0 -> 3190 bytes ...ample.demo.user.domain.UserBasicInfo.class | Bin 0 -> 1414 bytes com.example.demo.user.domain.Username.class | Bin 0 -> 1159 bytes ...ice$$EnhancerBySpringCGLIB$$e63d40be.class | Bin 0 -> 14147 bytes ...xample.demo.user.service.UserService.class | Bin 0 -> 3557 bytes ...demo.user.service.UserSessionService.class | Bin 0 -> 1579 bytes java.lang.reflect.Method.class | Bin 0 -> 12690 bytes ...atalina.loader.WebappClassLoaderBase.class | Bin 0 -> 50059 bytes org.apache.commons.logging.LogFactory.class | Bin 0 -> 1614 bytes ...ingframework.cglib.reflect.FastClass.class | Bin 0 -> 5236 bytes ...framework.core.OverridingClassLoader.class | Bin 0 -> 4173 bytes org.springframework.util.Assert.class | Bin 0 -> 13332 bytes .../demo/feed/domain/FeedRepository.java | 3 --- .../example/demo/friend/domain/Friendee.java | 8 ++++++++ .../example/demo/friend/domain/Friender.java | 12 ++++++++--- .../demo/friend/domain/Friendship.java | 2 ++ .../example/demo/friend/domain/PersonId.java | 1 + .../controller/PreferenceInfoController.java | 19 ++++++++++++++++++ .../infrastructure/PasswordEncoderConfig.java | 17 ++++++++++++++++ .../infrastructure/WebSecurityConfig.java | 5 +---- .../controller/TimeLineController.java | 9 +++------ .../demo/user/service/UserService.java | 3 +++ 67 files changed, 63 insertions(+), 16 deletions(-) create mode 100644 com.example.demo.DemoApplication$$EnhancerBySpringCGLIB$$2d9d13d9.class create mode 100644 com.example.demo.DemoApplication.class create mode 100644 com.example.demo.feed.controller.CommentController.class create mode 100644 com.example.demo.feed.controller.FeedController.class create mode 100644 com.example.demo.feed.domain.Comment.class create mode 100644 com.example.demo.feed.domain.Content.class create mode 100644 com.example.demo.feed.domain.Feed.class create mode 100644 com.example.demo.feed.domain.PreferenceCount.class create mode 100644 com.example.demo.feed.domain.Writer.class create mode 100644 com.example.demo.feed.domain.WriterId.class create mode 100644 com.example.demo.feed.domain.WriterName.class create mode 100644 com.example.demo.feed.service.CommentService$$EnhancerBySpringCGLIB$$84949dd5.class create mode 100644 com.example.demo.feed.service.CommentService.class create mode 100644 com.example.demo.feed.service.FeedService$$EnhancerBySpringCGLIB$$7434941e.class create mode 100644 com.example.demo.feed.service.FeedService.class create mode 100644 com.example.demo.friend.controller.FriendShipController.class create mode 100644 com.example.demo.friend.domain.BasicInfo.class create mode 100644 com.example.demo.friend.domain.FriendShipState.class create mode 100644 com.example.demo.friend.domain.Friendee.class create mode 100644 com.example.demo.friend.domain.Friender.class create mode 100644 com.example.demo.friend.domain.Friendship.class create mode 100644 com.example.demo.friend.domain.PersonId.class create mode 100644 com.example.demo.friend.domain.PersonName.class create mode 100644 com.example.demo.friend.service.FriendShipService$$EnhancerBySpringCGLIB$$ec19504a.class create mode 100644 com.example.demo.friend.service.FriendShipService.class create mode 100644 com.example.demo.preferenceinfo.controller.PreferenceInfoController.class create mode 100644 com.example.demo.preferenceinfo.domain.PreferenceInfo.class create mode 100644 com.example.demo.preferenceinfo.domain.PreferenceLocation.class create mode 100644 com.example.demo.preferenceinfo.domain.PreferenceStatus.class create mode 100644 com.example.demo.preferenceinfo.service.PreferenceInfoService$$EnhancerBySpringCGLIB$$9017d39e.class create mode 100644 com.example.demo.preferenceinfo.service.PreferenceInfoService.class create mode 100644 com.example.demo.security.infrastructure.PasswordEncoderConfig$$EnhancerBySpringCGLIB$$ab722492$$FastClassBySpringCGLIB$$bf0bec24.class create mode 100644 com.example.demo.security.infrastructure.PasswordEncoderConfig$$EnhancerBySpringCGLIB$$ab722492.class create mode 100644 com.example.demo.security.infrastructure.PasswordEncoderConfig$$FastClassBySpringCGLIB$$c3458f2c.class create mode 100644 com.example.demo.security.infrastructure.PasswordEncoderConfig.class create mode 100644 com.example.demo.security.infrastructure.UserAuthenticationFilter.class create mode 100644 com.example.demo.security.infrastructure.WebSecurityConfig$$EnhancerBySpringCGLIB$$82529ae5$$FastClassBySpringCGLIB$$e01bd749.class create mode 100644 com.example.demo.security.infrastructure.WebSecurityConfig$$EnhancerBySpringCGLIB$$82529ae5.class create mode 100644 com.example.demo.security.infrastructure.WebSecurityConfig$$FastClassBySpringCGLIB$$faef6e1f.class create mode 100644 com.example.demo.security.infrastructure.WebSecurityConfig.class create mode 100644 com.example.demo.security.service.UserDetailsService.class create mode 100644 com.example.demo.timeline.controller.TimeLineController.class create mode 100644 com.example.demo.timeline.service.TimeLineService.class create mode 100644 com.example.demo.user.controller.UserController.class create mode 100644 com.example.demo.user.domain.Password.class create mode 100644 com.example.demo.user.domain.User.class create mode 100644 com.example.demo.user.domain.UserBasicInfo.class create mode 100644 com.example.demo.user.domain.Username.class create mode 100644 com.example.demo.user.service.UserService$$EnhancerBySpringCGLIB$$e63d40be.class create mode 100644 com.example.demo.user.service.UserService.class create mode 100644 com.example.demo.user.service.UserSessionService.class create mode 100644 java.lang.reflect.Method.class create mode 100644 org.apache.catalina.loader.WebappClassLoaderBase.class create mode 100644 org.apache.commons.logging.LogFactory.class create mode 100644 org.springframework.cglib.reflect.FastClass.class create mode 100644 org.springframework.core.OverridingClassLoader.class create mode 100644 org.springframework.util.Assert.class create mode 100644 src/main/java/com/example/demo/security/infrastructure/PasswordEncoderConfig.java diff --git a/com.example.demo.DemoApplication$$EnhancerBySpringCGLIB$$2d9d13d9.class b/com.example.demo.DemoApplication$$EnhancerBySpringCGLIB$$2d9d13d9.class new file mode 100644 index 0000000000000000000000000000000000000000..435b15340c3d805ad3a7cd4e8218bf233ceac87a GIT binary patch literal 4050 zcmb7GZFd_-6@JE&yRx#WEhWy2+oWkxf@~3O<0KT7=9%Z- z``o$numAn^?*Pu>4-ARCRnd%9y;3s`tzc9vZH#^rwVGMZ>rUCKMk3?YMZKCg?9sJM z%`R6<$;+v!(MV*lFjP2mwlJiCF`U>7MuCrE&az8dU4RsAy<)6b_FXM+RUKp1(e!H7 za>S8Z(yA8Ar6pU8lBQm-H#juN6m~38(8;iGq-0bL+G7+h(nzu#O<$WCV_-KJ!g6LJ zk<6xNbMs?~Y=S0Jcl2dlGxcgoOE26p^3E{BA-OU;IXj*hn@=WEsnJAoI>T_-vpTzI z8+svS<#ls=OD3DhP9?otVmDK5jV_tx1+8XVt7}?PH_Zh-f0tl->y~gvrRJ<9>{6ZKz)jEbt$JzY%rF>j zd*T9FR@aKsHqB$_F!x-vonGV?zO+8R%A-t~so=8=PwzZcML$jj;m3fAFhbm^pJO;E z4H=!9*&*lN=x%HJud9ed3)03HRXm3i9D=0MvmH-qw}Nvjp2rLP`{xQnkFJpKghA`4pe6d_DctpXFYadd1 zO5U;!EmJO4b!W*ohWnq05JSMRG7i6CDPmDCKRG+B;t~=;oX04wUDWG~NvmLpgqu<^ zhH?IBg5lCmNwg>YI1L6cNm**VwxpY+`L-&#q2h~}<_D&BXhSkpFr(r#h;VIOl{F^r z)|fc2G4Us@F#*tJ)4eT0Q4oKnr#UAqEb<72E4POeNKY&w| zq@>(4jq|*7ucE|?ZW{sIqS8?^oG~MB(%6*Z>z_x?BOk{HRGqSm&l)PpL%&FgOm-c@l(_P$FMZac}S zZd)t*f@vuDKEwV^19leap{8V! zSB&JQO) zx|=k>fv;LrttRES->LY$_-0#{BNIZPf{{o4^!pS&YC3q#>80I;Aofw)#~(VPB~?({ z!DA&_s@0;UC{i0lue+WKFpc|op%pD%s?;+45I>?eNIiN)(eHaS>LolzZP!5VV_2Iw z^C1mD6u#A5G65eg0#1b3%bWNuu!-+%;(KCr5BM-8d$CUi&|%ug5Bo9ws$g4ksNe@g zmYx}e#E*TOXmHF|Lu^=J4t#{uxqm{P8z2s1@DH3AxR0~`PjEixi)HTPrN7`pC&UJR z>_F^e#F`@_K|uFh5|fy0k~j=sPQlP^`rjf)GKE{r`TT^IaHmJfT2eLjI5X~Q{>K`Q zAepCR7(&iTSOGC6=EnQe@f{u}cxW&gq?4k_Q zI#xvAMWopVVlQc_!B!xOp+vlhS6rH}yEMttS0v&FlDQ3B{u6DczvvtP`S&~gpZW*G zQyaK)4?Prnv78S5^Bik-B}U`?B$Bj8daD=yf`W90{;?&pNkqH{Cz}eKbcs9{VwWTl zsV5q^w(*{;r$cnvHL$z6s1LQ(Q6GN=yN13`s^YG@9byTI{}3Ii*hg6V02gBZ2Uw#3 zZQyGp`tG^=SfN&#`y*a>h_A=yZ*>kn#9I&W_ANhkh92OwPqyy}G?yUZHVDpPu1WA1 bd|O1LL&14h>*tSe5gS)D3_qoA2bBKlJ6rIt_%C>p z_@M9pDD}*?k;XJ}lRdNNeCPU|ou9wHeFyLiynqQz2AB#ljTwfeQ_&YZ7P`ydwN7Q^ z7-pU;t=vAtWURa(MKbEL`1tN2X7|WTG!-X8sZblfZ6mSn)0q!##c*46@h`68dzDl$F zBUUYb+KDsO=Bc!OX?fk64mE3sJyq);4zoCZqf=)?Y-5LEo@S#dUukDQ6CuTFsp-o+ z4Drarg&};QoHsuXQS|1;-XL+^DD7SkuyTmq9JAE+fV*MVg@zN+*^%hwD-5tllwbc= z$0ydD`vp@&0bK+COn~`|Kyr~ZPA8*ty8IRFGKZH)dKeV4OfnoeUM_* zCGttPm)Vyqlz^3>e1*A>x%vROtPQ?)f8;4PutCm~@CE#(^fJKw-y*Ywtm78hpU_KX Xf9C-#z*F+xB-;dT;|`s^y}Q64&JP3* literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.controller.CommentController.class b/com.example.demo.feed.controller.CommentController.class new file mode 100644 index 0000000000000000000000000000000000000000..c85fe7b46b85440c750e1faf00e6ce2f558c908f GIT binary patch literal 2484 zcmbVOYgZdZ7=8xQEQAGGS}C-&r4-t5DQoZ5v}gz*so_!rRBIJC$q*JcyK#5J<#_x( zey*n~`a!?@WBlkx^_fiy;Yd8u!(ry#nfEr&yz{*I?a!Zo0q_X;$8^($q*G7{GACbPF`n5rcTK}KouZL( zonoTyI~#ZwS4Nx5cqVX}Z5O&VoYip-Jp#8}uW0yX?|OLEWkc8skcC>tx%FT0K} zXPv+b4g^}<9f3#j(M*#T!_#izV7g-21?eR^Z~^aV=+$u%eFFFXhYx{BjvfV`)&sJX z+m`u&05s__q2ZFi&@rNEmPOIDlU}i+iePp>FUx`DI_((16%AK)T*IKijfVc`305{R zg9`7eV>&sru`>I7Z8p0qFw!`wW25jwhIHJ(ut3zWIeHau%C_lapSTPSHw6a&2|+$D zeg6aiaUG-T^!nOja&2{fX(jz~b|!{#OlY{RV-kkI*<(l5%iuAdSdJA;3ADyX*NIA9 zi4&Fj>uXfcw2GwM0v}^{#&YChrIeH2s+qI7(vxxXroC=@min$OMm_0Q>_A|w`KKTt z=x(^~IW;PV1WV==wUdBRDH3d1EQ9+Ea`-nMqIFb}Rk}b(>tcln3A8EODk1dL?bhDE zKqpHuzq4SLYk0(t?$OtfV*Q4<!_pM7_wN?Kq{J6^i}js z)7~u^yOv)G1>4FQ+naX9Dj4bnY>&&HtLnq6!Jk@Qo2%G%+VKNV$2wl9#~hXjyMjk9 zj>J==>nhBrI$o;nSZ#aX3e@r|9iOY^?sC=fvTHfPe06U_$Cu%r=ej|)@ItQ|asua% zS!H$0bNAF!$8~o5aW;N(fa>>@S}0EU3Khj<<8+~XLf4$zJJ z9DA!;cpnLVQ9txXI>5WQgGlJ>4_ZXHH**fZAL0vO>8t`gwqdj5-L7Ka(C) z8V{xSD77(S_2f!=f~P#UlBVzh9VHnd%6Xd6W+``ZcaHxbeFouU9%-(1D%hV<5crs5 aD;7AmU=holV_dyJv**$F(18Me3HTeoB+F<3 literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.controller.FeedController.class b/com.example.demo.feed.controller.FeedController.class new file mode 100644 index 0000000000000000000000000000000000000000..665ad2b1b80f0470187b366f4720eeb0b549fb17 GIT binary patch literal 3321 zcmbVOYf}?f7=9KaOX8}4iWe#>2IN*&6orb~5(1LS&2X_5t6h>qSlH~w-3`ce`a}8) zI@5lsOlzHf=;dqwL4QNrZ|ygy?Q@bf32ib>o0+pY*Z1N+vmvc=!v*8+9vFo_o`lj#a z^rY}|j_rvl+c*6^1r5%&g3;c-**Z@|V@`T6mN%`maL2=F$0-%3HJrg&1;f=%tr?W) zu!8H+rCrlcZO$3FD33>jm_}txqcUXCw39VVJDLnt9k zw-tvX=s>52^SGcub=eVulbd`G%kONT}FE{7G`^ z{>s$SGQ(6G!15tdsRg|n`p~bS$qNKM>aFYS{|!+W1~t4X{nA$ECsvkc7LtjFQ*p^^ zUBeYH2yIzoTS#ig_GHQk+oyj$l@wj_C6}s^RLZ%gVFcGHCoL@D2a;Y>{Z6Hvfa>)J zjU4O3sD?4=KzMo~8B4_DQ}Yqr1oPvThTFKKprxEl#oQshw@lmgxyAsmDhN$FY3BX0 zS<@Et`RuxImyLCcGi|d@%CJ@q*OcR6GURWXgkZQvm8i++aq5+%l_}m*kkBI;gB<#{sQ3>ejkw_?xeTL%q$fnaZw=LXoPKa0X0eWvO3> z<5jrURCMXT2nfoIERD4B_&*6x0uI*TQngA&A)|F$A1~xwIW$APH8fSb+hl4)mYlqs z64N9VjhAUFi$L)j9g>_=FjluUtj~V=I2}1W&zU(PGmdoA61FYeNz3p&K~|>}T&r1Z z4_;N37mqByay0yINI=iw2;Ub?pH~H#eZIX{2_CoC6#v^{;=I9RB z8~7jT{~B-g4}1mXIY$k6huJ8tFQE*)fI2t$1CD%x)|WW;V6d>b4ScbWlY`%*;|0zQeJ({}kWJbmwRQyk?tNT* ziOUZ@MPwfXvR4)`TNE|$UExFq8J=k@Sl)v$`rnGJoEqrVu{hw*ik~@V||{by}5fl22#; TTAB+Klxh2f!w=acG28zFBqL|( literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.domain.Comment.class b/com.example.demo.feed.domain.Comment.class new file mode 100644 index 0000000000000000000000000000000000000000..6072deeb6cc685b8bae10731b4e13be4f513a0d0 GIT binary patch literal 4105 zcmb_fYgZFT7=8wVfw%~G!E05#hJdWJwpLMFjW;MNRm7@o?UD?znC#;2hKud#)%Mr) zgPtSmY0qiD_eZsTW_EKSY!lkkFPWWrZ_j(3$sd3I@*9BD_$h@Jv?h@-(1uL{-SgI> zWfm-F*1R=6FLQywrgOGq2Nwid)BRH&Xh%m9DFd5f2pq||MN=+Y#f5@2^RnogGg9Ww zyj!$v$IQCLqI8ssCC?6|CvbGUp};-OHlmDdG0=r>fn?5g08!jm)7lTJ=%-I7L{^Q09>fs^U}#`fw&HRxRic4LpgwuQBNN1Yj0VCdf| zOkp41N@Bl(12`zqqcaoOMQM&YeqbrIt&Y1Su!B(75jCDe1`gv0gSg}clawT~f8ac3 z;5gFc%*%odWL`i#NFjrPBnAzfz)~{9^)@VU zGu=2SQAIRnDyP1GN+tgt1E=t=KqrAzlcdXcOwmuP%6MO3I6d|sQhe6H2+j$#*o;wk z7)|ZmxJ%bmw&j^N(J>a&vNY^1i@Z zG5T*<&dQ{F%TcWRW9Vb9?PT3Tspya);aIBZk}499RKQN_V9Z$b!dosD%y}#K*moV% zs`zV;aX&iixSpKwT)G_C(xbRaDok0Pt@hDjBABxo;HHyBk1>Miz9EA-H$P!{^ouS~*8g7%xN)sS^OQi6dD|bi zAJeZyK`(7A_E83S>zansHA!v~Rh@DEHk)cuId)JYY(0VF&19k;6;Q2zuRLjbxv93F z9Y&?~W& z7K`x;*ONLDg&;+iT3JfVjoj|Y($2eD5(>wps0i~k$#|&-Em7^PF}TD!5dMv z45_O@U{74%aO4ClET`QuMBO5))OdlaTReplmXcT$xa4}X=B#H~g~g(|X!|AoQLv}Y z`I$n=&YQmU7Nuvhe`g5Ai$+^^;_lT_p`b1=&%iP`kT$c6*iToSz~e5F&Z-Gs!j}fV zQsh)bUbeOMuMK>oj=L5@#SEt~bcoqAp~;@^!P0#>d0DGhWN&--d*Gppkl$JCm#6+Ln0@@j|P+ z#a~5MkSF-743hyL<2G0J7>4<)gqI1TmFpoToEca}GBdb}&deM1tYRmZy{qWUw65Z4 zRr7v^1sEWRL3HprumwZBL`}X>PBL)A+Ty`bYh;o7Blp#pa<+x`@8OdOMb(9uIP;v! zTTpdjM~n*{G&mUvKhaqN4)=(`H~1F#747#k1FvD~gQvjr@$hTlcZz^v-NWD38WU%< ziC&s*=bJz!3i>Nd%MaW!f`4f-k;F4<;Ug$AKgT$zQt9gvC$#y@OLV?Mzurd1Nq8C= z--TUu#!prJYiD4>6e*Kk%H%H4V7vNx#v=>Uk=3)bsjO~NIXhF$O_=rWia)9jLY3+( zEM0K2Q3omDQ?c0Qcz;?P$U2Z6hB5X`j@WEld_BM9m%O2c{x=LzA$#v$Ct zgP0JWuMgqgipJUyKEf9}RhEBqM_#t8S-3-`qc1CLRN zgx8ec&W)B|IMIL{^7K=UpEY{UZ&Xip-4boJ2#3a9AzzVb&W0P`>cyuc*4C$&AhPuzX599 BZ9M=0 literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.domain.Content.class b/com.example.demo.feed.domain.Content.class new file mode 100644 index 0000000000000000000000000000000000000000..2a41aa1c0c65568b05caeecee33b6d1cc48a0c3e GIT binary patch literal 1184 zcma)4T~8B16g^8zx0HqQtwlve#1@qC4IF@ZcLY!n62%!CR?uGaFsCs zsWYpOL}X#TcAoBbXy~-Px~trPYp%$(&-Ib?1|EXTwG?+Xac=*w$@6mMQ!WB5bhsW! zv{0^`9i4Kbk(|PT?5P&t6J~NJE!{GLS}48hg<1r>AtFIaJPAXoT`gotL@P1!3F~qd ziHKIx;%t{h^gJUPEnpREHf~sWDpiMdlT(N36Diw^|@koCEL`5 zN;#|b*LywRe;!6!Ik<^+3zMWH>9-qd^`6#Ou2vd`rtF|%!i6+^BD8UDI=F4z#cl#z zmm<{9lGv657RQv7I@wB!I(4Ak*4urz8?W8QeGBu$>pDDA@|~Fv*Xh8<=-MrM>1xRu zC!5Zl-WmF1^tFt4<1?%eWQ<{!UK0k2n4{N85-^X2I8Mh(9#gzW*#^8|iZ?bt!5$(^ zBSVozWU+(^T!@jDlI#?T>L_l|P5fet*(Pp-xjKv4FSrAIL;elnPsRVYfYVxHZT^V+ zDxpN#nUSuS2VLjMTZ)IiOF6{!J5IK2+@soMTuM2IB7B5>N~xnF%n#s jlx-T${Ubmk;nc|Bxj}U<-i6u8m6&Y>R}BKSa}D?dL{9g; literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.domain.Feed.class b/com.example.demo.feed.domain.Feed.class new file mode 100644 index 0000000000000000000000000000000000000000..6538877381042831abef54832f6628dd61603515 GIT binary patch literal 5249 zcmbVP`F9i775<)VELk4gF~p`O#=#JSEE5LOG^B`<#=-j`LYHJLjm;QoMj4H4 z)4fgiecw*Hq&?l+bD+fuY0qiR@B*t(sj&TEzZo$raHHo38;M-O})h7w#VMGDv z3F4|W>&>|#IhmrSf%rJ8+ZMPMX#L(|rHLV-GN z;7Od|;i6r#0~vQsThqxTgL_h@+9`p{sm@4sK6E}*5B$`UjL16;JT1e~U2<;ONj!to zaXf3_-8dugL`R;pUb(CiEnc;QFmI3UfKQ&vgcWhtz4FW9c_vqp+bGWmEYQ4Qqx z>g|r_X=(9xMV-%`pS`@8Tf8nX)<*wqdD$)&89{*qZML&ssaAHm+3i}g2PC&^jZoMc zUXor4^e#B7t`*dLzCWwF=+5ucyEx{zB~6gaIQtypB=-z=BRHLGx|>ba&B#mT(H@7${E z`S!f;F;szLSBYScY63K$^`z0kyyM!JYb4QMv>0fCy?L)-m6j~uk>7f;JGkjE@<%!| zp(=^#G-n4lz2dy(lX3#2U{Bah1S&fehuI{Z5yT(fGhN1QF=tA?-agB=RjPJ0|Oy zy2H`pL)79PP5{Z;zQ$Ip+MA4QFL&#-rFO^&&6*TTQcSZUuyZCUf>kDsP;k4AHxPGf z2jeY5N|{6vkv*dQYrGysr=lp-Pc;QWdeo;ps*k%mSrOqO_~xF##;p57M%#{#?>at; z%muIJ7wij;>^r@(dz_Hdw0$R^x4;^jOClwry&DZd=IDRTHr#A!^`8C9^7x`S`_ca?Iz;!P0RiuN}WP;xo|CXyL zph#UdY^-3FdT#Pdu8yEv{yyP~LqU^I!RMazn-F)ErZxVT+u#p?Tl_D*-~p6S<})U5 zoLrH@ALCaSpOaEJJ-vl^`uG<5)Aup7h5dXywuOmw*L_TGVR~EnIN1Y^6UUS2r7HtO zF^rSEP@N(bPbs5^LdDuBO=vphnoLjGJ;0Krzb>N|iGs?sW z%_bNxnR8HYVWvs=jNjWzOk@8fKGg<$e=GKbZLkZ}u&#wSHRs2M@RyMDd&oTY7G`7k z7oJgz8b7z|_{TBcg8yOz{t-=jf=Rl8O&W^mA8()^_#(cfQJkUUGJZWW{pPoGEF@WSTEbvQ_XZ{l0+^z7fQo^b8}-^KUnluYn^ zW0hs3p0Iazt};2E1isJH;RxyBFZ-9d5@!Do)W90xcjI&t_$*%4=o@Qtx;3VgZDI<1 z8DG)DO%%p=>v}k|fp6nG?esJZvCgi`2`%XOSMjxWdir;ZC+y-e{E)h0_>rP)kZ(Wc M_fM#qH-*A~0nRn0y#N3J literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.domain.PreferenceCount.class b/com.example.demo.feed.domain.PreferenceCount.class new file mode 100644 index 0000000000000000000000000000000000000000..b3de111ee717d30d1e2751a64a6d7fe9d41c0456 GIT binary patch literal 1481 zcmb7ET~8B16g@+srAtfs5Uap6Ky0)iV#5(AE)gA1G_uT>=yAynP{TH zXrk}_DDlqhTEOtaLwDxhxpU6F=ice>Ki_`>c!&oM+K|eiJ%3lX|X4? z2x_9NngKyMjh2UjtvdwPZHNmD?Zx%kUE@eG48Ngh>5E+%%Bm-x1%ZlqBvlYH+^U!i zPuzykp$sDf?v|C;^n+Cb3Ait4DXTgyg^CQs>!x27dWRDZLtjPJxVOu-GEY4mREM3!rM+CP-I$Za1eqTiATH8jgGvvd| zUT0f1bxo{Eqr|{@yzR|`QI%or3UyzQfc3f&Y}LUOW-^#&c&_xmyRSL-j(zu7hE2Qi zWYs;~^O~~mhC&|;O(UT8h)^dTEpNSDYkJ^wv@xNJ=01>aaR)5{C31^M;p9hTb{vvhW_(G z-#O6gy{QiqG=FXME*O1jzG>|xtBck?`t^sjrKe(E3Yi0R^av^10Z!=@td#wV%xALN zaKrd4RDt6AFi5t6Gv1pRvN1IF3Cbp+q{vrjp_IliLG=*`2-HAj39Oqy4CG)!5knFH zhAmANqqv=b3rg42G||fzzhM#hfzEfQ=&@!A_*98^bH8kULpHmVt-w?XOt-S{M30pP zxJQ1f=gbDP3|1(uQH&&%+vk)^mnq3iD9!E?Wh`1uIe7&EaHl2M<3zCZe>%mt^B1&9 zCvt;Y7I&2XURsF;l(x}krk5?Z5-oi}#^I;PTW69k9sf&r3}bZVqCz7V6dFtjjY8Dl uGYTesI?ZQ=ob_}{i!L$6@j zdT>EtyI$n5l&VOW)1=W6Soms~7}b{@HBdXTyp<%W35`mVfxwbG>~U})^*{}bOu90- z)8CO%B%^hK@Jo^8&DOl$?d(jqEb#~@;wdiHRM&MDa+v!ku~ifO1KvtiV!q7wKKF6c?ddc%nVmW6^tK7R-`)!kTyJ>T5I8&ft{(2`^vIqMEBxq7 zypT%#@nV6%Mb0MpUU93u4gR%e_ZnE@^DRc~q3rTkX2lP`;s((C1=COQx|@CsJZ@*B z)}KrOzvT0Lj$xHg3j~5(;?ojWNVSH`oZaHT2JxK1!s9w0x5>kMGG`6=w#nnoXAnPg zP&$QJJ3(YXj>y)=g*^EYqsJ_RO>VZHz-wN4g6R>=9Jy?%Wh`J4i#WrJ#};`pOUof` ziJ4+{WOXW$ppN;R=9Dr&zEH+{irHDgX|9YNy;7OwlXLusGLvYcm9u^a&-t-BD}HjU zzoYV~*?NXI-9paGtrxtDJmAZYTz0(kgsJdGzd~=|Mp-LZZ|K%@m*$KScn4Q=`jIhg bgU1X#ZOr`1fkwuZ5V)v!sczO1?*ab+qeh&9 literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.domain.WriterId.class b/com.example.demo.feed.domain.WriterId.class new file mode 100644 index 0000000000000000000000000000000000000000..6a4d938233c6bf48717045268bcd2dae3cee2fe8 GIT binary patch literal 1218 zcma)5T~8B16g|_He)EkWpeQKPf--(3MlmKzAd(a%f;B#wZFgD*cXyiEX~BPmiAJM| zzWbxpJKMEw&<7uOX71d3&$;)^-5)={d;@R~ck@UfnL(Qa>UY)GEA1vddpRY*%$4=NMBTCC~Ka090bZZMyeoWn2QolcuVL| zhDHQ+!8euH_Ja+ERN(l6A=hPpBdLkU2#zPCKK0X!R4=dpaa=j#ldiV-Y8grP#e2m#3 zZi~4zj-}672fiZvn(&7sy9At8x~H}8QC+i`rRd~9)$_fov(&X!0k}mU_3b?`j{PkF literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.domain.WriterName.class b/com.example.demo.feed.domain.WriterName.class new file mode 100644 index 0000000000000000000000000000000000000000..2febfc8ea63f9a7b18d36fe5250158222f2b1b35 GIT binary patch literal 1242 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 IHHYT^FYkI)*8l(j literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.service.CommentService.class b/com.example.demo.feed.service.CommentService.class new file mode 100644 index 0000000000000000000000000000000000000000..6ec11c98e9157c629e447e448724fe4bb5cea078 GIT binary patch literal 5713 zcmb7I`Fj*+9sf+S$t0TrLO9Cy=19rrV1Yt`T}sVCBxwjSfgn)DVRw=Y%+73QXOmD{ z+p0ah+NwQ7>)l%KQiYHdE%nw~&w4!ds6O8Q1wN0@WAXFO%pPGk+3>^eyvO(b-q-uS z^!oEJ0N93q2T_4a836@VsFqNFTpd>NvLcJ_XJUcS{XqF zbxtz<--RFf$~izKw96&caAL?o@*<9b|+bXrM) zcF3EOKe0QgrL45>SoTQ?ZGEK?B&?*Wo00BW;ISaC#8on`R&Wijm9R7~M~7t@nrcdr z$Az%_MkK6kIvnmRf{4}OdaRbQM!{OFlhAS*^oessHxq)Xj*~r!b~DkX8JeRdBs)qBxAFJ8?i;g>LUEE7Zezgo;a#G2W{QaYzga| z%BaEvB$=DAO~!TwI}nwyc3v`B;Xoy(v&zxM&E#T8665b(M9=+8Ff!(aSUj7+A;-`)p1)>9R_Et$bm|!s3aCr zuR*thH)0RfoKo$y<^}(XLY%(k!o32zS47aQ5|%af7AdI?d(kgrpMn9rNy3d~Wa%!U z4+%TmKykOy)Nsd14@|R%5kjRq3MsmwP)Z>M^s+}u@NH0K91{fNB|W?7RKJ>}L*HCTGV6Tv3+WLR z$4T}kXo4ma`9vvyD5BbvDCG@BU@rCr2~QrzpvyQe*f>$%xNfDBkX{hCWq9>nrCi16 z^vWwa-H4W!{1`=FT+n3M|e2M?0CBZ8);Sn$MQG293mZDD3Uo0%yLrL z4-hA#EF+;QzL55T;KCN$#NQ_287CFofw!~RGu3TkAnB&eIDZnZD+qOf{NAHt7#6WksdScsHQ{G4n827wTC1eDGa+y8<9)rzMcxo zq`%Tzf=YO}4v*l2GCri>!+12?Y-SwYi1g`c=CvA8-BmVrqWSU}b+>!`bv9p*;|Uob zQE&<$Wr=o^>?{x(bxck7Ym>ys2KTTy@uY%};}a4Brn@}b*87ef*WyA4HTaZ*PvbKz zs@m-t)u0#8Du6y<_;3(UprT=#zE4xR@n!0~mFc{nwYwcmmuBi(A_qy2 z*sD2XR$@T4S$P?$bg$4L6CqQ~u%6cGd+nxaIjXo9axdCv*`twkO58?A#E}WhJ`r(j z)l92#0TWSk;F10LW!0d#OGICo3ol{(?9C~cM+$FF3u#q+Y(!q?>(a|czN6>yvN`qv z1l?*|OJ@vbnU%A{>|`n%YTLaa$RXG{hjnu8ooCZs66Xe!{qXJOx2` zd5UkmW_1fs!m#SEJn65cwW$d`tO+Vzd!?&5Ao;C&0&tEI{kJ;9Q$n03n#_K6Q|5Tzu zysB{2ARYkRFYl`S2Ef-2{EGjd=j=AV5e4{N-h2+9ZEiV>WzDT;(b(K}7P05JUV$(0 zznaj%3Vf0O%^p0ygfDZ(lP(>xzucu%;f@5YN}l>0p5d32q!%GW;oi(rtewW+fYvEU zr=YY5s-DJZ zG}smjPQhpv|EXwQsLo~cHQ;ogH)^@yD&aIvQ;14eExlAOa2@LT4z!AIKMK8Ee=NTT>QF@#c$&|FFXCJL|1Mdq zCWY@|5I=Os5`M&Qh3NCigYc(k$)E6mj-^=VTKPPjLp1R?e-pHx_nGA9PX6wm!n^o+ z@EqRn!u#sx$=7^!@1QcX>Rv+*LBFb^a%=fYQctue#`@c`TvNAQhpCCMWf5S)Za3Lhgqirp}-6tlh|s8#pq)a zRWcT>3RO`u`tc`EVR5L+JtahV=He@Dxe48e$g=YEp^pRtuKQf+66+!HUOLdNXysmn z4zroBCBhx9M&N&FkTE9X@z(#M;v%KaGcICr3mI;r4uqwuD05d%<}SR9pSXU}g`d*$ m6|`grenz-T{G2BhfA3}df}>w@r2?<;_iK0bo1A@r3;Z8c&!HFq literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.service.FeedService$$EnhancerBySpringCGLIB$$7434941e.class b/com.example.demo.feed.service.FeedService$$EnhancerBySpringCGLIB$$7434941e.class new file mode 100644 index 0000000000000000000000000000000000000000..51aa3f128679acaba8bcfff23752bc862c607bc8 GIT binary patch literal 14235 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 z z1H}}u?X=wiW^}d3r7JhQ=~8nr)fv1L_ZFw z$L3I}ejHSf4WSA8@sN64+)-D&;v65TE5Y|i>q_zcvAPNPzVj3x9U}h_6?dHByF=6X z-cx++ECYo?Bo=PdJtN+;^enLGB+*Ny=c$rP;PoE9-@^}hxSfiOG&2P2sUx!~feXXFY{z+vpT_>2seC}m}{EE$jG`@#~lj4Gv9I7?K) zvRRgn$MOSViCKoF^a^K*+LlRZy|7?0lybF?C*)^YTQ|yF45pZ8R4YBhbU7{0R_&~` zYMtD59u!bGGZLqB7kl!vpF7H>$Rjch+_4+0p5Z=z?viR-w#eRbctYffA~NO~rqcUu zM4rHM&Xg_0CGy1l>}yBa5|J^@aF`pXVqq7BMl)XjXcKi-}TmwwV6>ED#LtR|Fo&h|3TKJJdbVa~33Fs_7HiMh>U55 zyYvbaIb*-UF9q2OzhqqQ*9dn^GYXepf!uMyz#s1!iSIVI?(IIFo#L5wNvpsmZB6>t zeVx9k$pUbHS+3a)YPmcid&s!KvJrn0mO8$gs~WD^O&J$#M;psgP)Ryx$_==j$a#6b zkLPG)a&?xzVIw`mW`-)H=u`4kIfT0ps^t`RiVPdg*?57E=W3#=Mj#JHk^8=}%H1gaOO{R-_3973T9@^hV!=P9CRXkq9SEj~d@ zictVLLAU!~JxyQTR6gN#IvOhWp9zLa{I3N=rT*80p$Yysf+3IpY%t{Yp9}iGj)|eR z5qk49{V8sHCumJ=jsG?O8ULT1roTQx*Wt={g0^Dp4gc%@zfoh`aql}poftdkKkNTn zHFi@+xmPoLOPGCEn0-%}eP5XUK$!h77%HFO{}H}D{vQYZe}5t42nc@H|CawB6u|?E z@ogCUzW;mvx7FAkit$4j`=S2_{(n?s598K(f}X?JkNrRL|C1VfzC$Sn8h%CYOwf^0 zF)zY?l(O42+#BEL+3LcCL3MS4n?2!FDO|RjpR(PvK1ScTne+;OA8U@uFfgvHb*?EGrpp^o(3EWcBnh@*C6JkF3L&ogj zuNV`Y1b=55+)XCmq}HqWpwqQsD*@r!CiN&L z2PeEpak@kmT3r=Jsk^G;-9&D4h^|X#l!aQ{6THR8=o^aC%VBDil_aC2DAH%?b0$Ww zF))AT<3*a{2>otogkJa(X5-&?@bSF8WW&p7*S$UbwX4zI5Psq1x6np=zH-kiXpcsJ z`osv@#}iY3eg)c>4sJc!hxRr9=T(X2fnmBykr#FQUs7YqVR}A2_C+;z^DteP9{aKy zYa1pcc0f~We_xGViLz;W>}54piBe^HY*>wz57WcWSO+^@XkG{!J-tWo0jt)0fXd#d zb`Kp5=K0Wh-S87$BqoTIjS9#krw6C`0ByWQYjBpUex~Uz* zyalbNV~94K%N6~(Qqvfhz#Dh)|~hA8*E&Yuhw8M6(MUA>O@%tx$fkkj)V7ab$APFt(STvHfP+oC#)g2AJdgpaJs@lV}e5xH=6+ zo4p+*!Oc3E~>d^3&n$>FTIPS&-`g9pok{@2E4c8bN~PV literal 0 HcmV?d00001 diff --git a/com.example.demo.feed.service.FeedService.class b/com.example.demo.feed.service.FeedService.class new file mode 100644 index 0000000000000000000000000000000000000000..fb01123babfabb709aa50d4f72570b4e706914a6 GIT binary patch literal 7639 zcmb_h33wFM9sj*#lS!7r99%{!a+8xq@PI_nT$o^hn1mo;)nRv%4B4GoXD2~wTdTE~ zwU>&m_OORXZp(5K%l87oH}8pG{ba>bJJU*C_}k|sES!o1*-OG<611KnZvO*%S!5+DWHsN z$uWKVkih)f-E}<$Gg@ZhG*l?4R8fU$fre9%Po6`DnUEH>9q3N9nu!iQsXKZ?psO|@ zs>d>iTLSOCaxHZ;8`~nmovUIV<_pXkBZyh-8Vaf9coyg#xyc0Tbkry~L&ZY8B+NzA zQ3|NiM9Hh$9I^!F)z<9^n9}dq291ki5zbPuSj7@7rCW0_OWOs?)0&;pz2|vBXngv* zEt11>>BkiUb85E)J>|j|#VXV)s8dmo27y(DZn6#COvL;^>DBFwWp>jOrEy!=99^I# zDA(l~hJPp*+Si2D3SuhO;B0{0Dq7oLlHzZ(>$R2pMDfe5_ZnK}9oK1lAR*nP=YS5FP>>+?aNUGSsT=fHzIIubg^t zL*0MTr@rda*z0O%(tFA=Ehjy3MlX4qNL`sN8?i~jg(@yWt3Z7r00BSs=~s{G8K+Or zj3pgrS6gexm3^I;?&$0v5NHh1Z#r6r$11Fr5!|7o6Pp=yWUVDLGF<}6vVHG9J?^yB z?T(@g-3qp-xCA|6={OYPCuty4i(%y%-0!$yy_WG+Xl4k#3^A96C~d=b1-&XRMW4Xx zQzNH!t?lidy##5^sY~970Tnx>bJQK%T6YX|ZSU*e-Ps`%Y^RFLu#4;yZWR?MuB{uC z9^Iqja!FCN{gNnC=L!{9;wn1Ku{D=y1hc5x!N76p3+RutkQ z`5iY`YMxM`gG)>~owL(69NlJx3iV4sA#WmMXGE43Ltt6BJin@V)8*_@6-lJHv{BkN zEydC{H?PKIYjP7T6=_^85arZ%%XD;;fnGb4X8ug7mVu*SOfsRoF~>;8dW?+2dUY*cuHY3aUWx0bmW}K%BO&9kcvJMkDFfX>?`w>9 za~B8g52CZH5jcajrqCWPxxuL1!d*Y6YMwQW(99j@n*b*78l5Aw~|Sg56dQ&rH&;5 z6j&4nOm?QL{M%IAf?F9bagPDhHmIYoMUE!8T=^ACI`yE6+wpd`JalTWtq#of4vh+bfrhOyr{H$tiXOpOG>@E3kjM5_O!J zVU1F#a?>tuc?_vT2A`KYJSot8>el4eh9-PbvUy4%eNv{(V8|5X8PIf>ak*!ETE&;~ zj6fu#jWfen22I)SH(G(b^gl)MEWWDXYcdDeY6Jq)n;={BZ>abtzQqMgZi@Q#Oor=$ zzg7sWEo^y0_D(?>HsaM@N8@c2Nzsyq9ZMk? zE;B#kBrmCFikoA0xgnGD+SKgUK%mTPfF)Vfd-S^BFzxercnzVu7vK`Xb~iq{RZII2 zL_4pE>uI^XXB7OF>bqshGBmSF~`=-jOMi#T6TJDAop2I5~}QZ zLWk~XMv{9kLMTyK9uh3MqUr}X*LVrP+YYY^L7QWFewLjs`*6p~tuX?9GbFP=ciL(* z6-YUrl)>J^U6Yun)9B@g%oKM9aY`H2rTJ|K{L(;h^Rhf!enWt$Fia}KqZpr7CPi+V zPsuowx$Ctrb3%?axH6nrU9TzUfHs02B8_7GC0XDVBOUw=WkAi8JYGnJ5y0A%A+DGW+_5d#cXk!z|vf>80NS& zs>gb?)ZT>gImVm-*cJsnI@pU4x?rJ0GOo>|^wS)*g=X}d-D;4+VJfQkpF zpZuUF^2D^kM&IY$t|gQG+`qO|;+YCXRB^j4s#W|2&sXAkmWpoE)a~}9mdWTDMes;+ zMFCD>CM)7}ZdFb^mAT;I6BP@^nTp^sWt*&|!?va+$5XL!Bf}#VJ|vC3v3*0yF~cin zJn`(cEm^>Azbd!)?$|t*Ov*0bR>dN57I&ib6l-{=>BvLoNNs!FpcJ!26-(uC)E~aa zaOCIZs#qaESEN10y_R7*UEbI#Rn)p;HiO8s)#a*)dLCTnOdJ@ot^IQO#S*p@&vK6% zLA5*}=To)pFWfti0Np!}cX=;`z}=#l*XQ__BwY#bXVf3TSLz!ML)14O#@Fkc4r6V7 zP2@1y1DF}Ct`&IA?|ubsr1lUO#1mD?I8(8zmpgkx))Y9dE* zUNLqxmpqAzL%6`@vlw`wX##CE5nd+Heg{hL!x=Rt6S(*gw%#Kr_Gc&7li^F7OKVEA zUwXW!hR3KXa5Mjb21w)U5#@C)DzFYqX?_DwK{sMOT6qfEj|*@G-}drA(BPL}x$`5( zc=A=Mph&?Y1x*T8x&OO>s`0YSBP>2iM?Z(zdPx*k>`^e(Sr_bnwgH*-|^6B$&4hp^jK zKoSxaIpU*o6KzSvTEZ)u^?aanhmmgEPNctUhmWAW@ybJst|Db;)+~?Dy<@~n43I|=d z84`!?^wW`F7Snz|k+(MHQh9P)V}yDAspbf?coI)Emo!Y`bIin&n$k&pp;?i&poWFu zOGVgOU!%x0EvqSWg-Di!R5JG=HDOW(57O0412E_np1RCJ0&@u7Vhj_^5&o)T;5_WZ zg&1YXr3kUlky;mmb2l@9A zFG+cmN%~R#eauV2j~~JP?tC8^QcfYW0UNT&ETuJ|l_j*h90N?j9ZbPN{#Lh>VRso3 z>IL&xxO}z~Ppduo|&qbm{%;h}_A?Aq%q6RhaBStV88I+)5LX@Fc JRESD3=l?l8yEXs- literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.controller.FriendShipController.class b/com.example.demo.friend.controller.FriendShipController.class new file mode 100644 index 0000000000000000000000000000000000000000..9fbfd570325964f281ff548dc77d6efcc5b11c0c GIT binary patch literal 3729 zcmcImdv_B>9KG9yZWFf90s>M%&{X=MERV{oSWT0ZMv^uprC34hHkr0dx4Ut7(}HjP z7JdNn58oU`j(_<0SN#Tl6_0plHzX~#5;(`4vzyu9%-s3SoqK2Ix4(b<3BVbA97PLS zRYWvwL7RdzC1+U|H;v_rCG@gbcJz7I6n0rJIkxXQmL*($EQk~r%}TN!RL~VRl;NUq zSIm-7a4NeQoEJ7(gH`J^978*zDqtPhj3WM zvl^a5T)~k|`!MZ_V|yZP`=)YLA#We=-FBdvGmQ7 zsQ4zut)fV;1$}IjJEzG#G*K!E&r1p06ys=XV*j4M_Y$|x@qj%!Uixz-?Cy@ zRr1vt`k^5V1v~%k46bc^xT$5z?6Zd2z&Q+swekQ7t)bwBrc=v1-kN!D)!%tA)O!k= zpJ3kb7au5$6YP9g@!UU}&L|bQrLh*<*H~l9$&t5q-3^_>6ni&S@a89FA1RF$ovK?B zW0V>d)L4SX$$U)eQNh`!6DRq8qdRGMoUVcM8_4Wvpsh8Qb$+4OOfVpYEhjd1|>lv?9I9zG*qkO%1nXb*xr>)8sbj;vEg| z%JB9|2%L9J+aC|>-q-L!Q0F=hd8nhR_=tXKY&27guCpq)I2`8HEWukEHzIjCV`&S^ zDa`Xd#;+09x9~sK{{vp`ANU^1xBP0sMZVkE2I#^#-@C(B$lw)zv3-EXEf25Z8X^JK zAB?rKF5iVO?%_S4|2rrHchQ$SdIy7_BF4WHw-LLCo~xgsn_ok>(QyY)-@`Ku#O~mX zECsz+fp4>6Y2fD|kBdQ0t-<>sRE{%%C3hLC6NUTpab#V z>ukHv<3&+91-?EE=5vUdw)4CR=Oatk@jA!pV*fXY)Pl>zh%i#X6_&QKG|Ok^8Waz2 z;wodRoW8*Vml#@≫4Jgt3_}d|4-~l8cubYpg zT0Xn#e5jJA!2pJAd_y(}xLRW)AIvdiV_&eY-CUCc%>N*>KZNtVOO23|IumDAB-&b9 z?~}9jO!PC|c5?E7iE&&)mZ`{Cj-?hVX9N?NBxCD2k@}cs%94vcq47l=6|>NKy5y=OsX>iG)}WXt~6}WqT>#ke0KY z@HrgCFmEvzxVR&v=H-BvJ&62;Aqpf)RyNj0vd&7fu8;HNVq<-jf^;H)dyi}`jDkf^^vANE(UHsP7j~w+KzBd|4)5L&rH`j5&x}|2o|_zEm*`d|97y| e$$xaV!={`oZPCDnGHx<_qYk?Si{H|yo&Ny-p}WNZ literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.domain.BasicInfo.class b/com.example.demo.friend.domain.BasicInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..16828e1d22446655f8c022fc1c1db0c512a05a5c GIT binary patch literal 823 zcma)4O>fgc5Ph337uO~I;JXMYl#&#QJ#qkXXhcOMw?w4mzOgsS2HP8L)}j0>IDt68 zogW3vIw37c2yA)$_RaXs^Xz{6{`m`l$Jp~xLfJzlKovEH^|6=r&t4~&vo%wwGjmGJ{HRZ%+|XogBl$C9BQs!Sf| zX@^KkgJzQZp&}PVoMu=pV@|l|E1xQq%j|WMvVm_5- zCJpZxJs>6XD$lG+Wvlc0Fi(__<3f{JDN_T)$F-8+W~I6w7*E7 zD(mQ50d70GKA8)5w94#@d2T1b-6ChSwnyhx*Sc0jZ;r&In5u{S3|nWDIT;!K*3BF{ z@M!bhRR--mHYi@8RUegt-`>F9C)@#80d4^A!#R5Rl}dq4y4}Y<#ahAmSS1_~ULiKX z8m;cpQwRG&#mu9Y6n3eAjvGbSkJH=9Rrf!FeIQUer&wMpQo%xzcFHOKY4*V{vji4q S9r~-;+EV(TX5D|5u=NvnU#Iv0 literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.domain.FriendShipState.class b/com.example.demo.friend.domain.FriendShipState.class new file mode 100644 index 0000000000000000000000000000000000000000..5a854f4d70371ab2c251d7815e8f5f9ea048a763 GIT binary patch literal 1633 zcmb7EZF5sa6n-{uHw`zmO-r%mMS%iI3%zy((Mhdo(_5(qiQF_Z9X@SyZ_};!rL(z- z_-E9ApoAG=bW}d`qtvsTI}(8}nM`)~oU{8p=R9ZkzWV#OKLOlBV+tvx4P;DYkz-iv zM1kc!;lZizS*{mE){zum=vr z5yRc`*y*~@d%fzI!-=H`yVY?91)%ZgOw8jPLvBNaBHm7zu?p4}(oF~FZ_BT{_ zt3U$IDHWGYoW})*4=0r&k4p?w37oy7u--Ru2^aFXLdk5^>vprHyw^-zQQqsszGFA+ z)@buh6W0}SPD{{Z_^4c&xEBnWdgPM&(+v@NU-yGUPqz4>PoAB3s8E@-NQP1)>Tti! zrBJX5b|&NjQIy{95W~y^FFuakCYQ7)_9Ru7iH`+Mg=LR=wmdpp92t>xMaX?p(h=Q| z$9+k->2jsbkl*O|Nk_NGh*aM+6Lt4y}_Tzb{;?=gEO5t)`5Q2v0uhhp`B}dUJob@B4dUFP0`Y@j1g8 z5`pBf!&rV#N|fuBwxZcGv8}>|B>Y6g%DrR4R_^K35pXjSVSIlS`@+P19g|TMk3>#T zi}b2H-#*}{x;+NIVwijV(ptwd`c5^kwobRPNFR`FZBbo%fM&X|dZsI?XS$QX%#!-9 z(9R5TCE`2gSrjcow zpJ9*>2xi$2FR%;zj?_VEA^jZhJ;S0lE@rfGSsNc@wQ*G&%QU>dpxJZ+3ttAFXVT(~+RmGlDDs46VdyhJ73q_pl(5qspNBL2}^ znSn1cg)%Bh^7~p7;My$vQ71nH`xVAZp+0)& literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.domain.Friendee.class b/com.example.demo.friend.domain.Friendee.class new file mode 100644 index 0000000000000000000000000000000000000000..b475b4fe49c03c4bf99c9828c5dd30d668dc7cca GIT binary patch literal 2254 zcmcIm?^7E^7=A7U4$@00wAPjuEMjdEu;=d|1#5wU77aBch|^Ebky~KvJFDMYG>o592uJ!0SNV4_ZW=9}L7eFO~>1 zX-Yru;IqnLf!uvC$83k{P6^N9qKoG}T*Br4)O1R8FuX6cVP&#Xtv?Ko0zV4keZQW> z`^@_auDY1^FoPG!+d#BgdR(Gf>%w1fx3rQ(c5wNVcC2Mf?8sE^Mq)XR6CG%o#HoX; zSt7^&A^RXxE#ju|*IK(G3`NM$>phm2HGy~AT6}yYl#-#KUop-)RgkQ1q?ttRR_tJ^ zNAPO4#)vbW9)E6P$|oZWR9sC$c7D7rV{yODeAITp)Ja`EX$H|wprje+lSO?XSxaBB zt>+@;_UAT*K1jkwpqRL3@g{F20?j?X`G0iNPh(x#jaoX4R`TOyX_@Z9=(Y;tlqXuV zs&XoH2gU?13|>ifhje#^TSeU*5WsjZ8i>+X(pF8eE={w_om_4jwL6&Uk-in1X(rFW z5^lSA-@!_v_WgYo1kq8;Kay!XGa|X`KirGjGW1iSC_cZTl0ELEa)GZlK3#7|(MFtV z<>3R|q0HD__IWMV>TAlhvTBa+5>`B{n&ncyd@Qw@Uh}YSrpFI0a3hhizGv6&dDzI- zRFY_`o*cEjrGw@do55iwM;CPm=TDFK_JK;iGWB7WcT<6vbb%jUs&H_PqbnTE^8F&; zb17cJ^*eZ(YqW20iWg#U$GI-Y3S2tz=3qdTSO+N50%j-h?a#Oi)P6$wF{ZNNGVnv) zTJujC23}*A_#8rw&yj4#$2@J5;wblDz$+Ym$nQ9uXLNR4&hzn6R)Gn5gNsG;i$mLF z;PY*uhigyZ{79qFgAMa~?qgh-0Ef$#C1d>~OVyJ){sT*6*-`=X~eeoBZ|n?|%Y#535DwFytWbVi*O1 zN-OGk^1$!xwWSxxPULNCCBwiAqK>aZZ^@5Us}XKT0)+(?Dsx+4s8Zb=#Rx_n6kVKx zD=>2c%t`_(wLme&m%0%MRGTNntw|k6VI!Eg`Nmw7aazFbLEQ5@Qebv45bHc&B+P_u z{fxkumB9j;eK5x)Lv^!=mvGL(%P!92!pYS1S`--Gk;bwzQK>c``1`)s_QM^o8HGEn z`ywtmxa{HzULkJ-(U#KV5H+>VK7+e%v?8*=h0nX8Q60IdVzt$li(wcU->4{z1ui9p z9C&-2gNls|Thd$ZY{?*y0Yk4HbG&E>ywx@Gvwf+x3MBpVVKS+lVt0jB)b4gdfyrZn z>&Y1-PW5K|m5nJKu2P_UJqkGaa#Mx!UYGUg4WFfxx@Oe!+nc^tcAahJ&8}iECyH$) z6DiZ5UX^Ay3f6qh!VR0Zb!+Jx=J@{q(alL3>#MHNjnnsM#2V>vFCW9^hW5jlZ?j=X zrC6FCgcaG`;9XQVNp)X%n()Se0M>inLKN4du5QT{Wd~L2)pElsUEs=76-%+BKx_xyQu;ij{kBiyyfiiY`*~N<8F7KtlYmo}g-Sq6Pi$-#$ zqsXMn$xut{#&3PS>hC2|bkGzybM$I&?CR)S+aIQQFXeba=lI796#`eey2#ZOpRe*c z9pg1zyMxzxMtg=^ybOn=Lo|uJ-o@8A+g>{bYo}6 zDLzfYl7Rtl>S=_ O1vz}cai;3K1^fdpp9v8F literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.domain.Friendship.class b/com.example.demo.friend.domain.Friendship.class new file mode 100644 index 0000000000000000000000000000000000000000..c5e5723c14e96116de93abd4645ed57638c74055 GIT binary patch literal 3055 zcmcImZFdtz6n-Y8NgB4a1t|r~TM=nf>>{YBMWjtrh=vl{w4V9`ZnM*L>t;7>HWfbk zm%zh|N6*pk{wVdC*`?9C==#Bvb9Uy=oqM0>zRXO1{q4t}0bIpS5g8oFBWqv)If0QK zYu7Se%WIi;Hg{w*6v$n3JSV&^aA0bBeGml<=20|o5Qe~X({G#dq1EoV(zIpUH@5;u zdbVl%ZOie@B`tNgosK{uQptd3wN!R8m{WL%3=CtW??9$^AnD*Rj^y#0fuk4`m`w$| zO2Vt56%uK1rE+(zvf8LD3S3G@d(T?4A2)DZAs>vw*KUi9>UEXz34yh#bY7W^lpE#T z^m-Aea5|4O2F_wq;6kdfCF31v$*^h*9G;r4^?RY_do7*HHw>It(d6dKKinNn*d12cMUu~MrrcdCqU8JLABka6gKWWRHP<10NcblP&=={lRPocBDRC2)MN zD=?zE$BMMmqHb66w`ha}*fAsHvVwdf8)uob)@+>gK7GBa9kCdvFPbOr%5m;WA zH&v*jvzkrWiA~hu6&MZVgP!dEWo^WkE`yIeN81kekw{>MM<(4l3yAtBTh=PQt!mIi zd${o}bvZ3`|85c}uKK;8DVH48EW=S;s^GKg+$Z;Tg(oz8LD|IneKXgL1ylJ4RmWMl$+%nsx#_Y``a2Hi+F8}JFas6eit9$Lr&%-uHhqk%Bshj3)ksIfeMZT zr56xSwA+vQRcc@eH~3Y++<iP}NKYm?0J)p%}4G_bDzu)^z%G4=2za#3CxO z@dM=P4mdX|7JeXk{Di_rY32n^=!JX0<61PE`GqFH3I0HSeTefKLZ!CAcWQ~bfu7ye zrD#!Nwtm-UB9Co)xr>zq?#K3XpGe>?P}{4M%M>c^XGcX@b7zvLnPe@J`4cjy;$F;r z9OHY;)qgawW%6u?8=R?n7RWcMr{X-UIFEyj3+kh2f0Bf}_!9Y?My41etJy1&XNhd4 zNB%Skx$+YEO^r-3Mpm;|B3~x*mGsDWP){h;(Ed`5?|JN>3W3{LPB6~zH$IwZe2Wd9 z(MM`qUk19)OHs^EG4vcKM+L>WL)9!H=IG3p_5l8+#+O)lWm4ss!K(f?^aV6bd5!Wq JwY)t(`vbgBuJ!-` literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.domain.PersonId.class b/com.example.demo.friend.domain.PersonId.class new file mode 100644 index 0000000000000000000000000000000000000000..2ae7fbb9968888844bbc769d5510757d3e959aaf GIT binary patch literal 1141 zcmb7CT~8B16g|^VT9$7GK_!A8P*6snOvIQdfk;xd5p3e)v^y<>yF1P7wBk?kUtprq zXrk}_DD}?nN(uU)FY|Hl+;h)4bHD%i{1w1m+^Hgmd>I7~MU)sO55++6Ktx^staT{c zmZ5ZCMan*4$gkF#6^x)#M%BY8JcgCF4!JxMVK0!}m!akzqh#cBUxz|Pydh1jqg|gN zr)Zh158>-N>TXsEZrrt=V3=7wo2@k&3R~Kj3=?$~$*29WCC$EQ1r(XC>$V7*!YFso zf(3h^Vuo7%A9-yOrzg@LXulzh2&E;yq_}OQu+(GoPfGuRT%w=M%&H^L}JiD4Qx)B=TVtX)CPK5s_R>FpqeTD681Ys4e+6`Q!V} z4|4VjmdjXTc%)62ca0FiAmjrT_me}QTKupR^p($JX$I2phS42jVX~fEjTbxpAlQv! zYdl=VHHJ|#h^*RETwA zGg{m912WXHJuBL;o`_!Zqh;Kt!59wB{(;f2ojxql2IrDIO(8{G@eaLq;8j<=w*CR-A;LKFlsQk$W>LXh zf;5}H&XA}sq2vf$zk+i~*^I-YMaw W6XB&ycn%i{JBLfSOuMUC1bzXE)98Kx literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.domain.PersonName.class b/com.example.demo.friend.domain.PersonName.class new file mode 100644 index 0000000000000000000000000000000000000000..8f9b68c151b49500415a397c5216ea486a634659 GIT binary patch literal 1163 zcmb7DTTc@~6#k}^E-ee?E_fk=w_cRhClfImB@j&tHiAuzPt)$S3~pze*=fapg^5O^ ziN5=z)HAy)Rp3EiX3m_;cfRxO+3!C-e+6(CcM8a0#6i}@C~^!_2YkT2fUA!8ta%_> zh9P%fDrp`tjFifaJjRfBP;fC0m!aGWyPi1Y-CiI(UvxvSt))=D=Z9S`l~)%!3e^tp z3WltTubJAg#jep(b=C_6I%x?M8Rko;=)aBt>wEhd-=?IeuF;^;|o{_ILrP!9s)H4V$D!_c9nE<#=z0Sg^N;!_51sbhsK40i z2fn^*fSa-3P0M|pQ%#$Q` z)5Wbgro+%AA0tJb*fqTMdYkv+@9W?;!|ZU4_V#u7#?FTo+N2CEHlvdkl&n#*7qLX= z6umsUne|rQ!#N@&gK0W*v2z+TWV=ZMW-&*vto<#>^LOz_uy-elC(kI(*p*I;x2Tn6 zR;W;MrTPKR5MdG{6q%)FbI4;pMp{U+QyNqk&ttitKgPV5V&+cZCF8h%;N*^Raw$$8 z3pkf@Ytx99+v+r4eL@xZg0Yvxb0U6U1CDBmRs9x=vqXA=I1i;;Jf41xyovH_ltW_v WjFXu|+GlWqd>LHCCAuxkW#AWKzwt2u literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.service.FriendShipService$$EnhancerBySpringCGLIB$$ec19504a.class b/com.example.demo.friend.service.FriendShipService$$EnhancerBySpringCGLIB$$ec19504a.class new file mode 100644 index 0000000000000000000000000000000000000000..56dc1f372a9023e16ff8aac6ea057ffd110964ae GIT binary patch literal 15210 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

YtSP<1#YFizmu1gnEH?^E%rY#c zS2#=5u5&f(Ow1Av6co*3n&BzE!Zq8;*X2h1-idii#NR3rAM=bkrDvF)(GiQXdu}M~ zo0vUB?h=tP&2X1qfg)#xLKNe36~1dy?l%Z`Ofw3XUV+?k(Z}E88HqhFD260Tl9?;aQ2a^$?*rm8B$ypweO z)*Yj?GZ-p9&+U&;x4F%Nh(bH>yip1%n(_#^^1{Hq9)I1JzFU|qIHj`S>A49S@;JZz zF{cu+^=!zOA8*1xuj?0 zKN~mww7JwJ*>mwvZ!?%_CJG?w+LniY+@*iJpYZ_tl1WLg0Q#W%vRh!e8aHFP_nz

B1v) zQ4xIq2t5+`v*YyFZ8NRc>9J5z;2jt%@cm$DYTyUK(6qo0gCSqwN5PO4_;D~ab6VhC z{PqRj3kLoci$d+k=pT;Lzv0Gygzl`Z34A~BPT=2<)BhZyyKrqkLJwo?hk+jieyYYE z4Nb+^a~S(^;75V~Rb$VGreW+j#@-9O8~B+Td#!6`sRr}Dfcd$A`GtT%&lmWmfcZdy z`IQ1AeJk*5{4NQ67%XQRi)c9nv*Ne%v@oTsS44ux$S20sY=vYd<5 zV7CIdTMhoIoQu_9EaU^?Aq;*P_;oo?RfGGwlzL&YSEO13O&gPOl%uYnm7~7!KJQSa z5)2|Ppn5u!?x*y1*y9U((!PK~Bl^Y{q*s71fanu$(%~VROcO zMd{^1s>;z)p;rnmp_B9t(CyK{p8_eXphG$-jTxLcat-Ib}8C-_ijAekM^g5 zQ>sMu@(5j}*a7s*fp4m@$496mGxj@b>>ivinXzxHvD65?mKpm!HMVnvpjN3tSd3UUf-7YL9OtgM^5if#F+G3ZI{XXH} zO+6MY;D=5l;uurRm4Am}Jmw8kNIvA}z1kF~Xi9tStGwq+)LmPAl=r}ej&TZg+!Jw;7N>F{<-ckbBkLj|zxD3@%dETC#hQ|EDFJLnX^g^?xExro7Gkg1hw&8S8BK z^L}le+U;rWx$4X)*j2e}1lKICr4%It4K&lxg7_yBX=v&U3uZxjj)#qs(_d+}`1yc_ zBwvtb`d;U+hKledX$204npgQCjt4Y1uG&9nDtp;zQWHKFyA!sZm*wj%7D>k?*s|?Ppn>p9|;a(`BnI7!jA-x4Zu50)qp!p zi-2~R<^$|7%>mY7@&oEHl>z85O_ePP9tN!ROvvlUKT=3*ZW)#Cho81g@Y4ua&Nlc= za@?G=)zl;_{Cu+(NRnG*i+D1urDs^r!RN#@Yh|=NRY#RACEP60!{8Rf*^TkX`|>-Gpojd`LdMPNA~j E093@hivR!s literal 0 HcmV?d00001 diff --git a/com.example.demo.friend.service.FriendShipService.class b/com.example.demo.friend.service.FriendShipService.class new file mode 100644 index 0000000000000000000000000000000000000000..009a0d5470c9ba21580ef939db324bf9027a0a4a GIT binary patch literal 8858 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 P^{CY9bTKEjdhCAzCQi-( literal 0 HcmV?d00001 diff --git a/com.example.demo.preferenceinfo.controller.PreferenceInfoController.class b/com.example.demo.preferenceinfo.controller.PreferenceInfoController.class new file mode 100644 index 0000000000000000000000000000000000000000..2337ed9363a9e36cad794de143bdcfc7f418d4e3 GIT binary patch literal 3038 zcmbtWS##4?6#nFx2sO zgK1Ny5AAz@MxXl=I&HrzD>ezF@xa5qI=biFvwUZf{`lwD-vC^Pl|T$VD&iWpp;tlP zbnCi!Wz-wC&?}J3j+g(nr33sK3vmV2?Hpp-7XG?oqBHk?Jh zy5*oEB+3R}6`1-7Y+%u#A~#R|;Yq|r!GWhzQnN~SB- zL0+aS72%ocv#eNM3a8SXGt^E5iIcv&P*Q;2LVJqlKXQ=luj;J`Q z;TVo9IOBSYy5I0DXR+!Tb+O`lOL{E`8al5xT*ns$C$NIo^vPXPa6O$Vb$KI|b1ScN zP0Owbk7%F3NfkpHP9de>)TTNnXnHmviD-YXzNk zD$$87Zu+>PxHrCkMzJSx5tme4)^G(^*;^e;56drw84#;mmSY8X!Wvmnu;&ABGCYmv z-3lkg&XVPbsb;+_yg8$6^JI6)H4S^g@GSWr9ma#2#Vi)K?9nb-Ym6RNqcJeB5g78k zu&EW?+|t-)eL@R6Sa{|VJ2wg-S$JiNMqsfERODH;A#9H2>Q##qIBS~1_wNbE5|y?j z!JQOA&8nk%BLmo2BF8*N#A+VulE z*I=vC*=@^)-6Zt;bcu_vf7gQNdtFu<^$xAK*>-20@oU{1H-g$)erbKrN9vgXeNZ(U zQzfe?!BHmrKvsPw^uFVK#9}yYp>{;M^d}_uy-(bjG@hJwo1Q7gnLq`{I+J((SMt2f zG>2~2@NifLosTR5>YL)pq>w$rWN1al5nkRld|$AZ=*Q(vC*blX!w> zDxNCHNnMMcVc5%cecAGxAz@o({bki|S`}T^eE3h`%EI-c%E(X8k2h_*==g!B;W@sh zepW1Nmm}Zf#E+-*nFVR)g@$h>I~lQGS%Ew*YcS>U&W0B%o^~xKm}v2YhHA+3T$ebs zwW_GGdOGuGuI9Nba%kWre|9eNzlYOA{_c?KA$VjXIF7{>MeGh zTg9I9Kgzq;xTIz&dz@=HTKYR2di(?SzQy1>43kQ}MMhGgzHfjxr4}{%dwBl|(US2< zUx)Zvph5a|78m$+xB{I%U1EHfk;PR^Q0hxc9K^Q2aYM!4-bC-eyrZZLjN4)u|HlDdW4v?ZxYQZb@;5w+KBiFQ*#T?gF$E^#5a^?c#k2RqTJEnh2p%WhFgeNO4Saj}h-VK6jJq=Mw|l XG0%UH$GwRVZCRN!Jf7u}Iq3fn)A36^ literal 0 HcmV?d00001 diff --git a/com.example.demo.preferenceinfo.domain.PreferenceInfo.class b/com.example.demo.preferenceinfo.domain.PreferenceInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..cdb8b74c07e4a0af95350f9d20852064b15b8625 GIT binary patch literal 3369 zcmcImYf}_Q6g|Bx?6MBBh);-#uP7|&XcFTCLt=R7#uX_*j1^zQPJ^SfGt}%XYE^zl zeu$=|OeIyx_xz|N=gthffD__Ul`qrXx4Z8>_uNO%pMU-OJAg~57LY+l4p{@8=u#*? zv(_xrwY(Mc&eAho4HdesIi3@aD|8GEFLoo3?i>mR_P|iMSoLeBereTKU2WRB=9{a5 zUe5)P1jP({!a}yW)E*V`6KsfnG6Gu>ESI zroFIii@49gKJ+W(UB7CDj_)aqRocc7$~X+=k-3H!IyJrM)SV?)U-vwp1Tjpc=wJl$ zrMb$$JM~a9#Vp%n3MW!FZfH*jR;cYo%WY^L%GX0#ue{pvJS{D}T8++^C#Pl>$_w}D z!-Q{Zh2Dze>6u1tNe2rS!71z$r`<&>aAchbv*A;RXfL%NM#*p@E#B7QQ{SGo0;{G& zI?GC`2Abd%e)?Y{w`<5**LhBKT~SeSGCtJ4s!a)`(7o($6>ki)#fw|=l7~MVx5uA#K&?x2@I4`5cx= zSStk=o(BF4=^!}Hewg9&+Q~1QA{2(X>f@@!afItpjk7pM0bfyyGV+>5BOkkHWcTOT z$D@3f`8ByRIVz5wrFT$oqGRXzm2L2qyuh#661$(_bB-B#Cn%B2FSyEb9F)tYk#*!s zqwDA?on1$<^fUIaW1yvSfJ(uuSsX(*-Py}mpdTkOfK!o~QmiU5L#2@)VtP=XYnqao z_|!r3-{5)zqUFI`6kqdD1}zVcqgKNJm$;9nRuMR6W*ib z??{2l!Qy%nQwfr*JR$saNf1uAIFG|$gvzZ>L-t4Li`i%^-3TQgJI0e$0FdX9|rr2rp8u9 zDqO~u#OLwNiBN2D7h^h4r!GVq-cJTeGvV)A8U>FwC^#8Wz-2;#%>I>v%cS5+6Yzgf z0NiMLu_c{1d9iaE#vTAS(=(~3#m3Hh;?m0v7*8Qfx+GpIyOx|g%t Mq;{r`JD3Ij0b{bng#Z8m literal 0 HcmV?d00001 diff --git a/com.example.demo.preferenceinfo.domain.PreferenceLocation.class b/com.example.demo.preferenceinfo.domain.PreferenceLocation.class new file mode 100644 index 0000000000000000000000000000000000000000..4502a8c7e65867d11a86e22c4dc0cbb8ebf3319d GIT binary patch literal 1590 zcmbtUU2_vR6g{#XuVXe}PDn`jDv%bNuO&k%P`hrxIFuQiWa`8-3{Q$JI|{qnjJ)g8 z$Nr-dW`Jp@EzkW?ZLj17+zC%)Jl0D0O6S~r?v?)j=eIur+`+?1q>y%yaWR1`!@W)z zc;W>Q4t(KtMG$%iTJ(e#sw1T8gGVyUsuhurhI>U*2J`=S%k-YHBwm~k1P#!b1A}v+FJkDSMEdIQU1)OBaR-}?qm0@ulDmnSM)XrgvA+u4h zKg^S+^G4Ve7fU$JP(FqnIh>_DYMaew{mHfgJ@4YI0nOUn1`O3=={R~*(6z8j3ePm8 z5>Mh_SLkiN>yu^k6PcEdkqbk?w2R;7S{jCgCZl*jY=xr*VVG@-XfNz;aZP(7p()=? zv?uA4UlmlM)zR6h(IV7cskqND*^+(5qgWGex>#y6?J9LY@rmpqoVFMOv*PO+Uc7a`ns`6kgIag-bMM!Dvk5OB!7} zcTh4wxJLgJuG9N)gGOdyet|l|ICB z>uKf?=UT78?4i5B%f@JS^)E|UH9$!?(>BTsQ|y7*WH9_g+Sj^z0dpug>fYmvsg_i`V@%Cm?#!4MIm+N kE!=lVSwliWuK!b{KPhew1$>3e1b37)l?d+PrVVlJKL*Z!TL1t6 literal 0 HcmV?d00001 diff --git a/com.example.demo.preferenceinfo.domain.PreferenceStatus.class b/com.example.demo.preferenceinfo.domain.PreferenceStatus.class new file mode 100644 index 0000000000000000000000000000000000000000..496781c3a3841d27e201d3a97c243b494c70bb09 GIT binary patch literal 1635 zcmbVMTW=Fb6#m9`ypCCu#NpC}OADmMP6S)pA}%pez_E*k69P*tr94gSu`^*W(RkOT z|D^u_cq>6F2t>;>KdSAS@d{kv$+A2%=Q7`SE_3$%Kd=7+a0Ry~kwV%+#>ND)3|HEr z?}*3T-}i*m5q{|GE72871Z^RMZs>GEpUc46{GfFs9>skIYoT?sxm9x+u0L#!iL#tW z4wDwLHu5;cFwyqHKrkFBm79Bfz#WeVJ?HMuo@htpTfkupQ#PhC!*KYcLoJAX3TVK+ zSlsP0TrQ2=u6n%RUmj7ok&;1gd6Yo|82niqM{txOTakf`Rv3I88Xer zom!siIjf60Z{s*lFkBnE7&)9`up1j|je5OyzqV1WY22@EoWhA5&QOMH4Oeq&^*I}7 zG+owYP5r2p%H#KelBtFrs{B+_24W-jcZ7PtcRbRpf1v{9v2$c7Hp4deT3ktupO9n% z?h{w>^ENR|uZw6m>}+yHK9NwAYbM&2wB;8BHEv;ew=fh!)sX@B7$#lW3+SmT!cCXT zErwjB?Imr!GeV@BUl}{0m1T;<4P(_7b*bxh^wUwfs2^&cX78GXs|>e7)pL4^b8p}~ z1KE$w!IL}AUe}9d$LR|-5Q-))>=K~59|w{2MRjwl9(!IR=ts)Nbr9_#DhCy&7DVbd zs!6F@ZfTkuHdeGbpO_!ZNUK+E+|=r+{UPvXD1+$s&{nmvW^5`9qhYxd)B=rr`_Vez zH;uCJGsEo1!F#Z)!e4b8S1-|%EYKGwvpT280HB?ot=Z|F0@L&QgQGpjlV*(8??}3Y zH2nZ;ap~ks6ra;Eh4Zv#!DvmROsj3q7A|NYd{6%rUCiMJTA6|Q9Tw?;UuM{oSGWbd zL2A2rEd3H+y}+CiPG*d7+6doF7~yR8E%~JnFz0S(4shDto;bi+_XU{2sQ}NL!_(5= zCWd>sXV`UwMM_1dQ=r7=Dc(?7lJ6B8H!?R@fGZMNEt;!L8kvxq`z46 W9Obx(C4&2$G?nz>NBm?$y!;=fpNc5} literal 0 HcmV?d00001 diff --git a/com.example.demo.preferenceinfo.service.PreferenceInfoService$$EnhancerBySpringCGLIB$$9017d39e.class b/com.example.demo.preferenceinfo.service.PreferenceInfoService$$EnhancerBySpringCGLIB$$9017d39e.class new file mode 100644 index 0000000000000000000000000000000000000000..5666ded07de3f31af0af3652a3cc1f7fa4716e8c GIT binary patch literal 14157 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 DHybEQ literal 0 HcmV?d00001 diff --git a/com.example.demo.preferenceinfo.service.PreferenceInfoService.class b/com.example.demo.preferenceinfo.service.PreferenceInfoService.class new file mode 100644 index 0000000000000000000000000000000000000000..6d80509cc18f1d8e4bcf428d5eea8d94f5ecce1d GIT binary patch literal 5873 zcmbVQ`Fm8=8GcVP$(3+J*c76mAP7lVhKk4%7D+N`QYK3i5(-k|Fmsb!nA{ug%mipH zE^W1|wrXk7w%U#Etx`ydtxFe+rTg|g{h@zEf0x$2-??{|3bi9vHtvp$Sg8S0D%{b~7!R?`aVeT|#}c*^6|&}eRN@8`^H8I( zVA!%!eb%^}v9qpsMqyK!fso`Gv`-^%u7QbK0}D*lVWGmJI?W9DhmNT8H{Z6XQN?Tbg zrO?q(A}a1WBh4l6fpX1dyfsr8y|o zGM7ka6mBd9MbEM0Rx;b%ctkR_-Nbt}V__=k7VGQl>641rY2tl2ps>7{Vp2;>GiHC- z-XgKC$3YqGomP&EEHvWQ%tJSN4D_0KKl&J}P=se=8h4Y4tnIRRM#Kgt!Q2(g^I&;B zhyeqGCJx~P3j5})%}g&v1$!-L+T3Jr%yO9dEW5r#JS&xl4(IY3C_G&nu9>yif1k5f zdG6(E_-y_aix{dSxYxi@DNXdtwmEAcT!hJeCWdf7(V3R8v1IKnlVG!{R5WK$cpfv6 z1amc#woi~_Wkchj#Btcf2u3-bNlb8hU8!I5X;4yvgDEM4$0RvUm`F=<82tmSt+D=o zk>r?gG0ws#QSHwLHMdMY&t`$_&1IO~9x?{9CUTfi*gj{s`g~|(yz@Ye*)whdwmc)3JDz8?tf zp-Z2|mkoTy#8;)$-V#z~76wE>p}E%Gbq$`!*9?5!#5V*{3yX)7pJproyKTqL?&X?f zZM$wtduWFv%G_eV`ZaumByf((f1&3uem_mx5VhK#8@i3&|5*iSfWIHL=r4Yh2D*)~iW!(GhiQmj@g_ z$Mz?aL}8od*jB1QNtL^-?5LaSO?Zhherb4gMtxt-$=YMqpq;Vl^!<+GvK9(oY4Kfe zB$^rbY-eOxww!Xk6Va@fa59Oc&_ojj^60_hbRtcSZxb8^iNY37Lx~4#Fe9)!8iLhK zkCsXF8KDkGssOWUaihqY$Mo?JduDnt=J^v2QmNkqJ)4!PE^{K5Qi^FMT~wIuEXn$R z^hbimcN951Ya3ohsx~U`(7^sY<{JkUYWm%rm$cdmFom0oiCvN#n+1jn4P}9oA>u4I zduH5<=GoTZbzC*@8-*5u+K87(q$kFr6LyBZG6!k(rPG~GChM7a1Ha{gMQ9V`F()fm0+EK+Ms_8y<98;0FUvK-@@YFO(|sd;PumK7PPAa?v`-`YNqOg&v6>m3kzaMD$2>sUoMB z@H4JalZwSK_=8%u2)A6ppMj=HsP3jqFg8?P!Tc#Ks>I=4k*lb?2%qK}@B-IYZkojE zD_CD2nFNPhIh?}XmC%&CHMfBBtdKmiaT1Rn-c_ZSKU2EgA$b`eiZp+7=-)mO1s zX7m!LugF||HAj>9V14x@64aohzIqB)1r7<7eG$hCT!munB2HdFy$ny)S54x{G6WyK zfLhH>2)tXx{n+)7;U~}Vj+-l&d>++p+WYyBQFdxbwIQaKBjfxJ&@di~Lph8AJ$B(GKj9%ub z0<}s}6t2F0v3jHp=M{Hf9Xu<1cT;WKNH^pZKX{z}z_#NfC zpltObtng8D3Fjv9jDD4{(|=sJ=KGIb{c;lf{_}zSm{!>o^{_BdSuC!DdW*zG%Zj=v zy6js4YM0U0Dh7t~R~As)H3PNXdC-z14_cy7Kuc_u!)!nptP1TU_MI2#$F!h;O9u(! zvU(9+8n9QfTV7?FQv%jVeS{+cE3xT=HR6MnL_SuFT7~$@_B?`@%kUI;eMsXo*cGf3 zz^0ZklPmo%lmUL1tD^rMUJ(Lo=)QGy^m?p76U*5K-aa*9CpKaaqU@Nr5W`#fF@6`( zyN&3)n}uUL9>oqk$t$6A*o|j+5AqyZ2&Xm{lNeq@JARE0V)y_78OJ}-g@2((<9My$ zc%zTwh81t3=Q_3##Y@50O(%<{{v?T%q#!^ literal 0 HcmV?d00001 diff --git a/com.example.demo.security.infrastructure.PasswordEncoderConfig$$EnhancerBySpringCGLIB$$ab722492$$FastClassBySpringCGLIB$$bf0bec24.class b/com.example.demo.security.infrastructure.PasswordEncoderConfig$$EnhancerBySpringCGLIB$$ab722492$$FastClassBySpringCGLIB$$bf0bec24.class new file mode 100644 index 0000000000000000000000000000000000000000..d904d27ebb64823f9b618222b4df87c3aa1b78f0 GIT binary patch literal 5739 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 P6`3~$!w-n)!HoX^J}mLQ literal 0 HcmV?d00001 diff --git a/com.example.demo.security.infrastructure.PasswordEncoderConfig$$EnhancerBySpringCGLIB$$ab722492.class b/com.example.demo.security.infrastructure.PasswordEncoderConfig$$EnhancerBySpringCGLIB$$ab722492.class new file mode 100644 index 0000000000000000000000000000000000000000..0074fd1a33000c86b39d738d0aada21bf9b3aca3 GIT binary patch literal 4896 zcmbtXZCe!A8NLq-nPnXVy9QCB#H6bMw%JkC+7x1h1%$8yVNtqjgTpc`tHTbN9T3{I znlx={(ll-QV${6#J#G3DL6Npss-M#9>QCq|=s)PU(&wBryUZ?&q?aGyyv#ZGb3d== z*?<1`uYU({2+Is(DQj9Y=Jn|r)6gc2X-mr)saZSYENGeRq^;*1dp70F+J-iy=W-V< zd!jp=vL*~WW@RTc>2SC^JEdn+hTXZ4n6We2bnJM%uQMFh$B(qO9(uY}0b@A&U_uo5 z7)C8St>uIWqBU(0l?z(R$~wlpqv_eK<>*ev%4(9=tSweClStvOth>e;k5IDXzpIc*Hv z<;juW;qH#Eu~#q834J zxE6*-B!$ktfufMDYg*5@`IL$;;;8^#jH-AHdpN{?6<S(S;5kNZl$zGLVj|I4a|zk1EDm4ogca=vVQqjExh8sxX^jONGcPNobXLbG}wUy6~jhxHicdUfN-zbWBO06}9a<@&z^B4{w4l39F zDLpq8qlZour9KrWaf*K$Wf&~UsRzwcKay0~j2CBhlZr&yq&uzR49;@-U!$^6?1}OQ zyPxa*7%Os+R9}HE+kvRt4n%o75Y5MTw74CJ4i#6~&)E+6k)oosW_j^IDfU?Z_c}}@p?<#A!nsA6~H7iesuXk?{O=|bF`#GhzdJI-4uxOxOTIy>fOsr{L=pgemGv9CE>HUKdDvd(vgyhRfP>WW$~R zFK1P}gl`7$4SdUwC;iwbTge9qP(NPrV=u2;k5W4zt8JotWNdxE7A3!I>{)5QLifeX zsgKf9#rOEzxD!{3&`Vo86%V6^Ka$^9;YT%}{eS={4ofRj;T8HJe#CL#R#3wb-i#P; zy%hXZ#Wp;`(XUcLYfqV?cPi6)9a3?f_fr+Pp<=t7y+{4ZTAorLW?j_BO++|qrt zo>y)rF=%BiB~q{K>%&kfOY7EzL(S_6eP)DXGXx564rN9lVa-xk+LJMj06xO+75t8& zldGP#b={ns*5)!fDw;Im4e|L&b2c+UKVR%Q!`A4m`2+co5Q4m@O0m(nZ0 z-BNK|e6uafkvSz$!N{VO^#399cLnz}{pzYl09$Bm;Ek&oDHdp~;Qg2w={Xf6`Hsc_ z>fH0xY|*-bH&|k%mP?HE=!%gZR~i|9j$hEI(u|s9`u|H>)e%0UvAQLB2j5wNc9Rw$ zO4kZUdf=l&z@8wku3!mR!MiJXU#$KJ+>Fav5Q{iP?cg99+aYW^YI{V2t60c#LIYHEV*0~ zOCR!LcVGt>uoh!t$>mk!jRI&Fd6yfnG05YU;EHi)mB#&{)600_8p0GS;u;D6By>*f z)lyIw_C{G@O4<^Bp4%A42uEtW6IG^y@r3(_RZ%*GscW&f5X8sVRDWL*6+uaJE}h`{ z%*_?A>NPxJ>pa0&i(`eH?RB+(EQk*zsLViGxCZ4j7j-*Dah|k5-R?nM%e)5uo6)uI zRX6j_1@WQ8zlVx=-O^)0~uTPEkW{5*t#0hXBKGXj%c~f4-AP AL;wH) literal 0 HcmV?d00001 diff --git a/com.example.demo.security.infrastructure.PasswordEncoderConfig$$FastClassBySpringCGLIB$$c3458f2c.class b/com.example.demo.security.infrastructure.PasswordEncoderConfig$$FastClassBySpringCGLIB$$c3458f2c.class new file mode 100644 index 0000000000000000000000000000000000000000..718fce232cb448d0b68fe6005d96281273bf14d0 GIT binary patch literal 3162 zcmbtVU2ha+6n@@*&9ZE1cMFIXq+*pVrHmG^lwyHhC@lS?1xgDD)9LJX+S!>hJ6qbs z#4GO<)WomETSKB;h>5MS2E0@gZ@ux-_!qpiKJUzIyU;e8uCqZEzQoUe$=j(D>2kS ziJ}S-fk@8qGWMh~FVL3k+dQi75YdR4vo(pWt0f~)zvg*xVwx!_h|!_vjCc~34Bk=} zJ&<zV(lP#GT5@?XB?E-_dPqIf>8zr~Oz3wi|dX8E;^)&fi z5$q%_#_ghJv4}g$X$g|=Y8j7V7oL~#Ul3>vOgFTPV7I{T63&f4M(`p_QbI>)5i~tP zSU`q?eFFQ-V}vAKE8{J!8eMFQV3$DM8tuMH!F~aSWgK9i#LyzyP2xZp?vSkfp#Wk8 z2O~((Ly4uZGb2z166<3scwJJpULmVrW7>1h3@dj$nJLRQB(wZXiQn~B?DI7+rM}M4 zudaEfV_(u-!a6&z8?*9J!5aeI&-VH$I3{rFS(_;a7009KM3 zn{p;q-LVV)rRKO1Tzu-~2^%&@dL)V=Tw>?j#+?igX|~P=NhUM@w;gy3__xzl$%DI|m&E?fOv%vd>8+lJpXRV?+$*+Su zXSnK+>tuP*9WL6QnK#lymwSqqB}sB)n1V@20o`Y9PeQ0lrdzJaFf%b&QXLJ|^QI@o zb_|Xb*UbiwhaA)P&Ih{NF}S|YbsVqXFQV@i0u{XV!ByZb+~kfQ8-CV~Qhtk1fACrA z@5aUZ-(way_!BxCzoG<~@MoZs>t2pljugkhB2M_`)4(@vmFIraJgs(7%2gWo^Sx9B24bp_X&1FcKg@{l{}{0c@Xy~X{H zi1?6u!=`xXVmid5@(z)BQa+0To)0b%bK!UC|5L^Liw2ogAWb8Hbi zzNV``IjTO{Ic#xl`S#~`9&;Uu{Pv)c>-*gg2V~Ht#4C$v{2Yrx-q=G~>6aL-_Pqv) zf0}sJw|p3b_k4<8H!kbepse^k?5oe>;=`b3CHDA|c2=h(+3QQ1Sm~1FC10|QbqOW1W5X>;mb#is_Iyg3AJpdrL~h8Lu~FB;?GBOfCpawGF(7`Y3>BzU!y!qh>m@Nw-f K640rvK=r=^S?^;2 literal 0 HcmV?d00001 diff --git a/com.example.demo.security.infrastructure.PasswordEncoderConfig.class b/com.example.demo.security.infrastructure.PasswordEncoderConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..d92ce8029269452cf7e2c5d740581c9155349dbb GIT binary patch literal 1028 zcmbu8TTc@~6vzJqg~hT^E?xkycx^E{Z~A~CN+Z#vXd~Ff$LV(34(!e}v$F-hl|ErK z(RV+TdS+Xx5*|q0hckOF^E>CvocZzd%QpZ|u~x(w#sd^WOkk2>Zcp?DkA?2=x6M5n zIflt+N-MX)FkY@S0!%SHH@3smo>jWjwjz-S#_sb}MwwOah)4FQ=L~P=E8nbowJy?> zqFOI?WLnY|5%{Fj3>%S2xI7d|FP6L|6Eor{P4Lv&EOMEZ{1l>UbX#>83RMC!lxj-L zH(An@c2_iGvMkh0B;tm!%Iia8!F5$i4b=WG?K&mw{o4{j%az)B4(89s(;X3X`CX=+ zN@PQ&ii&=rwQ<5Jqp9XcXTl?+oji10oP_dCDKxQ)J0`P{+*1B9R?a-V$NsVzo}8CF zIP=WrC9M~+jH>}w7&d*|9VU4#UDwcQr90Z_*Ino&Bu|N>Nxl14qU7bhp8FzuN2tFL+LayEbKGp_*55MP# vB`i_!I7SI(PZCTKe30M)#gxE)Q7{Xr1QKN|lF`?6k=8L>%H`z~>lNTPfgcpe literal 0 HcmV?d00001 diff --git a/com.example.demo.security.infrastructure.UserAuthenticationFilter.class b/com.example.demo.security.infrastructure.UserAuthenticationFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..1e77e1670f7791987753d20c4a0c8ec7258d53d5 GIT binary patch literal 5956 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 E08$3kGXMYp literal 0 HcmV?d00001 diff --git a/com.example.demo.security.infrastructure.WebSecurityConfig$$FastClassBySpringCGLIB$$faef6e1f.class b/com.example.demo.security.infrastructure.WebSecurityConfig$$FastClassBySpringCGLIB$$faef6e1f.class new file mode 100644 index 0000000000000000000000000000000000000000..f63cd6091c642b33ffa87035e6911f0f2d91c3dd GIT binary patch literal 9548 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 literal 0 HcmV?d00001 diff --git a/com.example.demo.security.infrastructure.WebSecurityConfig.class b/com.example.demo.security.infrastructure.WebSecurityConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..14accbc9637d4c4850e2f32cd8864b844570937b GIT binary patch literal 4936 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 M$M|JD`ZeDAA8bWImjD0& literal 0 HcmV?d00001 diff --git a/com.example.demo.timeline.controller.TimeLineController.class b/com.example.demo.timeline.controller.TimeLineController.class new file mode 100644 index 0000000000000000000000000000000000000000..f9f12f828b12f8e5c4487da49222bf3412400b47 GIT binary patch literal 2240 zcmbVN>sJ#;6#q?#S&0!4R7zD;#2TQwrC2BL3x1j1)N6WcHL4Y5u;CP4a{BXr$#J)wK$(4$nF?eW zxkTxEwc-NlilbavHuYy69YTyYgx*+-8M>f%6cc>+4GsOq+hHK;PL&2lj%295BYFOy z`+N0P2zOuc{Qm1^D^iy2)*V{rW>Nbyvov#>%}{#2;?$ezNVi)mv~Y)=6sOx$zFlD| z?731&hT)?0lq|O;nY$IKcl`32W3Gah0b}njsH(?43+VZSLoU?YI61T)@iNuqmI@Us zH|KdiJCAKoJGT#Qy%(}*7kRC1r!8wglA3YWd1D#(iCxEy=vvA)sUgnDK^yH*4j7w0 zwy|~jZ6re-!_eGx_Vt>Wh~h!ns!MAEwPu@X=5)c2f|6Wj@&yK45}i4E%hX3;;!wvz zmO}cPonm)1=uIZ)c`{gVoiLOv^COPlBL~L8arWQgWCloQRHg9=@)kZ7m^WC}z;WE& zn!T&SC?;H0w4YVnNHzM9kHT8uo1O}qiC3^okAx849=^OdI`H_o;)*pANv-`9<1jZrOpE-=s;DH}V1 z|H4cMT;)4=g-;&GhI#2oB}iYx9M|jI&2pdMH$DC?`E@Ho{SLzz-60{;Rzt8GgF literal 0 HcmV?d00001 diff --git a/com.example.demo.timeline.service.TimeLineService.class b/com.example.demo.timeline.service.TimeLineService.class new file mode 100644 index 0000000000000000000000000000000000000000..3fdc7a81314508ca17bb8aae45f43d2d6a187160 GIT binary patch literal 7521 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 literal 0 HcmV?d00001 diff --git a/com.example.demo.user.domain.User.class b/com.example.demo.user.domain.User.class new file mode 100644 index 0000000000000000000000000000000000000000..ad4589853afea71b1a600f3c6b851842d5df20eb GIT binary patch literal 3190 zcmb7GTUQfT6#h=Q1VVrig?d-SYDlcpyVX#tAZps6(F82oi$ihW6Gd+vedrfRY?zy- zQ8VqTaes9~mVJT#8Oyf(S%IF^^l}sf0%KaJ>0349uIa58r5{5SJ%boRJc{8sMldQc zS$67%d|}obHEC32-7%V;bd8ErH!a&(;#y$HZ2IetYx$P+1V;0_zy!@Iz_B=zI3h5t zl;=#(D(CDqN8ob)K=_t)Hi~h9^x+j^IEoJxBgX_Dqz<-Zn{}D(E>9M zk^ViIVJ(=Iiokd($XHvwWTzjiv`xp6Mn)iFQ7q9Wm3QoFR^a% zZO1o#%duGo6I%R*(U7iZdA_vE(#Tb)biTvE9cfF~^krq)tTiQt20UMVR~d8{d0HxM zHMD&0*229~uCyX>q67ZCQ)||3;`XW}lSoyEKR2EUoa!LGP+ygmid4=H7Okpn`c0Qg z*R-giJBEcl)4fz$Y0J(M=X3`%_ib5n7EOCg#alNU4Oy9EyuHddx>z>7vRR?svmJEj zgTpZTXkp=DF;^^6dEQYfqj}4g_nM5uEt$-WKr-)?&Dyf*TIxI8?Df|zrfRBtB&y=* zVq#IU%PR%bC51k-%ArzrC9@>p9iklHtGy28(STwqNa&@56|{Xa-3WVF-~gpovkQ!{ zQFaolhg{}>fOmwq*o3SibGL^Nttik}m41$$mrP9urKdYI?7ajJRc2aqMc@kMx{i`P z@=WOnF?KxFVU6ur+9`4hW%uvBSK;?@WT_aAv=12_f+8jn4z#u)M!2=dr(~$va!Dyp z>@8;wfv}`!_DR2ovkEs>bee8i-nLZF3@W~^sF~S$sw{B$`CHi-o?FqR>dIRCU4Jz>#Wg&8;;NU!qV+#t(LPn^x`OkbPch^*le`m zs*#YISC__9ti@4P$FcDEg~dzzDXcg))b?m204_L|?cWW~YH`%{nd>-y(83|=aM3r* z&lb&wrY?#Gv!pKwU1p_q*LkjH1txhDMEIZ4!zZr;@Y?3r34VXX_Z5B{5+CCee9Gl# z9zLfWZ~IWLpYJay7g7Hce156dS2e~s&%WZ`H4oR3eF7mdgRc=oulkSS;Vgw`X-M#$ zNN+==-y*uQjltK5z0yG6@TvZOfMIH##0{?Efjn+vj$iB}?gv;)ItXBVA67c^8i`%N zB%y#a8gLY6`5$pk15ao};~_9%!Z-!);eKes;9I%dm;N28ms~`kd{ohZq}<>$@UJg~ z8N@9tgv!6EKQKyM9z*gEJOke1=t?@Xjfus#7+Sf!jpO=60x$EyD)WyCb6HIV;!gwc!(lRt1@U;j_p@I)j>HZv=VK9i|;}Yeq}AF zNYZ0CqWR6F-{2H870djI^ASAK`(*bO*`UN;SGf~V_k@T)@GOEKb+;<4pMd`X*CzsV literal 0 HcmV?d00001 diff --git a/com.example.demo.user.domain.UserBasicInfo.class b/com.example.demo.user.domain.UserBasicInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..b6ca6877c7f6dde629cadc097f30408782c77585 GIT binary patch literal 1414 zcma)6TTc@~6#k|Z7Ro}o$wicl25Aej#v5vli4ce+MXNv)AE(`+3~qOt-6`O|(nQes zpzr=5eN)eD7aBBNvdPSx%XhwW&dk{#zrTJ1u!tuqB+zCdX`>w-41K$Nk2@astIn(P zuBd2+j;GR>`WZu8CR^%4C%P=8Y;?nB$W>I$5eK|h_k`n$nsOSU2pm_{xb&SZIxq21 zR@VG&#n5SNKCcOe*}{cD#6QI2N)`i|tZjlFcy_#xcNNuP_P!X##qB;dw zFnwp3II|ZfAG(Vy<}BnGmQ+x6ssZQTUd`E)VIw+tvh3_`dkyJ2bP;>>K8u0cCb}T* z|8j9_wc&Ydey9T*^SDhY?v^}u#FtP1OqD)SeB^EAQ5MJ?f~1#|(q5hqk#BsC`o(rfCQgG_48xXzDDXB+WRJc9J|C+8OQbxzAu9Bgho3#taHK9j%cAZr~VM0zdVR1+b5a(`ACgTJV&{W1WJA^ki zPWR*I7u*MOpU`uJ{zzN^J`|d#x$gu3QH;{sMkL2|jGxreNx_?SERr=1_J^FAMNOpT n5y5F<|7ZPm%xWEBq#q>4tmbqk>*Qrw6PTf761a78ceB7>Bl|{G literal 0 HcmV?d00001 diff --git a/com.example.demo.user.domain.Username.class b/com.example.demo.user.domain.Username.class new file mode 100644 index 0000000000000000000000000000000000000000..6f6bbc6bf9f47c11499b72cb4bb0354692f26446 GIT binary patch literal 1159 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 Ag8%>k literal 0 HcmV?d00001 diff --git a/com.example.demo.user.service.UserService.class b/com.example.demo.user.service.UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..9a54225025299d969a2a5b55b07845df3f8cd4ee GIT binary patch literal 3557 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 literal 0 HcmV?d00001 diff --git a/org.apache.commons.logging.LogFactory.class b/org.apache.commons.logging.LogFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..7fcb3c8a6e6f698104a96b74888ec8c10fd40a74 GIT binary patch literal 1614 zcma)6T~8B16g>kiOP57H1;vkug0!Hl3ZhtoVwFg&NCZiYPs4U7gWKI^Iz{1E;foMW z^xYq&-r1IJffyhuGkfQrbI(0@c7Ol*{u977ayC*JwQ(C`HrkQ4k-@ly2^&chZpR%9 zcP&gZI7>kwRLil{KO&B;LOd4|?>W}P9C3k!mwD=!1FTrF(~wZ=DmiuC3~kNfLf zN%LF}CiIphj4mcKE2lsH_K`(|Z zJa90DA-WFdx(y={tdC*zTDM40J+cqBJk%bwC=SFE!aqjPw+#Ok|MjKylxZ9h4RTkWeP&-1oD=OS1*HnE5 zxs~^eRo^$xDhH1-OHP-B-U!wWB!JIj^>&IWDHsN^(PffV1Tq9ly zWuRY4GN5x+bMMm|UXET!3(pz);-=TORQTDvu8Cp#0;K3e0knat!=eA3^yJdYXibhE zfPJM+3og`?%vYt0_9m4Q(2X8iQ@Doflx4s-Xf=QBKal)zfVO?wvnKosWz-4|M<+Ki zR7cKIp1~$34$*30&1E;EvIDh*dRZgj3a%3D24$Nbjwt)k8i{$`L}?ky)+Qw%|3lf2 ziv$~>?4vIGF-Vb16luZbW5rT*$@?g3I{%DBByYF}gNNi3#=oJ3T8SQ?0Q>pcZsHe_ zf#?ijqDfG;VQo8gXk?%vqZS#Y$TRwpu)h(USy*TYGh&8_`}hnGkvM5)u2Ja7LetqT RB5uJ5Y+7xiNzzJl{0F5zU{e49 literal 0 HcmV?d00001 diff --git a/org.springframework.cglib.reflect.FastClass.class b/org.springframework.cglib.reflect.FastClass.class new file mode 100644 index 0000000000000000000000000000000000000000..f27938bcfc04b268c1ccf2bea5221fa7e0dd73da GIT binary patch literal 5236 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 literal 0 HcmV?d00001 diff --git a/org.springframework.util.Assert.class b/org.springframework.util.Assert.class new file mode 100644 index 0000000000000000000000000000000000000000..009dc68355b8e9255c90805164a4fca28d5fc88c GIT binary patch literal 13332 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 { Feed findFeedByIdAndDeleted(Long id, Boolean deleted); - List findFeedsByWriter_Id(WriterId id); - - Page findAllByWriter(Writer writer); Page findAllByWriter_IdIn(List writerIds, Pageable pageable); diff --git a/src/main/java/com/example/demo/friend/domain/Friendee.java b/src/main/java/com/example/demo/friend/domain/Friendee.java index 55698c4..89af3f2 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendee.java +++ b/src/main/java/com/example/demo/friend/domain/Friendee.java @@ -15,9 +15,15 @@ public class Friendee extends BasicInfo{ @Embedded + @AttributeOverride( + name = "id", column = @Column(name = "friendee_id") + ) private PersonId friendeeId; @Embedded + @AttributeOverride( + name = "name", column = @Column(name = "friendee_name") + ) private PersonName friendeeName; private Friendee(PersonId friendeeId, PersonName friendeeName){ @@ -30,11 +36,13 @@ public static Friendee create(PersonId friendId, PersonName friendname) { } @Override + @Transient public Long getId(){ return this.friendeeId.getId(); } @Override + @Transient public String getName(){ return this.friendeeName.getName(); } diff --git a/src/main/java/com/example/demo/friend/domain/Friender.java b/src/main/java/com/example/demo/friend/domain/Friender.java index 085ac48..067969b 100644 --- a/src/main/java/com/example/demo/friend/domain/Friender.java +++ b/src/main/java/com/example/demo/friend/domain/Friender.java @@ -15,14 +15,18 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Friender extends BasicInfo{ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; + @Embedded + @AttributeOverride( + name = "id", column = @Column(name = "friender_id") + ) private PersonId frienderId; @Embedded + @AttributeOverride( + name = "name", column = @Column(name = "friender_name") + ) private PersonName frienderName; private Friender(PersonId frienderId, PersonName frienderName){ @@ -36,11 +40,13 @@ public static Friender create(PersonId userId, PersonName userName){ } @Override + @Transient public Long getId(){ return this.frienderId.getId(); } @Override + @Transient public String getName(){ return this.frienderName.getName(); } diff --git a/src/main/java/com/example/demo/friend/domain/Friendship.java b/src/main/java/com/example/demo/friend/domain/Friendship.java index bbc9a69..011a29d 100644 --- a/src/main/java/com/example/demo/friend/domain/Friendship.java +++ b/src/main/java/com/example/demo/friend/domain/Friendship.java @@ -24,6 +24,7 @@ public class Friendship { private Friendee friendee; @Column(name = "friend_state") + @Enumerated(EnumType.STRING) private FriendShipState friendState; private Friendship(Friender friender, Friendee friendee){ @@ -36,6 +37,7 @@ public static Friendship create(Friender user, Friendee friend) { return new Friendship(user, friend); } + @Transient public Long getFriendeeId(){ return this.friendee.getId(); } diff --git a/src/main/java/com/example/demo/friend/domain/PersonId.java b/src/main/java/com/example/demo/friend/domain/PersonId.java index e15eb29..307777c 100644 --- a/src/main/java/com/example/demo/friend/domain/PersonId.java +++ b/src/main/java/com/example/demo/friend/domain/PersonId.java @@ -15,6 +15,7 @@ public class PersonId { + private Long id; private PersonId(Long id) { diff --git a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java index 033f93f..8986213 100644 --- a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java +++ b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java @@ -35,4 +35,23 @@ public void likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedExcep } } + + @PostMapping("/feed/{feedId}/comments/{commentId}/likes") + public void likeCommentByFeedId(@PathVariable(value = "feedId") Long feedId, + @PathVariable(value = "commentId") Long commentId) throws AccessDeniedException { + PreferenceResult result = preferenceInfoService.likeCommentByFeedIdAndCommentId(feedId, commentId); + + switch (result){ + case SUCCESS: + ResponseEntity.ok(); + break; + case MY_FEED_ERROR: + case FEED_NOT_FOUND: + ResponseEntity.status(HttpStatus.BAD_REQUEST); + break; + case NOT_MY_FRIEND: + ResponseEntity.status(HttpStatus.UNAUTHORIZED); + } + + } } diff --git a/src/main/java/com/example/demo/security/infrastructure/PasswordEncoderConfig.java b/src/main/java/com/example/demo/security/infrastructure/PasswordEncoderConfig.java new file mode 100644 index 0000000..f2a8219 --- /dev/null +++ b/src/main/java/com/example/demo/security/infrastructure/PasswordEncoderConfig.java @@ -0,0 +1,17 @@ +package com.example.demo.security.infrastructure; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + + +@Configuration +public class PasswordEncoderConfig { + + @Bean + public PasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + +} diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index e0e8515..1e75850 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -27,10 +27,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final ObjectMapper objectMapper; - @Bean - public PasswordEncoder passwordEncoder(){ - return new BCryptPasswordEncoder(); - } + @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { diff --git a/src/main/java/com/example/demo/timeline/controller/TimeLineController.java b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java index 92c5530..6e94b74 100644 --- a/src/main/java/com/example/demo/timeline/controller/TimeLineController.java +++ b/src/main/java/com/example/demo/timeline/controller/TimeLineController.java @@ -21,18 +21,15 @@ public class TimeLineController { private final TimeLineService timeLineService; @GetMapping("/feeds") - public List findMyTimeLine(@RequestParam(value="page") int page, + public ResponseEntity> findMyTimeLine(@RequestParam(value="page") int page, @RequestParam(value = "size") int size) throws AccessDeniedException { try { List result = timeLineService.findMyTimeLine(page, size); - ResponseEntity.ok(); - return result; + return ResponseEntity.ok().body(result); }catch (IllegalArgumentException ae){ - List failedList = null; - ResponseEntity.status(HttpStatus.BAD_REQUEST); - return failedList; + return ResponseEntity.badRequest().build(); } diff --git a/src/main/java/com/example/demo/user/service/UserService.java b/src/main/java/com/example/demo/user/service/UserService.java index 04a2a72..6a73882 100644 --- a/src/main/java/com/example/demo/user/service/UserService.java +++ b/src/main/java/com/example/demo/user/service/UserService.java @@ -30,10 +30,13 @@ public void signup(SignupRequest signupRequest){ userRepository.save(user); } + + public void login(LoginRequest loginRequest) { } + public String[] findUserInfo() throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); return new String[]{String.valueOf(user.getId()), user.getUserBasicInfo().getUsername()}; From 26ef1683f5547976ae88cd24653d9005ddbe418b Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 18 Apr 2021 21:20:53 +0900 Subject: [PATCH 107/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/timeline/service/TimeLineService.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index 5836548..fcd053d 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -75,11 +75,5 @@ public CommentDto toCommentDto(Comment comment){ ); } - private Friender createUserInfo(User user) throws AccessDeniedException { - - PersonId userId = PersonId.create(user.getId()); - PersonName name = PersonName.create(user.getUserBasicInfo().getUsername()); - return Friender.create(userId, name); - } } From f54abf756f22d3267998c21049dc5562ae224a15 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 18 Apr 2021 21:51:29 +0900 Subject: [PATCH 108/153] =?UTF-8?q?*=20[=ED=94=BC=EB=93=9C=20=EC=A2=8B?= =?UTF-8?q?=EC=95=84=EC=9A=94]=20=EB=B6=80=EB=B6=84=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PreferenceInfoController.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java index 8986213..ec39b1f 100644 --- a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java +++ b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java @@ -19,19 +19,17 @@ public class PreferenceInfoController { private final PreferenceInfoService preferenceInfoService; @PostMapping("/feeds/{feedId}/likes") - public void likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { + public ResponseEntity likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { PreferenceResult result = preferenceInfoService.likeFeedByFeedId(feedId); switch (result){ case SUCCESS: - ResponseEntity.ok(); - break; + return ResponseEntity.ok().build(); case MY_FEED_ERROR: case FEED_NOT_FOUND: - ResponseEntity.status(HttpStatus.BAD_REQUEST); - break; - case NOT_MY_FRIEND: - ResponseEntity.status(HttpStatus.UNAUTHORIZED); + return ResponseEntity.badRequest().build(); + default: + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); } } From 630e2db2873d598e51452ce6572a5ecef2fb7292 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 18 Apr 2021 22:05:34 +0900 Subject: [PATCH 109/153] =?UTF-8?q?*=20[=ED=94=BC=EB=93=9C=20=EC=A2=8B?= =?UTF-8?q?=EC=95=84=EC=9A=94]=20=EB=B6=80=EB=B6=84=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EB=8B=A4=EC=8B=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PreferenceInfoController.java | 17 ++++++++--------- .../service/PreferenceInfoService.java | 12 ++++-------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java index ec39b1f..986307b 100644 --- a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java +++ b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java @@ -20,16 +20,15 @@ public class PreferenceInfoController { @PostMapping("/feeds/{feedId}/likes") public ResponseEntity likeFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { - PreferenceResult result = preferenceInfoService.likeFeedByFeedId(feedId); - switch (result){ - case SUCCESS: - return ResponseEntity.ok().build(); - case MY_FEED_ERROR: - case FEED_NOT_FOUND: - return ResponseEntity.badRequest().build(); - default: - return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); + + try { + preferenceInfoService.likeFeedByFeedId(feedId); + return ResponseEntity.ok().build(); + }catch (NullPointerException | IllegalAccessException e){ + return ResponseEntity.badRequest().build(); + }catch (IllegalStateException ise){ + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); } } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index aa9aa2c..d508b07 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -31,21 +31,21 @@ public class PreferenceInfoService { @Transactional - public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { + public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAccessException { User user = getLoggedUser(); Feed feed; if ((feed=feedRepository.findFeedByIdAndDeleted(id, false))==null){ - return PreferenceResult.FEED_NOT_FOUND; + throw new NullPointerException(); } if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ - return PreferenceResult.NOT_MY_FRIEND; + throw new IllegalStateException(); } if (feed.getWriter().getId().equals(user.getId())){ - return PreferenceResult.MY_FEED_ERROR; + throw new IllegalAccessException(); } if (preferenceInfoRepository @@ -57,8 +57,6 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { feed.like(); - return PreferenceResult.SUCCESS; - } PreferenceInfo preferenceInfo @@ -69,14 +67,12 @@ public PreferenceResult likeFeedByFeedId(Long id) throws AccessDeniedException { preferenceInfo.disLike(); feed.disLike(); - return PreferenceResult.SUCCESS; } if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ preferenceInfo.like(); feed.like(); } - return PreferenceResult.SUCCESS; } From 3ee2da8fa83125b4caeeab4ef65b3821b9da627a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 18 Apr 2021 22:09:15 +0900 Subject: [PATCH 110/153] =?UTF-8?q?*=20[=EB=8C=93=EA=B8=80=20=EC=A2=8B?= =?UTF-8?q?=EC=95=84=EC=9A=94]=20=EB=B6=80=EB=B6=84=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PreferenceInfoController.java | 22 ++++++++----------- .../service/PreferenceInfoService.java | 12 +++++----- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java index 986307b..0c9081b 100644 --- a/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java +++ b/src/main/java/com/example/demo/preferenceinfo/controller/PreferenceInfoController.java @@ -34,21 +34,17 @@ public ResponseEntity likeFeedByFeedId(@PathVariable Long feedId) throws A } @PostMapping("/feed/{feedId}/comments/{commentId}/likes") - public void likeCommentByFeedId(@PathVariable(value = "feedId") Long feedId, + public ResponseEntity likeCommentByFeedId(@PathVariable(value = "feedId") Long feedId, @PathVariable(value = "commentId") Long commentId) throws AccessDeniedException { - PreferenceResult result = preferenceInfoService.likeCommentByFeedIdAndCommentId(feedId, commentId); - - switch (result){ - case SUCCESS: - ResponseEntity.ok(); - break; - case MY_FEED_ERROR: - case FEED_NOT_FOUND: - ResponseEntity.status(HttpStatus.BAD_REQUEST); - break; - case NOT_MY_FRIEND: - ResponseEntity.status(HttpStatus.UNAUTHORIZED); + try { + preferenceInfoService.likeCommentByFeedIdAndCommentId(feedId, commentId); + return ResponseEntity.ok().build(); + }catch (NullPointerException e){ + return ResponseEntity.badRequest().build(); + }catch (IllegalStateException ise){ + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); } + } } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index d508b07..1d23f02 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -77,23 +77,23 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces } @Transactional - public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws AccessDeniedException { + public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws AccessDeniedException { User user = getLoggedUser(); Feed feed; Comment comment; PreferenceInfo preferenceInfo; if ((feed=feedRepository.findFeedByIdAndDeleted(feedId, false))==null){ - return PreferenceResult.FEED_NOT_FOUND; + throw new NullPointerException(); } if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ - return PreferenceResult.NOT_MY_FRIEND; + throw new IllegalStateException(); } if((comment = commentService.findCommentById(feed.getComments(), commentId))==null){ - return PreferenceResult.COMMENT_NOT_FOUND; + throw new NullPointerException(); } if ((preferenceInfo = preferenceInfoRepository @@ -105,7 +105,7 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen feed.like(); - return PreferenceResult.SUCCESS; + } @@ -114,14 +114,12 @@ public PreferenceResult likeCommentByFeedIdAndCommentId(Long feedId, Long commen preferenceInfo.disLike(); comment.disLike(); - return PreferenceResult.SUCCESS; } if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ preferenceInfo.like(); comment.like(); } - return PreferenceResult.SUCCESS; From f5169f9cfbb37adf4df7300d62f7fd6070a05207 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Sun, 18 Apr 2021 22:22:29 +0900 Subject: [PATCH 111/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0]=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=EB=B0=98=ED=99=98=20=EC=BD=94=EB=93=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FriendShipController.java | 18 +++++++----------- .../demo/friend/service/FriendShipService.java | 6 ++---- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/example/demo/friend/controller/FriendShipController.java b/src/main/java/com/example/demo/friend/controller/FriendShipController.java index 9385e45..41f08c4 100644 --- a/src/main/java/com/example/demo/friend/controller/FriendShipController.java +++ b/src/main/java/com/example/demo/friend/controller/FriendShipController.java @@ -21,20 +21,16 @@ public class FriendShipController { @GetMapping // request query로 받는 값들 - public Object getMyFriends(@RequestParam(value="page") int page, + public ResponseEntity> getMyFriends(@RequestParam(value="page") int page, @RequestParam(value = "size") int size) throws AccessDeniedException { - Object result = friendShipService.getMyFriends(page, size); - - if (result instanceof FriendShipResult){ - switch ((FriendShipResult)result){ - case DENIED: - ResponseEntity.status(HttpStatus.BAD_REQUEST); - } - }else { - ResponseEntity.ok(); + try { + List result = friendShipService.getMyFriends(page, size); + return ResponseEntity.ok().body(result); + }catch (Exception e){ + return ResponseEntity.badRequest().build(); } - return result; + } diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index d9699b0..7cb0303 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -21,9 +21,9 @@ public class FriendShipService { @Transactional - public Object getMyFriends(int page, int size) throws AccessDeniedException { + public List getMyFriends(int page, int size) throws AccessDeniedException { if (page<0 || size<0){ - return FriendShipResult.DENIED; + throw new IllegalArgumentException(); } String[] userInfo = userService.findUserInfo(); @@ -32,8 +32,6 @@ public Object getMyFriends(int page, int size) throws AccessDeniedException { Friender friender = Friender.create(userId, userName); - - List friendshipList = friendShipRepository .findAllByFriender(friender, PageRequest.of(page, size)) From ba9fcd1526a358b5b289710fd225a483b8e45dd6 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 19 Apr 2021 20:50:59 +0900 Subject: [PATCH 112/153] =?UTF-8?q?*=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20=EC=8B=9C=EB=8F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 8 +- .../security/service/UserDetailsService.java | 8 + .../demo/user/controller/UserController.java | 212 +++++++++++++++++- .../demo/user/service/UserService.java | 20 +- 4 files changed, 235 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 7cb0303..345e5be 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -48,7 +48,7 @@ public List getMyFriends(int page, int size) throws AccessDeniedExcep @Transactional - public FriendShipResult create(Long inputedFriendId) throws AccessDeniedException { + public void create(Long inputedFriendId) throws AccessDeniedException { String[] user = userService.findUserInfo(); String [] friend = userService.findUserInfo(inputedFriendId); @@ -75,10 +75,6 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio friendShipRepository.save(forwardFriendShip); friendShipRepository.save(backwardFriendShip); - return FriendShipResult.TRY_TO_MAKE_FRIENDSHIP; - - - }else { Friendship forwardFriendShip = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(frienderMe, friendId); @@ -92,8 +88,8 @@ public FriendShipResult create(Long inputedFriendId) throws AccessDeniedExceptio && backwardFriendShip.getFriendState()==FriendShipState.REQUEST){ forwardFriendShip.acceptFriendShip(); backwardFriendShip.acceptFriendShip(); - return FriendShipResult.SUCCESS; }else { + throw new return FriendShipResult.DENIED; } diff --git a/src/main/java/com/example/demo/security/service/UserDetailsService.java b/src/main/java/com/example/demo/security/service/UserDetailsService.java index 28f2a71..a9a0c0b 100644 --- a/src/main/java/com/example/demo/security/service/UserDetailsService.java +++ b/src/main/java/com/example/demo/security/service/UserDetailsService.java @@ -1,6 +1,7 @@ package com.example.demo.security.service; +import com.example.demo.security.infrastructure.UserAuthenticationFilter; import com.example.demo.user.domain.Authority; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.domain.Username; @@ -12,6 +13,8 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import java.net.http.HttpRequest; import java.util.Optional; import java.util.stream.Collectors; @@ -21,6 +24,11 @@ public class UserDetailsService implements org.springframework.security.core.use private final UserRepository userRepository; + + + + + @Override public UserDetails loadUserByUsername(String username){ Username name = Username.create(username); diff --git a/src/main/java/com/example/demo/user/controller/UserController.java b/src/main/java/com/example/demo/user/controller/UserController.java index 5d39972..e6b7165 100644 --- a/src/main/java/com/example/demo/user/controller/UserController.java +++ b/src/main/java/com/example/demo/user/controller/UserController.java @@ -10,6 +10,19 @@ import org.springframework.web.bind.annotation.*; +import javax.servlet.Servlet; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.ServletResponse; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Collection; +import java.util.Locale; + @RestController @RequestMapping("/account") @RequiredArgsConstructor @@ -17,6 +30,10 @@ public class UserController { private final UserService userService; + private final HttpServlet httpServlet; + + + @PostMapping("/signup") public void signupWithNormalAccount(@RequestBody SignupParameter parameter){ @@ -41,12 +58,195 @@ public void signupWithAdminAccount(@RequestBody SignupParameter parameter){ } @PostMapping("/login") - public void Login(@RequestBody SignupParameter parameter){ - LoginRequest loginRequest = new LoginRequest( - parameter.username, - parameter.password - ); - userService.login(loginRequest); + public void Login(HttpServletRequest request) throws ServletException, IOException { + HttpServletResponse response = new HttpServletResponse() { + @Override + public void addCookie(Cookie cookie) { + + } + + @Override + public boolean containsHeader(String name) { + return false; + } + + @Override + public String encodeURL(String url) { + return null; + } + + @Override + public String encodeRedirectURL(String url) { + return null; + } + + @Override + public String encodeUrl(String url) { + return null; + } + + @Override + public String encodeRedirectUrl(String url) { + return null; + } + + @Override + public void sendError(int sc, String msg) throws IOException { + + } + + @Override + public void sendError(int sc) throws IOException { + + } + + @Override + public void sendRedirect(String location) throws IOException { + + } + + @Override + public void setDateHeader(String name, long date) { + + } + + @Override + public void addDateHeader(String name, long date) { + + } + + @Override + public void setHeader(String name, String value) { + + } + + @Override + public void addHeader(String name, String value) { + + } + + @Override + public void setIntHeader(String name, int value) { + + } + + @Override + public void addIntHeader(String name, int value) { + + } + + @Override + public void setStatus(int sc) { + + } + + @Override + public void setStatus(int sc, String sm) { + + } + + @Override + public int getStatus() { + return 0; + } + + @Override + public String getHeader(String name) { + return null; + } + + @Override + public Collection getHeaders(String name) { + return null; + } + + @Override + public Collection getHeaderNames() { + return null; + } + + @Override + public String getCharacterEncoding() { + return null; + } + + @Override + public String getContentType() { + return null; + } + + @Override + public ServletOutputStream getOutputStream() throws IOException { + return null; + } + + @Override + public PrintWriter getWriter() throws IOException { + return null; + } + + @Override + public void setCharacterEncoding(String charset) { + + } + + @Override + public void setContentLength(int len) { + + } + + @Override + public void setContentLengthLong(long length) { + + } + + @Override + public void setContentType(String type) { + + } + + @Override + public void setBufferSize(int size) { + + } + + @Override + public int getBufferSize() { + return 0; + } + + @Override + public void flushBuffer() throws IOException { + + } + + @Override + public void resetBuffer() { + + } + + @Override + public boolean isCommitted() { + return false; + } + + @Override + public void reset() { + + } + + @Override + public void setLocale(Locale loc) { + + } + + @Override + public Locale getLocale() { + return null; + } + }; + + userService.login(request, response); } diff --git a/src/main/java/com/example/demo/user/service/UserService.java b/src/main/java/com/example/demo/user/service/UserService.java index 6a73882..a12a503 100644 --- a/src/main/java/com/example/demo/user/service/UserService.java +++ b/src/main/java/com/example/demo/user/service/UserService.java @@ -4,11 +4,20 @@ +import com.example.demo.security.infrastructure.UserAuthenticationFilter; +import com.example.demo.security.service.UserDetailsService; import com.example.demo.user.domain.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.nio.file.AccessDeniedException; @@ -18,6 +27,8 @@ public class UserService { private final UserRepository userRepository; private final UserSessionService userSessionService; + private final UserAuthenticationFilter userAuthenticationFilter; + @Transactional public void signup(SignupRequest signupRequest){ @@ -32,8 +43,15 @@ public void signup(SignupRequest signupRequest){ - public void login(LoginRequest loginRequest) { + public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + FilterChain filterChain = new FilterChain() { + @Override + public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { + + } + }; + userAuthenticationFilter.doFilter(request, response, filterChain ); } From 0fd2f0e092d57aa70617aa528c747347d70ed1c4 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 19 Apr 2021 22:48:54 +0900 Subject: [PATCH 113/153] =?UTF-8?q?*=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F?= =?UTF-8?q?=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=EC=A4=91=20-=20=EA=B0=91=EC=9E=91=EC=8A=A4=EB=9F=BD?= =?UTF-8?q?=EA=B2=8C=20forwardFriendShip=20=EC=97=90=EC=84=9C=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=EA=B0=80=20=EB=82=9C=EB=8B=A4=3F=3F=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FriendShipController.java | 12 +- .../friend/service/FriendShipService.java | 4 - .../ReadableRequestBodyWrapper.java | 2 + .../UserAuthenticationFilter.java | 11 + .../infrastructure/WebSecurityConfig.java | 1 + .../security/service/UserDetailsService.java | 18 +- .../demo/user/controller/UserController.java | 197 +----------------- .../demo/user/service/UserService.java | 12 +- 8 files changed, 41 insertions(+), 216 deletions(-) diff --git a/src/main/java/com/example/demo/friend/controller/FriendShipController.java b/src/main/java/com/example/demo/friend/controller/FriendShipController.java index 41f08c4..ddb51d6 100644 --- a/src/main/java/com/example/demo/friend/controller/FriendShipController.java +++ b/src/main/java/com/example/demo/friend/controller/FriendShipController.java @@ -36,15 +36,13 @@ public ResponseEntity> getMyFriends(@RequestParam(value="page") @PostMapping("/{friendId}") public void createFriendShip(@PathVariable Long friendId) throws AccessDeniedException { - FriendShipResult friendShipResult = friendShipService.create(friendId); + try { + friendShipService.create(friendId); + }catch (Exception e){ - if (friendShipResult == FriendShipResult.TRY_TO_MAKE_FRIENDSHIP || friendShipResult == FriendShipResult.SUCCESS){ - ResponseEntity.ok(); - }else if(friendShipResult == FriendShipResult.ALREADY_ACCEPT){ - ResponseEntity.status(HttpStatus.BAD_REQUEST); - }else { - ResponseEntity.status(HttpStatus.FORBIDDEN); } + + } @DeleteMapping("/{friendId}") diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 345e5be..d93e1fa 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -83,14 +83,10 @@ public void create(Long inputedFriendId) throws AccessDeniedException { if (forwardFriendShip.getFriendState()==FriendShipState.ACCEPT || forwardFriendShip.getFriendState()==FriendShipState.REQUEST){ - return FriendShipResult.ALREADY_ACCEPT; }else if (forwardFriendShip.getFriendState()==FriendShipState.REQUESTED && backwardFriendShip.getFriendState()==FriendShipState.REQUEST){ forwardFriendShip.acceptFriendShip(); backwardFriendShip.acceptFriendShip(); - }else { - throw new - return FriendShipResult.DENIED; } } diff --git a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java index a2b8df4..5402600 100644 --- a/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java +++ b/src/main/java/com/example/demo/security/infrastructure/ReadableRequestBodyWrapper.java @@ -9,6 +9,8 @@ import java.io.ByteArrayInputStream; import java.io.IOException; + + public class ReadableRequestBodyWrapper extends HttpServletRequestWrapper { private final String requestBody; diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java index 2f2d64e..5b10f7c 100644 --- a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -2,7 +2,10 @@ import com.example.demo.user.controller.UserController; import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.json.JsonParseException; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -11,6 +14,8 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; +import org.springframework.stereotype.Component; + import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -19,15 +24,21 @@ + +@Component public class UserAuthenticationFilter extends BasicAuthenticationFilter { private final ObjectMapper objectMapper; + + + @Autowired public UserAuthenticationFilter(AuthenticationManager authenticationManager, ObjectMapper objectMapper) { super(authenticationManager); this.objectMapper = objectMapper; } + public UserAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint, ObjectMapper objectMapper) { super(authenticationManager, authenticationEntryPoint); this.objectMapper = objectMapper; diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index 1e75850..c6d3cba 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -25,6 +25,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final PasswordEncoder passwordEncoder; + private final ObjectMapper objectMapper; diff --git a/src/main/java/com/example/demo/security/service/UserDetailsService.java b/src/main/java/com/example/demo/security/service/UserDetailsService.java index a9a0c0b..164cf85 100644 --- a/src/main/java/com/example/demo/security/service/UserDetailsService.java +++ b/src/main/java/com/example/demo/security/service/UserDetailsService.java @@ -13,8 +13,13 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; -import java.net.http.HttpRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.Optional; import java.util.stream.Collectors; @@ -24,7 +29,18 @@ public class UserDetailsService implements org.springframework.security.core.use private final UserRepository userRepository; + private final UserAuthenticationFilter userAuthenticationFilter; + public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + FilterChain filterChain = new FilterChain() { + @Override + public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { + + } + }; + + userAuthenticationFilter.doFilter(request, response, filterChain ); + } diff --git a/src/main/java/com/example/demo/user/controller/UserController.java b/src/main/java/com/example/demo/user/controller/UserController.java index e6b7165..f0f0a41 100644 --- a/src/main/java/com/example/demo/user/controller/UserController.java +++ b/src/main/java/com/example/demo/user/controller/UserController.java @@ -2,6 +2,7 @@ +import com.example.demo.security.service.UserDetailsService; import com.example.demo.user.service.LoginRequest; import com.example.demo.user.service.SignupRequest; import com.example.demo.user.service.UserService; @@ -29,9 +30,7 @@ public class UserController { private final UserService userService; - - private final HttpServlet httpServlet; - + private final UserDetailsService userDetailsService; @@ -58,198 +57,10 @@ public void signupWithAdminAccount(@RequestBody SignupParameter parameter){ } @PostMapping("/login") - public void Login(HttpServletRequest request) throws ServletException, IOException { - HttpServletResponse response = new HttpServletResponse() { - @Override - public void addCookie(Cookie cookie) { - - } - - @Override - public boolean containsHeader(String name) { - return false; - } - - @Override - public String encodeURL(String url) { - return null; - } - - @Override - public String encodeRedirectURL(String url) { - return null; - } - - @Override - public String encodeUrl(String url) { - return null; - } - - @Override - public String encodeRedirectUrl(String url) { - return null; - } - - @Override - public void sendError(int sc, String msg) throws IOException { - - } - - @Override - public void sendError(int sc) throws IOException { - - } - - @Override - public void sendRedirect(String location) throws IOException { - - } - - @Override - public void setDateHeader(String name, long date) { - - } - - @Override - public void addDateHeader(String name, long date) { - - } - - @Override - public void setHeader(String name, String value) { - - } - - @Override - public void addHeader(String name, String value) { - - } - - @Override - public void setIntHeader(String name, int value) { - - } - - @Override - public void addIntHeader(String name, int value) { - - } - - @Override - public void setStatus(int sc) { - - } - - @Override - public void setStatus(int sc, String sm) { - - } - - @Override - public int getStatus() { - return 0; - } - - @Override - public String getHeader(String name) { - return null; - } - - @Override - public Collection getHeaders(String name) { - return null; - } - - @Override - public Collection getHeaderNames() { - return null; - } - - @Override - public String getCharacterEncoding() { - return null; - } - - @Override - public String getContentType() { - return null; - } - - @Override - public ServletOutputStream getOutputStream() throws IOException { - return null; - } - - @Override - public PrintWriter getWriter() throws IOException { - return null; - } - - @Override - public void setCharacterEncoding(String charset) { - - } - - @Override - public void setContentLength(int len) { - - } - - @Override - public void setContentLengthLong(long length) { - - } - - @Override - public void setContentType(String type) { - - } - - @Override - public void setBufferSize(int size) { - - } - - @Override - public int getBufferSize() { - return 0; - } - - @Override - public void flushBuffer() throws IOException { - - } - - @Override - public void resetBuffer() { - - } - - @Override - public boolean isCommitted() { - return false; - } - - @Override - public void reset() { - - } - - @Override - public void setLocale(Locale loc) { - - } - - @Override - public Locale getLocale() { - return null; - } - }; - - userService.login(request, response); + public void Login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + userDetailsService.login(request, response); } - @Value public static class SignupParameter { String username; diff --git a/src/main/java/com/example/demo/user/service/UserService.java b/src/main/java/com/example/demo/user/service/UserService.java index a12a503..645b836 100644 --- a/src/main/java/com/example/demo/user/service/UserService.java +++ b/src/main/java/com/example/demo/user/service/UserService.java @@ -8,6 +8,7 @@ import com.example.demo.security.service.UserDetailsService; import com.example.demo.user.domain.*; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,17 +44,6 @@ public void signup(SignupRequest signupRequest){ - public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - FilterChain filterChain = new FilterChain() { - @Override - public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { - - } - }; - - userAuthenticationFilter.doFilter(request, response, filterChain ); - } - public String[] findUserInfo() throws AccessDeniedException { User user = userSessionService.getLoggeddUser(); From e1bfeb4402a943f27fd53da6acefb76f3e66b7a6 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Mon, 19 Apr 2021 23:08:58 +0900 Subject: [PATCH 114/153] =?UTF-8?q?*=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=EC=8B=9C=EB=8F=84=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/service/UserDetailsService.java | 22 ------------------- .../demo/user/controller/UserController.java | 2 +- .../demo/user/service/UserService.java | 12 ++++++++++ 3 files changed, 13 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/example/demo/security/service/UserDetailsService.java b/src/main/java/com/example/demo/security/service/UserDetailsService.java index 164cf85..d07c65a 100644 --- a/src/main/java/com/example/demo/security/service/UserDetailsService.java +++ b/src/main/java/com/example/demo/security/service/UserDetailsService.java @@ -12,14 +12,6 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.util.Optional; import java.util.stream.Collectors; @@ -29,20 +21,6 @@ public class UserDetailsService implements org.springframework.security.core.use private final UserRepository userRepository; - private final UserAuthenticationFilter userAuthenticationFilter; - - public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - FilterChain filterChain = new FilterChain() { - @Override - public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { - - } - }; - - userAuthenticationFilter.doFilter(request, response, filterChain ); - } - - @Override diff --git a/src/main/java/com/example/demo/user/controller/UserController.java b/src/main/java/com/example/demo/user/controller/UserController.java index f0f0a41..92ab052 100644 --- a/src/main/java/com/example/demo/user/controller/UserController.java +++ b/src/main/java/com/example/demo/user/controller/UserController.java @@ -58,7 +58,7 @@ public void signupWithAdminAccount(@RequestBody SignupParameter parameter){ @PostMapping("/login") public void Login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - userDetailsService.login(request, response); + userService.login(request, response); } @Value diff --git a/src/main/java/com/example/demo/user/service/UserService.java b/src/main/java/com/example/demo/user/service/UserService.java index 645b836..1f70e5d 100644 --- a/src/main/java/com/example/demo/user/service/UserService.java +++ b/src/main/java/com/example/demo/user/service/UserService.java @@ -30,6 +30,18 @@ public class UserService { private final UserSessionService userSessionService; private final UserAuthenticationFilter userAuthenticationFilter; + public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + FilterChain filterChain = new FilterChain() { + @Override + public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { + + } + }; + + userAuthenticationFilter.doFilter(request, response, filterChain ); + } + + @Transactional public void signup(SignupRequest signupRequest){ From 17bf8792e28f326bab7466c660d794135cd6c059 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 02:02:16 +0900 Subject: [PATCH 115/153] =?UTF-8?q?*=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A4=91=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=EB=93=A4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserAuthenticationFilter.java | 13 ++++------- .../infrastructure/WebSecurityConfig.java | 3 +-- .../demo/user/controller/UserController.java | 1 - .../demo/user/service/UserService.java | 10 +++------ .../friend/service/FriendShipCreateTest.java | 18 +++++---------- .../friend/service/FriendShipDeleteTest.java | 22 ++++++++++++------- .../friend/service/FriendShipFindTest.java | 2 +- 7 files changed, 29 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java index 5b10f7c..8d3094f 100644 --- a/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java +++ b/src/main/java/com/example/demo/security/infrastructure/UserAuthenticationFilter.java @@ -4,8 +4,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.json.JsonParseException; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -15,7 +13,6 @@ import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; import org.springframework.stereotype.Component; - import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -28,20 +25,18 @@ @Component public class UserAuthenticationFilter extends BasicAuthenticationFilter { - private final ObjectMapper objectMapper; + private final ObjectMapper objectMapper = new ObjectMapper(); @Autowired - public UserAuthenticationFilter(AuthenticationManager authenticationManager, ObjectMapper objectMapper) { + public UserAuthenticationFilter(AuthenticationManager authenticationManager) { super(authenticationManager); - this.objectMapper = objectMapper; } - public UserAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint, ObjectMapper objectMapper) { + public UserAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint) { super(authenticationManager, authenticationEntryPoint); - this.objectMapper = objectMapper; } @Override @@ -76,7 +71,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse onSuccessfulAuthentication(request, response, authResult); } }catch (AuthenticationException ex){ - // 인증이 실해한 상황 + // 인증이 실패한 상황 SecurityContextHolder.clearContext(); onUnsuccessfulAuthentication(request, response, ex); diff --git a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java index c6d3cba..f71bbc4 100644 --- a/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java +++ b/src/main/java/com/example/demo/security/infrastructure/WebSecurityConfig.java @@ -26,7 +26,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final PasswordEncoder passwordEncoder; - private final ObjectMapper objectMapper; @@ -46,7 +45,7 @@ protected void configure(HttpSecurity http) throws Exception { .anyRequest() .authenticated() .and() - .addFilter(new UserAuthenticationFilter(authenticationManagerBean(), objectMapper)); + .addFilter(new UserAuthenticationFilter(authenticationManagerBean())); } diff --git a/src/main/java/com/example/demo/user/controller/UserController.java b/src/main/java/com/example/demo/user/controller/UserController.java index 92ab052..82c0ecc 100644 --- a/src/main/java/com/example/demo/user/controller/UserController.java +++ b/src/main/java/com/example/demo/user/controller/UserController.java @@ -30,7 +30,6 @@ public class UserController { private final UserService userService; - private final UserDetailsService userDetailsService; diff --git a/src/main/java/com/example/demo/user/service/UserService.java b/src/main/java/com/example/demo/user/service/UserService.java index 1f70e5d..8cccf80 100644 --- a/src/main/java/com/example/demo/user/service/UserService.java +++ b/src/main/java/com/example/demo/user/service/UserService.java @@ -28,17 +28,13 @@ public class UserService { private final UserRepository userRepository; private final UserSessionService userSessionService; - private final UserAuthenticationFilter userAuthenticationFilter; + + public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - FilterChain filterChain = new FilterChain() { - @Override - public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { - } - }; - userAuthenticationFilter.doFilter(request, response, filterChain ); + } diff --git a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java index bff9ab3..e30f52e 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java @@ -42,7 +42,7 @@ void createFriendShip() throws AccessDeniedException { FriendShipService friendShipService = new FriendShipService(friendShipRepository, - userSessionService, userService); + userService); //given String[] friender = { "1", "jihwan"}; @@ -58,9 +58,7 @@ void createFriendShip() throws AccessDeniedException { //then - FriendShipResult result = friendShipService.create(1L); - System.out.println(result); - assertEquals(FriendShipResult.TRY_TO_MAKE_FRIENDSHIP, result); + } @@ -70,7 +68,7 @@ void testForAlreadyAccept() throws AccessDeniedException { FriendShipService friendShipService = new FriendShipService(friendShipRepository, - userSessionService, userService); + userService); //given @@ -114,9 +112,7 @@ void testForAlreadyAccept() throws AccessDeniedException { //then - FriendShipResult result = friendShipService.create(1L); - System.out.println(result); - assertEquals(FriendShipResult.ALREADY_ACCEPT, result); + } @@ -126,7 +122,7 @@ void testForAccept() throws AccessDeniedException { FriendShipService friendShipService = new FriendShipService(friendShipRepository, - userSessionService, userService); + userService); //given @@ -170,9 +166,7 @@ void testForAccept() throws AccessDeniedException { //then - FriendShipResult result = friendShipService.create(1L); - System.out.println(result); - assertEquals(FriendShipResult.SUCCESS, result); + } diff --git a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java index 25cb9d7..c4b99da 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java @@ -2,6 +2,7 @@ import com.example.demo.friend.domain.*; +import com.example.demo.user.domain.UserRepository; import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import org.junit.jupiter.api.DisplayName; @@ -23,10 +24,13 @@ public class FriendShipDeleteTest { FriendShipRepository friendShipRepository; @Mock - UserSessionService userSessionService; + UserRepository userRepository; @Mock - UserService userService; + UserSessionService userSessionService; + + + UserService userService = new UserService(userRepository, userSessionService); @DisplayName("친구관계 삭제 테스트 1. 친구 관계가 없는 경우 ") @Test @@ -34,7 +38,7 @@ void testForDeleteFail() throws AccessDeniedException { FriendShipService friendShipService = new FriendShipService(friendShipRepository, - userSessionService, userService); + userService); //given @@ -43,6 +47,8 @@ void testForDeleteFail() throws AccessDeniedException { //when + when(userSessionService.getLoggeddUser()).thenReturn(userRepository.findUserById(2L)); + when(userService.findUserInfo()) .thenReturn(friender); @@ -62,17 +68,17 @@ void testForAccept() throws AccessDeniedException { FriendShipService friendShipService = new FriendShipService(friendShipRepository, - userSessionService, userService); + userService); //given - String[] friender = { "1", "jihwan"}; - String [] friendee = { "2", "friendee"}; + String[] friender = {"1", "jihwan"}; + String[] friendee = {"2", "friendee"}; - PersonId myId = PersonId.create(Long.parseLong(friender[0]) ); + PersonId myId = PersonId.create(Long.parseLong(friender[0])); PersonId friendId = PersonId.create(Long.parseLong(friendee[0])); - PersonName myName = PersonName.create( friender[1]); + PersonName myName = PersonName.create(friender[1]); PersonName friendName = PersonName.create(friendee[1]); Friender frienderMe = Friender.create(myId, myName); diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 4995064..28528e3 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -35,7 +35,7 @@ void testForAccept() throws AccessDeniedException { FriendShipService friendShipService = new FriendShipService(friendShipRepository, - userSessionService, userService); +userService); //given From 47d6aff6ff1bf21d914c0bd5aafa0415a3d0aa2c Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 02:36:31 +0900 Subject: [PATCH 116/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20]=20=EC=A4=91=201.=20=EC=B9=9C=EA=B5=AC=20=EA=B4=80?= =?UTF-8?q?=EA=B3=84=EA=B0=80=20=EC=97=86=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 2 +- .../friend/service/FriendShipDeleteTest.java | 40 +++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index d93e1fa..ceb5e59 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -98,7 +98,7 @@ public void create(Long inputedFriendId) throws AccessDeniedException { public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDeniedException { String[] userInfo = userService.findUserInfo(); PersonId myId = PersonId.create(Long.parseLong(userInfo[0])); - PersonName myName = PersonName.create((String) userInfo[1]); + PersonName myName = PersonName.create( userInfo[1]); Friender myInfo = Friender.create(myId, myName); PersonId friendId = PersonId.create(inputedId); diff --git a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java index c4b99da..c82b843 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java @@ -2,12 +2,16 @@ import com.example.demo.friend.domain.*; +import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @@ -20,48 +24,44 @@ @ExtendWith(MockitoExtension.class) public class FriendShipDeleteTest { - @Mock - FriendShipRepository friendShipRepository; - @Mock - UserRepository userRepository; - @Mock - UserSessionService userSessionService; - UserService userService = new UserService(userRepository, userSessionService); + @Mock + FriendShipRepository friendShipRepository; + + @Mock + UserService userService; @DisplayName("친구관계 삭제 테스트 1. 친구 관계가 없는 경우 ") @Test void testForDeleteFail() throws AccessDeniedException { + String inputString = "1"; + FriendShipService friendShipService - = new FriendShipService(friendShipRepository, - userService); + = new FriendShipService(friendShipRepository, userService); + + Long inputId = Long.parseLong(inputString); + + System.out.println(inputId); + //given - String[] friender = { "1", "jihwan"}; - String [] friendee = { "2", "friendee"}; + String[] friender= {"1", "jihwan"}; //when - when(userSessionService.getLoggeddUser()).thenReturn(userRepository.findUserById(2L)); - - when(userService.findUserInfo()) - .thenReturn(friender); + when(userService.findUserInfo()).thenReturn(friender); //then - FriendShipResult result = friendShipService.deleteFriendShipRequest(1L); - System.out.println(result); - assertEquals(FriendShipResult.NEVER_REQUESTED, result); - + assertEquals(FriendShipResult.NEVER_REQUESTED, friendShipService.deleteFriendShipRequest(inputId)); } - @DisplayName("친구관계 삭제 테스트 2. 친구 관계 삭제 ") @Test void testForAccept() throws AccessDeniedException { From c9549c13b257902a49cf48ab02498bc81724f3b8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 02:39:56 +0900 Subject: [PATCH 117/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20]=20=EC=A4=91=202.=20=EC=B9=9C=EA=B5=AC=20=EA=B4=80?= =?UTF-8?q?=EA=B3=84=EA=B0=80=20=EC=9E=88=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20//=20=EC=A3=BC=EC=9D=98=20=3D=20s?= =?UTF-8?q?ervice=20=EB=B6=80=EB=B6=84=20=EB=B0=98=ED=99=98=20=EA=B0=92=20?= =?UTF-8?q?=EC=95=84=EC=A7=81=20=EB=B3=80=EA=B2=BD=20=EC=95=88=ED=95=A8=20?= =?UTF-8?q?-=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=8B=A4=20=EC=9E=91=EC=84=B1=20=ED=9B=84=20=ED=95=A0=20?= =?UTF-8?q?=EA=B2=83=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/friend/service/FriendShipDeleteTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java index c82b843..5b4c14e 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipDeleteTest.java @@ -34,7 +34,7 @@ public class FriendShipDeleteTest { @Mock UserService userService; - @DisplayName("친구관계 삭제 테스트 1. 친구 관계가 없는 경우 ") + @DisplayName("친구관계 삭제 테스트 1. 친구 관계가 없는 경우 ")// 성공 @Test void testForDeleteFail() throws AccessDeniedException { @@ -62,7 +62,7 @@ void testForDeleteFail() throws AccessDeniedException { } - @DisplayName("친구관계 삭제 테스트 2. 친구 관계 삭제 ") + @DisplayName("친구관계 삭제 테스트 2. 친구 관계 삭제 ") // 성공 @Test void testForAccept() throws AccessDeniedException { @@ -103,7 +103,7 @@ void testForAccept() throws AccessDeniedException { //then FriendShipResult result = friendShipService.deleteFriendShipRequest(1L); System.out.println(forwardFriendShip.getFriendState()); - assertEquals(false, forwardFriendShip.getFriendState()); + assertEquals(FriendShipState.DELETED, forwardFriendShip.getFriendState()); } } From 3da44193d216f1f516dc700b33918e319577e79a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 02:47:08 +0900 Subject: [PATCH 118/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=20=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0]=20=ED=85=8C=EC=8A=A4=ED=8A=B8=201.=20=ED=95=84?= =?UTF-8?q?=EC=88=98=20=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipFindTest.java | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 28528e3..73ada95 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -23,8 +23,7 @@ public class FriendShipFindTest { @Mock FriendShipRepository friendShipRepository; - @Mock - UserSessionService userSessionService; + @Mock UserService userService; @@ -39,39 +38,53 @@ void testForAccept() throws AccessDeniedException { //given - String[] friender1Info = { "1", "friender1"}; - String [] friender2Info = { "2", "friender2"}; - String [] friendee1Info = {"3", "friendee1"}; - String [] friendee2Info = {"4", "friendee2"}; + String[] person1Info = { "1", "friender1"}; + String [] person2Info = { "2", "friender2"}; + String [] person3Info = {"3", "friendee1"}; + String [] person4Info = {"4", "friendee2"}; - PersonId friender1Id = PersonId.create(Long.parseLong(friender1Info[0]) ); - PersonId friender2Id = PersonId.create(Long.parseLong(friender2Info[0])); - PersonId friendee1Id = PersonId.create(Long.parseLong(friendee1Info[0])); - PersonId friendee2Id = PersonId.create(Long.parseLong(friendee2Info[0])); + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0]) ); + PersonId person2Id = PersonId.create(Long.parseLong( person2Info[0])); + PersonId person3Id = PersonId.create(Long.parseLong(person3Info[0])); + PersonId person4Id = PersonId.create(Long.parseLong(person4Info[0])); - PersonName friender1Name = PersonName.create( friender1Info[1]); - PersonName friender2Name = PersonName.create(friender2Info[1]); - PersonName friendee1Name = PersonName.create(friendee1Info[1]); - PersonName friendee2Name = PersonName.create(friendee2Info[1]); + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( person2Info[1]); + PersonName person3Name = PersonName.create(person3Info[1]); + PersonName person4Name = PersonName.create(person4Info[1]); - Friender friender1 = Friender.create(friender1Id, friender1Name); - Friender friender2 = Friender.create(friender2Id, friender2Name); + Friender friender1 = Friender.create(person1Id, person1Name); + Friender friender2 = Friender.create(person2Id, person2Name); + Friender friender3 = Friender.create(person3Id, person3Name); + Friender friender4 = Friender.create(person4Id, person4Name); + + Friendee friendee1 = Friendee.create(person1Id, person1Name); + Friendee friendee2 = Friendee.create(person2Id, person2Name); + Friendee friendee3 = Friendee.create(person3Id, person3Name); + Friendee friendee4 = Friendee.create(person4Id, person4Name); + + Friendship friendship1 = Friendship.create(friender4, friendee1); + Friendship friendship2 = Friendship.create(friender3, friendee2); + Friendship friendship3 = Friendship.create(friender2, friendee2); + Friendship friendship4 = Friendship.create(friender1, friendee3); - Friendee friendee1 = Friendee.create(friendee1Id, friendee1Name); - Friendee friendee2 = Friendee.create(friendee2Id, friendee2Name); - Friendship friendship1 = Friendship.create(friender1, friendee1); - Friendship friendship2 = Friendship.create(friender2, friendee1); - friendShipRepository.save(friendship1); - friendShipRepository.save(friendship2); - when(userService.findUserInfo()) - .thenReturn(friendee1Info); //when + // 4,3,2 는 1에 친구 요청 + // 1은 3만 친구 요청 + + when(userService.findUserInfo()) + .thenReturn(person3Info); + + friendShipRepository.save(friendship1); + friendShipRepository.save(friendship2); + friendShipRepository.save(friendship3); + friendShipRepository.save(friendship4); From 5c2e18e79dae09b46b318c48f98eed6a3a98a590 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 16:38:49 +0900 Subject: [PATCH 119/153] =?UTF-8?q?*=20=EC=B9=9C=EA=B5=AC=EA=B4=80?= =?UTF-8?q?=EA=B3=84=20=EC=B0=BE=EA=B8=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EC=8B=9C=EB=8F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipFindTest.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 73ada95..5408751 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -9,9 +9,14 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import java.nio.file.AccessDeniedException; import java.util.List; +import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; @@ -28,7 +33,7 @@ public class FriendShipFindTest { @Mock UserService userService; - @DisplayName("친구관계 찾기 테스트 ") + @DisplayName("친구관계 요청 테스트 ") @Test void testForAccept() throws AccessDeniedException { @@ -71,27 +76,39 @@ void testForAccept() throws AccessDeniedException { - - - //when // 4,3,2 는 1에 친구 요청 // 1은 3만 친구 요청 when(userService.findUserInfo()) - .thenReturn(person3Info); + .thenReturn(person1Info); friendShipRepository.save(friendship1); friendShipRepository.save(friendship2); friendShipRepository.save(friendship3); friendShipRepository.save(friendship4); + Page dtos = friendShipRepository + .findAllByFriendee_FriendeeId( + person1Id, PageRequest.of(0, 4)); + System.out.println(); + //then + List result = friendShipService.findRequestForMe(0, 4); + for (FriendDto dtoss : result){ + System.out.println(dtos); + } + } + private FriendDto toFriendDto(BasicInfo basicInfo) { + return new FriendDto( + basicInfo.getId(), + basicInfo.getName() + ); } } From 40c7d30bf09719ef6d0c58db3a84692dafbb8cbf Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 16:39:17 +0900 Subject: [PATCH 120/153] =?UTF-8?q?*=20=EB=B0=98=ED=99=98=EA=B0=92=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index ceb5e59..fe7cabc 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -119,9 +119,9 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen - public Object findRequestForMe(int page, int size) throws AccessDeniedException { + public List findRequestForMe(int page, int size) throws AccessDeniedException { if (page<0 || size<0){ - return FriendShipResult.DENIED; + throw new IllegalArgumentException(); } From 427b6d904f1ecd5f640ce920e304ad4257692f02 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:48:27 +0900 Subject: [PATCH 121/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20=ED=99=95=EC=9D=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8]?= =?UTF-8?q?=201.=20=EC=95=8C=EB=A7=9E=EC=9D=80=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipFindTest.java | 76 ++++++++----------- .../timeline/service/TimeLineServiceTest.java | 12 +++ 2 files changed, 45 insertions(+), 43 deletions(-) create mode 100644 src/test/java/com/example/demo/timeline/service/TimeLineServiceTest.java diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 5408751..be228e7 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -3,25 +3,21 @@ import com.example.demo.friend.domain.*; import com.example.demo.user.service.UserService; -import com.example.demo.user.service.UserSessionService; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; - import java.nio.file.AccessDeniedException; +import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; - -import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.stream.Stream; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; - @ExtendWith(MockitoExtension.class) public class FriendShipFindTest { @@ -30,23 +26,25 @@ public class FriendShipFindTest { + @Mock UserService userService; - @DisplayName("친구관계 요청 테스트 ") + @DisplayName("친구관계 요청 확인 테스트1. 알맞은 요청 테스트 ") + @Test void testForAccept() throws AccessDeniedException { - FriendShipService friendShipService + FriendShipService sut = new FriendShipService(friendShipRepository, userService); //given - String[] person1Info = { "1", "friender1"}; - String [] person2Info = { "2", "friender2"}; - String [] person3Info = {"3", "friendee1"}; - String [] person4Info = {"4", "friendee2"}; + String[] person1Info = { "1", "person1"}; + String [] person2Info = { "2", "person2"}; + String [] person3Info = {"3", "person3"}; + String [] person4Info = {"4", "person4"}; PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0]) ); PersonId person2Id = PersonId.create(Long.parseLong( person2Info[0])); @@ -68,47 +66,39 @@ void testForAccept() throws AccessDeniedException { Friendee friendee3 = Friendee.create(person3Id, person3Name); Friendee friendee4 = Friendee.create(person4Id, person4Name); - Friendship friendship1 = Friendship.create(friender4, friendee1); - Friendship friendship2 = Friendship.create(friender3, friendee2); - Friendship friendship3 = Friendship.create(friender2, friendee2); - Friendship friendship4 = Friendship.create(friender1, friendee3); + Friendship forwardFriendship1 = Friendship.create(friender4, friendee1); + forwardFriendship1.requestFriendShip(); + Friendship forwardFriendship2 = Friendship.create(friender3, friendee1); + forwardFriendship2.requestFriendShip(); + Friendship forwardFriendship3 = Friendship.create(friender2, friendee1); + forwardFriendship3.requestFriendShip(); + Friendship forwardFriendship4 = Friendship.create(friender1, friendee3); + forwardFriendship4.requestFriendShip(); + List forwardFriendshipList = new ArrayList<>(); + forwardFriendshipList.add(forwardFriendship1); + forwardFriendshipList.add(forwardFriendship2); + forwardFriendshipList.add(forwardFriendship3); + Page forwardPage = new PageImpl<>(forwardFriendshipList); //when // 4,3,2 는 1에 친구 요청 // 1은 3만 친구 요청 + when(userService.findUserInfo()).thenReturn(person1Info); + when(friendShipRepository + .findAllByFriendee_FriendeeId(any(), any())) + .thenReturn(forwardPage); - when(userService.findUserInfo()) - .thenReturn(person1Info); - - friendShipRepository.save(friendship1); - friendShipRepository.save(friendship2); - friendShipRepository.save(friendship3); - friendShipRepository.save(friendship4); - - Page dtos = friendShipRepository - .findAllByFriendee_FriendeeId( - person1Id, PageRequest.of(0, 4)); - - - System.out.println(); //then - List result = friendShipService.findRequestForMe(0, 4); - for (FriendDto dtoss : result){ - System.out.println(dtos); - } + List result = sut.findRequestForMe(0, 4); + for (FriendDto dto : result){ + System.out.println(dto); + } } - private FriendDto toFriendDto(BasicInfo basicInfo) { - return new FriendDto( - basicInfo.getId(), - basicInfo.getName() - ); - } - } diff --git a/src/test/java/com/example/demo/timeline/service/TimeLineServiceTest.java b/src/test/java/com/example/demo/timeline/service/TimeLineServiceTest.java new file mode 100644 index 0000000..e887f87 --- /dev/null +++ b/src/test/java/com/example/demo/timeline/service/TimeLineServiceTest.java @@ -0,0 +1,12 @@ +package com.example.demo.timeline.service; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.*; + +@ExtendWith(MockitoExtension.class) +class TimeLineServiceTest { + + +} \ No newline at end of file From 126f480a30fe77183fe524ce3c5c04d78f5022ef Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:54:49 +0900 Subject: [PATCH 122/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20=ED=99=95=EC=9D=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8]?= =?UTF-8?q?=201.1=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EB=98=90=EB=8A=94=20=EC=82=AC=EC=9D=B4=EC=A6=88=20=EC=9E=98?= =?UTF-8?q?=EB=AA=BB=EB=90=9C=20=EA=B2=BD=EC=9A=B0=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=ED=95=98=EB=8A=94=EC=A7=80=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=ED=95=98=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/friend/service/FriendShipFindTest.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index be228e7..23d47a2 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -11,13 +11,16 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.PageRequest; import java.nio.file.AccessDeniedException; import java.util.ArrayList; import java.util.List; -import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; + + @ExtendWith(MockitoExtension.class) public class FriendShipFindTest { @@ -93,12 +96,15 @@ void testForAccept() throws AccessDeniedException { //then + assertThrows(IllegalArgumentException.class, ()->sut.findRequestForMe(-1, 2)); + assertThrows(IllegalArgumentException.class, ()->sut.findRequestForMe(1, -2)); List result = sut.findRequestForMe(0, 4); for (FriendDto dto : result){ - System.out.println(dto); + System.out.println(dto); } + } } From 50cd4006370bc7768dd7be530233c971ad7d4a0e Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 18:00:23 +0900 Subject: [PATCH 123/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=20=ED=99=95=EC=9D=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8]?= =?UTF-8?q?=202.=20=EC=A1=B0=EA=B1=B4=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=20=EA=B0=92=20=EC=97=AC=EB=B6=80=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipFindTest.java | 94 ++++++++++++++++++- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 23d47a2..79c4920 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -33,8 +33,7 @@ public class FriendShipFindTest { @Mock UserService userService; - @DisplayName("친구관계 요청 확인 테스트1. 알맞은 요청 테스트 ") - + @DisplayName("친구관계 요청 확인 테스트1. 알맞은 요청 테스트 || 잘못된 페이지 번호 또는 크기 ") @Test void testForAccept() throws AccessDeniedException { @@ -71,20 +70,31 @@ void testForAccept() throws AccessDeniedException { Friendship forwardFriendship1 = Friendship.create(friender4, friendee1); forwardFriendship1.requestFriendShip(); + Friendship backwardFriendship1 = Friendship.create(friender4, friendee1); + backwardFriendship1.deleteFriendShip(); + Friendship forwardFriendship2 = Friendship.create(friender3, friendee1); forwardFriendship2.requestFriendShip(); + Friendship backwardFriendship2 = Friendship.create(friender3, friendee1); + backwardFriendship2.acceptFriendShip(); + Friendship forwardFriendship3 = Friendship.create(friender2, friendee1); forwardFriendship3.requestFriendShip(); + Friendship backwardFriendship3 = Friendship.create(friender2, friendee1); + backwardFriendship3.requestFriendShip(); + Friendship forwardFriendship4 = Friendship.create(friender1, friendee3); forwardFriendship4.requestFriendShip(); List forwardFriendshipList = new ArrayList<>(); + List backwardFriendshipList = new ArrayList<>(); forwardFriendshipList.add(forwardFriendship1); forwardFriendshipList.add(forwardFriendship2); forwardFriendshipList.add(forwardFriendship3); Page forwardPage = new PageImpl<>(forwardFriendshipList); + Page backwardPage = new PageImpl<>(backwardFriendshipList); //when // 4,3,2 는 1에 친구 요청 @@ -107,4 +117,84 @@ void testForAccept() throws AccessDeniedException { } + @DisplayName("친구관계 요청 확인 테스트2. 조건에 맞는 요청이 없는 경우 테스트 ") + @Test + void test2() throws AccessDeniedException { + + FriendShipService sut + = new FriendShipService(friendShipRepository, + userService); + + //given + + String[] person1Info = { "1", "person1"}; + String [] person2Info = { "2", "person2"}; + String [] person3Info = {"3", "person3"}; + String [] person4Info = {"4", "person4"}; + + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0]) ); + PersonId person2Id = PersonId.create(Long.parseLong( person2Info[0])); + PersonId person3Id = PersonId.create(Long.parseLong(person3Info[0])); + PersonId person4Id = PersonId.create(Long.parseLong(person4Info[0])); + + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( person2Info[1]); + PersonName person3Name = PersonName.create(person3Info[1]); + PersonName person4Name = PersonName.create(person4Info[1]); + + Friender friender1 = Friender.create(person1Id, person1Name); + Friender friender2 = Friender.create(person2Id, person2Name); + Friender friender3 = Friender.create(person3Id, person3Name); + Friender friender4 = Friender.create(person4Id, person4Name); + + Friendee friendee1 = Friendee.create(person1Id, person1Name); + Friendee friendee2 = Friendee.create(person2Id, person2Name); + Friendee friendee3 = Friendee.create(person3Id, person3Name); + Friendee friendee4 = Friendee.create(person4Id, person4Name); + + + Friendship backwardFriendship1 = Friendship.create(friender4, friendee1); + backwardFriendship1.deleteFriendShip(); + + Friendship backwardFriendship2 = Friendship.create(friender3, friendee1); + backwardFriendship2.acceptFriendShip(); + + Friendship backwardFriendship3 = Friendship.create(friender2, friendee1); + backwardFriendship3.requestFriendShip(); + + Friendship forwardFriendship4 = Friendship.create(friender1, friendee3); + forwardFriendship4.requestFriendShip(); + + + List backwardFriendshipList = new ArrayList<>(); + + backwardFriendshipList.add(backwardFriendship1); + backwardFriendshipList.add(backwardFriendship2); + backwardFriendshipList.add(backwardFriendship3); + + Page backwardPage = new PageImpl<>(backwardFriendshipList); + + //when + // 4,3,2 는 1에 친구 요청 + // 1은 3만 친구 요청 + when(userService.findUserInfo()).thenReturn(person1Info); + when(friendShipRepository + .findAllByFriendee_FriendeeId(any(), any())) + .thenReturn(backwardPage); + + + //then + assertThrows(IllegalArgumentException.class, ()->sut.findRequestForMe(-1, 2)); + assertThrows(IllegalArgumentException.class, ()->sut.findRequestForMe(1, -2)); + + + // 2번만 요청이 나와야 한다. + List result = sut.findRequestForMe(0, 4); + for (FriendDto dto : result){ + System.out.println(dto); + } + + + } + } From a4e8cc34f25354a8e6d64eedcc48534d7d20a206 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 18:24:50 +0900 Subject: [PATCH 124/153] =?UTF-8?q?*=20=EC=B9=9C=EA=B5=AC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EC=8B=9C=20=ED=95=84=EC=9A=94=ED=95=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/friend/service/FriendShipService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index fe7cabc..00b9b2e 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -112,6 +112,11 @@ public FriendShipResult deleteFriendShipRequest(Long inputedId) throws AccessDen = friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(myInfo, friendId); forwardFriendShip.deleteFriendShip(); + Friendship backwardFriendShip + = friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId(friendId, myId); + backwardFriendShip.requestFriendShip(); + + return FriendShipResult.SUCCESS; } From 2fdadfdad157bab535f2d120bbb08067fbe7634e Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 18:40:22 +0900 Subject: [PATCH 125/153] =?UTF-8?q?*=20[=EC=B9=9C=EA=B5=AC=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=ED=99=95=EC=9D=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8]?= =?UTF-8?q?=20-=20=EC=A1=B0=EA=B1=B4=EC=97=90=20=EB=A7=9E=EA=B2=8C=20?= =?UTF-8?q?=EB=B6=88=EB=9F=AC=EC=98=A4=EB=8A=94=EC=A7=80=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20->=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipFindTest.java | 81 +++++++++++++++++-- 1 file changed, 74 insertions(+), 7 deletions(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java index 79c4920..fbb0bcd 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipFindTest.java @@ -33,6 +33,7 @@ public class FriendShipFindTest { @Mock UserService userService; + // 성공 @DisplayName("친구관계 요청 확인 테스트1. 알맞은 요청 테스트 || 잘못된 페이지 번호 또는 크기 ") @Test void testForAccept() throws AccessDeniedException { @@ -70,18 +71,12 @@ void testForAccept() throws AccessDeniedException { Friendship forwardFriendship1 = Friendship.create(friender4, friendee1); forwardFriendship1.requestFriendShip(); - Friendship backwardFriendship1 = Friendship.create(friender4, friendee1); - backwardFriendship1.deleteFriendShip(); Friendship forwardFriendship2 = Friendship.create(friender3, friendee1); forwardFriendship2.requestFriendShip(); - Friendship backwardFriendship2 = Friendship.create(friender3, friendee1); - backwardFriendship2.acceptFriendShip(); Friendship forwardFriendship3 = Friendship.create(friender2, friendee1); forwardFriendship3.requestFriendShip(); - Friendship backwardFriendship3 = Friendship.create(friender2, friendee1); - backwardFriendship3.requestFriendShip(); Friendship forwardFriendship4 = Friendship.create(friender1, friendee3); forwardFriendship4.requestFriendShip(); @@ -94,7 +89,6 @@ void testForAccept() throws AccessDeniedException { forwardFriendshipList.add(forwardFriendship3); Page forwardPage = new PageImpl<>(forwardFriendshipList); - Page backwardPage = new PageImpl<>(backwardFriendshipList); //when // 4,3,2 는 1에 친구 요청 @@ -117,6 +111,7 @@ void testForAccept() throws AccessDeniedException { } + // 성공 @DisplayName("친구관계 요청 확인 테스트2. 조건에 맞는 요청이 없는 경우 테스트 ") @Test void test2() throws AccessDeniedException { @@ -197,4 +192,76 @@ void test2() throws AccessDeniedException { } + @DisplayName("친구목록 확인 테스트 1. 조건에 맞게 불러오는 것 테스트 ") + @Test + void testForSearchingFriendList1() throws AccessDeniedException { + FriendShipService sut + = new FriendShipService(friendShipRepository, + userService); + + //given + + String[] person1Info = { "1", "person1"}; + String [] person2Info = { "2", "person2"}; + String [] person3Info = {"3", "person3"}; + String [] person4Info = {"4", "person4"}; + + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0]) ); + PersonId person2Id = PersonId.create(Long.parseLong( person2Info[0])); + PersonId person3Id = PersonId.create(Long.parseLong(person3Info[0])); + PersonId person4Id = PersonId.create(Long.parseLong(person4Info[0])); + + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( person2Info[1]); + PersonName person3Name = PersonName.create(person3Info[1]); + PersonName person4Name = PersonName.create(person4Info[1]); + + Friender friender1 = Friender.create(person1Id, person1Name); + Friender friender2 = Friender.create(person2Id, person2Name); + Friender friender3 = Friender.create(person3Id, person3Name); + Friender friender4 = Friender.create(person4Id, person4Name); + + Friendee friendee1 = Friendee.create(person1Id, person1Name); + Friendee friendee2 = Friendee.create(person2Id, person2Name); + Friendee friendee3 = Friendee.create(person3Id, person3Name); + Friendee friendee4 = Friendee.create(person4Id, person4Name); + + Friendship forwardFriendship1 = Friendship.create(friender1, friendee4); + forwardFriendship1.acceptFriendShip(); + + Friendship forwardFriendship2 = Friendship.create(friender1, friendee2); + forwardFriendship2.deleteFriendShip(); + + Friendship forwardFriendship3 = Friendship.create(friender1, friendee3); + forwardFriendship3.acceptFriendShip(); + + + List forwardFriendshipList = new ArrayList<>(); + + forwardFriendshipList.add(forwardFriendship1); + forwardFriendshipList.add(forwardFriendship2); + forwardFriendshipList.add(forwardFriendship3); + + Page forwardPage = new PageImpl<>(forwardFriendshipList); + + //when + when(userService.findUserInfo()).thenReturn(person1Info); + when(friendShipRepository + .findAllByFriender(any(), any())) + .thenReturn(forwardPage); + + + //then + assertThrows(IllegalArgumentException.class, ()->sut.getMyFriends(-1, 2)); + assertThrows(IllegalArgumentException.class, ()->sut.getMyFriends(1, -2)); + + + List result = sut.getMyFriends(0, 4); + for (FriendDto dto : result){ + System.out.println(dto); + } + + } + + } From 0e0e28b2e2997e7ef750d6b9a4e968a5a26c24e9 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:13:39 +0900 Subject: [PATCH 126/153] =?UTF-8?q?*=20=EA=B5=90=ED=9B=88=20:=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=8B=A4=EC=8B=9C=ED=95=A0=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EC=95=88=EC=97=90=EB=8A=94=20matcher?= =?UTF-8?q?=EB=A5=BC=20=EB=84=A3=EC=A7=80=20=EB=A7=90=EC=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend/service/FriendShipService.java | 4 +++- .../friend/service/FriendShipCreateTest.java | 23 ++++++++----------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/example/demo/friend/service/FriendShipService.java b/src/main/java/com/example/demo/friend/service/FriendShipService.java index 00b9b2e..92d688a 100644 --- a/src/main/java/com/example/demo/friend/service/FriendShipService.java +++ b/src/main/java/com/example/demo/friend/service/FriendShipService.java @@ -65,7 +65,6 @@ public void create(Long inputedFriendId) throws AccessDeniedException { Friendee friendeeMe = Friendee.create(myId, myName); - if ((friendShipRepository.findFriendshipByFrienderAndFriendee_FriendeeId(frienderMe, friendId))==null){ Friendship forwardFriendShip = createFriendship(frienderMe, friendeeYou); forwardFriendShip.requestFriendShip(); @@ -83,10 +82,13 @@ public void create(Long inputedFriendId) throws AccessDeniedException { if (forwardFriendShip.getFriendState()==FriendShipState.ACCEPT || forwardFriendShip.getFriendState()==FriendShipState.REQUEST){ + throw new IllegalStateException(); }else if (forwardFriendShip.getFriendState()==FriendShipState.REQUESTED && backwardFriendShip.getFriendState()==FriendShipState.REQUEST){ forwardFriendShip.acceptFriendShip(); backwardFriendShip.acceptFriendShip(); + }else { + throw new IllegalStateException(); } } diff --git a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java index e30f52e..70678e2 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java @@ -17,6 +17,7 @@ import java.nio.file.AccessDeniedException; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.when; @@ -28,8 +29,6 @@ class FriendShipCreateTest { @Mock FriendShipRepository friendShipRepository; - @Mock - UserSessionService userSessionService; @Mock UserService userService; @@ -40,9 +39,10 @@ class FriendShipCreateTest { @Test void createFriendShip() throws AccessDeniedException { - FriendShipService friendShipService + FriendShipService sut = new FriendShipService(friendShipRepository, userService); + //given String[] friender = { "1", "jihwan"}; @@ -55,8 +55,6 @@ void createFriendShip() throws AccessDeniedException { when(userService.findUserInfo(any())) .thenReturn(friendee); - - //then @@ -66,7 +64,7 @@ void createFriendShip() throws AccessDeniedException { @Test void testForAlreadyAccept() throws AccessDeniedException { - FriendShipService friendShipService + FriendShipService sut = new FriendShipService(friendShipRepository, userService); @@ -78,8 +76,8 @@ void testForAlreadyAccept() throws AccessDeniedException { PersonId myId = PersonId.create(Long.parseLong(friender[0]) ); PersonId friendId = PersonId.create(Long.parseLong(friendee[0])); - PersonName myName = PersonName.create((String) friender[1]); - PersonName friendName = PersonName.create((String) friendee[1]); + PersonName myName = PersonName.create(friender[1]); + PersonName friendName = PersonName.create(friendee[1]); Friender frienderMe = Friender.create(myId, myName); Friendee friendeeYou = Friendee.create(friendId, friendName); @@ -112,15 +110,15 @@ void testForAlreadyAccept() throws AccessDeniedException { //then - - + assertThrows(IllegalStateException.class, ()->sut.create(1L)); } + @DisplayName("친구관계 맺기 테스트 3. 요청 수락 ") @Test void testForAccept() throws AccessDeniedException { - FriendShipService friendShipService + FriendShipService sut = new FriendShipService(friendShipRepository, userService); @@ -163,11 +161,10 @@ void testForAccept() throws AccessDeniedException { .thenReturn(forwardFriendShip) .thenReturn(backwardFriendShip); - - //then + } From 80a05f41ea96a0828fc0a8a87b3a90d3da4dc007 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:19:19 +0900 Subject: [PATCH 127/153] =?UTF-8?q?*=20[=EC=9A=94=EC=B2=AD=20=EC=88=98?= =?UTF-8?q?=EB=9D=BD]=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/friend/service/FriendShipCreateTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java index 70678e2..be9d117 100644 --- a/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java +++ b/src/test/java/com/example/demo/friend/service/FriendShipCreateTest.java @@ -142,9 +142,14 @@ void testForAccept() throws AccessDeniedException { Friendship forwardFriendShip = Friendship.create(frienderMe, friendeeYou); + Friendship backwardFriendShip = Friendship.create(frienderYou, friendeeMe); - backwardFriendShip.acceptFriendShip(); + backwardFriendShip.requestFriendShip(); + + System.out.println("forwardFriendShip의 상태 : " + forwardFriendShip.getFriendState()); + System.out.println("backwardFriendShip의 상태 : " + backwardFriendShip.getFriendState()); + //when @@ -163,6 +168,9 @@ void testForAccept() throws AccessDeniedException { //then + sut.create(1L); + System.out.println("forwardFriendShip의 상태 : " + forwardFriendShip.getFriendState()); + System.out.println("backwardFriendShip의 상태 : " + backwardFriendShip.getFriendState()); } From 291484b24c64b64ee0fed4660c63de57bc1f935b Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:29:26 +0900 Subject: [PATCH 128/153] =?UTF-8?q?*=20=EB=82=B4=EB=B6=80=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=95=BD=EA=B0=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferenceInfoService.java | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 1d23f02..42903b6 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -12,6 +12,7 @@ import com.example.demo.preferenceinfo.domain.PreferenceLocation; import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; import com.example.demo.user.domain.User; +import com.example.demo.user.service.UserService; import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -27,12 +28,13 @@ public class PreferenceInfoService { private final UserSessionService userSessionService; private final PreferenceInfoRepository preferenceInfoRepository; private final FriendShipRepository friendShipRepository; + private final UserService userService; private final CommentService commentService; @Transactional public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAccessException { - User user = getLoggedUser(); + String[] userInfo = userService.findUserInfo(); Feed feed; if ((feed=feedRepository.findFeedByIdAndDeleted(id, false))==null){ @@ -40,17 +42,17 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces } if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( - PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ + PersonId.create(Long.parseLong(userInfo[0])), PersonId.create(feed.getWriter().getId()))==null){ throw new IllegalStateException(); } - if (feed.getWriter().getId().equals(user.getId())){ + if (feed.getWriter().getId().equals(Long.parseLong(userInfo[0]))){ throw new IllegalAccessException(); } if (preferenceInfoRepository - .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), user.getId(), PreferenceLocation.FEED)==null){ - PreferenceInfo preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferenceLocation.FEED); + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED)==null){ + PreferenceInfo preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId(), PreferenceLocation.FEED); preferenceInfo.locate(PreferenceLocation.FEED); preferenceInfo.like(); preferenceInfoRepository.save(preferenceInfo); @@ -61,7 +63,7 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces PreferenceInfo preferenceInfo = preferenceInfoRepository - .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), user.getId(), PreferenceLocation.FEED); + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED); if (preferenceInfo.findState()==PreferenceStatus.LIKE){ preferenceInfo.disLike(); @@ -78,7 +80,7 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces @Transactional public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws AccessDeniedException { - User user = getLoggedUser(); + String[] userInfo = userService.findUserInfo(); Feed feed; Comment comment; PreferenceInfo preferenceInfo; @@ -88,7 +90,7 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws } if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( - PersonId.create(user.getId()), PersonId.create(feed.getWriter().getId()))==null){ + PersonId.create(Long.parseLong(userInfo[0])), PersonId.create(feed.getWriter().getId()))==null){ throw new IllegalStateException(); } @@ -97,8 +99,8 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws } if ((preferenceInfo = preferenceInfoRepository - .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), user.getId(), PreferenceLocation.COMMENT))==null){ - preferenceInfo = PreferenceInfo.create(user.getId(), feed.getId(), PreferenceLocation.COMMENT); + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.COMMENT))==null){ + preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId(), PreferenceLocation.COMMENT); preferenceInfo.locate(PreferenceLocation.COMMENT); preferenceInfo.like(); preferenceInfoRepository.save(preferenceInfo); @@ -125,11 +127,5 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws } - private User getLoggedUser() throws AccessDeniedException { - return userSessionService.getLoggeddUser(); - } - - - } From 5d5c4dd429092b7633ce3a203c43b42aca7ff6c8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:32:46 +0900 Subject: [PATCH 129/153] =?UTF-8?q?*=20=EB=82=B4=EB=B6=80=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=95=BD=EA=B0=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/preferenceinfo/service/PreferenceInfoService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 42903b6..07f2ee9 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -25,7 +25,6 @@ public class PreferenceInfoService { private final FeedRepository feedRepository; - private final UserSessionService userSessionService; private final PreferenceInfoRepository preferenceInfoRepository; private final FriendShipRepository friendShipRepository; private final UserService userService; From 1accb818aa4e60d9327c4e8852ddb6abc7a37076 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:33:16 +0900 Subject: [PATCH 130/153] =?UTF-8?q?*=20[=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EC=A2=8B=EC=95=84=EC=9A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=201]?= =?UTF-8?q?=20=20-=20=ED=95=B4=EB=8B=B9=20feed=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferenceInfoServiceTest.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java diff --git a/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java b/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java new file mode 100644 index 0000000..91183ab --- /dev/null +++ b/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java @@ -0,0 +1,60 @@ +package com.example.demo.preferenceinfo.service; + +import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.service.CommentService; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; +import com.example.demo.user.service.UserService; +import com.example.demo.user.service.UserSessionService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.AccessDeniedException; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class PreferenceInfoServiceTest { + + + @Mock + FeedRepository feedRepository; + @Mock + UserService userService; + @Mock + PreferenceInfoRepository preferenceInfoRepository; + @Mock + FriendShipRepository friendShipRepository; + @Mock + CommentService commentService; + + + @DisplayName("게시글 좋아요 테스트1, 해당 feed 없을 경우 ") + @Test + void firstTest() throws AccessDeniedException { + //given + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + assertThrows(NullPointerException.class, ()->sut.likeFeedByFeedId(1L)); + + + } + +} \ No newline at end of file From 3dd33264a2b0b3dc862cbed42f536fcc7feaf08e Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:38:47 +0900 Subject: [PATCH 131/153] =?UTF-8?q?*=20[=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EC=A2=8B=EC=95=84=EC=9A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=202]?= =?UTF-8?q?=20-=20=EC=9E=91=EC=84=B1=EC=9E=90=EC=99=80=20=EC=B9=9C?= =?UTF-8?q?=EA=B5=AC=20=EA=B4=80=EA=B3=84=EA=B0=80=20=EC=95=84=EB=8B=90=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferenceInfoServiceTest.java | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java b/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java index 91183ab..49bafe8 100644 --- a/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java +++ b/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java @@ -1,6 +1,6 @@ package com.example.demo.preferenceinfo.service; -import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.domain.*; import com.example.demo.feed.service.CommentService; import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; @@ -15,6 +15,8 @@ import java.nio.file.AccessDeniedException; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -57,4 +59,42 @@ void firstTest() throws AccessDeniedException { } + @DisplayName("게시글 좋아요 테스트2, 게시글 작성자와 친구 관계가 아닐 경우") + @Test + void secondTest() throws AccessDeniedException { + //given + Long id = Long.parseLong("1"); + + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + WriterId writerId = WriterId.create(1L); + WriterName writerName = WriterName.create("tempWriter"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("tmep"); + + Feed feed = Feed.create(writer, content); + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + assertThrows(IllegalStateException.class, ()->sut.likeFeedByFeedId(id)); + + + } + } \ No newline at end of file From ce32217f809b5db10917012ff509a51b4e926648 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:41:11 +0900 Subject: [PATCH 132/153] =?UTF-8?q?*=20[=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EC=A2=8B=EC=95=84=EC=9A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=203]?= =?UTF-8?q?=20-=20=EB=82=B4=20=EA=B2=8C=EC=8B=9C=EA=B8=80=EC=9D=B8=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferenceInfoService.java | 7 ++-- .../service/PreferenceInfoServiceTest.java | 39 +++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 07f2ee9..ee12dea 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -40,14 +40,15 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces throw new NullPointerException(); } + if (feed.getWriter().getId().equals(Long.parseLong(userInfo[0]))){ + throw new IllegalAccessException(); + } + if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( PersonId.create(Long.parseLong(userInfo[0])), PersonId.create(feed.getWriter().getId()))==null){ throw new IllegalStateException(); } - if (feed.getWriter().getId().equals(Long.parseLong(userInfo[0]))){ - throw new IllegalAccessException(); - } if (preferenceInfoRepository .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED)==null){ diff --git a/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java b/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java index 49bafe8..555de91 100644 --- a/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java +++ b/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java @@ -97,4 +97,43 @@ void secondTest() throws AccessDeniedException { } + @DisplayName("게시글 좋아요 테스트3, 내 게시글인 경우") + @Test + void thirdTest() throws AccessDeniedException { + //given + + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long id = Long.parseLong("1"); + + WriterId writerId = WriterId.create(id); + WriterName writerName = WriterName.create("tempWriter"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("tmep"); + + Feed feed = Feed.create(writer, content); + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + assertThrows(IllegalAccessException.class, ()->sut.likeFeedByFeedId(id)); + + + } + } \ No newline at end of file From 803156be15a866143dff4ddc7a5d3fd2d293a547 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 20:57:59 +0900 Subject: [PATCH 133/153] =?UTF-8?q?*=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=97=90=20=ED=95=84=EC=9A=94=ED=95=9C=20=EB=AA=87=EB=AA=87=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../preferenceinfo/domain/PreferenceInfo.java | 10 +++++----- .../service/PreferenceInfoService.java | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java index 474591d..e54e756 100644 --- a/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java +++ b/src/main/java/com/example/demo/preferenceinfo/domain/PreferenceInfo.java @@ -28,15 +28,15 @@ public class PreferenceInfo { private PreferenceStatus preferenceStatus; - private PreferenceInfo(Long preferredPersonId, Long documentId, PreferenceLocation location ){ + private PreferenceInfo(Long preferredPersonId, Long documentId){ this.preferredPersonId = preferredPersonId; this.documentId = documentId; - this.location = location; - this.preferenceStatus = PreferenceStatus.DISLIKE; + + this.preferenceStatus = PreferenceStatus.INDIFFERENCE; } - public static PreferenceInfo create(Long preferredPersonId, Long documentId, PreferenceLocation location ){ - return new PreferenceInfo(preferredPersonId, documentId, location ); + public static PreferenceInfo create(Long preferredPersonId, Long documentId){ + return new PreferenceInfo(preferredPersonId, documentId ); } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index ee12dea..efde072 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -52,30 +52,32 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces if (preferenceInfoRepository .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED)==null){ - PreferenceInfo preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId(), PreferenceLocation.FEED); + PreferenceInfo preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId()); preferenceInfo.locate(PreferenceLocation.FEED); preferenceInfo.like(); preferenceInfoRepository.save(preferenceInfo); feed.like(); - } - - PreferenceInfo preferenceInfo + }else { + PreferenceInfo preferenceInfo = preferenceInfoRepository .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED); - if (preferenceInfo.findState()==PreferenceStatus.LIKE){ + if (preferenceInfo.findState()==PreferenceStatus.LIKE){ preferenceInfo.disLike(); feed.disLike(); - } + } - if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ + if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ preferenceInfo.like(); feed.like(); + } } + + } @Transactional @@ -100,7 +102,7 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws if ((preferenceInfo = preferenceInfoRepository .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.COMMENT))==null){ - preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId(), PreferenceLocation.COMMENT); + preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId()); preferenceInfo.locate(PreferenceLocation.COMMENT); preferenceInfo.like(); preferenceInfoRepository.save(preferenceInfo); From ba802d7d1f3917ff93902110096c680ab9fb3bf8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 23:31:58 +0900 Subject: [PATCH 134/153] =?UTF-8?q?*=20=EC=A4=91=EC=B2=A9=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20=EC=9C=84=ED=95=9C=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=20=EC=B6=94=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/PreferenceInfoService.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index efde072..399407e 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -33,26 +33,36 @@ public class PreferenceInfoService { @Transactional public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAccessException { - String[] userInfo = userService.findUserInfo(); + String[] userInfo = userService.findUserInfo(); // dto 사용할 것 Feed feed; + + + // 변수는 final 처럼 작성이 깔끔 + // 변수의 초기화는 참조가 계속 바뀌기 때문에, 런타임에 이해 어려움 + // 초기화는 왠만해서는 딱 1번만 + if ((feed=feedRepository.findFeedByIdAndDeleted(id, false))==null){ - throw new NullPointerException(); + throw new NullPointerException();// 고칠 것 -> IllegalStateException() 등, 또는 IlliArgument xxx[id 값 오류] } if (feed.getWriter().getId().equals(Long.parseLong(userInfo[0]))){ throw new IllegalAccessException(); } - if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( - PersonId.create(Long.parseLong(userInfo[0])), PersonId.create(feed.getWriter().getId()))==null){ + if ((friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + PersonId.create(Long.parseLong(userInfo[0])), PersonId.create(feed.getWriter().getId())))==null){ throw new IllegalStateException(); } + PreferenceInfo preferenceInfo = preferenceInfoRepository + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED); + + + // 비지니스 예외 방식에 예외처리를 담는 것은 좋은 방식이 아니다 . - 비쌈 + if (preferenceInfo==null){ - if (preferenceInfoRepository - .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED)==null){ - PreferenceInfo preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId()); + preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId()); preferenceInfo.locate(PreferenceLocation.FEED); preferenceInfo.like(); preferenceInfoRepository.save(preferenceInfo); @@ -60,10 +70,7 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces feed.like(); }else { - PreferenceInfo preferenceInfo - = preferenceInfoRepository - .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED); - + // 변수 추출 : else 일때 2번 if (preferenceInfo.findState()==PreferenceStatus.LIKE){ preferenceInfo.disLike(); feed.disLike(); From 37fe532108981f1b0fcb1103a1b42a5c56b1fcb4 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Tue, 20 Apr 2021 23:32:24 +0900 Subject: [PATCH 135/153] =?UTF-8?q?*=20Feed=20=EC=9C=84=ED=95=9C=20Helper?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/feed/domain/FeedHelper.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/test/java/com/example/demo/feed/domain/FeedHelper.java diff --git a/src/test/java/com/example/demo/feed/domain/FeedHelper.java b/src/test/java/com/example/demo/feed/domain/FeedHelper.java new file mode 100644 index 0000000..ba1c715 --- /dev/null +++ b/src/test/java/com/example/demo/feed/domain/FeedHelper.java @@ -0,0 +1,24 @@ +package com.example.demo.feed.domain; + +public class FeedHelper {// 좋은 녀석이다. + private FeedHelper(){} + + public static Feed create(Long id, Writer writer, Content content ){ + Feed feed = Feed.create(writer, content); + feed.setId(id); + + return feed; + } + + // 그루비 -> + /* + + + private 접근 가능 + -> 테스트 코드에만 사용[위험해서] + + + + + */ +} From 148e679971743bce02607f569b9e86669484d73a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 00:01:14 +0900 Subject: [PATCH 136/153] =?UTF-8?q?*=20Feed=20=EC=A2=8B=EC=95=84=EC=9A=94?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/domain/PreferenceCount.java | 2 +- .../service/PreferenceInfoService.java | 39 ++- .../service/CommentLikeTest.java | 4 + .../preferenceinfo/service/FeedLikeTest.java | 297 ++++++++++++++++++ .../service/PreferenceInfoServiceTest.java | 139 -------- 5 files changed, 325 insertions(+), 156 deletions(-) create mode 100644 src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java create mode 100644 src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java delete mode 100644 src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java diff --git a/src/main/java/com/example/demo/feed/domain/PreferenceCount.java b/src/main/java/com/example/demo/feed/domain/PreferenceCount.java index 437af28..4e4283d 100644 --- a/src/main/java/com/example/demo/feed/domain/PreferenceCount.java +++ b/src/main/java/com/example/demo/feed/domain/PreferenceCount.java @@ -35,7 +35,7 @@ public static PreferenceCount create(){ } public static PreferenceCount create(long preference){ - return new PreferenceCount(); + return new PreferenceCount(preference); } diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 399407e..0cb7d39 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -59,6 +59,7 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.FEED); + // 비지니스 예외 방식에 예외처리를 담는 것은 좋은 방식이 아니다 . - 비쌈 if (preferenceInfo==null){ @@ -74,13 +75,14 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces if (preferenceInfo.findState()==PreferenceStatus.LIKE){ preferenceInfo.disLike(); feed.disLike(); - + }else { + if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ + preferenceInfo.like(); + feed.like(); + } } - if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ - preferenceInfo.like(); - feed.like(); - } + } @@ -92,7 +94,6 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws String[] userInfo = userService.findUserInfo(); Feed feed; Comment comment; - PreferenceInfo preferenceInfo; if ((feed=feedRepository.findFeedByIdAndDeleted(feedId, false))==null){ throw new NullPointerException(); @@ -107,8 +108,10 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws throw new NullPointerException(); } - if ((preferenceInfo = preferenceInfoRepository - .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.COMMENT))==null){ + PreferenceInfo preferenceInfo = preferenceInfoRepository + .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.COMMENT); + + if (preferenceInfo ==null){ preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId()); preferenceInfo.locate(PreferenceLocation.COMMENT); preferenceInfo.like(); @@ -118,19 +121,23 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws - } + }else { + if (preferenceInfo.findState()==PreferenceStatus.LIKE){ + preferenceInfo.disLike(); + comment.disLike(); + }else { + if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ + preferenceInfo.like(); + comment.like(); + } + } - if (preferenceInfo.findState()==PreferenceStatus.LIKE){ - preferenceInfo.disLike(); - comment.disLike(); } - if (preferenceInfo.findState()==PreferenceStatus.INDIFFERENCE){ - preferenceInfo.like(); - comment.like(); - } + + diff --git a/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java new file mode 100644 index 0000000..2465da7 --- /dev/null +++ b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java @@ -0,0 +1,4 @@ +package com.example.demo.preferenceinfo.service; + +public class CommentLikeTest { +} diff --git a/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java b/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java new file mode 100644 index 0000000..19f9291 --- /dev/null +++ b/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java @@ -0,0 +1,297 @@ +package com.example.demo.preferenceinfo.service; + +import com.example.demo.feed.domain.*; +import com.example.demo.feed.service.CommentService; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.Friender; +import com.example.demo.friend.domain.Friendship; +import com.example.demo.preferenceinfo.domain.PreferenceInfo; +import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; +import com.example.demo.preferenceinfo.domain.PreferenceLocation; +import com.example.demo.preferenceinfo.domain.PreferenceStatus; +import com.example.demo.user.service.UserService; +import com.example.demo.user.service.UserSessionService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.AccessDeniedException; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class FeedLikeTest { + + + @Mock + FeedRepository feedRepository; + @Mock + UserService userService; + @Mock + PreferenceInfoRepository preferenceInfoRepository; + @Mock + FriendShipRepository friendShipRepository; + @Mock + CommentService commentService; + + @Mock + Friendship friendship; + + + @DisplayName("게시글 좋아요 테스트1, 해당 feed 없을 경우 ") + @Test + void firstTest() throws AccessDeniedException { + //given + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + assertThrows(NullPointerException.class, ()->sut.likeFeedByFeedId(1L)); + + + } + + @DisplayName("게시글 좋아요 테스트2, 게시글 작성자와 친구 관계가 아닐 경우") + @Test + void secondTest() throws AccessDeniedException { + //given + Long id = Long.parseLong("1"); + + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + WriterId writerId = WriterId.create(1L); + WriterName writerName = WriterName.create("tempWriter"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("tmep"); + + Feed feed = Feed.create(writer, content); + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + assertThrows(IllegalStateException.class, ()->sut.likeFeedByFeedId(id)); + + + } + + @DisplayName("게시글 좋아요 테스트3, 내 게시글인 경우") + @Test + void thirdTest() throws AccessDeniedException { + //given + + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long id = Long.parseLong("1"); + + WriterId writerId = WriterId.create(id); + WriterName writerName = WriterName.create("tempWriter"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("tmep"); + + Feed feed = Feed.create(writer, content); + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + assertThrows(IllegalAccessException.class, ()->sut.likeFeedByFeedId(id)); + + } + + @DisplayName("게시글 좋아요 테스트4, 처음 [좋아요] 하는 경우 ") + @Test + void test4() throws AccessDeniedException, IllegalAccessException { + //given + + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long friendId = Long.parseLong("3"); + + Long feedId = Long.parseLong("2"); + + + + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Feed feed = FeedHelper.create(feedId, writer, content); + + + + System.out.println("테스트 전 feed : " ); + System.out.println(feed.getPreferenceCountInfo().getPreference()); + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + + + when(friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any(), any() + )).thenReturn(friendship); + + + + //then + sut.likeFeedByFeedId(1L); + + // mock 객체밖에 못 담는다. + verify(preferenceInfoRepository, times(1)) + .save(any()); + + // 검증 같은 경우 verify() : stub 검사 or assert(): 내 반환값이 뭐와 일치하는지 + // + + System.out.println("테스트 후 feed : " ); + System.out.println(feed.getPreferenceCountInfo().getPreference()); + + + } + + @DisplayName("게시글 좋아요 테스트5,[좋아요 취소하는 경우] ") + @Test + void test5() throws AccessDeniedException, IllegalAccessException { + //given + + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long friendId = Long.parseLong("3"); + + Long feedId = Long.parseLong("2"); + + + + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Feed feed = FeedHelper.create(feedId, writer, content); + + PreferenceInfo preferenceInfo + = PreferenceInfo.create(userId, feedId); + + preferenceInfo.like(); + + + + System.out.println("테스트 전 feed : " ); + System.out.println(feed.getPreferenceCountInfo().getPreference()); + System.out.println("테스트 전 PreferenceInfo :" ); + System.out.println(preferenceInfo.getPreferenceStatus()); + + + //when + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + + + when(friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any(), any() + )).thenReturn(friendship); + + + when(preferenceInfoRepository.findByDocumentIdAndPreferredPersonIdAndLocation( + any(), any(), any() + )).thenReturn(preferenceInfo); + + + //then + sut.likeFeedByFeedId(1L); + + assertEquals(PreferenceStatus.INDIFFERENCE, preferenceInfo.getPreferenceStatus()); + assertEquals(-1, feed.getPreferenceCountInfo().getPreference()); + + // 검증 같은 경우 verify() : stub 검사 or assert(): 내 반환값이 뭐와 일치하는지 + // + + System.out.println("테스트 후 feed : " ); + System.out.println(feed.getPreferenceCountInfo().getPreference()); + System.out.println("테스트 후 PreferenceInfo :" ); + System.out.println(preferenceInfo.getPreferenceStatus()); + + + } + +} \ No newline at end of file diff --git a/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java b/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java deleted file mode 100644 index 555de91..0000000 --- a/src/test/java/com/example/demo/preferenceinfo/service/PreferenceInfoServiceTest.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.example.demo.preferenceinfo.service; - -import com.example.demo.feed.domain.*; -import com.example.demo.feed.service.CommentService; -import com.example.demo.friend.domain.FriendShipRepository; -import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; -import com.example.demo.user.service.UserService; -import com.example.demo.user.service.UserSessionService; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import java.nio.file.AccessDeniedException; - -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -@ExtendWith(MockitoExtension.class) -class PreferenceInfoServiceTest { - - - @Mock - FeedRepository feedRepository; - @Mock - UserService userService; - @Mock - PreferenceInfoRepository preferenceInfoRepository; - @Mock - FriendShipRepository friendShipRepository; - @Mock - CommentService commentService; - - - @DisplayName("게시글 좋아요 테스트1, 해당 feed 없을 경우 ") - @Test - void firstTest() throws AccessDeniedException { - //given - PreferenceInfoService sut = - new PreferenceInfoService( - feedRepository, - preferenceInfoRepository, - friendShipRepository, - userService, - commentService - ); - - String[] userInfo = {"1", "hello"}; - - - //when - when(userService.findUserInfo()).thenReturn(userInfo); - - assertThrows(NullPointerException.class, ()->sut.likeFeedByFeedId(1L)); - - - } - - @DisplayName("게시글 좋아요 테스트2, 게시글 작성자와 친구 관계가 아닐 경우") - @Test - void secondTest() throws AccessDeniedException { - //given - Long id = Long.parseLong("1"); - - PreferenceInfoService sut = - new PreferenceInfoService( - feedRepository, - preferenceInfoRepository, - friendShipRepository, - userService, - commentService - ); - - String[] userInfo = {"1", "hello"}; - - WriterId writerId = WriterId.create(1L); - WriterName writerName = WriterName.create("tempWriter"); - - Writer writer = Writer.create(writerId, writerName); - - Content content = Content.create("tmep"); - - Feed feed = Feed.create(writer, content); - - - //when - when(userService.findUserInfo()).thenReturn(userInfo); - - when(feedRepository.findFeedByIdAndDeleted(any(), any())) - .thenReturn(feed); - - assertThrows(IllegalStateException.class, ()->sut.likeFeedByFeedId(id)); - - - } - - @DisplayName("게시글 좋아요 테스트3, 내 게시글인 경우") - @Test - void thirdTest() throws AccessDeniedException { - //given - - PreferenceInfoService sut = - new PreferenceInfoService( - feedRepository, - preferenceInfoRepository, - friendShipRepository, - userService, - commentService - ); - - String[] userInfo = {"1", "hello"}; - - Long id = Long.parseLong("1"); - - WriterId writerId = WriterId.create(id); - WriterName writerName = WriterName.create("tempWriter"); - - Writer writer = Writer.create(writerId, writerName); - - Content content = Content.create("tmep"); - - Feed feed = Feed.create(writer, content); - - - //when - when(userService.findUserInfo()).thenReturn(userInfo); - - when(feedRepository.findFeedByIdAndDeleted(any(), any())) - .thenReturn(feed); - - assertThrows(IllegalAccessException.class, ()->sut.likeFeedByFeedId(id)); - - - } - -} \ No newline at end of file From ce8700d73d3805c865aa70dd75aa3ca58a90ff40 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 00:20:58 +0900 Subject: [PATCH 137/153] =?UTF-8?q?*=20[Comment=20=EC=A2=8B=EC=95=84?= =?UTF-8?q?=EC=9A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=201]=20=20-=20Feed=20?= =?UTF-8?q?=EC=97=86=EC=9D=84=20=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + CommentHelper 생성 --- .../service/PreferenceInfoService.java | 17 +++-- .../demo/feed/domain/CommentHelper.java | 13 ++++ .../service/CommentLikeTest.java | 73 +++++++++++++++++++ 3 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 src/test/java/com/example/demo/feed/domain/CommentHelper.java diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 0cb7d39..1a6cf3f 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -92,11 +92,17 @@ public void likeFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcces @Transactional public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws AccessDeniedException { String[] userInfo = userService.findUserInfo(); - Feed feed; - Comment comment; + Feed feed = feedRepository.findFeedByIdAndDeleted(feedId, false); + + + if (feed==null){ + throw new IllegalArgumentException(); + } + + Comment comment =commentService.findCommentById(feed.getComments(), commentId); - if ((feed=feedRepository.findFeedByIdAndDeleted(feedId, false))==null){ - throw new NullPointerException(); + if(comment ==null){ + throw new IllegalArgumentException(); } if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( @@ -104,9 +110,6 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws throw new IllegalStateException(); } - if((comment = commentService.findCommentById(feed.getComments(), commentId))==null){ - throw new NullPointerException(); - } PreferenceInfo preferenceInfo = preferenceInfoRepository .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.COMMENT); diff --git a/src/test/java/com/example/demo/feed/domain/CommentHelper.java b/src/test/java/com/example/demo/feed/domain/CommentHelper.java new file mode 100644 index 0000000..d91c606 --- /dev/null +++ b/src/test/java/com/example/demo/feed/domain/CommentHelper.java @@ -0,0 +1,13 @@ +package com.example.demo.feed.domain; + +public class CommentHelper { + + public static Comment create(Long id, Writer writer, Content content){ + Comment comment = Comment.create( writer, content); + comment.setId(id); + + return comment; + + + } +} diff --git a/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java index 2465da7..c01c5c7 100644 --- a/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java +++ b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java @@ -1,4 +1,77 @@ package com.example.demo.preferenceinfo.service; + +import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.service.CommentService; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.Friendship; +import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; +import com.example.demo.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.AccessDeniedException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) public class CommentLikeTest { + + @Mock + FeedRepository feedRepository; + @Mock + UserService userService; + @Mock + PreferenceInfoRepository preferenceInfoRepository; + @Mock + FriendShipRepository friendShipRepository; + @Mock + CommentService commentService; + + @Mock + Friendship friendship; + + + + @DisplayName("댓글 좋아요 테스트 1 : Feed 없을 때") + @Test + void test1() throws AccessDeniedException { + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long feedId = Long.parseLong("2"); + + Long friendId = Long.parseLong("3"); + + Long commendId = Long.parseLong("4"); + + + + + when(userService.findUserInfo()).thenReturn(userInfo); + + assertThrows(IllegalArgumentException.class, ()->sut + .likeCommentByFeedIdAndCommentId(feedId,commendId)); + + + } + + + } From 8196e8bb17e07f4c512f219ac044cc6b122214c7 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 01:46:24 +0900 Subject: [PATCH 138/153] =?UTF-8?q?*=20[Comment=20=EC=A2=8B=EC=95=84?= =?UTF-8?q?=EC=9A=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20]=20-=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Feed.java | 3 +- .../service/PreferenceInfoService.java | 6 +- .../service/CommentLikeTest.java | 334 +++++++++++++++++- .../preferenceinfo/service/FeedLikeTest.java | 4 + 4 files changed, 341 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index 29e8410..aaeecc6 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -9,6 +9,7 @@ import javax.persistence.*; import java.time.Instant; +import java.util.ArrayList; import java.util.List; @Entity @@ -39,7 +40,7 @@ public class Feed { @OneToMany(mappedBy = "feed", cascade = {CascadeType.PERSIST}) @JsonIgnoreProperties("feed") - private List comments; + private List comments = new ArrayList<>(); private Feed(Writer writer, Content content){ this.writer = writer; diff --git a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java index 1a6cf3f..7d91c81 100644 --- a/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java +++ b/src/main/java/com/example/demo/preferenceinfo/service/PreferenceInfoService.java @@ -112,15 +112,15 @@ public void likeCommentByFeedIdAndCommentId(Long feedId, Long commentId) throws PreferenceInfo preferenceInfo = preferenceInfoRepository - .findByDocumentIdAndPreferredPersonIdAndLocation(feed.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.COMMENT); + .findByDocumentIdAndPreferredPersonIdAndLocation(comment.getId(), Long.parseLong(userInfo[0]), PreferenceLocation.COMMENT); if (preferenceInfo ==null){ - preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), feed.getId()); + preferenceInfo = PreferenceInfo.create(Long.parseLong(userInfo[0]), comment.getId()); preferenceInfo.locate(PreferenceLocation.COMMENT); preferenceInfo.like(); preferenceInfoRepository.save(preferenceInfo); - feed.like(); + comment.like(); diff --git a/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java index c01c5c7..ea9a4d9 100644 --- a/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java +++ b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java @@ -1,10 +1,12 @@ package com.example.demo.preferenceinfo.service; -import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.domain.*; import com.example.demo.feed.service.CommentService; import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.friend.domain.Friendship; +import com.example.demo.friend.domain.PersonId; +import com.example.demo.preferenceinfo.domain.PreferenceInfo; import com.example.demo.preferenceinfo.domain.PreferenceInfoRepository; import com.example.demo.user.service.UserService; import org.junit.jupiter.api.DisplayName; @@ -18,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) public class CommentLikeTest { @@ -72,6 +74,334 @@ void test1() throws AccessDeniedException { } + @DisplayName("댓글 좋아요 테스트 2 : Feed 있지만, Comment 없을 경우") + @Test + void test2() throws AccessDeniedException { + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long feedId = Long.parseLong("2"); + + Long friendId = Long.parseLong("3"); + + Long commendId = Long.parseLong("4"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Feed feed = FeedHelper.create(feedId, writer, content); + + + + + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + // stubbing 을 하더라도, 일단 그에 맞는 타입이 들어오는게 보장되어야 동작을 한다는 것에 주의해라 + when(commentService.findCommentById(anyList(), anyLong())) + .thenReturn(null); + + + assertThrows(IllegalArgumentException.class, ()->sut + .likeCommentByFeedIdAndCommentId(feedId,commendId)); + + verify(commentService, times(1)) + .findCommentById(anyList(), anyLong()); + + } + + @DisplayName("댓글 좋아요 테스트 3 : 친구관계가 아닌 경우") + @Test + void test3() throws AccessDeniedException { + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long feedId = Long.parseLong("2"); + + Long friendId = Long.parseLong("3"); + + Long commendId = Long.parseLong("4"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Feed feed = FeedHelper.create(feedId, writer, content); + + Comment comment = Comment.create(writer, content); + + + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + // stubbing 을 하더라도, 일단 그에 맞는 타입이 들어오는게 보장되어야 동작을 한다는 것에 주의해라 + when(commentService.findCommentById(anyList(), anyLong())) + .thenReturn(comment); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any() + , any())) + .thenReturn(null); + + + assertThrows(IllegalStateException.class, ()->sut + .likeCommentByFeedIdAndCommentId(feedId,commendId)); + + verify(commentService, times(1)) + .findCommentById(anyList(), anyLong()); + + } + + @DisplayName("댓글 좋아요 테스트 4 : 좋아요 첫 경험 ") + @Test + void test4() throws AccessDeniedException { + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long feedId = Long.parseLong("2"); + + Long friendId = Long.parseLong("3"); + + Long commendId = Long.parseLong("4"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Feed feed = FeedHelper.create(feedId, writer, content); + + Comment comment = CommentHelper.create(commendId, writer, content); + + Friendship friendship = mock(Friendship.class); + + + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + // stubbing 을 하더라도, 일단 그에 맞는 타입이 들어오는게 보장되어야 동작을 한다는 것에 주의해라 + when(commentService.findCommentById(anyList(), anyLong())) + .thenReturn(comment); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any() + , any())) + .thenReturn(friendship); + + System.out.println(comment.getPreferenceCountInfo().getPreference()); + + sut.likeCommentByFeedIdAndCommentId(feedId, commendId); + + verify(preferenceInfoRepository, times(1)) + .save(any()); + + System.out.println(comment.getPreferenceCountInfo().getPreference()); + + } + + @DisplayName("댓글 좋아요 테스트 5 : 좋아요 철회 ") + @Test + void test5() throws AccessDeniedException { + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long feedId = Long.parseLong("2"); + + Long friendId = Long.parseLong("3"); + + Long commendId = Long.parseLong("4"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Feed feed = FeedHelper.create(feedId, writer, content); + + Comment comment = CommentHelper.create(commendId, writer, content); + + Friendship friendship = mock(Friendship.class); + + PreferenceInfo preferenceInfo + = PreferenceInfo.create(userId , commendId); + preferenceInfo.like(); + + + + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + // stubbing 을 하더라도, 일단 그에 맞는 타입이 들어오는게 보장되어야 동작을 한다는 것에 주의해라 + when(commentService.findCommentById(anyList(), anyLong())) + .thenReturn(comment); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any() + , any())) + .thenReturn(friendship); + + when(preferenceInfoRepository + .findByDocumentIdAndPreferredPersonIdAndLocation( + any() + , any(), any())) + .thenReturn(preferenceInfo); + +// when(preferenceInfoRepository +// .findByDocumentIdAndPreferredPersonIdAndLocation()); + + System.out.println(comment.getPreferenceCountInfo().getPreference()); + + sut.likeCommentByFeedIdAndCommentId(feedId, commendId); + + verify(preferenceInfoRepository, times(0)) + .save(any()); + + + + System.out.println(comment.getPreferenceCountInfo().getPreference()); + + } + + @DisplayName("댓글 좋아요 테스트 6 : 다시 좋아요 ") + @Test + void test6() throws AccessDeniedException { + PreferenceInfoService sut = + new PreferenceInfoService( + feedRepository, + preferenceInfoRepository, + friendShipRepository, + userService, + commentService + ); + + String[] userInfo = {"1", "hello"}; + + Long userId = Long.parseLong("1"); + + Long feedId = Long.parseLong("2"); + + Long friendId = Long.parseLong("3"); + + Long commendId = Long.parseLong("4"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Feed feed = FeedHelper.create(feedId, writer, content); + + Comment comment = CommentHelper.create(commendId, writer, content); + + Friendship friendship = mock(Friendship.class); + + PreferenceInfo preferenceInfo + = PreferenceInfo.create(userId , commendId); + preferenceInfo.disLike(); + + + + when(userService.findUserInfo()).thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + // stubbing 을 하더라도, 일단 그에 맞는 타입이 들어오는게 보장되어야 동작을 한다는 것에 주의해라 + when(commentService.findCommentById(anyList(), anyLong())) + .thenReturn(comment); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any() + , any())) + .thenReturn(friendship); + + when(preferenceInfoRepository + .findByDocumentIdAndPreferredPersonIdAndLocation( + any() + , any(), any())) + .thenReturn(preferenceInfo); + +// when(preferenceInfoRepository +// .findByDocumentIdAndPreferredPersonIdAndLocation()); + + System.out.println(comment.getPreferenceCountInfo().getPreference()); + + sut.likeCommentByFeedIdAndCommentId(feedId, commendId); + + verify(preferenceInfoRepository, times(0)) + .save(any()); + + + + System.out.println(comment.getPreferenceCountInfo().getPreference()); + + } + } diff --git a/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java b/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java index 19f9291..b09b6ae 100644 --- a/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java +++ b/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java @@ -164,6 +164,8 @@ void test4() throws AccessDeniedException, IllegalAccessException { Long feedId = Long.parseLong("2"); + Long commentId = Long.parseLong("4"); + @@ -178,6 +180,8 @@ void test4() throws AccessDeniedException, IllegalAccessException { + + System.out.println("테스트 전 feed : " ); System.out.println(feed.getPreferenceCountInfo().getPreference()); From 8b0e8cf820d9789c2d209fd8fa04d8cb3f068a61 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 01:58:42 +0900 Subject: [PATCH 139/153] =?UTF-8?q?*=20[FeedService=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=8B=9C=EC=9E=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/feed/service/FeedService.java | 1 - .../service/FeedServiceTest.java} | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) rename src/test/java/com/example/demo/{timeline/service/TimeLineServiceTest.java => feed/service/FeedServiceTest.java} (73%) diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 3870f72..370ecf7 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -20,7 +20,6 @@ @RequiredArgsConstructor public class FeedService { private final FeedRepository feedRepository; - private final UserSessionService userSessionService; private final FriendShipRepository friendShipRepository; private final UserService userService; diff --git a/src/test/java/com/example/demo/timeline/service/TimeLineServiceTest.java b/src/test/java/com/example/demo/feed/service/FeedServiceTest.java similarity index 73% rename from src/test/java/com/example/demo/timeline/service/TimeLineServiceTest.java rename to src/test/java/com/example/demo/feed/service/FeedServiceTest.java index e887f87..1552aca 100644 --- a/src/test/java/com/example/demo/timeline/service/TimeLineServiceTest.java +++ b/src/test/java/com/example/demo/feed/service/FeedServiceTest.java @@ -1,12 +1,12 @@ -package com.example.demo.timeline.service; +package com.example.demo.feed.service; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; import static org.junit.jupiter.api.Assertions.*; -@ExtendWith(MockitoExtension.class) -class TimeLineServiceTest { +@ExtendWith(MockitoExtension.class) +class FeedServiceTest { } \ No newline at end of file From b090c0d5479af4c2895e1785dd585387797e565a Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 02:10:27 +0900 Subject: [PATCH 140/153] =?UTF-8?q?*=20[Feed]=20=EC=97=90=20=EB=AA=BB=20?= =?UTF-8?q?=EB=84=A3=EC=9D=80=20=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/FeedController.java | 5 ++-- .../com/example/demo/feed/domain/Feed.java | 3 +++ .../com/example/demo/feed/domain/Title.java | 23 +++++++++++++++++++ .../demo/feed/service/FeedService.java | 2 +- 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/example/demo/feed/domain/Title.java diff --git a/src/main/java/com/example/demo/feed/controller/FeedController.java b/src/main/java/com/example/demo/feed/controller/FeedController.java index c2d7da5..f99952d 100644 --- a/src/main/java/com/example/demo/feed/controller/FeedController.java +++ b/src/main/java/com/example/demo/feed/controller/FeedController.java @@ -46,8 +46,9 @@ public Object findFeedDetailByFeedId(@PathVariable Long feedId) throws AccessDen @PostMapping("/feeds") - public Object makeFeed(@RequestBody String contents) throws AccessDeniedException { - Object result = feedService.makeFeedByContents(contents); + public Object makeFeed(@RequestParam String title, + @RequestParam String contents) throws AccessDeniedException { + Object result = feedService.makeFeedByContents(title, contents); if (result instanceof FeedDto){ ResponseEntity.ok(); diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index aaeecc6..445111c 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -26,6 +26,9 @@ public class Feed { @Embedded private Writer writer; + @Embedded + private Title title; + @Embedded private Content content; diff --git a/src/main/java/com/example/demo/feed/domain/Title.java b/src/main/java/com/example/demo/feed/domain/Title.java new file mode 100644 index 0000000..98d1798 --- /dev/null +++ b/src/main/java/com/example/demo/feed/domain/Title.java @@ -0,0 +1,23 @@ +package com.example.demo.feed.domain; + + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.Embeddable; + +@Embeddable +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Title { + + private String title; + + private Title(String title){ + this.title = title; + } + private static Title create(String title){ + return new Title(title); + } +} diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 370ecf7..f7fac87 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -90,7 +90,7 @@ private CommentDto toCommentDto(Comment comment){ } - public Object makeFeedByContents(String insertedContent) throws AccessDeniedException { + public Object makeFeedByContents(String title, String insertedContent) throws AccessDeniedException { if (insertedContent.length()==0){ return RequestResult.BAD_REQUEST; From 824213de1837292195c8de56fa2504531cb4a88c Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 02:16:10 +0900 Subject: [PATCH 141/153] =?UTF-8?q?*=20=EC=BD=94=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/domain/Feed.java | 7 ++-- .../com/example/demo/feed/domain/Title.java | 2 +- .../demo/feed/service/FeedService.java | 7 ++-- .../demo/feed/service/FeedCreateTest.java | 42 +++++++++++++++++++ .../demo/feed/service/FeedServiceTest.java | 12 ------ 5 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 src/test/java/com/example/demo/feed/service/FeedCreateTest.java delete mode 100644 src/test/java/com/example/demo/feed/service/FeedServiceTest.java diff --git a/src/main/java/com/example/demo/feed/domain/Feed.java b/src/main/java/com/example/demo/feed/domain/Feed.java index 445111c..7f3667e 100644 --- a/src/main/java/com/example/demo/feed/domain/Feed.java +++ b/src/main/java/com/example/demo/feed/domain/Feed.java @@ -45,11 +45,12 @@ public class Feed { @JsonIgnoreProperties("feed") private List comments = new ArrayList<>(); - private Feed(Writer writer, Content content){ + private Feed(Writer writer, Title title, Content content){ this.writer = writer; this.content = content; this.wrtTime = Instant.now(); this.preferenceCountInfo = PreferenceCount.create(); + this.title = title; this.deleted = false; } @@ -58,8 +59,8 @@ public void delete(){ this.deleted =true; } - public static Feed create(Writer writer, Content content) { - return new Feed(writer, content); + public static Feed create(Writer writer, Title title, Content content) { + return new Feed(writer, title, content); } public void like(){ diff --git a/src/main/java/com/example/demo/feed/domain/Title.java b/src/main/java/com/example/demo/feed/domain/Title.java index 98d1798..082ca42 100644 --- a/src/main/java/com/example/demo/feed/domain/Title.java +++ b/src/main/java/com/example/demo/feed/domain/Title.java @@ -17,7 +17,7 @@ public class Title { private Title(String title){ this.title = title; } - private static Title create(String title){ + public static Title create(String title){ return new Title(title); } } diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index f7fac87..2ab6949 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -90,9 +90,9 @@ private CommentDto toCommentDto(Comment comment){ } - public Object makeFeedByContents(String title, String insertedContent) throws AccessDeniedException { + public Object makeFeedByContents(String insertedTitle, String insertedContent) throws AccessDeniedException { - if (insertedContent.length()==0){ + if (insertedTitle.length()==0){ return RequestResult.BAD_REQUEST; } @@ -102,7 +102,8 @@ public Object makeFeedByContents(String title, String insertedContent) throws Ac WriterName wrtName = WriterName.create(userInfo[1]); Writer writer = Writer.create(id, wrtName); Content content = Content.create(insertedContent); - Feed feed = Feed.create(writer, content); + Title title = Title.create(insertedTitle); + Feed feed = Feed.create(writer, title, content); feedRepository.save(feed); FeedDto feedDto = toFriendDto(feed); diff --git a/src/test/java/com/example/demo/feed/service/FeedCreateTest.java b/src/test/java/com/example/demo/feed/service/FeedCreateTest.java new file mode 100644 index 0000000..7795957 --- /dev/null +++ b/src/test/java/com/example/demo/feed/service/FeedCreateTest.java @@ -0,0 +1,42 @@ +package com.example.demo.feed.service; + +import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.*; + + +@ExtendWith(MockitoExtension.class) +class FeedCreateTest { + + @Mock + FeedRepository feedRepository; + + @Mock + FriendShipRepository friendShipRepository; + + @Mock + UserService userService; + + @DisplayName("게시글 만들기 1. 잘못된 글인 경우 ") + @Test + void test1(){ + FeedService feedService + = new FeedService( + feedRepository, + friendShipRepository, + userService + ); + + + + + } + +} \ No newline at end of file diff --git a/src/test/java/com/example/demo/feed/service/FeedServiceTest.java b/src/test/java/com/example/demo/feed/service/FeedServiceTest.java deleted file mode 100644 index 1552aca..0000000 --- a/src/test/java/com/example/demo/feed/service/FeedServiceTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.example.demo.feed.service; - -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; - -import static org.junit.jupiter.api.Assertions.*; - - -@ExtendWith(MockitoExtension.class) -class FeedServiceTest { - -} \ No newline at end of file From 8572c47853b0839292b6ea445d87a44b28eaf3f7 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 18:11:02 +0900 Subject: [PATCH 142/153] =?UTF-8?q?*=20[Feed=20=EB=A7=8C=EB=93=A4=EA=B8=B0?= =?UTF-8?q?]=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EB=A5=BC=20=EC=9C=84=ED=95=9C?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=EB=93=A4=20=EC=9E=91=EC=84=B1=20=EB=B0=8F?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/service/FeedService.java | 4 ++-- .../example/demo/feed/domain/FeedHelper.java | 4 ++-- .../demo/feed/service/FeedCreateTest.java | 15 +++++++++++++- .../service/CommentLikeTest.java | 20 ++++++++++++++----- .../preferenceinfo/service/FeedLikeTest.java | 16 +++++++++++---- 5 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 2ab6949..5d29160 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -90,10 +90,10 @@ private CommentDto toCommentDto(Comment comment){ } - public Object makeFeedByContents(String insertedTitle, String insertedContent) throws AccessDeniedException { + public FeedDto makeFeedByContents(String insertedTitle, String insertedContent) throws AccessDeniedException { if (insertedTitle.length()==0){ - return RequestResult.BAD_REQUEST; + throw new IllegalArgumentException(); } String[] userInfo = userService.findUserInfo(); diff --git a/src/test/java/com/example/demo/feed/domain/FeedHelper.java b/src/test/java/com/example/demo/feed/domain/FeedHelper.java index ba1c715..9f3990c 100644 --- a/src/test/java/com/example/demo/feed/domain/FeedHelper.java +++ b/src/test/java/com/example/demo/feed/domain/FeedHelper.java @@ -3,8 +3,8 @@ public class FeedHelper {// 좋은 녀석이다. private FeedHelper(){} - public static Feed create(Long id, Writer writer, Content content ){ - Feed feed = Feed.create(writer, content); + public static Feed create(Long id, Writer writer, Title title, Content content ){ + Feed feed = Feed.create(writer, title, content); feed.setId(id); return feed; diff --git a/src/test/java/com/example/demo/feed/service/FeedCreateTest.java b/src/test/java/com/example/demo/feed/service/FeedCreateTest.java index 7795957..8837636 100644 --- a/src/test/java/com/example/demo/feed/service/FeedCreateTest.java +++ b/src/test/java/com/example/demo/feed/service/FeedCreateTest.java @@ -1,6 +1,8 @@ package com.example.demo.feed.service; +import com.example.demo.feed.domain.Content; import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.domain.Title; import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.user.service.UserService; import org.junit.jupiter.api.DisplayName; @@ -9,6 +11,8 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.nio.file.AccessDeniedException; + import static org.junit.jupiter.api.Assertions.*; @@ -26,7 +30,7 @@ class FeedCreateTest { @DisplayName("게시글 만들기 1. 잘못된 글인 경우 ") @Test - void test1(){ + void test1() throws AccessDeniedException { FeedService feedService = new FeedService( feedRepository, @@ -34,7 +38,16 @@ void test1(){ userService ); + String[] person1 = {"1" , "jihwan"}; + + String title = ""; + + String content = "content 1"; + + + assertThrows(IllegalArgumentException.class, + ()->feedService.makeFeedByContents(title, content)); } diff --git a/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java index ea9a4d9..97a434c 100644 --- a/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java +++ b/src/test/java/com/example/demo/preferenceinfo/service/CommentLikeTest.java @@ -96,6 +96,8 @@ void test2() throws AccessDeniedException { Long commendId = Long.parseLong("4"); + Title title = Title.create("This is title"); + WriterId writerId = WriterId.create(friendId); WriterName writerName = WriterName.create("writerName"); @@ -103,7 +105,7 @@ void test2() throws AccessDeniedException { Content content = Content.create("content"); - Feed feed = FeedHelper.create(feedId, writer, content); + Feed feed = FeedHelper.create(feedId, writer, title, content); @@ -153,9 +155,11 @@ void test3() throws AccessDeniedException { Writer writer = Writer.create(writerId, writerName); + Title title = Title.create("This is title"); + Content content = Content.create("content"); - Feed feed = FeedHelper.create(feedId, writer, content); + Feed feed = FeedHelper.create(feedId, writer, title, content); Comment comment = Comment.create(writer, content); @@ -213,7 +217,9 @@ void test4() throws AccessDeniedException { Content content = Content.create("content"); - Feed feed = FeedHelper.create(feedId, writer, content); + Title title = Title.create("This is title"); + + Feed feed = FeedHelper.create(feedId, writer,title, content); Comment comment = CommentHelper.create(commendId, writer, content); @@ -275,7 +281,9 @@ void test5() throws AccessDeniedException { Content content = Content.create("content"); - Feed feed = FeedHelper.create(feedId, writer, content); + Title title = Title.create("This is title"); + + Feed feed = FeedHelper.create(feedId, writer, title, content); Comment comment = CommentHelper.create(commendId, writer, content); @@ -353,7 +361,9 @@ void test6() throws AccessDeniedException { Content content = Content.create("content"); - Feed feed = FeedHelper.create(feedId, writer, content); + Title title = Title.create("This is title"); + + Feed feed = FeedHelper.create(feedId, writer, title, content); Comment comment = CommentHelper.create(commendId, writer, content); diff --git a/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java b/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java index b09b6ae..09496c6 100644 --- a/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java +++ b/src/test/java/com/example/demo/preferenceinfo/service/FeedLikeTest.java @@ -90,7 +90,9 @@ void secondTest() throws AccessDeniedException { Content content = Content.create("tmep"); - Feed feed = Feed.create(writer, content); + Title title = Title.create("This is title"); + + Feed feed = Feed.create(writer, title, content); //when @@ -129,7 +131,9 @@ void thirdTest() throws AccessDeniedException { Content content = Content.create("tmep"); - Feed feed = Feed.create(writer, content); + Title title = Title.create("This is title"); + + Feed feed = Feed.create(writer, title, content); //when @@ -176,7 +180,9 @@ void test4() throws AccessDeniedException, IllegalAccessException { Content content = Content.create("content"); - Feed feed = FeedHelper.create(feedId, writer, content); + Title title = Title.create("This is title"); + + Feed feed = FeedHelper.create(feedId, writer, title, content); @@ -248,7 +254,9 @@ void test5() throws AccessDeniedException, IllegalAccessException { Content content = Content.create("content"); - Feed feed = FeedHelper.create(feedId, writer, content); + Title title = Title.create("This is title"); + + Feed feed = FeedHelper.create(feedId, writer, title, content); PreferenceInfo preferenceInfo = PreferenceInfo.create(userId, feedId); From fdd7b4da1e333a4fc6ce3a143a515c59815c0e66 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 18:23:28 +0900 Subject: [PATCH 143/153] =?UTF-8?q?*=20[Feed=20=EB=A7=8C=EB=93=A4=EA=B8=B0?= =?UTF-8?q?]=202.=20=EC=98=AC=EB=B0=94=EB=A5=B8=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/service/FeedCreateTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/test/java/com/example/demo/feed/service/FeedCreateTest.java b/src/test/java/com/example/demo/feed/service/FeedCreateTest.java index 8837636..d5805d2 100644 --- a/src/test/java/com/example/demo/feed/service/FeedCreateTest.java +++ b/src/test/java/com/example/demo/feed/service/FeedCreateTest.java @@ -14,6 +14,7 @@ import java.nio.file.AccessDeniedException; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) @@ -52,4 +53,32 @@ void test1() throws AccessDeniedException { } + @DisplayName("게시글 만들기 2. 올바른 요청인 경우 ") + @Test + void test2() throws AccessDeniedException { + FeedService feedService + = new FeedService( + feedRepository, + friendShipRepository, + userService + ); + + String[] person1Info = {"1" , "jihwan"}; + + String title = "title1"; + + String content = "content 1"; + + + when(userService.findUserInfo()) + .thenReturn(person1Info); + + + + System.out.println(feedService.makeFeedByContents(title, content)); + verify(feedRepository, times(1)).save(any()); + } + + + } \ No newline at end of file From 8fa2eea699c2da59c1801a43199e54835ebe9d04 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 18:36:18 +0900 Subject: [PATCH 144/153] =?UTF-8?q?*=20[Feed=20=EC=82=AD=EC=A0=9C=ED=95=98?= =?UTF-8?q?=EA=B8=B0]=201.=20<=EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=ED=94=BC=EB=93=9C=EC=97=90=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EC=9A=94=EC=B2=AD=ED=96=88=EC=9D=84=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0>=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/FeedController.java | 21 +++----- .../demo/feed/service/FeedService.java | 19 +++---- .../demo/feed/service/FeedDeleteTest.java | 54 +++++++++++++++++++ 3 files changed, 68 insertions(+), 26 deletions(-) create mode 100644 src/test/java/com/example/demo/feed/service/FeedDeleteTest.java diff --git a/src/main/java/com/example/demo/feed/controller/FeedController.java b/src/main/java/com/example/demo/feed/controller/FeedController.java index f99952d..4d62de4 100644 --- a/src/main/java/com/example/demo/feed/controller/FeedController.java +++ b/src/main/java/com/example/demo/feed/controller/FeedController.java @@ -66,22 +66,15 @@ public Object makeFeed(@RequestParam String title, @DeleteMapping("/feeds/{feedId}") public void deleteFeedByFeedId(@PathVariable Long feedId) throws AccessDeniedException { - RequestResult result = feedService.deleteFeedByFeedId(feedId); - - switch (result){ - case OK: - ResponseEntity.ok(); - break; - case BAD_REQUEST: - ResponseEntity.status(HttpStatus.BAD_REQUEST); - break; - case FORBIDDEN: - ResponseEntity.status(HttpStatus.FORBIDDEN); - break; - case UNAUTHORIZED: - ResponseEntity.status(HttpStatus.UNAUTHORIZED); + try { + feedService.deleteFeedByFeedId(feedId); + }catch (IllegalArgumentException e) { + + }catch( IllegalAccessException e){ + } + } diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 5d29160..395e126 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -24,24 +24,19 @@ public class FeedService { private final UserService userService; @Transactional - public RequestResult deleteFeedByFeedId(Long id) throws AccessDeniedException { + public void deleteFeedByFeedId(Long id) throws AccessDeniedException, IllegalAccessException { Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); PersonId myId = PersonId.create(Long.parseLong(userService.findUserInfo()[0])); - PersonId friendId = PersonId.create(feed.getId()); - Friendship friendship; - if ((friendship=friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId(myId, friendId))==null){ - return RequestResult.BAD_REQUEST; + if (feed==null){ + throw new IllegalArgumentException(); } - if (myId.getId().equals(friendId.getId())){ - - }else if (friendship.getFriendState()!= FriendShipState.ACCEPT){ - return RequestResult.UNAUTHORIZED; + if (myId.getId().equals(feed.getId())){ + feed.delete(); + }else { + throw new IllegalAccessException(); } - - feed.delete(); - return RequestResult.OK; } diff --git a/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java b/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java new file mode 100644 index 0000000..f19e50f --- /dev/null +++ b/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java @@ -0,0 +1,54 @@ +package com.example.demo.feed.service; + + +import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.AccessDeniedException; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class FeedDeleteTest { + + @Mock + FeedRepository feedRepository; + + @Mock + FriendShipRepository friendShipRepository; + + @Mock + UserService userService; + + @DisplayName("게시글 삭제 1. 잘못된 글인 경우 ") + @Test + void test1() throws AccessDeniedException { + FeedService sut + = new FeedService( + feedRepository, + friendShipRepository, + userService + ); + + String[] person1 = {"1" , "jihwan"}; + + String title = ""; + + String content = "content 1"; + + when(userService.findUserInfo()) + .thenReturn(person1); + + assertThrows(IllegalArgumentException.class, + ()->sut.deleteFeedByFeedId(1L)); + + + } +} From 11aae7296cc3ec8176751ab67f36c5cb5b975ebe Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 18:39:43 +0900 Subject: [PATCH 145/153] =?UTF-8?q?*=20[Feed=20=EC=82=AD=EC=A0=9C=ED=95=98?= =?UTF-8?q?=EA=B8=B0]=202.=20<=ED=83=80=EC=9D=B8=EC=9D=98=20=EA=B8=80?= =?UTF-8?q?=EC=97=90=20=EC=82=AD=EC=A0=9C=EB=A5=BC=20=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=ED=96=88=EC=9D=84=20=EA=B2=BD=EC=9A=B0>=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/service/FeedDeleteTest.java | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java b/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java index f19e50f..017fd81 100644 --- a/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java +++ b/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java @@ -1,7 +1,7 @@ package com.example.demo.feed.service; -import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.feed.domain.*; import com.example.demo.friend.domain.FriendShipRepository; import com.example.demo.user.service.UserService; import org.junit.jupiter.api.DisplayName; @@ -13,6 +13,7 @@ import java.nio.file.AccessDeniedException; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -50,5 +51,46 @@ void test1() throws AccessDeniedException { ()->sut.deleteFeedByFeedId(1L)); + } + + @DisplayName("게시글 삭제 2.타인의 글에 삭제를 시도하였을 경우 ") + @Test + void test2() throws AccessDeniedException { + FeedService sut + = new FeedService( + feedRepository, + friendShipRepository, + userService + ); + + String[] userInfo = {"1", "hello"}; + + Long friendId = Long.parseLong("3"); + + Long feedId = Long.parseLong("2"); + + + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + + Title title = Title.create("This is title"); + + Feed feed = FeedHelper.create(feedId, writer, title, content); + + when(userService.findUserInfo()) + .thenReturn(userInfo); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + assertThrows(IllegalAccessException.class, + ()->sut.deleteFeedByFeedId(1L)); + + } } From a1a4980d2df787e783ae654a28349402bafa392e Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:03:23 +0900 Subject: [PATCH 146/153] =?UTF-8?q?*=20[Feed=20=EC=84=B8=EB=B6=80=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=99=95=EC=9D=B8=ED=95=98=EA=B8=B0]=201.=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=97=86=EC=9D=84=20=EB=95=8C=20?= =?UTF-8?q?2.=20=EC=B9=9C=EA=B5=AC=20=EA=B4=80=EA=B3=84=20=EC=95=84?= =?UTF-8?q?=EB=8B=90=20=EB=95=8C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20+=20?= =?UTF-8?q?=EA=B8=B0=ED=83=80=20=EC=BD=94=EB=93=9C=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=ED=98=95=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/controller/FeedController.java | 26 ++--- .../demo/feed/service/FeedService.java | 22 ++-- .../demo/feed/service/FindFeedDetailTest.java | 106 ++++++++++++++++++ 3 files changed, 130 insertions(+), 24 deletions(-) create mode 100644 src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java diff --git a/src/main/java/com/example/demo/feed/controller/FeedController.java b/src/main/java/com/example/demo/feed/controller/FeedController.java index 4d62de4..a71e15f 100644 --- a/src/main/java/com/example/demo/feed/controller/FeedController.java +++ b/src/main/java/com/example/demo/feed/controller/FeedController.java @@ -26,22 +26,18 @@ public class FeedController { @GetMapping("/feeds/{feedId}") - public Object findFeedDetailByFeedId(@PathVariable Long feedId) throws AccessDeniedException { - Object result = feedService.findFeedDetailByFeedId(feedId); - if (result instanceof FeedDto){ - ResponseEntity.ok(); - return result; - }else { - switch ((RequestResult)result){ - case BAD_REQUEST: - ResponseEntity.status(HttpStatus.BAD_REQUEST); - break; - case UNAUTHORIZED: - ResponseEntity.status(HttpStatus.UNAUTHORIZED); - break; - } - return result; + public ResponseEntity findFeedDetailByFeedId(@PathVariable Long feedId) throws AccessDeniedException { + + + try { + FeedDto result= feedService.findFeedDetailByFeedId(feedId); + return ResponseEntity.ok().body(result); + }catch (IllegalArgumentException e) { + return ResponseEntity.badRequest().build(); + }catch( IllegalAccessException e){ + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); } + } diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 395e126..6758504 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -40,21 +40,25 @@ public void deleteFeedByFeedId(Long id) throws AccessDeniedException, IllegalAcc } - public Object findFeedDetailByFeedId(Long id) throws AccessDeniedException { + public FeedDto findFeedDetailByFeedId(Long id) throws AccessDeniedException, IllegalAccessException { + String[] userInfo = userService.findUserInfo(); + Feed feed = feedRepository.findFeedByIdAndDeleted(id, false); - PersonId myId = PersonId.create(Long.parseLong(userService.findUserInfo()[0])); + if (feed==null){ + throw new IllegalArgumentException(); + } + + PersonId myId = PersonId.create(Long.parseLong(userInfo[0])); PersonId friendId = PersonId.create(feed.getId()); - Friendship friendship; + Friendship friendship = friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId(myId, friendId); + - if ((friendship=friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId(myId, friendId))==null){ - return RequestResult.BAD_REQUEST; - } - if (myId.getId().equals(friendId.getId())){ - }else if (friendship.getFriendState()!= FriendShipState.ACCEPT){ - return RequestResult.UNAUTHORIZED; + if (friendship==null || friendship.getFriendState()!=FriendShipState.ACCEPT){ + throw new IllegalAccessException(); } + FeedDto feedDto = toFriendDto(feed); return feedDto; } diff --git a/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java new file mode 100644 index 0000000..3f48c8b --- /dev/null +++ b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java @@ -0,0 +1,106 @@ +package com.example.demo.feed.service; + + +import com.example.demo.feed.domain.*; +import com.example.demo.friend.domain.*; +import com.example.demo.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.AccessDeniedException; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class FindFeedDetailTest { + + @Mock + FeedRepository feedRepository; + + @Mock + FriendShipRepository friendShipRepository; + + @Mock + + UserService userService; + @DisplayName("게시글 삭제 1. 해당 feed가 없을 경우 ") + @Test + void test1() throws AccessDeniedException { + FeedService sut + = new FeedService( + feedRepository, + friendShipRepository, + userService + ); + + + + String[] person1 = {"1" , "jihwan"}; + + Long id = Long.parseLong("2"); + + when(userService.findUserInfo()) + .thenReturn(person1); + + + assertThrows(IllegalArgumentException.class, + ()->sut.findFeedDetailByFeedId(id)); + + } + + @DisplayName("게시글 상세 조회 2. 해당 피드 작성자와 친구 관계가 아닐 경우 ") + @Test + void test2() throws AccessDeniedException { + FeedService sut + = new FeedService( + feedRepository, + friendShipRepository, + userService + ); + + String[] person1Info = {"1", "hello"}; + + Long friendId = Long.parseLong("3"); + String friendName = "hhhh"; + Long feedId = Long.parseLong("2"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + Writer writer = Writer.create(writerId, writerName); + + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0])); + PersonId person2Id = PersonId.create(friendId); + + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( friendName); + + Content content = Content.create("content"); + Title title = Title.create("This is title"); + Feed feed = FeedHelper.create(feedId, writer, title, content); + Friender friender = Friender.create(person1Id, person1Name); + Friendee friendee = Friendee.create(person2Id, person2Name); + + Friendship friendship = Friendship.create(friender, friendee); + friendship.deleteFriendShip(); + + when(userService.findUserInfo()) + .thenReturn(person1Info); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any(), + any())).thenReturn(friendship); + + assertThrows(IllegalAccessException.class, + ()->sut.findFeedDetailByFeedId(feedId)); + + } +} From 099e7b163509434dbf30549b55728001e5991178 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:05:53 +0900 Subject: [PATCH 147/153] =?UTF-8?q?*=20[Feed=20=EC=84=B8=EB=B6=80=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=99=95=EC=9D=B8=ED=95=98=EA=B8=B0]=203.=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=83=81=EC=84=B8=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + 클래스들 이름 변경 --- .../demo/feed/service/FeedService.java | 8 ++- ...eedCreateTest.java => CreateFeedTest.java} | 2 +- ...eedDeleteTest.java => DeleteFeedTest.java} | 2 +- .../demo/feed/service/FindFeedDetailTest.java | 51 +++++++++++++++++++ 4 files changed, 56 insertions(+), 7 deletions(-) rename src/test/java/com/example/demo/feed/service/{FeedCreateTest.java => CreateFeedTest.java} (98%) rename src/test/java/com/example/demo/feed/service/{FeedDeleteTest.java => DeleteFeedTest.java} (98%) diff --git a/src/main/java/com/example/demo/feed/service/FeedService.java b/src/main/java/com/example/demo/feed/service/FeedService.java index 6758504..04fa166 100644 --- a/src/main/java/com/example/demo/feed/service/FeedService.java +++ b/src/main/java/com/example/demo/feed/service/FeedService.java @@ -6,9 +6,7 @@ import com.example.demo.friend.domain.FriendShipState; import com.example.demo.friend.domain.Friendship; import com.example.demo.friend.domain.PersonId; -import com.example.demo.user.domain.User; import com.example.demo.user.service.UserService; -import com.example.demo.user.service.UserSessionService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -59,11 +57,11 @@ public FeedDto findFeedDetailByFeedId(Long id) throws AccessDeniedException, Ill } - FeedDto feedDto = toFriendDto(feed); + FeedDto feedDto = toFeedDto(feed); return feedDto; } - private FeedDto toFriendDto(Feed feed) { + private FeedDto toFeedDto(Feed feed) { return new FeedDto( feed.getId(), feed.getWriter().getId(), @@ -105,7 +103,7 @@ public FeedDto makeFeedByContents(String insertedTitle, String insertedContent) Feed feed = Feed.create(writer, title, content); feedRepository.save(feed); - FeedDto feedDto = toFriendDto(feed); + FeedDto feedDto = toFeedDto(feed); return feedDto; } diff --git a/src/test/java/com/example/demo/feed/service/FeedCreateTest.java b/src/test/java/com/example/demo/feed/service/CreateFeedTest.java similarity index 98% rename from src/test/java/com/example/demo/feed/service/FeedCreateTest.java rename to src/test/java/com/example/demo/feed/service/CreateFeedTest.java index d5805d2..59e6e3d 100644 --- a/src/test/java/com/example/demo/feed/service/FeedCreateTest.java +++ b/src/test/java/com/example/demo/feed/service/CreateFeedTest.java @@ -18,7 +18,7 @@ @ExtendWith(MockitoExtension.class) -class FeedCreateTest { +class CreateFeedTest { @Mock FeedRepository feedRepository; diff --git a/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java b/src/test/java/com/example/demo/feed/service/DeleteFeedTest.java similarity index 98% rename from src/test/java/com/example/demo/feed/service/FeedDeleteTest.java rename to src/test/java/com/example/demo/feed/service/DeleteFeedTest.java index 017fd81..5be6277 100644 --- a/src/test/java/com/example/demo/feed/service/FeedDeleteTest.java +++ b/src/test/java/com/example/demo/feed/service/DeleteFeedTest.java @@ -17,7 +17,7 @@ import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) -public class FeedDeleteTest { +public class DeleteFeedTest { @Mock FeedRepository feedRepository; diff --git a/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java index 3f48c8b..5ca66d8 100644 --- a/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java +++ b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java @@ -103,4 +103,55 @@ void test2() throws AccessDeniedException { ()->sut.findFeedDetailByFeedId(feedId)); } + + + @DisplayName("게시글 상세 조회 3. FeedDto 반환 확인 코드 ") + @Test + void test3() throws AccessDeniedException, IllegalAccessException { + FeedService sut + = new FeedService( + feedRepository, + friendShipRepository, + userService + ); + + String[] person1Info = {"1", "hello"}; + + Long friendId = Long.parseLong("3"); + String friendName = "hhhh"; + Long feedId = Long.parseLong("2"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + Writer writer = Writer.create(writerId, writerName); + + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0])); + PersonId person2Id = PersonId.create(friendId); + + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( friendName); + + Content content = Content.create("content"); + Title title = Title.create("This is title"); + Feed feed = FeedHelper.create(feedId, writer, title, content); + Friender friender = Friender.create(person1Id, person1Name); + Friendee friendee = Friendee.create(person2Id, person2Name); + + Friendship friendship = Friendship.create(friender, friendee); + friendship.acceptFriendShip(); + + when(userService.findUserInfo()) + .thenReturn(person1Info); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any(), + any())).thenReturn(friendship); + + System.out.println(sut.findFeedDetailByFeedId(feedId)); + + } } From b56e2f9f060b22d9402152a575464552819c33d0 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:10:40 +0900 Subject: [PATCH 148/153] =?UTF-8?q?*=20[Feed=20=EC=84=B8=EB=B6=80=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=ED=99=95=EC=9D=B8=ED=95=98=EA=B8=B0]=203.=20=20=EC=9D=98=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EA=B2=8C=EC=8B=9C=EA=B8=80?= =?UTF-8?q?=EC=97=90=20comment=20=EB=8F=84=20=EB=84=A3=EA=B3=A0=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=95=B4=EB=B4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/feed/service/FindFeedDetailTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java index 5ca66d8..31af1a3 100644 --- a/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java +++ b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java @@ -79,9 +79,13 @@ void test2() throws AccessDeniedException { PersonName person1Name = PersonName.create( person1Info[1]); PersonName person2Name = PersonName.create( friendName); + + + Content content = Content.create("content"); Title title = Title.create("This is title"); Feed feed = FeedHelper.create(feedId, writer, title, content); + Friender friender = Friender.create(person1Id, person1Name); Friendee friendee = Friendee.create(person2Id, person2Name); @@ -134,6 +138,10 @@ void test3() throws AccessDeniedException, IllegalAccessException { Content content = Content.create("content"); Title title = Title.create("This is title"); Feed feed = FeedHelper.create(feedId, writer, title, content); + Comment comment1 = Comment.create(writer, content); + Comment comment2 = Comment.create(writer, content); + feed.enrollComment(comment1); + feed.enrollComment(comment2); Friender friender = Friender.create(person1Id, person1Name); Friendee friendee = Friendee.create(person2Id, person2Name); From 54e1be4133f8c0d4ca3a0de9e0f27906f9d978e0 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:23:58 +0900 Subject: [PATCH 149/153] =?UTF-8?q?*=20[comment=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0]=201.=20comment=20=EB=A5=BC=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=ED=95=A0=20feed=20=EA=B0=80=20=EC=97=86=EC=9D=84=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=202.=20feed=20=EB=8A=94=20=EC=9E=88=EC=A7=80=EB=A7=8C?= =?UTF-8?q?,=20=EB=82=B4=EC=9A=A9=EC=9D=B4=20=EC=97=86=EB=8A=94=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/service/CommentService.java | 5 +- .../demo/feed/service/CreateCommentTest.java | 79 +++++++++++++++++++ .../demo/feed/service/FindFeedDetailTest.java | 7 +- 3 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 src/test/java/com/example/demo/feed/service/CreateCommentTest.java diff --git a/src/main/java/com/example/demo/feed/service/CommentService.java b/src/main/java/com/example/demo/feed/service/CommentService.java index a55da38..57d20bd 100644 --- a/src/main/java/com/example/demo/feed/service/CommentService.java +++ b/src/main/java/com/example/demo/feed/service/CommentService.java @@ -28,11 +28,12 @@ public class CommentService { @Transactional public CommentDto makeCommentByFeedIdAndContents(Long feedId, String insertedContent) throws AccessDeniedException, IllegalAccessException { - if (insertedContent.length()==0 || feedId<1){ + Feed feed = feedRepository.findFeedByIdAndDeleted(feedId, false); + + if (insertedContent.length()==0 || feed==null){ throw new IllegalArgumentException(); } - Feed feed = feedRepository.findFeedByIdAndDeleted(feedId, false); String[] userInfo = userService.findUserInfo(); Long friendId = feed.getWriter().getId(); diff --git a/src/test/java/com/example/demo/feed/service/CreateCommentTest.java b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java new file mode 100644 index 0000000..fadf534 --- /dev/null +++ b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java @@ -0,0 +1,79 @@ +package com.example.demo.feed.service; + + +import com.example.demo.feed.domain.*; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class CreateCommentTest { + + @Mock + FeedRepository feedRepository; + + @Mock + FriendShipRepository friendShipRepository; + + @Mock + + UserService userService; + + + + @DisplayName("댓글 생성 1. 댓글을 달 feed 없는 경우 " ) + @Test + void test1(){ + CommentService sut + = new CommentService(feedRepository, userService, friendShipRepository); + + Long commentId = Long.parseLong("3"); + String commentContent = "conecontecno"; + + + assertThrows(IllegalArgumentException.class, ()-> + sut.makeCommentByFeedIdAndContents(commentId, commentContent)); + } + + @DisplayName("게시글 생성 2. feed는 있지만, 내용이 없을 경우 " ) + @Test + void test2(){ + CommentService sut + = new CommentService(feedRepository, userService, friendShipRepository); + + Long commentId = Long.parseLong("3"); + String commentContent = ""; + + String[] person1Info = {"1", "hello"}; + + Long friendId = Long.parseLong("3"); + String friendName = "hhhh"; + Long feedId = Long.parseLong("2"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + Title title = Title.create("This is title"); + Feed feed = FeedHelper.create(feedId, writer, title, content); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + + + assertThrows(IllegalArgumentException.class, ()-> + sut.makeCommentByFeedIdAndContents(commentId, commentContent)); + } + + + +} diff --git a/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java index 31af1a3..d890b4f 100644 --- a/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java +++ b/src/test/java/com/example/demo/feed/service/FindFeedDetailTest.java @@ -129,15 +129,16 @@ void test3() throws AccessDeniedException, IllegalAccessException { WriterName writerName = WriterName.create("writerName"); Writer writer = Writer.create(writerId, writerName); + Content content = Content.create("content"); + Title title = Title.create("This is title"); + Feed feed = FeedHelper.create(feedId, writer, title, content); + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0])); PersonId person2Id = PersonId.create(friendId); PersonName person1Name = PersonName.create( person1Info[1]); PersonName person2Name = PersonName.create( friendName); - Content content = Content.create("content"); - Title title = Title.create("This is title"); - Feed feed = FeedHelper.create(feedId, writer, title, content); Comment comment1 = Comment.create(writer, content); Comment comment2 = Comment.create(writer, content); feed.enrollComment(comment1); From a20c1f4d4b0a0e60435a34c138e8edb807b9d7f8 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:41:29 +0900 Subject: [PATCH 150/153] =?UTF-8?q?*=20[comment=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0]=203.=20=EC=9E=91=EC=84=B1=EC=9E=90=EC=99=80=20?= =?UTF-8?q?=EC=B9=9C=EA=B5=AC=EA=B4=80=EA=B3=84=EA=B0=80=20=EC=95=84?= =?UTF-8?q?=EC=98=88=20=EC=97=86=EB=8A=94=20=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/service/CommentService.java | 15 ++++-- .../demo/feed/service/CreateCommentTest.java | 48 ++++++++++++++++++- 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/feed/service/CommentService.java b/src/main/java/com/example/demo/feed/service/CommentService.java index 57d20bd..843436f 100644 --- a/src/main/java/com/example/demo/feed/service/CommentService.java +++ b/src/main/java/com/example/demo/feed/service/CommentService.java @@ -3,6 +3,8 @@ import com.example.demo.feed.domain.*; import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.FriendShipState; +import com.example.demo.friend.domain.Friendship; import com.example.demo.friend.domain.PersonId; import com.example.demo.user.domain.User; import com.example.demo.user.domain.UserRepository; @@ -29,18 +31,21 @@ public class CommentService { public CommentDto makeCommentByFeedIdAndContents(Long feedId, String insertedContent) throws AccessDeniedException, IllegalAccessException { Feed feed = feedRepository.findFeedByIdAndDeleted(feedId, false); - if (insertedContent.length()==0 || feed==null){ throw new IllegalArgumentException(); } String[] userInfo = userService.findUserInfo(); Long friendId = feed.getWriter().getId(); - - if (friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + Friendship friendship + = friendShipRepository.findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( PersonId.create(friendId), - PersonId.create(Long.parseLong(userInfo[0])) - )==null){ + PersonId.create(Long.parseLong(userInfo[0]))); + + + + + if (friendship==null || friendship.getFriendState()!= FriendShipState.ACCEPT){ throw new IllegalAccessException(); } diff --git a/src/test/java/com/example/demo/feed/service/CreateCommentTest.java b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java index fadf534..36d00fe 100644 --- a/src/test/java/com/example/demo/feed/service/CreateCommentTest.java +++ b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java @@ -2,13 +2,16 @@ import com.example.demo.feed.domain.*; -import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.friend.domain.*; import com.example.demo.user.service.UserService; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.AccessDeniedException; + import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @@ -74,6 +77,49 @@ void test2(){ sut.makeCommentByFeedIdAndContents(commentId, commentContent)); } + @DisplayName("댓글 생성 3. feed 작성자와 친구가 아닐 경우 1) 아예 없는 경우 " ) + @Test + void test3() throws AccessDeniedException { + CommentService sut + = new CommentService(feedRepository, userService, friendShipRepository); + + Long commentId = Long.parseLong("3"); + String commentContent = "asdf"; + + String[] person1Info = {"1", "hello"}; + + Long friendId = Long.parseLong("3"); + String friendName = "hhhh"; + Long feedId = Long.parseLong("2"); + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + Title title = Title.create("This is title"); + Feed feed = FeedHelper.create(feedId, writer, title, content); + + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0])); + PersonId person2Id = PersonId.create(friendId); + + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( friendName); + + Friender friender = Friender.create(person1Id, person1Name); + Friendee friendee = Friendee.create(person2Id, person2Name); + + Friendship friendship = Friendship.create(friender, friendee); + friendship.acceptFriendShip(); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + when(userService.findUserInfo()) + .thenReturn(person1Info); + + assertThrows(IllegalAccessException.class, ()-> + sut.makeCommentByFeedIdAndContents(commentId, commentContent)); + } } From 1625a27ee52690ffbffe8990c4c1af7fecad6dad Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:43:02 +0900 Subject: [PATCH 151/153] =?UTF-8?q?*=20[comment=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0]=204.=20=EC=9E=91=EC=84=B1=EC=9E=90=EC=99=80=20?= =?UTF-8?q?=EC=B9=9C=EA=B5=AC=EA=B0=80=20=EC=8A=B9=EC=9D=B8=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=80=20=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/service/CreateCommentTest.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/test/java/com/example/demo/feed/service/CreateCommentTest.java b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java index 36d00fe..33f908b 100644 --- a/src/test/java/com/example/demo/feed/service/CreateCommentTest.java +++ b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java @@ -122,4 +122,54 @@ void test3() throws AccessDeniedException { sut.makeCommentByFeedIdAndContents(commentId, commentContent)); } + @DisplayName("댓글 생성 4. feed 작성자와 친구가 아닐 경우 2) 친구관계가 아닌 경우 " ) + @Test + void test4() throws AccessDeniedException { + CommentService sut + = new CommentService(feedRepository, userService, friendShipRepository); + + Long commentId = Long.parseLong("3"); + String commentContent = "asdf"; + + String[] person1Info = {"1", "hello"}; + + Long friendId = Long.parseLong("3"); + String friendName = "hhhh"; + Long feedId = Long.parseLong("2"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + Title title = Title.create("This is title"); + Feed feed = FeedHelper.create(feedId, writer, title, content); + + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0])); + PersonId person2Id = PersonId.create(friendId); + + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( friendName); + + Friender friender = Friender.create(person1Id, person1Name); + Friendee friendee = Friendee.create(person2Id, person2Name); + + Friendship friendship = Friendship.create(friender, friendee); + friendship.requestFriendShip(); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + when(userService.findUserInfo()) + .thenReturn(person1Info); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any(), + any())).thenReturn(friendship); + + assertThrows(IllegalAccessException.class, ()-> + sut.makeCommentByFeedIdAndContents(commentId, commentContent)); + } + } From 330e7c03232a3b0ab229e60049bb3d828ddad888 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:45:30 +0900 Subject: [PATCH 152/153] =?UTF-8?q?*=20[comment=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0]=205.=20=EB=8C=93=EA=B8=80=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/feed/service/CommentService.java | 3 -- .../demo/feed/service/CreateCommentTest.java | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/feed/service/CommentService.java b/src/main/java/com/example/demo/feed/service/CommentService.java index 843436f..fc756ad 100644 --- a/src/main/java/com/example/demo/feed/service/CommentService.java +++ b/src/main/java/com/example/demo/feed/service/CommentService.java @@ -49,13 +49,10 @@ public CommentDto makeCommentByFeedIdAndContents(Long feedId, String insertedCon throw new IllegalAccessException(); } - Content content = Content.create(insertedContent); - WriterId id = WriterId.create(Long.parseLong(userInfo[0])); WriterName wrtName = WriterName.create(userInfo[1]); Writer writer = Writer.create(id, wrtName); - Comment comment = Comment.create(writer, content); feed.enrollComment(comment); diff --git a/src/test/java/com/example/demo/feed/service/CreateCommentTest.java b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java index 33f908b..feff8a7 100644 --- a/src/test/java/com/example/demo/feed/service/CreateCommentTest.java +++ b/src/test/java/com/example/demo/feed/service/CreateCommentTest.java @@ -172,4 +172,53 @@ void test4() throws AccessDeniedException { sut.makeCommentByFeedIdAndContents(commentId, commentContent)); } + @DisplayName("댓글 생성 5. 댓글 생성 테스트" ) + @Test + void test5() throws AccessDeniedException, IllegalAccessException { + CommentService sut + = new CommentService(feedRepository, userService, friendShipRepository); + + Long commentId = Long.parseLong("3"); + String commentContent = "나오면 성공"; + + String[] person1Info = {"1", "hello"}; + + Long friendId = Long.parseLong("3"); + String friendName = "hhhh"; + Long feedId = Long.parseLong("2"); + + WriterId writerId = WriterId.create(friendId); + WriterName writerName = WriterName.create("writerName"); + Writer writer = Writer.create(writerId, writerName); + + Content content = Content.create("content"); + Title title = Title.create("This is title"); + Feed feed = FeedHelper.create(feedId, writer, title, content); + + PersonId person1Id = PersonId.create(Long.parseLong(person1Info[0])); + PersonId person2Id = PersonId.create(friendId); + + PersonName person1Name = PersonName.create( person1Info[1]); + PersonName person2Name = PersonName.create( friendName); + + Friender friender = Friender.create(person1Id, person1Name); + Friendee friendee = Friendee.create(person2Id, person2Name); + + Friendship friendship = Friendship.create(friender, friendee); + friendship.acceptFriendShip(); + + when(feedRepository.findFeedByIdAndDeleted(any(), any())) + .thenReturn(feed); + + when(userService.findUserInfo()) + .thenReturn(person1Info); + + when(friendShipRepository + .findFriendshipByFriender_FrienderIdAndFriendee_FriendeeId( + any(), + any())).thenReturn(friendship); + + System.out.println( sut.makeCommentByFeedIdAndContents(commentId, commentContent)); + } + } From 64b5dad6dd960b240ec4404f7c8e7b40d0269608 Mon Sep 17 00:00:00 2001 From: jhkim <62026666+horobito@users.noreply.github.com> Date: Wed, 21 Apr 2021 19:57:24 +0900 Subject: [PATCH 153/153] =?UTF-8?q?*=20[Timeline=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8]=201.=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EB=98=90=EB=8A=94=20=ED=81=AC=EA=B8=B0=20=EC=9E=98?= =?UTF-8?q?=EB=AA=BB=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../timeline/service/TimeLineService.java | 1 - .../demo/timeline/service/TimeLineTest.java | 43 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/example/demo/timeline/service/TimeLineTest.java diff --git a/src/main/java/com/example/demo/timeline/service/TimeLineService.java b/src/main/java/com/example/demo/timeline/service/TimeLineService.java index fcd053d..64a95b5 100644 --- a/src/main/java/com/example/demo/timeline/service/TimeLineService.java +++ b/src/main/java/com/example/demo/timeline/service/TimeLineService.java @@ -28,7 +28,6 @@ public class TimeLineService { public List findMyTimeLine(int page, int pageSize) throws AccessDeniedException { if (page<0 || pageSize<0){ throw new IllegalArgumentException(); - } String [] userInfo = userService.findUserInfo(); diff --git a/src/test/java/com/example/demo/timeline/service/TimeLineTest.java b/src/test/java/com/example/demo/timeline/service/TimeLineTest.java new file mode 100644 index 0000000..1c846fa --- /dev/null +++ b/src/test/java/com/example/demo/timeline/service/TimeLineTest.java @@ -0,0 +1,43 @@ +package com.example.demo.timeline.service; + + +import com.example.demo.feed.domain.FeedRepository; +import com.example.demo.friend.domain.FriendShipRepository; +import com.example.demo.user.service.UserService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import static org.junit.jupiter.api.Assertions.assertThrows; + +@ExtendWith(MockitoExtension.class) +public class TimeLineTest { + + + @Mock + FriendShipRepository friendShipRepository; + + @Mock + FeedRepository feedRepository; + + @Mock + UserService userService; + + + @DisplayName("타임라인 테스트 1. 페이지 정보 또는 크기 잘못 입력한 경우") + @Test + void test1(){ + TimeLineService sut + = new TimeLineService( + friendShipRepository, feedRepository, + userService + ); + + assertThrows(IllegalArgumentException.class, + ()->sut.findMyTimeLine(-1, -1)); + + + } + +}