41 lines
1.3 KiB
Java
41 lines
1.3 KiB
Java
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<JsonProcessingException> {
|
|
|
|
@Override
|
|
public Response toResponse(JsonProcessingException exception) {
|
|
log.warn("JSON processing error: {}", exception.getMessage());
|
|
|
|
Map<String, Object> 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();
|
|
}
|
|
}
|