package com.bookshop.behavioral.chainofresponsibility;
import com.bookshop.domain.Book;
import java.util.Set;
/** Rejects orders containing books the shop doesn't have. */
public class StockCheck extends OrderCheck {
private final Set<String> inStockIsbns;
public StockCheck(Set<String> inStockIsbns) {
this.inStockIsbns = Set.copyOf(inStockIsbns);
}
@Override
protected ValidationResult check(OrderRequest request) {
for (Book book : request.books()) {
if (!inStockIsbns.contains(book.isbn())) {
return ValidationResult.rejected("stock", "out of stock: " + book.title());
}
}
return ValidationResult.ok();
}
}