diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java index dd6ada82e85d34ecb6befee9dd5c506f95172fe4..9c63e2d652a34bba3306d35ca7e19773c187e682 100644 --- a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java @@ -25,6 +25,9 @@ package de.ozgcloud.eingang; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter; + +import com.fasterxml.jackson.dataformat.xml.XmlMapper; import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedAdapter; @@ -36,4 +39,9 @@ public class SemantikAdapterConfiguration { public EngineBasedSemantikAdapter engineBasedSemantikAdapter() { return new AfmEngineBasedAdapter(); } + + @Bean + public XmlMapper xmlMapper(MappingJackson2XmlHttpMessageConverter messageConverter) { + return (XmlMapper) messageConverter.getObjectMapper(); + } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..58ba71eab254e07ee778dd3aa3bdad22e80e1e12 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java @@ -0,0 +1,64 @@ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleMetadataMapper.*; +import static org.assertj.core.api.Assertions.*; + +import java.io.File; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter; + +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +import de.itvsh.kop.common.test.ITCase; +import de.itvsh.kop.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import lombok.SneakyThrows; + +@ITCase +class ZustaendigeStelleMetadataMapperITCase { + + @Autowired + private ZustaendigeStelleMetadataMapper mapper; + + private IncomingFile behoerdeMetadataXml; + + @SneakyThrows + @BeforeEach + void setUp() { + behoerdeMetadataXml = IncomingFileTestFactory.createBuilder() + .name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) + .file(new File(TestUtils.class.getClassLoader().getResource(BEHOERDE_METADATA_FILE_NAME).toURI())).build(); + + } + + @Test + void shouldReadXmlNodes() { + var metadata = mapper.readXmlContent(behoerdeMetadataXml); + + assertThat(metadata).get().extracting("fields").asList().usingRecursiveFieldByFieldElementComparator() + .containsAll(ZustaendigeStelleDataTestFactory.ZUSTAENDIGE_STELLE_DATA_FIELDS); + } + + @SneakyThrows + @Test + void shouldCatchException() { + var zustaendigeStelleData = mapper.readXmlContent(IncomingFileTestFactory.createBuilder().file(new File("broken-file")).build()); + + assertThat(zustaendigeStelleData).isEmpty(); + } +} + +@Configuration +class TestConfiguration { + + @Bean + public XmlMapper xmlMapper(MappingJackson2XmlHttpMessageConverter messageConverter) { + return (XmlMapper) messageConverter.getObjectMapper(); + } +} \ No newline at end of file