All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tp.ms.base.rest.resource.BusinessExceptionControllerAdvice Maven / Gradle / Ivy

The newest version!
package tp.ms.base.rest.resource;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

import tp.ms.common.bean.exception.ADBusinessException;
import tp.ms.common.bean.result.BaseResultCode;
import tp.ms.common.bean.result.Result;

@ControllerAdvice
public class BusinessExceptionControllerAdvice {
	private Logger logger = LoggerFactory.getLogger("ErrorFile");

	public Result initResp() {
		Result vo = new Result<>();
		vo.setCode(BaseResultCode.INTERNAL_SERVER_ERROR.getCode());
		vo.setMessage(BaseResultCode.INTERNAL_SERVER_ERROR.getMessage());
		return vo;
	}

	@ExceptionHandler
	@ResponseBody
	@ResponseStatus(value = HttpStatus.OK)
	public Map handleAndReturnData(HttpServletRequest requset, HttpServletResponse response,
			Exception exception) {
		Map resultMap = new HashMap();
		if (exception instanceof ADBusinessException) {
			resultMap.put("msg", ((ADBusinessException) exception).getMessage());
			resultMap.put("error-code", ((ADBusinessException) exception).getCode());
		}
		Result vo = initResp();
		Object resp = vo.build();
		logger.error("Excpetion Handler || Error Response Body: [ {} ]", resp, exception);
		return resultMap;
	}
}