From 1033c96d65a5192949792bf171d650ba5e1327ff Mon Sep 17 00:00:00 2001 From: Pablo de la Torre Jamardo Date: Mon, 25 Aug 2025 21:25:08 +0200 Subject: [PATCH] chore: add global REST error handling --- .../rest/config/ApiErrorController.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 infrastructure/src/main/java/com/pablotj/portfolio/infrastructure/rest/config/ApiErrorController.java diff --git a/infrastructure/src/main/java/com/pablotj/portfolio/infrastructure/rest/config/ApiErrorController.java b/infrastructure/src/main/java/com/pablotj/portfolio/infrastructure/rest/config/ApiErrorController.java new file mode 100644 index 0000000..87f7a01 --- /dev/null +++ b/infrastructure/src/main/java/com/pablotj/portfolio/infrastructure/rest/config/ApiErrorController.java @@ -0,0 +1,30 @@ +package com.pablotj.portfolio.infrastructure.rest.config; + +import org.springframework.boot.web.error.ErrorAttributeOptions; +import org.springframework.boot.web.servlet.error.ErrorAttributes; +import org.springframework.boot.web.servlet.error.ErrorController; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.context.request.WebRequest; + +import java.util.Map; + +@Controller +public class ApiErrorController implements ErrorController { + + private final ErrorAttributes errorAttributes; + + public ApiErrorController(ErrorAttributes errorAttributes) { + this.errorAttributes = errorAttributes; + } + + @RequestMapping("/error") + public ResponseEntity> handleError(WebRequest webRequest) { + Map attributes = errorAttributes.getErrorAttributes(webRequest, + ErrorAttributeOptions.defaults()); + HttpStatus status = HttpStatus.valueOf((int) attributes.getOrDefault("status", 500)); + return new ResponseEntity<>(attributes, status); + } +} \ No newline at end of file