mirror of https://github.com/halo-dev/halo
Deprecated JsonResult
parent
b0b852a803
commit
66a0bbac26
|
@ -1,6 +1,9 @@
|
|||
package cc.ryanc.halo.model.support;
|
||||
|
||||
import lombok.*;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
/**
|
||||
* Global response entity.
|
||||
|
@ -12,14 +15,65 @@ import lombok.*;
|
|||
@EqualsAndHashCode
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BaseResponse {
|
||||
public class BaseResponse<T> {
|
||||
|
||||
/**
|
||||
* Response status.
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* Response message.
|
||||
*/
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* Response development message
|
||||
*/
|
||||
private String devMessage;
|
||||
|
||||
private Object data;
|
||||
/**
|
||||
* Response data
|
||||
*/
|
||||
private T data;
|
||||
|
||||
public BaseResponse(Integer status, String message, T data) {
|
||||
this.status = status;
|
||||
this.message = message;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an ok result with message and data. (Default status is 200)
|
||||
*
|
||||
* @param data result data
|
||||
* @param message result message
|
||||
* @return ok result with message and data
|
||||
*/
|
||||
@NonNull
|
||||
public static <T> BaseResponse<T> ok(@Nullable String message, @Nullable T data) {
|
||||
return new BaseResponse<>(HttpStatus.OK.value(), message, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an ok result with message only. (Default status is 200)
|
||||
*
|
||||
* @param message result message
|
||||
* @return ok result with message only
|
||||
*/
|
||||
@NonNull
|
||||
public static <T> BaseResponse<T> ok(@Nullable String message) {
|
||||
return ok(message, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an ok result with data only. (Default message is OK, status is 200)
|
||||
*
|
||||
* @param data data to response
|
||||
* @param <T> data type
|
||||
* @return base response with data
|
||||
*/
|
||||
public static <T> BaseResponse<T> ok(@NonNull T data) {
|
||||
return new BaseResponse<>(HttpStatus.OK.value(), HttpStatus.OK.getReasonPhrase(), data);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.springframework.util.Assert;
|
|||
* @date : 2018/5/24
|
||||
*/
|
||||
@Data
|
||||
@Deprecated
|
||||
public class JsonResult {
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package cc.ryanc.halo.web.controller.base;
|
||||
|
||||
import cc.ryanc.halo.model.support.JsonResult;
|
||||
import cc.ryanc.halo.model.support.BaseResponse;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
|
@ -27,17 +27,16 @@ public class CommonResultControllerAdvice extends AbstractMappingJacksonResponse
|
|||
// Get return body
|
||||
Object returnBody = bodyContainer.getValue();
|
||||
|
||||
if (returnBody instanceof JsonResult) {
|
||||
// If the return body is instance of JsonResult
|
||||
JsonResult jsonResult = (JsonResult) returnBody;
|
||||
response.setStatusCode(HttpStatus.resolve(jsonResult.getCode()));
|
||||
if (returnBody instanceof BaseResponse) {
|
||||
// If the return body is instance of BaseResponse
|
||||
BaseResponse<?> baseResponse = (BaseResponse) returnBody;
|
||||
response.setStatusCode(HttpStatus.resolve(baseResponse.getStatus()));
|
||||
return;
|
||||
}
|
||||
|
||||
// Normal return body
|
||||
HttpStatus okStatus = HttpStatus.OK;
|
||||
JsonResult jsonResult = new JsonResult(okStatus.value(), okStatus.getReasonPhrase(), returnBody);
|
||||
bodyContainer.setValue(jsonResult);
|
||||
response.setStatusCode(okStatus);
|
||||
// Wrap the return body
|
||||
BaseResponse<?> baseResponse = BaseResponse.ok(returnBody);
|
||||
bodyContainer.setValue(baseResponse);
|
||||
response.setStatusCode(HttpStatus.valueOf(baseResponse.getStatus()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package cc.ryanc.halo.web.controller.base;
|
|||
|
||||
import cc.ryanc.halo.exception.HaloException;
|
||||
import cc.ryanc.halo.logging.Logger;
|
||||
import cc.ryanc.halo.model.support.JsonResult;
|
||||
import cc.ryanc.halo.model.support.BaseResponse;
|
||||
import cc.ryanc.halo.utils.ExceptionUtils;
|
||||
import cc.ryanc.halo.utils.ValidationUtils;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
|
@ -18,8 +18,10 @@ import org.springframework.web.bind.annotation.ResponseStatus;
|
|||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
import org.springframework.web.servlet.NoHandlerFoundException;
|
||||
|
||||
import javax.validation.ConstraintViolation;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Exception handler of controller.
|
||||
|
@ -33,102 +35,102 @@ public class ControllerExceptionHandler {
|
|||
|
||||
@ExceptionHandler(DataIntegrityViolationException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleDataIntegrityViolationException(DataIntegrityViolationException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
public BaseResponse handleDataIntegrityViolationException(DataIntegrityViolationException e) {
|
||||
BaseResponse<?> baseResponse = handleBaseException(e);
|
||||
if (e.getCause() instanceof org.hibernate.exception.ConstraintViolationException) {
|
||||
jsonResult = handleBaseException(e.getCause());
|
||||
baseResponse = handleBaseException(e.getCause());
|
||||
}
|
||||
jsonResult.setMsg("Failed to validate request parameter");
|
||||
return jsonResult;
|
||||
baseResponse.setMessage("Failed to validate request parameter");
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
@ExceptionHandler(MissingServletRequestParameterException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleMissingServletRequestParameterException(MissingServletRequestParameterException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setMsg(String.format("Missing request parameter, required %s type %s parameter", e.getParameterType(), e.getParameterName()));
|
||||
return jsonResult;
|
||||
public BaseResponse handleMissingServletRequestParameterException(MissingServletRequestParameterException e) {
|
||||
BaseResponse<?> baseResponse = handleBaseException(e);
|
||||
baseResponse.setMessage(String.format("Missing request parameter, required %s type %s parameter", e.getParameterType(), e.getParameterName()));
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
@ExceptionHandler(ConstraintViolationException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleConstraintViolationException(ConstraintViolationException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
jsonResult.setMsg("Field validation error");
|
||||
jsonResult.setResult(e.getConstraintViolations());
|
||||
return jsonResult;
|
||||
public BaseResponse handleConstraintViolationException(ConstraintViolationException e) {
|
||||
BaseResponse<Set<ConstraintViolation<?>>> baseResponse = handleBaseException(e);
|
||||
baseResponse.setStatus(HttpStatus.BAD_REQUEST.value());
|
||||
baseResponse.setMessage("Field validation error");
|
||||
baseResponse.setData(e.getConstraintViolations());
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
@ExceptionHandler(MethodArgumentNotValidException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
jsonResult.setMsg("Field validation error");
|
||||
public BaseResponse handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
|
||||
BaseResponse<Map<String, String>> baseResponse = handleBaseException(e);
|
||||
baseResponse.setStatus(HttpStatus.BAD_REQUEST.value());
|
||||
baseResponse.setMessage("Field validation error");
|
||||
Map<String, String> errMap = ValidationUtils.mapWithFieldError(e.getBindingResult().getFieldErrors());
|
||||
jsonResult.setResult(errMap);
|
||||
return jsonResult;
|
||||
baseResponse.setData(errMap);
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
return jsonResult;
|
||||
public BaseResponse handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
|
||||
BaseResponse<?> baseResponse = handleBaseException(e);
|
||||
baseResponse.setStatus(HttpStatus.BAD_REQUEST.value());
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
@ExceptionHandler(HttpMessageNotReadableException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||
public JsonResult handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
jsonResult.setMsg("Required request body is missing");
|
||||
return jsonResult;
|
||||
public BaseResponse handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {
|
||||
BaseResponse<?> baseResponse = handleBaseException(e);
|
||||
baseResponse.setStatus(HttpStatus.BAD_REQUEST.value());
|
||||
baseResponse.setMessage("Required request body is missing");
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
@ExceptionHandler(NoHandlerFoundException.class)
|
||||
@ResponseStatus(HttpStatus.BAD_GATEWAY)
|
||||
public JsonResult handleNoHandlerFoundException(NoHandlerFoundException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
public BaseResponse handleNoHandlerFoundException(NoHandlerFoundException e) {
|
||||
BaseResponse<?> baseResponse = handleBaseException(e);
|
||||
HttpStatus status = HttpStatus.BAD_GATEWAY;
|
||||
jsonResult.setCode(status.value());
|
||||
jsonResult.setMsg(status.getReasonPhrase());
|
||||
return jsonResult;
|
||||
baseResponse.setStatus(status.value());
|
||||
baseResponse.setMessage(status.getReasonPhrase());
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
@ExceptionHandler(HaloException.class)
|
||||
public ResponseEntity<JsonResult> handleHaloException(HaloException e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
jsonResult.setCode(e.getStatus().value());
|
||||
jsonResult.setResult(e.getErrorData());
|
||||
return new ResponseEntity<>(jsonResult, e.getStatus());
|
||||
public ResponseEntity<BaseResponse> handleHaloException(HaloException e) {
|
||||
BaseResponse<Object> baseResponse = handleBaseException(e);
|
||||
baseResponse.setStatus(e.getStatus().value());
|
||||
baseResponse.setData(e.getErrorData());
|
||||
return new ResponseEntity<>(baseResponse, e.getStatus());
|
||||
}
|
||||
|
||||
@ExceptionHandler(Exception.class)
|
||||
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public JsonResult handleGlobalException(Exception e) {
|
||||
JsonResult jsonResult = handleBaseException(e);
|
||||
public BaseResponse handleGlobalException(Exception e) {
|
||||
BaseResponse baseResponse = handleBaseException(e);
|
||||
HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR;
|
||||
jsonResult.setCode(status.value());
|
||||
jsonResult.setMsg(status.getReasonPhrase());
|
||||
return jsonResult;
|
||||
baseResponse.setStatus(status.value());
|
||||
baseResponse.setMessage(status.getReasonPhrase());
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
private JsonResult handleBaseException(Throwable t) {
|
||||
private <T> BaseResponse<T> handleBaseException(Throwable t) {
|
||||
Assert.notNull(t, "Throwable must not be null");
|
||||
|
||||
log.error("Captured an exception", t);
|
||||
|
||||
JsonResult jsonResult = new JsonResult();
|
||||
jsonResult.setMsg(t.getMessage());
|
||||
BaseResponse<T> baseResponse = new BaseResponse<>();
|
||||
baseResponse.setMessage(t.getMessage());
|
||||
|
||||
if (log.isDebugEnabled()) {
|
||||
jsonResult.setDevMsg(ExceptionUtils.getStackTrace(t));
|
||||
baseResponse.setDevMessage(ExceptionUtils.getStackTrace(t));
|
||||
}
|
||||
|
||||
return jsonResult;
|
||||
return baseResponse;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue