Skip to content

Commit d33d703

Browse files
authored
[REFACTOR] 에러코드 개선 (#316)
* refactor: Apply 도메인 에러 코드를 문자열 형태로 수정 * refactor: Auth 도메인 에러 코드를 문자열 형태로 수정 * refactor: File 도메인 에러 코드를 문자열 형태로 수정 * style: 클래스 끝에 개행 추가 * refactor: Member 도메인 에러 코드를 문자열 형태로 수정 * refactor: Project 도메인 에러 코드를 문자열 형태로 수정 * refactor: Question 도메인 에러 코드를 문자열 형태로 수정 * refactor: Recruit 도메인 에러 코드를 문자열 형태로 수정 * refactor: Semester 도메인 에러 코드를 문자열 형태로 수정 * test: 테스트 코드에서 에러 코드를 문자열이 아닌 상수로 변경 * test: hasSize(0)에서 isEmpty로 개선 * refactor: Global 에러 코드를 문자열 형태로 수정
1 parent 70c1bdd commit d33d703

12 files changed

Lines changed: 50 additions & 65 deletions

File tree

src/main/java/org/ject/support/common/exception/GlobalErrorCode.java

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,23 @@
1515
@Getter
1616
@AllArgsConstructor
1717
public enum GlobalErrorCode implements ErrorCode {
18-
UNSUPPORTED_PARAMETER_TYPE(BAD_REQUEST, 1, "Unsupported parameter type"),
19-
RESOURCE_NOT_FOUND(NOT_FOUND, 2, "Resource not found"),
20-
TEMPLATE_NOT_FOUND(NOT_FOUND, 3, "Template file not found"),
21-
JSON_MARSHALLING_FAILURE(INTERNAL_SERVER_ERROR, 4, "Json marshalling failure"),
22-
EMPTY_ACCESS_TOKEN(UNAUTHORIZED, 5, "Empty access token"),
23-
INVALID_ACCESS_TOKEN(UNAUTHORIZED, 6, "Invalid access token"),
24-
INVALID_PERMISSION(FORBIDDEN, 7, "Invalid permission"),
25-
AUTHENTICATION_REQUIRED(UNAUTHORIZED, 8, "Authentication is required"),
26-
OVER_PERIOD(CONFLICT, 9, "모집 기간이 아닙니다."),
27-
MISS_REQUIRED_REQUEST_PARAMETER(BAD_REQUEST, 10, "Missing required parameter"),
28-
MISS_REQUEST_BODY(BAD_REQUEST, 11, "Missing request body"),
29-
MISS_REQUIRED_JOB_FAMILY_PARAMETER(BAD_REQUEST, 12, "Missing required JobFamily parameter"),
30-
AUTHENTICATION_PROCESSING_ERROR(INTERNAL_SERVER_ERROR, 13, "인증 처리 중 오류가 발생했습니다."),
31-
REQUEST_METHOD_NOT_ALLOWED(METHOD_NOT_ALLOWED, 14, "Method not allowed"),
32-
METHOD_VALIDATION_FAILED(BAD_REQUEST, 15, "Method validation failed");
18+
UNSUPPORTED_PARAMETER_TYPE(BAD_REQUEST, "GLOBAL-1", "Unsupported parameter type"),
19+
RESOURCE_NOT_FOUND(NOT_FOUND, "GLOBAL-2", "Resource not found"),
20+
TEMPLATE_NOT_FOUND(NOT_FOUND, "GLOBAL-3", "Template file not found"),
21+
JSON_MARSHALLING_FAILURE(INTERNAL_SERVER_ERROR, "GLOBAL-4", "Json marshalling failure"),
22+
EMPTY_ACCESS_TOKEN(UNAUTHORIZED, "GLOBAL-5", "Empty access token"),
23+
INVALID_ACCESS_TOKEN(UNAUTHORIZED, "GLOBAL-6", "Invalid access token"),
24+
INVALID_PERMISSION(FORBIDDEN, "GLOBAL-7", "Invalid permission"),
25+
AUTHENTICATION_REQUIRED(UNAUTHORIZED, "GLOBAL-8", "Authentication is required"),
26+
OVER_PERIOD(CONFLICT, "GLOBAL-9", "모집 기간이 아닙니다."),
27+
MISS_REQUIRED_REQUEST_PARAMETER(BAD_REQUEST, "GLOBAL-10", "Missing required parameter"),
28+
MISS_REQUEST_BODY(BAD_REQUEST, "GLOBAL-11", "Missing request body"),
29+
MISS_REQUIRED_JOB_FAMILY_PARAMETER(BAD_REQUEST, "GLOBAL-12", "Missing required JobFamily parameter"),
30+
AUTHENTICATION_PROCESSING_ERROR(INTERNAL_SERVER_ERROR, "GLOBAL-13", "인증 처리 중 오류가 발생했습니다."),
31+
REQUEST_METHOD_NOT_ALLOWED(METHOD_NOT_ALLOWED, "GLOBAL-14", "Method not allowed"),
32+
METHOD_VALIDATION_FAILED(BAD_REQUEST, "GLOBAL-15", "Method validation failed");
3333

3434
private final HttpStatus httpStatus;
3535
private final String code;
3636
private final String message;
37-
38-
GlobalErrorCode(HttpStatus httpStatus, int code, String message) {
39-
this.httpStatus = httpStatus;
40-
this.code = String.format("GLOBAL-%d", code);
41-
this.message = message;
42-
}
4337
}

src/main/java/org/ject/support/domain/apply/exception/ApplyErrorCode.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,14 @@
1111
@Getter
1212
@AllArgsConstructor
1313
public enum ApplyErrorCode implements ErrorCode {
14-
NOT_FOUND_APPLY(NOT_FOUND, 1, "지원 정보를 찾을 수 없습니다."),
15-
ALREADY_SUBMITTED(CONFLICT, 2, "이미 지원서를 제출한 상태입니다."),
16-
NOT_FOUND_TEMP_APPLICATION_FORM(NOT_FOUND, 3, "임시 저장한 지원서가 존재하지 않습니다."),
17-
NOT_FOUND_SUBMITTED_APPLICATION_FORM(NOT_FOUND, 4, "제출된 지원서가 존재하지 않습니다."),
18-
NOT_SUBMITTED(CONFLICT, 5, "제출 완료된 지원서가 아닙니다.")
14+
NOT_FOUND_APPLY(NOT_FOUND, "APPLY-1", "지원 정보를 찾을 수 없습니다."),
15+
ALREADY_SUBMITTED(CONFLICT, "APPLY-2", "이미 지원서를 제출한 상태입니다."),
16+
NOT_FOUND_TEMP_APPLICATION_FORM(NOT_FOUND, "APPLY-3", "임시 저장한 지원서가 존재하지 않습니다."),
17+
NOT_FOUND_SUBMITTED_APPLICATION_FORM(NOT_FOUND, "APPLY-4", "제출된 지원서가 존재하지 않습니다."),
18+
NOT_SUBMITTED(CONFLICT, "APPLY-5", "제출 완료된 지원서가 아닙니다.")
1919
;
2020

2121
private final HttpStatus httpStatus;
2222
private final String code;
2323
private final String message;
24-
25-
ApplyErrorCode(HttpStatus httpStatus, int code, String message) {
26-
this.httpStatus = httpStatus;
27-
this.code = String.format("APPLY-%d", code); // TODO 별도 유틸 메서드로 분리 (this.getClass().getSimpleName().replace("ErrorCode", "").toUpperCase())
28-
this.message = message;
29-
}
30-
}
24+
}

