Files
spring-boot-rest/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java
Sam Millington 8f06ddfa33 [BAEL-17651] - spring-boot-angular & spring-boot-angular-ecommerce merge (#7866)
* [BAEL-17651] - angular merge

* Added article link the readme

* added colon

* removed spring-boot-angular-ecommerce from parent pom
2019-09-27 09:39:57 -06:00

82 lines
2.3 KiB
Java

package com.baeldung.ecommerce.exception;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.ArrayList;
import java.util.List;
@RestControllerAdvice
public class ApiExceptionHandler {
@SuppressWarnings("rawtypes")
@ExceptionHandler(ConstraintViolationException.class)
public ResponseEntity<ErrorResponse> handle(ConstraintViolationException e) {
ErrorResponse errors = new ErrorResponse();
for (ConstraintViolation violation : e.getConstraintViolations()) {
ErrorItem error = new ErrorItem();
error.setCode(violation.getMessageTemplate());
error.setMessage(violation.getMessage());
errors.addError(error);
}
return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
}
@SuppressWarnings("rawtypes")
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ErrorItem> handle(ResourceNotFoundException e) {
ErrorItem error = new ErrorItem();
error.setMessage(e.getMessage());
return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
}
public static class ErrorItem {
@JsonInclude(JsonInclude.Include.NON_NULL) private String code;
private String message;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
public static class ErrorResponse {
private List<ErrorItem> errors = new ArrayList<>();
public List<ErrorItem> getErrors() {
return errors;
}
public void setErrors(List<ErrorItem> errors) {
this.errors = errors;
}
public void addError(ErrorItem error) {
this.errors.add(error);
}
}
}