Skip to content

Commit a0ef2c6

Browse files
authored
refactor,fix: 2회차 멘토링 기반 리팩토링 (#94)
1 parent 65e05fd commit a0ef2c6

22 files changed

+96
-63
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ dependencies {
6060
// bucket4j
6161
implementation 'com.bucket4j:bucket4j_jdk17-core:8.14.0'
6262

63+
// commons-lang3
64+
implementation 'org.apache.commons:commons-lang3:3.18.0'
6365
// caffeine
6466
implementation 'com.github.ben-manes.caffeine:caffeine'
6567

src/main/java/com/oronaminc/join/answer/dto/AnswerCreateResponse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.oronaminc.join.answer.dto;
22

33
import com.oronaminc.join.global.dto.WriterDto;
4+
import com.oronaminc.join.websocket.common.EventType;
45
import io.swagger.v3.oas.annotations.media.Schema;
56
import jakarta.validation.constraints.NotBlank;
67
import jakarta.validation.constraints.Size;
@@ -13,7 +14,7 @@ public record AnswerCreateResponse(
1314
@Schema(description = "답변이 생성될 질문 ID")
1415
Long questionId,
1516
@Schema(description = "답변 생성/삭제/수정 상태", example = "CREATE")
16-
String event,
17+
EventType event,
1718
@Schema(description = "답변 ID", example = "11")
1819
Long answerId,
1920
@Schema(description = "답변 내용", example = "답변입니다.")
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.oronaminc.join.answer.dto;
22

3+
import com.oronaminc.join.websocket.common.EventType;
34
import io.swagger.v3.oas.annotations.media.Schema;
45

56
@Schema(description = "답변 삭제 응답 DTO")
67
public record AnswerDeleteResponse(
78
Long answerId,
89
@Schema(description = "삭제 이벤트", example = "DELETE")
9-
String event
10+
EventType event
1011
) {
1112

1213
}

src/main/java/com/oronaminc/join/answer/dto/AnswerUpdateResponse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.oronaminc.join.answer.dto;
22

3+
import com.oronaminc.join.websocket.common.EventType;
34
import io.swagger.v3.oas.annotations.media.Schema;
45
import lombok.Builder;
56

@@ -8,7 +9,7 @@
89
public record AnswerUpdateResponse(
910
Long answerId,
1011
@Schema(description = "수정 이벤트", example = "UPDATE")
11-
String event,
12+
EventType event,
1213
@Schema(description = "수정된 내용", example = "수정된 답변입니다.")
1314
String content
1415

src/main/java/com/oronaminc/join/answer/mapper/AnswerMapper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.oronaminc.join.global.dto.WriterDto;
99
import com.oronaminc.join.member.domain.Member;
1010
import com.oronaminc.join.question.domain.Question;
11+
import com.oronaminc.join.websocket.common.EventType;
1112
import lombok.AccessLevel;
1213
import lombok.NoArgsConstructor;
1314

@@ -17,7 +18,7 @@ public class AnswerMapper {
1718
public static AnswerCreateResponse toAnswerCreateResponse(Answer answer) {
1819
return AnswerCreateResponse.builder()
1920
.questionId(answer.getQuestion().getId())
20-
.event("CREATE")
21+
.event(EventType.CREATE)
2122
.answerId(answer.getId())
2223
.content(answer.getContent())
2324
.emojiCount(0)
@@ -51,7 +52,7 @@ public static Answer toEntity(Question question, Member member, AnswerRequest re
5152
public static AnswerUpdateResponse toAnswerUpdateResponse(Answer answer) {
5253
return AnswerUpdateResponse.builder()
5354
.answerId(answer.getId())
54-
.event("UPDATE")
55+
.event(EventType.UPDATE)
5556
.content(answer.getContent())
5657
.build();
5758
}

src/main/java/com/oronaminc/join/emoji/dto/EmojiResponse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.oronaminc.join.emoji.dto;
22

33
import com.oronaminc.join.emoji.domain.TargetType;
4+
import com.oronaminc.join.websocket.common.EventType;
45
import io.swagger.v3.oas.annotations.media.Schema;
56

67
@Schema(description = "발표방/질문/답변 공감 생성/삭제 응답 DTO")
78
public record EmojiResponse(
89
@Schema(description = "이벤트 타입 (CREATE, DELETE)", example = "CREATE")
9-
String event,
10+
EventType event,
1011
@Schema(description = "공감 대상 타입 (ROOM, QUESTION, ANSWER)", example = "ROOM")
1112
TargetType targetType,
1213
@Schema(description = "공감 대상 ID", example = "1")

src/main/java/com/oronaminc/join/emoji/service/EmojiService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.oronaminc.join.member.service.MemberReader;
1212
import com.oronaminc.join.question.service.QuestionReader;
1313
import com.oronaminc.join.room.service.RoomReader;
14+
import com.oronaminc.join.websocket.common.EventType;
1415
import lombok.RequiredArgsConstructor;
1516
import org.springframework.stereotype.Service;
1617
import org.springframework.transaction.annotation.Transactional;
@@ -46,7 +47,7 @@ public EmojiResponse createEmoji(Long memberId, EmojiRequest emojiRequest) {
4647

4748
emojiCount = incrementEmojiCount(targetType, targetId);
4849

49-
return new EmojiResponse("CREATE", targetType, targetId, emojiCount);
50+
return new EmojiResponse(EventType.CREATE, targetType, targetId, emojiCount);
5051

5152
}
5253

@@ -62,7 +63,7 @@ public EmojiResponse deleteEmoji(Long memberId, EmojiRequest emojiRequest) {
6263
);
6364
emojiCount = decrementEmojiCount(targetType, targetId);
6465

65-
return new EmojiResponse("DELETE", targetType, targetId, emojiCount);
66+
return new EmojiResponse(EventType.DELETE, targetType, targetId, emojiCount);
6667

6768
}
6869

src/main/java/com/oronaminc/join/global/exception/ErrorCode.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public enum ErrorCode {
3131
UNAUTHORIZED_LIMIT_PARTICIPANT("PARTICIPANT-005", "인원이 가득 차 참가할 수 없습니다.", UNAUTHORIZED),
3232
UNAUTHORIZED_NOT_JOIN_ROOM("PARTICIPANT-005", "발표방에 참여하지 않았습니다. 먼저 참여해주세요.", UNAUTHORIZED),
3333

34-
3534
FILE_UPLOAD_FAILED("FILE-001", "파일 업로드에 실패하였습니다.", INTERNAL_SERVER_ERROR),
3635
NOT_FOUND_FILE("FILE-002", "존재하지 않는 파일입니다.", NOT_FOUND),
3736
MOVEMENT_FILE_FAILED("FILE-003", "파일 이동이 실패하였습니다.", INTERNAL_SERVER_ERROR),
@@ -51,7 +50,6 @@ public enum ErrorCode {
5150
UNAUTHORIZED_DELETE_ANSWER("ANSWER-005", "작성자 혹은 팀원, 발표자가 아니면 해당 댓글을 삭제할 수 없습니다.", UNAUTHORIZED),
5251
TOO_MANY_REQUESTS_ANSWER("ANSWER-006", "잠시 후 다시 시도해주세요.", UNAUTHORIZED),
5352

54-
5553
ACCESS_DENIED_SESSION("SESSION-1201", "접근 권한이 없습니다.", FORBIDDEN),
5654
NOT_FOUND_SESSION("SESSION-1202", "세션이 유효하지 않습니다.", UNAUTHORIZED),
5755
EXPIRED_SESSION("SESSION-1203", "세션이 만료되었습니다.", UNAUTHORIZED),
@@ -62,6 +60,7 @@ public enum ErrorCode {
6260
SOCKET_BAD_REQUEST_PATH("SOCKET-1002", "경로가 유효하지 않습니다.", BAD_REQUEST),
6361
SOCKET_BAD_REQUEST_MEMBER("SOCKET-1003", "회원이 유효하지 않습니다.", BAD_REQUEST),
6462

63+
STOMP_INVALID_DESTINATION("STOMP-001", "경로가 유효하지 않습니다.", BAD_REQUEST),
6564

6665
CONFLICT_EMOJI("EMOJI-001", "공감 처리 중 충돌이 발생했습니다.", CONFLICT),
6766
NOT_FOUND_EMOJI("EMOJI-002", "해당 이모지가 존재하지 않습니다.", NOT_FOUND),
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.oronaminc.join.global.exception;
22

3+
import com.oronaminc.join.global.util.StringUtil;
4+
import java.text.MessageFormat;
35
import lombok.AllArgsConstructor;
46
import lombok.Getter;
57

@@ -8,5 +10,19 @@
810
public class ErrorException extends RuntimeException {
911

1012
private final ErrorCode errorCode;
13+
private final String errorMessage;
1114

12-
}
15+
public ErrorException(ErrorCode errorCode) {
16+
this(errorCode, null);
17+
}
18+
19+
public static ErrorException of(ErrorCode errorCode, String message, Object... args) {
20+
String errorMessage = createMessage(message, args);
21+
return new ErrorException(errorCode, errorMessage);
22+
}
23+
24+
public static String createMessage(String message, Object... args) {
25+
return StringUtil.format(message, args);
26+
}
27+
28+
}

src/main/java/com/oronaminc/join/global/exception/ExceptionAdvice.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class ExceptionAdvice {
1818
public ResponseEntity<ErrorResponse> handleErrorException(ErrorException ex) {
1919
ErrorCode errorCode = ex.getErrorCode();
2020

21-
log.error(errorCode.getMessage(), ex);
21+
log.error("ErrorCode: {}, ErrorMessage: {}", ex.getErrorCode(), ex.getErrorMessage());
2222

2323
HttpStatus httpStatus = switch (errorCode.getErrorStatus()) {
2424
case NOT_FOUND -> HttpStatus.NOT_FOUND;

0 commit comments

Comments
 (0)