package de.gedoplan.seminar.sbt.di.exercise.service; import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail; import de.gedoplan.seminar.sbt.di.exercise.exception.OutOfStockException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; import static java.util.function.Predicate.not; @Component public class CocktailSelectChecker { @Autowired IngredientService ingredientService; @EventListener public void select(Cocktail cocktail) { ingredientService.beveragesNotAvailable(cocktail) .stream().findFirst().ifPresent(beverage -> { throw new OutOfStockException(beverage); }); } }