From c4325a714654f702461938b8d6bee3d25c3ba2bf Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Tue, 25 Feb 2025 17:14:43 +0100 Subject: [PATCH] KOP-2694 KOP-3010 use xta-client-lib 0.2.0 --- pom.xml | 2 +- .../eingang/xta/XtaMessageMapper.java | 5 +- .../eingang/xta/XtaMessageMetaDataMapper.java | 59 ------------------ .../ozgcloud/eingang/xta/XtaProperties.java | 19 ------ .../eingang/xta/XtaServiceConfiguration.java | 5 +- src/main/resources/application.yml | 4 -- .../eingang/xta/XtaMessageMapperTest.java | 24 +++++++ .../xta/XtaMessageMetaDataFactory.java | 4 +- .../xta/XtaMessageMetaDataMapperTest.java | 62 ------------------- ...aMessageMetaDatasAndHeaderTestFactory.java | 44 ------------- .../eingang/xta/XtaPropertiesTestFactory.java | 9 +-- .../xta/XtaServiceConfigurationTest.java | 11 ++-- .../ozgcloud/eingang/xta/XtaServiceTest.java | 54 +++++----------- 13 files changed, 51 insertions(+), 251 deletions(-) delete mode 100644 src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java delete mode 100644 src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java delete mode 100644 src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java diff --git a/pom.xml b/pom.xml index 74d7b28f..2b1b32b7 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ <eingang-manager.version>2.17.0</eingang-manager.version> <intelliform-semantik.version>2.17.0</intelliform-semantik.version> <dfoerdermittel-semantik.version>2.17.0</dfoerdermittel-semantik.version> - <xta-client-lib.version>0.1.0</xta-client-lib.version> + <xta-client-lib.version>0.2.0</xta-client-lib.version> <xmlschema.version>2.3.0</xmlschema.version> diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java b/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java index 7b12d480..0f15765c 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java @@ -67,9 +67,8 @@ interface XtaMessageMapper { @Mapping(target = "messageTypeListVersion", ignore = true) @Mapping(target = "metaDataFile", ignore = true) @Mapping(target = "service", source = "service") - // todo add origin and delivery in xta-client-lib - @Mapping(target = "origin", ignore = true) - @Mapping(target = "delivery", ignore = true) + @Mapping(target = "origin", source = "deliveryAttributesOrigin") + @Mapping(target = "delivery", source = "deliveryAttributesDelivery") @Mapping(target = "messageId", source = "messageId") @Mapping(target = "messageType", source = "messageTypeCode") @Mapping(target = "xtaIdentifier", source = "readerIdentifier.value") diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java b/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java deleted file mode 100644 index 7727fa85..00000000 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.xta; - -import java.util.stream.Stream; - -import jakarta.xml.bind.JAXBElement; - -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import eu.osci.ws._2008._05.transport.MsgStatusListType; -import eu.osci.ws._2014._10.transport.MessageMetaData; - -@Mapper -interface XtaMessageMetaDataMapper { - - @Mapping(target = "messageTypeListVersion", ignore = true) - @Mapping(target = "metaDataFile", ignore = true) - @Mapping(target = "service", ignore = true) - @Mapping(target = "origin", source = "deliveryAttributes.origin") - @Mapping(target = "delivery", source = "deliveryAttributes.delivery") - @Mapping(target = "messageId", source = "msgIdentification.messageID.value") - @Mapping(target = "messageType", source = "qualifier.messageType.code") - @Mapping(target = "xtaIdentifier", source = "destinations.reader.identifier.value") - XtaFormMetaData fromSoap(MessageMetaData metaData); - - default XtaMessageId fromString(String id) { - return XtaMessageId.from(id); - } - - @Mapping(target = "moreMessagesAvailable", constant = "false") - XtaMessageMetaDatasAndHeader msgStatusListFromSoap(MsgStatusListTypeAndHeaderResponse statusList); - - default Stream<XtaFormMetaData> map(JAXBElement<MsgStatusListType> msgStatusListResponse) { - return msgStatusListResponse.getValue().getMessageMetaData().stream().map(this::fromSoap); - } -} diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java b/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java index b16fb0d0..cbceb433 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java @@ -24,7 +24,6 @@ package de.ozgcloud.eingang.xta; import java.math.BigInteger; -import java.net.URI; import java.util.List; import jakarta.validation.constraints.NotEmpty; @@ -53,7 +52,6 @@ class XtaProperties { private BigInteger maxListElements; private KeyStore keyStore; - private Actions actions; @NotEmpty private List<String> identifiers; } @@ -89,20 +87,3 @@ class KeyStore { @NotEmpty private char[] password; } - -@Validated -@ToString -@Setter -@Getter -@Configuration -@ConfigurationProperties(prefix = Actions.PROPERTIES_PREFIX) -class Actions { - static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".actions"; - - @NotNull - private URI statusList; - @NotNull - private URI fetchRequest; - @NotNull - private URI closeRequest; -} diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java b/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java index 0719b32f..20b0e3ef 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java @@ -25,6 +25,7 @@ package de.ozgcloud.eingang.xta; import java.util.List; +import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; @@ -39,6 +40,7 @@ import de.ozgcloud.xta.client.model.XtaIdentifier; @Log4j2 @Configuration +@RequiredArgsConstructor public class XtaServiceConfiguration { static final String URI_TEMPLATE = "https://%s/MB_XTA-WS/XTA210"; @@ -47,8 +49,7 @@ public class XtaServiceConfiguration { static final String FIM_MESSAGE_TYPE_PREFIX = "fim."; - @Autowired - private XtaProperties properties; + private final XtaProperties properties; @Bean @SneakyThrows diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 32946db6..e8fbff21 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -9,10 +9,6 @@ ozgcloud: max-list-elements: 100 keystore: type: PKCS12 - actions: - status-list: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest" - fetch-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest" - close-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest" eingang: fim: schemeLocations: diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java index 672b68c7..7dd985e3 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java @@ -125,6 +125,30 @@ class XtaMessageMapperTest { } } + @Nested + class TestFormMetaDataFromMetaData { + private XtaMessageMetaData metaData; + + @BeforeEach + void before() { + metaData = XtaMessageMetaDataTestFactory.create(); + } + + @Test + void shouldSetOrigin() { + var formMetaData = mapper.formMetaDataFromMetaData(metaData); + + assertThat(formMetaData.getOrigin()).isEqualTo(metaData.deliveryAttributesOrigin()); + } + + @Test + void shouldSetDelivery() { + var formMetaData = mapper.formMetaDataFromMetaData(metaData); + + assertThat(formMetaData.getDelivery()).isEqualTo(metaData.deliveryAttributesDelivery()); + } + } + @Nested class TestToFimFormData { diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataFactory.java b/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataFactory.java index 32383625..cbfbabf8 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataFactory.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataFactory.java @@ -27,7 +27,6 @@ import static de.ozgcloud.eingang.xta.XtaMessageTestFactory.*; import java.time.ZonedDateTime; -import de.ozgcloud.eingang.common.formdata.FormMetaDataTestFactory; import de.ozgcloud.xta.client.model.XtaIdentifier; import de.ozgcloud.xta.client.model.XtaMessageMetaData; @@ -37,7 +36,6 @@ class XtaMessageMetaDataTestFactory { static final String FIM_MESSAGE_TYPE = "fim.S17000652.17000652001004"; static final ZonedDateTime ORIGIN = ZonedDateTime.parse("2022-10-29T15:45:52.4942149+02:00"); static final String SERVICE = "urn:fim:Versammlungsanzeige:1.4"; - static final String MESSAGE_TYPE_LIST_VERSION = "1.0"; static final XtaIdentifier READER_IDENTIFIER = XtaIdentifier.builder() .value("vbe:010550120100").build(); @@ -49,7 +47,7 @@ class XtaMessageMetaDataTestFactory { return XtaMessageMetaData.builder() .messageId(MESSAGE_ID.toString()) .messageTypeCode(MESSAGE_TYPE) - // .origin(ORIGIN) TODO add in xta-client-lib + .deliveryAttributesOrigin(ORIGIN) .readerIdentifier(READER_IDENTIFIER) .service(SERVICE); } diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java deleted file mode 100644 index 3857a563..00000000 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.xta; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.Spy; - -class XtaMessageMetaDataMapperTest { - - @Spy - private final XtaMessageMetaDataMapper mapper = Mappers.getMapper(XtaMessageMetaDataMapper.class); - - @DisplayName("msg status list from soap") - @Nested - class TestMsgStatusListFromSoap { - - @Test - void shouldMap() { - var response = MsgStatusListTypeAndHeaderResponseTestFactory.create(); - - var result = mapper.msgStatusListFromSoap(response); - - assertThat(result).isNotNull(); - } - - @DisplayName("should set moreMessagesAvailable to false") - @Test - void shouldSetMoreMessagesAvailableToFalse() { - var response = MsgStatusListTypeAndHeaderResponseTestFactory.create(); - - var result = mapper.msgStatusListFromSoap(response); - - assertThat(result.isMoreMessagesAvailable()).isFalse(); - } - } -} diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java b/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java deleted file mode 100644 index 2e97f03b..00000000 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.eingang.xta; - -import java.util.UUID; -import java.util.stream.Stream; - -class XtaMessageMetaDatasAndHeaderTestFactory { - - public static final String MSG_BOX_REQUEST_ID = UUID.randomUUID().toString(); - - public static final XtaFormMetaData MESSAGE1 = XtaFormMetaDataTestFactory.create(); - - public static XtaMessageMetaDatasAndHeader create() { - return createBuilder().build(); - } - - public static XtaMessageMetaDatasAndHeader.XtaMessageMetaDatasAndHeaderBuilder createBuilder() { - return XtaMessageMetaDatasAndHeader.builder() - .msgBoxRequestID(MSG_BOX_REQUEST_ID) - .messages(Stream.of(MESSAGE1)); - } -} diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java b/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java index 4d4a3b7b..2aa7a01e 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java @@ -23,24 +23,17 @@ */ package de.ozgcloud.eingang.xta; -import java.net.URI; - import lombok.SneakyThrows; class XtaPropertiesTestFactory { private static final String SERVER_PROTOCOL = "https"; - private static final String SERVER_ADDRESS = "xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local"; + static final String SERVER_ADDRESS = "xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local"; @SneakyThrows static XtaProperties create() { XtaProperties properties = new XtaProperties(); - Actions actions = new Actions(); - properties.setActions(actions); - actions.setFetchRequest(new URI("http://tempuri.local/fetch")); - actions.setStatusList(new URI("http://tempuri.lcoal/statusList")); - Server server = new Server(); properties.setServer(server); server.setProtocol(SERVER_PROTOCOL); diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceConfigurationTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceConfigurationTest.java index 012411dd..cf267960 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceConfigurationTest.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceConfigurationTest.java @@ -28,21 +28,18 @@ import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; import org.mockito.Spy; class XtaServiceConfigurationTest { - @Spy - @InjectMocks - XtaServiceConfiguration configuration; - - @Mock XtaProperties properties = XtaPropertiesTestFactory.create(); + @Spy + XtaServiceConfiguration configuration = new XtaServiceConfiguration(properties); + @Test void testBuildServerAddressUri() { + assertThat(properties.getServer().getAddress()).isEqualTo(XtaPropertiesTestFactory.SERVER_ADDRESS); String serverBaseUrl = configuration.getBaseUrl(); diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java index 77119be7..8e138936 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java @@ -31,7 +31,6 @@ import static org.mockito.Mockito.*; import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.stream.Stream; import lombok.SneakyThrows; import org.junit.jupiter.api.BeforeEach; @@ -87,46 +86,20 @@ class XtaServiceTest { private final XtaTransportReport transportReport = XtaTransportReportFactory.create(); - @DisplayName("with one message") - @Nested - class TestWithOneMessage { - @BeforeEach - @SneakyThrows - void setup() { - doReturn(Stream.of(transportReport)).when(xtaClient).fetchMessages(any()); - } - - @Test - @SneakyThrows - void shouldCallXtaClient() { - service.fetchMessages(); - - verify(xtaClient).fetchMessages(service::processMessage); - } + @BeforeEach + @SneakyThrows + void setup() { + doReturn(List.of(transportReport)).when(xtaClient).fetchMessages(any()); } - @DisplayName("with multiple messages") - @Nested - class TestWithMultipleMessages { - private final XtaTransportReport transportReport2 = XtaTransportReportFactory.create(); - private final XtaTransportReport transportReport3 = XtaTransportReportFactory.create(); - - @BeforeEach - @SneakyThrows - void setup() { - doReturn(Stream.of(transportReport, transportReport2, transportReport3)).when(xtaClient).fetchMessages(any()); - } - - @DisplayName("should return stream of messages") - @Test - @SneakyThrows - void shouldReturnStreamOfMessages() { - service.fetchMessages(); + @Test + @SneakyThrows + void shouldCallXtaClient() { + service.fetchMessages(); - verify(xtaClient, calls(3)).fetchMessages(service::processMessage); - } + // Can't test for passing the correct method when service is wrapped in a spy + verify(xtaClient).fetchMessages(any()); } - } @DisplayName("process message") @@ -165,13 +138,16 @@ class XtaServiceTest { @Nested class TestGetFormDataIfNoRuntimeException { - // BeforeEach from factory instead of Mock - @Mock XtaMessage message; @Mock FormData formData; + @BeforeEach + void before() { + message = XtaMessageTestFactory.create(); + } + @DisplayName("should call get formdata") @Test void shouldCallGetFormdata() { -- GitLab