You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.0 KiB
Java
79 lines
2.0 KiB
Java
package cokr.xit.foundation;
|
|
|
|
import cokr.xit.foundation.data.DataObject;
|
|
|
|
/**애플리케이션이 발생시키는 예외
|
|
* @author mjkhan
|
|
*/
|
|
public class ApplicationException extends RuntimeException {
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/**주어진 오류를 최초 원인으로 하는 ApplicationException을 반환한다.
|
|
* @param cause 최초 원인이 되는 오류
|
|
* @return ApplicationException
|
|
*/
|
|
public static ApplicationException get(Throwable cause) {
|
|
return cause instanceof ApplicationException ?
|
|
ApplicationException.class.cast(cause) :
|
|
new ApplicationException(cause);
|
|
}
|
|
|
|
private DataObject objs;
|
|
|
|
private ApplicationException(Throwable cause) {
|
|
super(Assert.rootCause(cause));
|
|
}
|
|
|
|
/**추가정보를 갖는 DataObject를 반환한다.
|
|
* @return 추가정보를 갖는 DataObject
|
|
*/
|
|
public DataObject info() {
|
|
if (objs == null)
|
|
objs = new DataObject();
|
|
return objs;
|
|
}
|
|
|
|
/**추가정보를 설정한다.
|
|
* @param key 추가정보의 키
|
|
* @param value 추가정보
|
|
* @return ApplicationException
|
|
*/
|
|
public ApplicationException info(String key, Object value) {
|
|
info().set(key, value);
|
|
return this;
|
|
}
|
|
|
|
/**에러코드를 반환한다.
|
|
* @return 에러코드
|
|
*/
|
|
public String getCode() {
|
|
return objs != null ? objs.string("code") : null;
|
|
}
|
|
|
|
/**에러코드를 설정한다.
|
|
* @param errorCode 에러코드
|
|
* @return ApplicationException
|
|
*/
|
|
public ApplicationException setCode(String errorCode) {
|
|
return info("code", errorCode);
|
|
}
|
|
|
|
@Override
|
|
public String getMessage() {
|
|
String msg = objs != null ? objs.string("msg") : "";
|
|
if (Assert.isEmpty(msg)) {
|
|
Throwable cause = getCause();
|
|
if (cause != null)
|
|
msg = cause.getMessage();
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
/**에러 메시지를 설정한다.
|
|
* @param msg 에러 메시지
|
|
* @return ApplicationException
|
|
*/
|
|
public ApplicationException setMessage(String msg) {
|
|
return info("msg", msg);
|
|
}
|
|
} |