src/main/java/org/ject/support/domain/auth/exception/AuthErrorCode.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
@Getter
1111
@AllArgsConstructor
1212
public enum AuthErrorCode implements ErrorCode {
13-
INVALID_AUTH_CODE(UNAUTHORIZED, "INVALID_AUTH_CODE", "인증 번호가 유효하지 않습니다."),
14-
NOT_FOUND_AUTH_CODE(UNAUTHORIZED, "NOT_FOUND_AUTH_CODE", "인증 번호를 찾을 수 없습니다."),
15-
INVALID_REFRESH_TOKEN(UNAUTHORIZED, "INVALID_REFRESH_TOKEN", "유효하지 않은 리프레시 토큰입니다."),
16-
EXPIRED_REFRESH_TOKEN(UNAUTHORIZED, "EXPIRED_REFRESH_TOKEN", "만료된 리프레시 토큰입니다."),
17-
INVALID_CREDENTIALS(UNAUTHORIZED, "INVALID_CREDENTIALS", "PIN 번호가 올바르지 않습니다.");
13+
INVALID_AUTH_CODE(UNAUTHORIZED, "AUTH-1", "인증 번호가 유효하지 않습니다."),
14+
NOT_FOUND_AUTH_CODE(UNAUTHORIZED, "AUTH-2", "인증 번호를 찾을 수 없습니다."),
15+
INVALID_REFRESH_TOKEN(UNAUTHORIZED, "AUTH-3", "유효하지 않은 리프레시 토큰입니다."),
16+
EXPIRED_REFRESH_TOKEN(UNAUTHORIZED, "AUTH-4", "만료된 리프레시 토큰입니다."),
17+
INVALID_CREDENTIALS(UNAUTHORIZED, "AUTH-5", "PIN 번호가 올바르지 않습니다.");
1818

1919
private final HttpStatus httpStatus;
2020
private final String code;

src/main/java/org/ject/support/domain/file/exception/FileErrorCode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
@Getter
1212
@AllArgsConstructor
1313
public enum FileErrorCode implements ErrorCode {
14-
INVALID_EXTENSION(BAD_REQUEST, "INVALID_EXTENSION", "유효하지 않은 확장자입니다."),
15-
EXCEEDED_PORTFOLIO_MAX_SIZE(PAYLOAD_TOO_LARGE, "EXCEEDED_PORTFOLIO_MAX_SIZE", "첨부 가능한 포트폴리오 최대 용량을 초과했습니다.");
14+
INVALID_EXTENSION(BAD_REQUEST, "FILE-1", "유효하지 않은 확장자입니다."),
15+
EXCEEDED_PORTFOLIO_MAX_SIZE(PAYLOAD_TOO_LARGE, "FILE-2", "첨부 가능한 포트폴리오 최대 용량을 초과했습니다.");
1616

1717
private final HttpStatus httpStatus;
1818
private final String code;
1919
private final String message;
20-
}
20+
}

