예외 발생 시 nexacro platform으로 stack trace 전송여부 옵션 처리
This commit is contained in:
@@ -3,9 +3,8 @@ package com.nexacro.spring;
|
||||
/**
|
||||
*
|
||||
* <p>Nexacro 예외를 의미하는 <code>Exception</code>이다.
|
||||
* 추가적으로 설정되는 에러코드(errorCode) 에러메시지(errorMsg)는 nexacro platform으로 전송되는 데이터이다.
|
||||
*
|
||||
* @ClassName : NexacroException.java
|
||||
* @Description : 클래스 설명을 기술합니다.
|
||||
* @author Park SeongMin
|
||||
* @since 2015. 7. 30.
|
||||
* @version 1.0
|
||||
@@ -38,8 +37,7 @@ public class NexacroException extends Exception {
|
||||
/**
|
||||
* 메시지를 가지는 생성자이다.
|
||||
*
|
||||
* @param message
|
||||
* 메시지
|
||||
* @param message 메시지
|
||||
*/
|
||||
public NexacroException(String message) {
|
||||
this(message, null);
|
||||
@@ -48,28 +46,67 @@ public class NexacroException extends Exception {
|
||||
/**
|
||||
* 메시지와 원천(cause) 예외를 가지는 생성자이다.
|
||||
*
|
||||
* @param message
|
||||
* 메시지
|
||||
* @param cause
|
||||
* 원천 예외
|
||||
* @param message 메시지
|
||||
* @param cause 원천 예외
|
||||
*/
|
||||
public NexacroException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
this.errorMsg = message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 메시지와 에러코드, 에러메시지를 가지는 생성자이다.
|
||||
*
|
||||
* @param message 메시지
|
||||
* @param errorCode 에러코드
|
||||
* @param errorMsg 에러메시지
|
||||
*/
|
||||
public NexacroException(String message, int errorCode, String errorMsg) {
|
||||
this(message, null, errorCode, errorMsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 메시지와 원천(cause), 에러코드, 에러메시지 예외를 가지는 생성자이다.
|
||||
*
|
||||
* @param message 메시지
|
||||
* @param cause 원천 예외
|
||||
* @param errorCode 에러코드
|
||||
* @param errorMsg 에러메시지
|
||||
*/
|
||||
public NexacroException(String message, Throwable cause, int errorCode, String errorMsg) {
|
||||
super(message, cause);
|
||||
setErrorCode(errorCode);
|
||||
setErrorMsg(errorMsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 설정 된 에러코드를 반환한다.
|
||||
* @return errorCode
|
||||
*/
|
||||
public int getErrorCode() {
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 에러코드를 설정한다.
|
||||
*
|
||||
* @param errorCode 에러코드
|
||||
*/
|
||||
public void setErrorCode(int errorCode) {
|
||||
this.errorCode = errorCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 설정 된 에러메시지를 반환한다.
|
||||
* @return errorMsg
|
||||
*/
|
||||
public String getErrorMsg() {
|
||||
return errorMsg;
|
||||
}
|
||||
|
||||
/**
|
||||
* 에러메시지를 설정한다.
|
||||
* @param errorMsg 에러메시지
|
||||
*/
|
||||
public void setErrorMsg(String errorMsg) {
|
||||
this.errorMsg = errorMsg;
|
||||
}
|
||||
|
||||
@@ -14,9 +14,13 @@ import com.nexacro.spring.util.NexacroUtil;
|
||||
import com.nexacro.spring.view.NexacroModelAndView;
|
||||
import com.nexacro.spring.view.NexacroView;
|
||||
|
||||
public class NexcroMappingExceptionResolver extends AbstractHandlerExceptionResolver {
|
||||
public class NexacroMappingExceptionResolver extends AbstractHandlerExceptionResolver {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(NexcroMappingExceptionResolver.class);
|
||||
private final Logger logger = LoggerFactory.getLogger(NexacroMappingExceptionResolver.class);
|
||||
|
||||
private String defaultErrorMsg = NexacroException.DEFAULT_MESSAGE;
|
||||
private boolean shouldSendStackTrace = false;
|
||||
private boolean shouldLogStackTrace = false;
|
||||
|
||||
private View view;
|
||||
|
||||
@@ -32,7 +36,19 @@ public class NexcroMappingExceptionResolver extends AbstractHandlerExceptionReso
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
public NexcroMappingExceptionResolver() {
|
||||
public void setDefaultErrorMsg(String defaultErrorMsg) {
|
||||
this.defaultErrorMsg = defaultErrorMsg;
|
||||
}
|
||||
|
||||
public void setShouldSendStackTrace(boolean shouldSendStackTrace) {
|
||||
this.shouldSendStackTrace = shouldSendStackTrace;
|
||||
}
|
||||
|
||||
public void setShouldLogStackTrace(boolean shouldLogStackTrace) {
|
||||
this.shouldLogStackTrace = shouldLogStackTrace;
|
||||
}
|
||||
|
||||
public NexacroMappingExceptionResolver() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -50,12 +66,12 @@ public class NexcroMappingExceptionResolver extends AbstractHandlerExceptionReso
|
||||
if(ex instanceof NexacroException){ // NexacroConvertException
|
||||
NexacroException nexaExp = (NexacroException) ex;
|
||||
mav.setErrorCode(nexaExp.getErrorCode());
|
||||
mav.setErrorMsg(nexaExp.getErrorMsg() != null? nexaExp.getErrorMsg(): nexaExp.toString());
|
||||
mav.setErrorMsg(getExceptionMessage(ex));
|
||||
} else {
|
||||
// PlatformException..
|
||||
mav.setErrorCode(NexacroException.DEFAULT_ERROR_CODE); //Undefined error Code
|
||||
// mav.setErrorMsg(NexacroException.DEFAULT_MESSAGE);
|
||||
mav.setErrorMsg(ex.toString());
|
||||
mav.setErrorMsg(getExceptionMessage(ex));
|
||||
}
|
||||
|
||||
return mav;
|
||||
@@ -66,12 +82,34 @@ public class NexcroMappingExceptionResolver extends AbstractHandlerExceptionReso
|
||||
|
||||
private void prepareResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
|
||||
|
||||
if (this.logger.isDebugEnabled()) {
|
||||
this.logger.debug("Resolving exception from handler [" + handler + "]: " + ex);
|
||||
}
|
||||
|
||||
logException(ex, request);
|
||||
|
||||
if(this.shouldLogStackTrace) {
|
||||
logger.error(ex.getMessage(), ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private String getExceptionMessage(Exception e) {
|
||||
|
||||
if(this.shouldSendStackTrace) {
|
||||
|
||||
String message = e.getMessage();
|
||||
|
||||
if(e instanceof NexacroException) {
|
||||
String errorMsg = ((NexacroException) e).getErrorMsg();
|
||||
if(errorMsg != null) {
|
||||
message = "errorMsg="+ errorMsg +", stackMessage=" +message;
|
||||
}
|
||||
}
|
||||
|
||||
return message;
|
||||
|
||||
} else {
|
||||
return this.defaultErrorMsg;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -239,7 +239,7 @@ public class NexacroMethodArgumentResolver implements HandlerMethodArgumentResol
|
||||
DataSet dataSet = nexacroCachedData.getPlatformData().getDataSet(dsName);
|
||||
if(dataSet == null) {
|
||||
if(logger.isDebugEnabled()) {
|
||||
logger.debug(dsName + " is null.");
|
||||
logger.debug("@ParamDataSet '" + dsName + "' argument is null.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -291,7 +291,7 @@ public class NexacroMethodArgumentResolver implements HandlerMethodArgumentResol
|
||||
Variable variable = nexacroCachedData.getPlatformData().getVariable(varName);
|
||||
if(variable == null) {
|
||||
if(logger.isDebugEnabled()) {
|
||||
logger.debug(varName + " is null.");
|
||||
logger.debug("@ParamVariable '" + varName + "' argument is null.");
|
||||
}
|
||||
return null;
|
||||
//throw new IllegalArgumentException("invalid @ParamVariable. ex)@ParamVariable(name=\"variableName\") Object var");
|
||||
|
||||
Reference in New Issue
Block a user