diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java index 39a9a030a2749cb3c0d7affce5e5956491697c84..9f2d644ab509c5cfce07cca94a33c1b8abefa2ed 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java @@ -23,25 +23,41 @@ */ package de.ozgcloud.eingang.semantik.formbased; +import java.util.Collections; import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.ozgcloud.eingang.common.formdata.FormData; -import lombok.RequiredArgsConstructor; @Service -@RequiredArgsConstructor public class FormBasedSemantikAdapter { - private final List<FormBasedMapper> mappers; + @Autowired(required = false) + private List<FormBasedMapper> mappers = Collections.emptyList(); public FormData parseFormData(FormData formData) { - for(var mapper: mappers) { - if (mapper.isResponsible(formData)) { - formData = mapper.parseFormData(formData); - } + + return new FormDataProcessor().process(formData); + } + + class FormDataProcessor { + private FormData processedFormData; + + FormData process(FormData originalFormData) { + processedFormData = originalFormData; + mappers.stream() + .filter(mapper -> mapper.isResponsible(processedFormData)) + .forEach(this::parseWithMapper); + + return processedFormData; } - return formData; + + private void parseWithMapper(FormBasedMapper mapper) { + processedFormData = mapper.parseFormData(processedFormData); + } + } + }