src/main/java/org/ject/support/domain/member/exception/MemberErrorCode.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,14 @@
1212
@Getter
1313
@AllArgsConstructor
1414
public enum MemberErrorCode implements ErrorCode {
15-
NOT_FOUND_MEMBER(NOT_FOUND, 1, "멤버를 찾을 수 없습니다."),
16-
ALREADY_EXIST_MEMBER(CONFLICT, 2, "이미 가입되어 있는 회원입니다."),
17-
NOT_FOUND_SEMESTER_OF_MEMBER(NOT_FOUND, 3, "회원의 기수를 찾을 수 없습니다."),
18-
DUPLICATE_EMAIL(CONFLICT, 4, "이미 사용 중인 이메일입니다."),
19-
EXCEEDED_INTERESTED_DOMAINS_MAX_SIZE(PAYLOAD_TOO_LARGE, 5, "관심 도메인 목록의 최대 크기를 초과했습니다.")
15+
NOT_FOUND_MEMBER(NOT_FOUND, "MEMBER-1", "멤버를 찾을 수 없습니다."),
16+
ALREADY_EXIST_MEMBER(CONFLICT, "MEMBER-2", "이미 가입되어 있는 회원입니다."),
17+
NOT_FOUND_SEMESTER_OF_MEMBER(NOT_FOUND, "MEMBER-3", "회원의 기수를 찾을 수 없습니다."),
18+
DUPLICATE_EMAIL(CONFLICT, "MEMBER-4", "이미 사용 중인 이메일입니다."),
19+
EXCEEDED_INTERESTED_DOMAINS_MAX_SIZE(PAYLOAD_TOO_LARGE, "MEMBER-5", "관심 도메인 목록의 최대 크기를 초과했습니다.")
2020
;
2121

2222
private final HttpStatus httpStatus;
2323
private final String code;
2424
private final String message;
25-
26-
MemberErrorCode(HttpStatus httpStatus, int code, String message) {
27-
this.httpStatus = httpStatus;
28-
this.code = String.format("MEMBER-%d", code);
29-
this.message = message;
30-
}
3125
}

