72 lines
2.8 KiB
Java
72 lines
2.8 KiB
Java
package dev.leons.ward.handlers;
|
|
|
|
import dev.leons.ward.components.UtilitiesComponent;
|
|
import dev.leons.ward.dto.ErrorDto;
|
|
import dev.leons.ward.exceptions.ApplicationAlreadyConfiguredException;
|
|
import dev.leons.ward.exceptions.ApplicationNotConfiguredException;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.core.Ordered;
|
|
import org.springframework.core.annotation.Order;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.http.converter.HttpMessageNotReadableException;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* ControllerExceptionHandler is standard exception handler for rest api, and white labels
|
|
*
|
|
* @author Rudolf Barbu
|
|
* @version 1.0.0
|
|
*/
|
|
@ControllerAdvice
|
|
@Order(value = Ordered.HIGHEST_PRECEDENCE)
|
|
public class ControllerExceptionHandler
|
|
{
|
|
/**
|
|
* Autowired UtilitiesComponent object
|
|
* Used for various utility functions
|
|
*/
|
|
@Autowired
|
|
private UtilitiesComponent utilitiesComponent;
|
|
|
|
/**
|
|
* Handles exceptions with BAD_REQUEST status, then they thrown
|
|
*/
|
|
@ResponseBody
|
|
@ExceptionHandler(value = {ApplicationNotConfiguredException.class, ApplicationAlreadyConfiguredException.class})
|
|
public ResponseEntity<ErrorDto> applicationNotSetUpExceptionHandler(final Exception exception)
|
|
{
|
|
return new ResponseEntity<>(new ErrorDto(exception), HttpStatus.BAD_REQUEST);
|
|
}
|
|
|
|
/**
|
|
* Handles exceptions with UNPROCESSABLE_ENTITY status, then they thrown
|
|
*/
|
|
@ResponseBody
|
|
@ExceptionHandler(value = {MethodArgumentNotValidException.class, HttpMessageNotReadableException.class})
|
|
public ResponseEntity<ErrorDto> methodArgumentNotValidExceptionHandler(final Exception exception)
|
|
{
|
|
return new ResponseEntity<>(new ErrorDto(exception), HttpStatus.UNPROCESSABLE_ENTITY);
|
|
}
|
|
|
|
/**
|
|
* Handles MethodArgumentNotValidException, then it thrown
|
|
* Also handles all other servlet exceptions, which were not handled by others handlers
|
|
*
|
|
* @throws IOException if ini file is unreachable
|
|
*/
|
|
@ExceptionHandler(value = Exception.class)
|
|
public String exceptionHandler(final Exception exception, final Model model) throws IOException
|
|
{
|
|
model.addAttribute("theme", utilitiesComponent.getFromIniFile("theme"));
|
|
System.out.println(exception.getMessage());
|
|
return (exception instanceof HttpRequestMethodNotSupportedException) ? "error/404" : "error/500";
|
|
}
|
|
} |