Fix #57: Verschluckte Exception in ResolveHistoricalDocumentContext loggen

Log4j2-API als Abhaengigkeit im Application-Modul ergaenzt. Catch von
Exception auf RuntimeException eingeengt; unerwartete Laufzeitfehler
werden jetzt per logger.warn() protokolliert und weiterpropagiert statt
still verschluckt zu werden.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-28 15:43:45 +02:00
parent a910633c64
commit 43c54923f8
2 changed files with 21 additions and 5 deletions
@@ -3,6 +3,9 @@ package de.gecheckt.pdf.umbenenner.application.usecase;
import java.util.Objects;
import java.util.Optional;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import de.gecheckt.pdf.umbenenner.application.port.in.HistoricalDocumentContext;
import de.gecheckt.pdf.umbenenner.application.port.in.ResolveHistoricalDocumentContextUseCase;
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecordLookupResult;
@@ -22,15 +25,20 @@ import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint;
* Stammsatz ({@code lastTargetFileName}, {@code lastSuccessInstant}).</li>
* <li>Bei endgültigem Fehlschlag: Fehlzeitpunkt aus dem Stammsatz
* ({@code lastFailureInstant}).</li>
* <li>In allen anderen Fällen (unbekannt, verarbeitbar) sowie bei technischen
* <li>In allen anderen Fällen (unbekannt, verarbeitbar) sowie bei erwarteten technischen
* Abfragefehlern: leeres {@link Optional}.</li>
* </ul>
* Technische Fehler bei der Repository-Abfrage werden intern abgefangen; der Aufrufer
* erhält stets ein leeres Ergebnis statt einer Ausnahme.
* Unerwartete {@link RuntimeException}s aus dem Repository werden geloggt (WARN) und
* weiterpropagiert. Erwartete Lookup-Fehler werden als
* {@code PersistenceLookupTechnicalFailure} im Rückgabewert kodiert und führen
* zu einem leeren {@link Optional}.
*/
public class DefaultResolveHistoricalDocumentContextUseCase
implements ResolveHistoricalDocumentContextUseCase {
private static final Logger logger =
LogManager.getLogger(DefaultResolveHistoricalDocumentContextUseCase.class);
private final DocumentRecordRepository documentRecordRepository;
/**
@@ -76,8 +84,10 @@ public class DefaultResolveHistoricalDocumentContextUseCase
failure.record().lastFailureInstant()));
}
return Optional.empty();
} catch (Exception e) {
return Optional.empty();
} catch (RuntimeException e) {
logger.warn("Unerwarteter Fehler beim Lesen des Dokument-Stammsatzes für Fingerprint {}: {}",
fingerprint, e.getMessage(), e);
throw e;
}
}
}