package de.gecheckt.pdf.umbenenner.application.port.out;

/**
 * Exception thrown when source documents cannot be accessed or read.
 * <p>
 * This exception is raised by the {@link SourceDocumentCandidatesPort} when:
 * <ul>
 *   <li>The source folder does not exist or is not readable</li>
 *   <li>Permission issues prevent directory listing</li>
 *   <li>Filesystem I/O errors occur during candidate discovery</li>
 * </ul>
 * <p>
 * This is a runtime exception, allowing adapters to propagate filesystem errors
 * without forcing try/catch blocks in the application layer.
 *
 */
public final class SourceDocumentAccessException extends RuntimeException {
    private static final long serialVersionUID = 1L;

    /**
     * Constructs an exception with a message.
     *
     * @param message descriptive message about the access failure
     */
    public SourceDocumentAccessException(String message) {
        super(message);
    }

    /**
     * Constructs an exception with a message and cause.
     *
     * @param message descriptive message about the access failure
     * @param cause the underlying exception that caused this failure
     */
    public SourceDocumentAccessException(String message, Throwable cause) {
        super(message, cause);
    }
}
