ExtractionDecision.java
package net.sasasin.sreader.service.extraction;
import java.util.Objects;
import java.util.Optional;
/** Metadata describing which extractor produced (or attempted) a text result. */
public record ExtractionDecision(
ExtractionSource source, Optional<ExtractionFallbackReason> fallbackReason) {
public ExtractionDecision {
Objects.requireNonNull(source, "source must not be null");
fallbackReason = Objects.requireNonNull(fallbackReason, "fallbackReason must not be null");
}
public static ExtractionDecision of(ExtractionSource source) {
return new ExtractionDecision(source, Optional.empty());
}
public static ExtractionDecision of(
ExtractionSource source, ExtractionFallbackReason fallbackReason) {
return new ExtractionDecision(source, Optional.of(fallbackReason));
}
}