package dev.lions.unionflow.server.exception; import com.fasterxml.jackson.core.JsonProcessingException; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; import lombok.extern.slf4j.Slf4j; import java.util.HashMap; import java.util.Map; /** * Exception Mapper pour les erreurs de traitement JSON (parsing, format, etc.). * Retourne un 400 Bad Request avec un message détaillé. * * @author UnionFlow Team * @version 1.0 * @since 2026-03-19 */ @Slf4j @Provider public class JsonProcessingExceptionMapper implements ExceptionMapper { @Override public Response toResponse(JsonProcessingException exception) { log.warn("JSON processing error: {}", exception.getMessage()); Map errorBody = new HashMap<>(); errorBody.put("message", "Erreur de traitement JSON"); errorBody.put("details", exception.getOriginalMessage() != null ? exception.getOriginalMessage() : exception.getMessage()); errorBody.put("status", 400); errorBody.put("timestamp", java.time.LocalDateTime.now().toString()); return Response.status(Response.Status.BAD_REQUEST) .entity(errorBody) .build(); } }