Browse Source

Merge pull request 'feature/common/exception' (#2) from feature/common/exception into develop

Reviewed-on: #2
pull/3/head
lkd9125 8 months ago
parent
commit
27d26daa46
  1. 2
      app/kac-app/build.gradle
  2. 61
      app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/ServerExceptionHandler.java
  3. 14
      app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/model/BaseErrorModel.java
  4. 2
      app/kac-app/src/main/resources/application.yml
  5. 2
      common/core/build.gradle
  6. 37
      common/core/src/main/java/kr/co/palnet/kac/core/exception/AppException.java
  7. 8
      common/core/src/main/java/kr/co/palnet/kac/core/exception/BaseErrorCode.java
  8. 2
      common/core/src/main/java/kr/co/palnet/kac/core/exception/Level.java
  9. 2
      common/core/src/main/java/kr/co/palnet/kac/core/exception/Source.java
  10. 22
      common/core/src/main/java/kr/co/palnet/kac/core/exception/model/BaseErrorModel.java
  11. 1
      data/com/src/test/java/kr/co/palnet/kac/data/com/DataComApplicationTestApp.java
  12. 4
      web/api-com/build.gradle
  13. 7
      web/api-com/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java

2
app/kac-app/build.gradle

@ -14,7 +14,7 @@ dependencies {
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
implementation project(":common-core")
implementation project(":web-api-com")
// TDOO: ...
compileOnly project(":data-com")

61
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/ServerExceptionHandler.java

@ -1,41 +1,82 @@
package kr.co.palnet.kac.app.core.exception;
import kr.co.palnet.kac.app.core.exception.model.BaseErrorModel;
import kr.co.palnet.kac.core.exception.AppException;
import kr.co.palnet.kac.core.exception.BaseErrorCode;
import kr.co.palnet.kac.core.exception.model.BaseErrorModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.resource.NoResourceFoundException;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@RestControllerAdvice
@Slf4j
public class ServerExceptionHandler {
@ExceptionHandler(AppException.class)
public ResponseEntity<BaseErrorModel> appExceptionHandle(AppException e) {
ExceptionCode errorType = e.getErrorCode();
BaseErrorCode errorType = e.getErrorCode();
BaseErrorModel baseBody = new BaseErrorModel();
baseBody.setCode(errorType.code());
baseBody.setTimestamp(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(Instant.now().atZone(ZoneId.systemDefault())));
baseBody.setStatus(errorType.status());
baseBody.setError(errorType.code());
baseBody.setMessage(errorType.message());
e.printStackTrace();
baseBody.setPath(this.getUrl());
log.warn("",e);
return ResponseEntity.status(errorType.status()).body(baseBody);
}
@ExceptionHandler(NoResourceFoundException.class)
public ResponseEntity<BaseErrorModel> noResourceFoundException(NoResourceFoundException e){
BaseErrorModel baseBody = new BaseErrorModel();
baseBody.setTimestamp(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(Instant.now().atZone(ZoneId.systemDefault())));
baseBody.setStatus(e.getBody().getStatus());
baseBody.setError(BaseErrorCode.NOT_FOUND_RESOURCE.code());
baseBody.setMessage(e.getBody().getDetail());
baseBody.setPath(e.getResourcePath());
log.warn("",e);
return ResponseEntity.status(e.getBody().getStatus()).body(baseBody);
}
@ExceptionHandler(Exception.class)
public ResponseEntity<BaseErrorModel> exceptionHandle(Exception e) {
ExceptionCode errorType = ExceptionCode.INTERNAL_SERVER_ERROR;
BaseErrorCode errorType = BaseErrorCode.INTERNAL_SERVER_ERROR;
BaseErrorModel baseBody = new BaseErrorModel();
baseBody.setCode(errorType.code());
baseBody.setTimestamp(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(Instant.now().atZone(ZoneId.systemDefault())));
baseBody.setStatus(500);
baseBody.setError(e.getClass().getSimpleName());
baseBody.setPath(this.getUrl());
baseBody.setMessage(errorType.message());
e.printStackTrace();
log.warn("",e);
return ResponseEntity.status(errorType.status()).body(baseBody);
}
private String getUrl() {
ServletRequestAttributes servletRequestAttr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (servletRequestAttr != null) return servletRequestAttr.getRequest().getRequestURI();
else return null;
}
}

14
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/model/BaseErrorModel.java

@ -1,14 +0,0 @@
package kr.co.palnet.kac.app.core.exception.model;
import lombok.Data;
@Data
public class BaseErrorModel {
private String code;
private String message;
private String desc;
}

2
app/kac-app/src/main/resources/application.yml

@ -8,7 +8,7 @@ spring:
enabled: true
jpa:
hibernate:
ddl-auto: update
ddl-auto: none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

2
common/core/build.gradle

@ -1,6 +1,6 @@
dependencies {
implementation "$boot:spring-boot-starter-web"
}

37
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/AppException.java → common/core/src/main/java/kr/co/palnet/kac/core/exception/AppException.java

@ -1,10 +1,9 @@
package kr.co.palnet.kac.app.core.exception;
import java.util.Locale;
package kr.co.palnet.kac.core.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.MessageSource;
import lombok.extern.slf4j.Slf4j;
import java.util.Locale;
@Slf4j
public class AppException extends RuntimeException {
@ -16,7 +15,7 @@ public class AppException extends RuntimeException {
private final Source source;
private final ExceptionCode errorCode;
private final BaseErrorCode errorCode;
private final Object[] paramArray;
@ -25,7 +24,7 @@ public class AppException extends RuntimeException {
private String sourceErrorMessage;
public AppException(Throwable th, Level level, Source source, ExceptionCode errorCode, Object... paramArray) {
public AppException(Throwable th, Level level, Source source, BaseErrorCode errorCode, Object... paramArray) {
super(th != null ? th.getMessage() : errorCode.message(), th);
this.level = level;
this.errorCode = errorCode;
@ -35,15 +34,15 @@ public class AppException extends RuntimeException {
this.sourceErrorMessage = errorCode.message();
}
public AppException(Throwable th, Level level, ExceptionCode errorCode, Object... paramArray) {
public AppException(Throwable th, Level level, BaseErrorCode errorCode, Object... paramArray) {
this(th, level, Source.INTERNAL, errorCode, paramArray);
}
public AppException(Throwable th, Source source, ExceptionCode errorCode, Object... paramArray) {
public AppException(Throwable th, Source source, BaseErrorCode errorCode, Object... paramArray) {
this(th, Level.WARN, source, errorCode, paramArray);
}
public AppException(Throwable th, ExceptionCode errorCode, Object... paramArray) {
public AppException(Throwable th, BaseErrorCode errorCode, Object... paramArray) {
this(th, Level.WARN, Source.INTERNAL, errorCode, paramArray);
}
@ -59,30 +58,30 @@ public class AppException extends RuntimeException {
this(null, Level.WARN, source, errorCode, paramArray);
}
public AppException(ExceptionCode errorCode, Object... paramArray) {
public AppException(BaseErrorCode errorCode, Object... paramArray) {
this(null, Level.WARN, Source.INTERNAL, errorCode, paramArray);
}
// public BaseException(String errorCode) {
// this(errorCode, new Object());
// }
public AppException(Throwable th, ExceptionCode erorCode, String sourceErrorMessage) {
this(th, Level.WARN, ExceptionCode.INTERNAL_SERVER_ERROR, (Object[])null);
public AppException(Throwable th, BaseErrorCode erorCode, String sourceErrorMessage) {
this(th, Level.WARN, BaseErrorCode.INTERNAL_SERVER_ERROR, (Object[])null);
this.sourceErrorCode = erorCode.code();
this.sourceErrorMessage = errorCode.message();
}
public AppException(ExceptionCode sourceErrorCode, String sourceErrorMessage) {
public AppException(BaseErrorCode sourceErrorCode, String sourceErrorMessage) {
this(null, sourceErrorCode, sourceErrorMessage);
}
@Deprecated
public AppException(Throwable th, Level level, ExceptionCode errorCode, Source source, Object... paramArray) {
public AppException(Throwable th, Level level, BaseErrorCode errorCode, Source source, Object... paramArray) {
this(th, level, source, errorCode, paramArray);
}
@Deprecated
public AppException(Level level, ExceptionCode errorCode, Source source, Object... paramArray) {
public AppException(Level level, BaseErrorCode errorCode, Source source, Object... paramArray) {
this(null, level, source, errorCode, paramArray);
}
@ -90,7 +89,7 @@ public class AppException extends RuntimeException {
return errorCode.code();
}
public ExceptionCode getErrorCode(){
public BaseErrorCode getErrorCode(){
return errorCode;
}
@ -108,14 +107,14 @@ public class AppException extends RuntimeException {
public String getErrorMessage(MessageSource ms) {
if (ms == null) {
return ExceptionCode.INTERNAL_SERVER_ERROR.message();
return BaseErrorCode.INTERNAL_SERVER_ERROR.message();
}
log.debug("############ getErrorMessage : {}",ms);
log.debug("############ getErrorCode : {}",getCode());
log.debug("############ getParamArray : {}",getParamArray());
log.debug("############ ErrorCode.NOT_REGIST_ERROR_CODE.message() : {}",ExceptionCode.NOT_REGIST_ERROR_CODE.message());
log.debug("############ ErrorCode.NOT_REGIST_ERROR_CODE.message() : {}", BaseErrorCode.NOT_REGIST_ERROR_CODE.message());
log.debug("############ Locale.getDefault() : {}",Locale.getDefault());
return ms.getMessage(getCode(), getParamArray(), ExceptionCode.NOT_REGIST_ERROR_CODE.message(), Locale.getDefault());
return ms.getMessage(getCode(), getParamArray(), BaseErrorCode.NOT_REGIST_ERROR_CODE.message(), Locale.getDefault());
}
public String getSourceErrorCode() {

8
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/ExceptionCode.java → common/core/src/main/java/kr/co/palnet/kac/core/exception/BaseErrorCode.java

@ -1,7 +1,7 @@
package kr.co.palnet.kac.app.core.exception;
package kr.co.palnet.kac.core.exception;
public enum ExceptionCode {
public enum BaseErrorCode {
SUCCESS("1", 200, "성공"),
FAIL("-1" , 500, "실패"),
@ -20,6 +20,8 @@ public enum ExceptionCode {
DB_ERROR("DB001", 500, "디비 처리중 오류"),
NOT_FOUND_RESOURCE("N001", 404, "정의되지 않은 요청입니다."),
TIME_OUT("T001", 400, "인증 시간 초과"),
FILE_ERROR("F001", 500, "파일 읽어오기 오류"),
@ -41,7 +43,7 @@ public enum ExceptionCode {
private final String message;
private ExceptionCode(String code, int status, String message) {
private BaseErrorCode(String code, int status, String message) {
this.code = code;
this.status = status;
this.message = message;

2
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/Level.java → common/core/src/main/java/kr/co/palnet/kac/core/exception/Level.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.app.core.exception;
package kr.co.palnet.kac.core.exception;
public enum Level {
INFO(0),

2
app/kac-app/src/main/java/kr/co/palnet/kac/app/core/exception/Source.java → common/core/src/main/java/kr/co/palnet/kac/core/exception/Source.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.app.core.exception;
package kr.co.palnet.kac.core.exception;
public enum Source {
SERVER,

22
common/core/src/main/java/kr/co/palnet/kac/core/exception/model/BaseErrorModel.java

@ -0,0 +1,22 @@
package kr.co.palnet.kac.core.exception.model;
import lombok.Data;
@Data
public class BaseErrorModel {
private String timestamp;
private int status;
private String error;
private String path;
private String message;
// private String code;
//
// private String desc;
}

1
data/com/src/test/java/kr/co/palnet/kac/data/com/DataComApplicationTestApp.java

@ -22,6 +22,7 @@ public class DataComApplicationTestApp {
"kr.co.palnet.kac.data.com.domain"
})
public class Config {
}
// @Configuration

4
web/api-com/build.gradle

@ -3,8 +3,10 @@
dependencies {
implementation("$boot:spring-boot-starter-web")
implementation("org.springframework.data:spring-data-commons")
implementation project(path: ':common-core')
compileOnly 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
compileOnly 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
implementation project(":data-com")
implementation project(":common-core")
}

7
web/api-com/src/main/java/kr/co/palnet/kac/api/v1/com/code/controller/ComCodeController.java

@ -2,8 +2,7 @@ package kr.co.palnet.kac.api.v1.com.code.controller;
import java.util.List;
import kr.co.palnet.kac.data.com.domain.ComCdBas;
import kr.co.palnet.kac.data.com.domain.QComCdBas;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@ -35,6 +34,7 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@RequestMapping("/v1/com/code")
@RestController
@Slf4j
public class ComCodeController {
private final ComCodeService comCodeService;
@ -126,6 +126,9 @@ public class ComCodeController {
public void deleteCode(
@Parameter(name="groupCd", description = "그룹 코드", in = ParameterIn.QUERY, example = "NEW_GROUP001") @RequestParam("groupCd") String groupCd,
@Parameter(name="cdId", description = "삭제할 코드 아이디", in = ParameterIn.QUERY, example = "NEW_CODE001") @RequestParam("cdId") String cdId) {
comCodeService.deleteCode(groupCd, cdId);
}

Loading…
Cancel
Save