Catch in ResolveHistoricalDocumentContext und ResolveHistoricalFileName praezisiert: nur DocumentPersistenceException wird abgefangen, geloggt (WARN) und mit leerem Optional beantwortet. Andere RuntimeExceptions propagieren weiter zum Aufrufer. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+8
-6
@@ -8,6 +8,7 @@ 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.DocumentPersistenceException;
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecordLookupResult;
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecordRepository;
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentTerminalFinalFailure;
|
||||
@@ -28,10 +29,11 @@ import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint;
|
||||
* <li>In allen anderen Fällen (unbekannt, verarbeitbar) sowie bei erwarteten technischen
|
||||
* Abfragefehlern: leeres {@link Optional}.</li>
|
||||
* </ul>
|
||||
* Unerwartete {@link RuntimeException}s aus dem Repository werden geloggt (WARN) und
|
||||
* weiterpropagiert. Erwartete Lookup-Fehler werden als
|
||||
* {@link DocumentPersistenceException}s aus dem Repository werden geloggt (WARN) und
|
||||
* führen zu einem leeren {@link Optional}. Andere unerwartete Laufzeitfehler
|
||||
* propagieren zum Aufrufer. Erwartete Lookup-Fehler werden als
|
||||
* {@code PersistenceLookupTechnicalFailure} im Rückgabewert kodiert und führen
|
||||
* zu einem leeren {@link Optional}.
|
||||
* ebenfalls zu einem leeren {@link Optional}.
|
||||
*/
|
||||
public class DefaultResolveHistoricalDocumentContextUseCase
|
||||
implements ResolveHistoricalDocumentContextUseCase {
|
||||
@@ -84,10 +86,10 @@ public class DefaultResolveHistoricalDocumentContextUseCase
|
||||
failure.record().lastFailureInstant()));
|
||||
}
|
||||
return Optional.empty();
|
||||
} catch (RuntimeException e) {
|
||||
logger.warn("Unerwarteter Fehler beim Lesen des Dokument-Stammsatzes für Fingerprint {}: {}",
|
||||
} catch (DocumentPersistenceException e) {
|
||||
logger.warn("Persistenzfehler beim Lesen des Dokument-Stammsatzes für Fingerprint {}: {}",
|
||||
fingerprint, e.getMessage(), e);
|
||||
throw e;
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-6
@@ -7,6 +7,7 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import de.gecheckt.pdf.umbenenner.application.port.in.ResolveHistoricalFileNameUseCase;
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentPersistenceException;
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecordLookupResult;
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentRecordRepository;
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.DocumentTerminalSuccess;
|
||||
@@ -21,10 +22,11 @@ import de.gecheckt.pdf.umbenenner.domain.model.DocumentFingerprint;
|
||||
* <p>
|
||||
* Für alle anderen terminalen Zustände oder wenn kein Stammsatz vorhanden ist,
|
||||
* wird ein leeres {@link Optional} zurückgegeben.
|
||||
* Unerwartete {@link RuntimeException}s aus dem Repository werden geloggt (WARN) und
|
||||
* weiterpropagiert. Erwartete Lookup-Fehler werden als
|
||||
* {@link DocumentPersistenceException}s aus dem Repository werden geloggt (WARN) und
|
||||
* führen zu einem leeren {@link Optional}. Andere unerwartete Laufzeitfehler
|
||||
* propagieren zum Aufrufer. Erwartete Lookup-Fehler werden als
|
||||
* {@code PersistenceLookupTechnicalFailure} im Rückgabewert kodiert und führen
|
||||
* zu einem leeren {@link Optional}.
|
||||
* ebenfalls zu einem leeren {@link Optional}.
|
||||
*/
|
||||
public class DefaultResolveHistoricalFileNameUseCase implements ResolveHistoricalFileNameUseCase {
|
||||
|
||||
@@ -69,10 +71,10 @@ public class DefaultResolveHistoricalFileNameUseCase implements ResolveHistorica
|
||||
return Optional.ofNullable(success.record().lastTargetFileName());
|
||||
}
|
||||
return Optional.empty();
|
||||
} catch (RuntimeException e) {
|
||||
logger.warn("Unerwarteter Fehler beim Lesen des historischen Dateinamens für Fingerprint {}: {}",
|
||||
} catch (DocumentPersistenceException e) {
|
||||
logger.warn("Persistenzfehler beim Lesen des historischen Dateinamens für Fingerprint {}: {}",
|
||||
fingerprint, e.getMessage(), e);
|
||||
throw e;
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user