Refactoring - Version stable
This commit is contained in:
@@ -33,21 +33,28 @@ public class GlobalExceptionMapper implements ExceptionMapper<Throwable> {
|
||||
|
||||
@Override
|
||||
public Response toResponse(Throwable exception) {
|
||||
// Logger l'exception dans les logs applicatifs
|
||||
log.error("Unhandled exception", exception);
|
||||
|
||||
// Déterminer le code HTTP
|
||||
int statusCode = determineStatusCode(exception);
|
||||
|
||||
// Récupérer l'endpoint (safe pour les tests unitaires)
|
||||
String endpoint = "unknown";
|
||||
try {
|
||||
// Logger l'exception dans les logs applicatifs
|
||||
log.error("Unhandled exception", exception);
|
||||
if (uriInfo != null) {
|
||||
endpoint = uriInfo.getPath();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// Ignore - pas de contexte REST (ex: test unitaire)
|
||||
}
|
||||
|
||||
// Déterminer le code HTTP
|
||||
int statusCode = determineStatusCode(exception);
|
||||
// Générer le message et le stacktrace
|
||||
String message = exception.getMessage() != null ? exception.getMessage() : exception.getClass().getSimpleName();
|
||||
String stacktrace = getStackTrace(exception);
|
||||
|
||||
// Récupérer l'endpoint
|
||||
String endpoint = uriInfo != null ? uriInfo.getPath() : "unknown";
|
||||
|
||||
// Générer le message et le stacktrace
|
||||
String message = exception.getMessage() != null ? exception.getMessage() : exception.getClass().getSimpleName();
|
||||
String stacktrace = getStackTrace(exception);
|
||||
|
||||
// Persister dans system_logs
|
||||
// Persister dans system_logs (ne pas laisser ça crasher le mapper)
|
||||
try {
|
||||
systemLoggingService.logError(
|
||||
determineSource(exception),
|
||||
message,
|
||||
@@ -57,17 +64,12 @@ public class GlobalExceptionMapper implements ExceptionMapper<Throwable> {
|
||||
"/" + endpoint,
|
||||
statusCode
|
||||
);
|
||||
|
||||
// Retourner une réponse HTTP appropriée
|
||||
return buildErrorResponse(exception, statusCode);
|
||||
|
||||
} catch (Exception e) {
|
||||
// Ne jamais laisser l'exception mapper lui-même crasher
|
||||
log.error("Error in GlobalExceptionMapper", e);
|
||||
return Response.serverError()
|
||||
.entity(java.util.Map.of("error", "Internal server error"))
|
||||
.build();
|
||||
log.warn("Failed to log error to system_logs", e);
|
||||
}
|
||||
|
||||
// Retourner une réponse HTTP appropriée
|
||||
return buildErrorResponse(exception, statusCode);
|
||||
}
|
||||
|
||||
private int determineStatusCode(Throwable exception) {
|
||||
|
||||
Reference in New Issue
Block a user