public void handle(ProductAddedToCustomerCart productAddedToCustomerCart) { CustomerCart customerCart = customerCartRepository.getCustomerCart(productAddedToCustomerCart.getCartId()); if (customerCart == null) { customerCart = new CustomerCart(); customerCart.setCustomerCartId(productAddedToCustomerCart.getCartId()); } // Deal with Product Addition CartProduct productToAdd = getCartProduct(productAddedToCustomerCart, customerCart); // Remove existing version (if it exists) and add new version customerCart .getProducts() .removeIf(p -> p.getProductId().equals(productAddedToCustomerCart.getProductId())); customerCart.getProducts().add(productToAdd); customerCart.setCorrelationId(productAddedToCustomerCart.getCorrelationId()); customerCart.setUpdatedAt(productAddedToCustomerCart.getUpdateDateTime()); // Store customerCartRepository.storeCustomerCart(customerCart); }