diff --git a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java index 764924232d..c4afae0d5d 100644 --- a/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java +++ b/spring-boot-modules/spring-boot-libraries-3/src/main/java/com/baeldung/springmodulith/application/events/rewards/LoyalCustomersRepository.java @@ -13,18 +13,21 @@ public class LoyalCustomersRepository { public Optional find(String customerId) { return customers.stream() - .filter(it -> it.customerId().equals(customerId)) - .findFirst(); + .filter(it -> it.customerId().equals(customerId)) + .findFirst(); } public void awardPoints(String customerId, int points) { - var customer = find(customerId).orElseThrow(); + var customer = find(customerId) + .orElseGet(() -> save(new LoyalCustomer(customerId, 0))); + customers.remove(customer); customers.add(customer.addPoints(points)); } - public void save(String customerId) { - customers.add(new LoyalCustomer(customerId, 0)); + public LoyalCustomer save(LoyalCustomer customer) { + customers.add(customer); + return customer; } public boolean isLoyalCustomer(String customerId) {