package de.gedoplan.seminar.sbt.di.exercise.service; import de.gedoplan.seminar.sbt.di.exercise.domain.CocktailOrder; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.util.concurrent.atomic.AtomicInteger; @Component public class CocktailCounter { private AtomicInteger count = new AtomicInteger(); @Autowired Logger logger; @EventListener @Async public void countCocktail(CocktailOrder cocktailOrder) { int cocktailCount = cocktailOrder .getOrderDetails() .values() .stream() .mapToInt(Integer::intValue) .sum(); if (this.logger.isDebugEnabled()) { this.logger.info("Cocktail count ordered: " + cocktailCount); } int currentCount = this.count.addAndGet(cocktailCount); this.logger.info("Cocktail count total: " + currentCount); } }