package org.leumasjaffe.recipe.model; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.function.Supplier; import java.util.stream.Collectors; import org.leumasjaffe.observer.Observable; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(callSuper=false) public class Preparation extends Observable.Instance implements RecipeComponent { Duration duration; @JsonIgnore Supplier> producer = Collections::emptyList; @JsonIgnore public List getIngredients() { return producer.get().stream().filter(Ingredient::hasPreparation) .collect(Collectors.toList()); } }