From 28482731e696e01a3833046fa54506b137c93672 Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Tue, 11 Mar 2025 16:40:40 +0100 Subject: [PATCH] clean up --- .../eingang/xta/XtaIncomingFilesMapper.java | 15 ++----- .../ozgcloud/eingang/xta/XtaMapperHelper.java | 17 -------- .../eingang/xta/XtaMessageMapper.java | 7 ---- .../de/ozgcloud/eingang/xta/XtaService.java | 39 +++++++++++-------- .../eingang/xta/XtaServiceConfiguration.java | 9 ++--- .../de/ozgcloud/eingang/xta/XtaITCase.java | 2 +- .../ozgcloud/eingang/xta/XtaServiceTest.java | 8 ++++ 7 files changed, 40 insertions(+), 57 deletions(-) diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java b/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java index 01fb3175..029bff7c 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java @@ -23,15 +23,14 @@ package de.ozgcloud.eingang.xta; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Objects; import java.util.stream.Stream; +import de.ozgcloud.common.binaryfile.TempFileUtils; import de.ozgcloud.eingang.common.errorhandling.TechnicalException; import jakarta.activation.DataHandler; -import lombok.SneakyThrows; import org.springframework.stereotype.Component; import de.ozgcloud.eingang.common.formdata.IncomingFile; @@ -58,7 +57,6 @@ class XtaIncomingFilesMapper { return List.of(); } - @SneakyThrows IncomingFile toIncomingFile(XtaFile messageFile) { File tmpFile = persistToFile(messageFile.content()); return IncomingFile.builder() @@ -70,17 +68,12 @@ class XtaIncomingFilesMapper { } private File persistToFile(DataHandler data) { - try { - var file = File.createTempFile("xta", ".data"); - file.deleteOnExit(); - var out = new FileOutputStream(file); - data.writeTo(out); - out.flush(); - out.close(); - return file; + try (var inputStream = data.getInputStream()) { + return TempFileUtils.writeTmpFile(inputStream); } catch (IOException e) { throw new TechnicalException("Error writing Attachment to temp file", e); } + } Stream<IncomingFile> tryToExtractZip(IncomingFile incomingFile) { diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java b/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java index 1cbfe659..8f1c5d6d 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaMapperHelper.java @@ -45,17 +45,6 @@ public class XtaMapperHelper { return null; } - public static String getFormEngineName(XtaFormMetaData metaData) { - if (StringUtils.equals(metaData.getMessageType(), XtaService.XDOMEA_0201_MESSAGE_TYPE)) { - return "XDOMEA"; - } - - if (StringUtils.startsWith(metaData.getMessageType(), XtaService.FIM_MESSAGE_TYPE_PREFIX)) { - return "FIM"; - } - return null; - } - public static ZonedDateTime getCreatedAt(de.ozgcloud.xta.client.model.XtaMessageMetaData metaData) { if (metaData.deliveryAttributesOrigin() != null) { return metaData.deliveryAttributesOrigin(); @@ -63,10 +52,4 @@ public class XtaMapperHelper { return ZonedDateTime.now(); } - public static ZonedDateTime getCreatedAt(XtaFormMetaData metaData) { - if (metaData.getOrigin() != null) { - return metaData.getOrigin(); - } - return ZonedDateTime.now(); - } } diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java b/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java index 30f1067d..e96525d6 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java @@ -79,15 +79,8 @@ interface XtaMessageMapper { return XtaMessageId.from(id); } - default String fromId(XtaMessageId id) { - return id.toString(); - } - default Optional<FormMetaData> mapMetaData(XtaMessageMetaData value) { return Optional.ofNullable(formMetaDataFromMetaData(value)); } - default Optional<FormMetaData> mapMetaData(XtaFormMetaData value) { - return Optional.ofNullable(value); - } } diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/src/main/java/de/ozgcloud/eingang/xta/XtaService.java index 4c21779c..b395e028 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaService.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaService.java @@ -46,7 +46,10 @@ import de.ozgcloud.eingang.semantik.SemantikAdapter; import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper; import de.ozgcloud.xta.client.XtaClient; import de.ozgcloud.xta.client.model.XtaFile; +import de.ozgcloud.xta.client.model.XtaMessage; +import de.ozgcloud.xta.client.model.XtaMessageMetaData; import de.ozgcloud.xta.client.model.XtaMessageStatus; +import de.ozgcloud.xta.client.model.XtaTransportReport; @Service @Log4j2 @@ -74,25 +77,15 @@ class XtaService { @SneakyThrows public void fetchMessages() { var transportReports = xtaClient.fetchMessages(this::processMessage); - for (var transportReport : transportReports) { - if (transportReport.status() == XtaMessageStatus.GREEN) { - LOG.info("Fetched XTA message: {}", transportReport.metaData().messageId()); - } else { - LOG.warn( - "Failed to fetch XTA message with XTA transport report status {}: {}", - transportReport.status(), - transportReport.metaData().messageId() - ); - } - } + logTransportReports(transportReports); } - void processMessage(de.ozgcloud.xta.client.model.XtaMessage xtaMessage) { + void processMessage(XtaMessage xtaMessage) { Optional<FormData> formData = getFormDataIfNoRuntimeException(xtaMessage); formData.ifPresent(this::processSemantik); } - Optional<FormData> getFormDataIfNoRuntimeException(@NonNull de.ozgcloud.xta.client.model.XtaMessage xtaMessage) { + Optional<FormData> getFormDataIfNoRuntimeException(@NonNull XtaMessage xtaMessage) { try { return Optional.of(getFormData(xtaMessage)); } catch (RuntimeException exception) { @@ -110,7 +103,7 @@ class XtaService { } } - FormData getFormData(de.ozgcloud.xta.client.model.XtaMessage xtaMessage) { + FormData getFormData(XtaMessage xtaMessage) { var metaData = xtaMessage.metaData(); var incomingFiles = xtaIncomingFilesMapper.toIncomingFiles(xtaMessage.messageFile()); var representationsAttachmentsPair = getRepresentationsAttachmentsPair(metaData, incomingFiles); @@ -121,7 +114,7 @@ class XtaService { return addRepresentations(formData, xtaMessage.messageFile().name()); } - RepresentationsAttachmentsPair getRepresentationsAttachmentsPair(de.ozgcloud.xta.client.model.XtaMessageMetaData metaData, List<IncomingFile> incomingFiles) { + RepresentationsAttachmentsPair getRepresentationsAttachmentsPair(XtaMessageMetaData metaData, List<IncomingFile> incomingFiles) { if (isXDomeaMessageType(metaData.messageTypeCode())) { return xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles); } @@ -132,7 +125,7 @@ class XtaService { throw new TechnicalException("Unexpected XTA message type: %s".formatted(metaData.messageTypeCode())); } - FormData addAttachments(de.ozgcloud.xta.client.model.XtaMessage msg, FormData inFormData) { + FormData addAttachments(XtaMessage msg, FormData inFormData) { var attachments = buildAttachmentsInFiles(msg.attachmentFiles()); if (CollectionUtils.isNotEmpty(attachments)) { return inFormData.toBuilder() @@ -175,4 +168,18 @@ class XtaService { .attachments(Collections.emptyList()) .build(); } + + void logTransportReports(List<XtaTransportReport> transportReports) { + for (var transportReport : transportReports) { + if (transportReport.status() == XtaMessageStatus.GREEN) { + LOG.info("Fetched XTA message: {}", transportReport.metaData().messageId()); + } else { + LOG.warn( + "Failed to fetch XTA message with XTA transport report status {}: {}", + transportReport.status(), + transportReport.metaData().messageId() + ); + } + } + } } diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java b/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java index a3c67d6c..078d7c14 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaServiceConfiguration.java @@ -23,10 +23,10 @@ */ package de.ozgcloud.eingang.xta; +import java.io.IOException; import java.util.List; import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Bean; @@ -35,6 +35,7 @@ import org.springframework.context.annotation.Configuration; import de.ozgcloud.xta.client.XtaClient; import de.ozgcloud.xta.client.XtaClientFactory; import de.ozgcloud.xta.client.config.XtaClientConfig; +import de.ozgcloud.xta.client.exception.XtaClientInitializationException; import de.ozgcloud.xta.client.model.XtaIdentifier; @Log4j2 @@ -51,15 +52,13 @@ public class XtaServiceConfiguration { private final XtaProperties properties; @Bean - @SneakyThrows - XtaClient xtaClient() { + XtaClient xtaClient() throws XtaClientInitializationException, IOException { XtaClientConfig xtaClientConfig = createClientConfig(); XtaClientFactory clientFactory = XtaClientFactory.from(xtaClientConfig); return clientFactory.create(); } - @SneakyThrows - XtaClientConfig createClientConfig() { + XtaClientConfig createClientConfig() throws IOException { var clientCertKeyStore = XtaClientConfig.KeyStore.builder() .content(properties.getKeyStore().getFile().getContentAsByteArray()) diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java index be203512..446fa54f 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java @@ -258,7 +258,7 @@ class XtaITCase { XtaMessage xtaMessage = XtaResponseTestFactory.createGetMessageResponse(zipFileName); when(xtaClient.fetchMessages(any())).thenAnswer(invocation -> { @SuppressWarnings("unchecked") - var processMessage = (Consumer<XtaMessage>) invocation.getArguments()[0]; + var processMessage = (Consumer<XtaMessage>) invocation.getArgument(0); processMessage.accept(xtaMessage); return List.of(XtaTransportReportTestFactory.create()); }); diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java index a6283344..7e9bbf9f 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java @@ -99,6 +99,13 @@ class XtaServiceTest { verify(xtaClient).fetchMessages(any()); } + + @Test + void shouldCallLogTransportReports() { + service.fetchMessages(); + + verify(service).logTransportReports(any()); + } } @DisplayName("process message") @@ -382,4 +389,5 @@ class XtaServiceTest { verify(semantikAdapter).processFormData(any()); } } + } -- GitLab