src/main/java/org/ject/support/domain/project/exception/ProjectErrorCode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
@Getter
1111
@AllArgsConstructor
1212
public enum ProjectErrorCode implements ErrorCode {
13-
NOT_FOUND_PROJECT(NOT_FOUND, "PROJECT_NOT_FOUND", "프로젝트를 찾을 수 없습니다."),
13+
NOT_FOUND_PROJECT(NOT_FOUND, "PROJECT-1", "프로젝트를 찾을 수 없습니다."),
1414
;
1515

1616
private final HttpStatus httpStatus;

src/main/java/org/ject/support/domain/recruit/exception/QuestionErrorCode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
@Getter
1111
@AllArgsConstructor
1212
public enum QuestionErrorCode implements ErrorCode {
13-
NOT_FOUND_QUESTION(NOT_FOUND, "QUESTION_NOT_FOUND", "해당 질문을 찾을 수 없습니다."),
13+
NOT_FOUND_QUESTION(NOT_FOUND, "QUESTION-1", "해당 질문을 찾을 수 없습니다."),
1414
;
1515

1616
private final HttpStatus httpStatus;

src/main/java/org/ject/support/domain/recruit/exception/RecruitErrorCode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
@Getter
1212
@AllArgsConstructor
1313
public enum RecruitErrorCode implements ErrorCode {
14-
NOT_FOUND_RECRUIT(NOT_FOUND, "NOT_FOUND_RECRUIT", "모집 공고를 찾을 수 없습니다."),
15-
DUPLICATED_JOB_FAMILY(CONFLICT, "DUPLICATED_JOB_FAMILY", "이미 모집중인 직군입니다."),
16-
UPDATE_NOT_ALLOW_FOR_CLOSED(CONFLICT, "UPDATE_NOT_ALLOW_FOR_CLOSED", "마감된 모집 정보는 수정할 수 없습니다.");
14+
NOT_FOUND_RECRUIT(NOT_FOUND, "RECRUIT-1", "모집 공고를 찾을 수 없습니다."),
15+
DUPLICATED_JOB_FAMILY(CONFLICT, "RECRUIT-2", "이미 모집중인 직군입니다."),
16+
UPDATE_NOT_ALLOW_FOR_CLOSED(CONFLICT, "RECRUIT-3", "마감된 모집 정보는 수정할 수 없습니다.");
1717

1818
private final HttpStatus httpStatus;
1919
private final String code;

src/main/java/org/ject/support/domain/recruit/exception/SemesterErrorCode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
@Getter
1111
@AllArgsConstructor
1212
public enum SemesterErrorCode implements ErrorCode {
13-
NOT_FOUND_RECRUITING_SEMESTER(NOT_FOUND, "NOT_FOUND_RECRUITING_SEMESTER", "현재 모집중인 기수가 존재하지 않습니다."),
14-
NOT_FOUND_SEMESTER(NOT_FOUND, "NOT_FOUND_SEMESTER", "기수가 존재하지 않습니다."),
13+
NOT_FOUND_RECRUITING_SEMESTER(NOT_FOUND, "SEMESTER-1", "현재 모집중인 기수가 존재하지 않습니다."),
14+
NOT_FOUND_SEMESTER(NOT_FOUND, "SEMESTER-2", "기수가 존재하지 않습니다."),
1515
;
1616

1717
private final HttpStatus httpStatus;

src/test/java/org/ject/support/domain/file/controller/FileControllerTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.time.LocalDateTime;
2727

2828
import static org.hamcrest.Matchers.containsString;
29+
import static org.ject.support.domain.file.exception.FileErrorCode.INVALID_EXTENSION;
2930
import static org.mockito.Mockito.when;
3031
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
3132
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
@@ -137,7 +138,7 @@ void invalid_portfolio_content_type() throws Exception {
137138
}
138139
]
139140
"""))
140-
.andExpect(content().string(containsString("INVALID_EXTENSION")))
141+
.andExpect(content().string(containsString(INVALID_EXTENSION.getCode())))
141142
.andDo(print());
142143
}
143144

@@ -175,7 +176,7 @@ void exceeded_portfolio_max_size() throws Exception {
175176
""")
176177
)
177178
.andExpect(status().isPayloadTooLarge())
178-
.andExpect(content().string(containsString(FileErrorCode.EXCEEDED_PORTFOLIO_MAX_SIZE.name())))
179+
.andExpect(content().string(containsString(FileErrorCode.EXCEEDED_PORTFOLIO_MAX_SIZE.getCode())))
179180
.andDo(print())
180181
.andReturn();
181182
}

0 commit comments

Comments
 (0)