diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java index 8041810ed8fbc3222fd10c06a4e64a6a760e9bf4..891512d2f4b878594ee813dbe3cdf5d9c4bfdb4c 100644 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java @@ -26,10 +26,8 @@ package de.ozgcloud.eingang.xta; import java.util.Collection; import java.util.List; import java.util.Objects; -import java.util.function.Predicate; import java.util.stream.Stream; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; import org.springframework.stereotype.Component; import de.ozgcloud.eingang.common.formdata.IncomingFile; @@ -44,14 +42,11 @@ class XtaIncomingFilesMapper { private final ZipFileExtractor zipFileExtractor; - public static final String ZIP_CONTENT_TYPE = "application/zip"; - static final Predicate<IncomingFile> IS_ZIP_FILE = contentType -> ZIP_CONTENT_TYPE.equals(contentType.getContentType()); - public List<IncomingFile> toIncomingFiles(Collection<XtaFile> messageFiles) { if (Objects.nonNull(messageFiles)) { return messageFiles.stream() .map(this::toIncomingFile) - .flatMap(this::extractZip) + .flatMap(this::tryToExtractZip) .toList(); } return List.of(); @@ -66,16 +61,11 @@ class XtaIncomingFilesMapper { .build(); } - Stream<IncomingFile> extractZip(IncomingFile incomingFile) { - if (IS_ZIP_FILE.test(incomingFile)) { - try { - List<IncomingFile> extractedZips = zipFileExtractor.extractIncomingFilesSafely(incomingFile); - return extractedZips.stream(); - } catch (RuntimeException e) { - LOG.error("Cannot read source ZIP. Not extracting file", e); - return Stream.of(incomingFile); - } - } else { + Stream<IncomingFile> tryToExtractZip(IncomingFile incomingFile) { + try { + List<IncomingFile> extractedZips = zipFileExtractor.extractIncomingFilesSafely(incomingFile); + return extractedZips.stream(); + } catch (RuntimeException e) { return Stream.of(incomingFile); } } diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java index 1ae7d692986e14c57e983b2af836c8b637c33c92..8adbed4598d7224e121e0d723c6c29baf0456361 100644 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java @@ -27,10 +27,8 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; import java.util.List; -import java.util.UUID; import java.util.stream.Stream; -import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -49,8 +47,6 @@ class XtaIncomingFilesMapperTest { @Mock private ZipFileExtractor extractor; - private static final String ZIP_CONTENT_TYPE = "application/zip"; - @Nested class TestToIncomingFiles { @@ -59,12 +55,12 @@ class XtaIncomingFilesMapperTest { var xtaFile = XtaFileTestFactory.create(); var incomingFile = IncomingFileTestFactory.create(); when(mapper.toIncomingFile(xtaFile)).thenReturn(incomingFile); - when(mapper.extractZip(incomingFile)).thenAnswer(x -> Stream.of(incomingFile)); + when(mapper.tryToExtractZip(incomingFile)).thenAnswer(x -> Stream.of(incomingFile)); mapper.toIncomingFiles(List.of(xtaFile, xtaFile)); inOrder(mapper).verify(mapper, calls(2)).toIncomingFile(xtaFile); - inOrder(mapper).verify(mapper, calls(2)).extractZip(incomingFile); + inOrder(mapper).verify(mapper, calls(2)).tryToExtractZip(incomingFile); } @Test @@ -107,7 +103,7 @@ class XtaIncomingFilesMapperTest { } @Nested - class TestExtractZip { + class TestTryToExtractZip { @Mock IncomingFile outFile1; @@ -115,40 +111,29 @@ class XtaIncomingFilesMapperTest { @Mock IncomingFile outFile2; + private final IncomingFile zipFile = IncomingFileTestFactory.createBuilder() + .name("attachments.zip") + .build(); @Test void shouldExtractZipFiles() { var expectedExtractedFiles = List.of(outFile1, outFile2); - var zipFile = createTestIncomingFile(); when(extractor.extractIncomingFilesSafely(zipFile)).thenReturn(expectedExtractedFiles); - var extractedFiles = mapper.extractZip(zipFile).toList(); + var extractedFiles = mapper.tryToExtractZip(zipFile).toList(); assertThat(extractedFiles).isEqualTo(expectedExtractedFiles); } - IncomingFile createTestIncomingFile() { - return IncomingFileTestFactory.createBuilder() - .name("attachments.zip") - .contentType(ZIP_CONTENT_TYPE) - .build(); - } - @Test void shouldIgnoreNonZipFiles() { + when(extractor.extractIncomingFilesSafely(zipFile)).thenThrow(new RuntimeException()); var incomingFile = IncomingFileTestFactory.create(); - var extractedFiles = mapper.extractZip(incomingFile).toList(); + var extractedFiles = mapper.tryToExtractZip(incomingFile).toList(); assertThat(extractedFiles).containsExactly(incomingFile); } } - @Test - void testIsZipFilePredicate() { - assertThat(XtaIncomingFilesMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.create())).isFalse(); - assertThat(XtaIncomingFilesMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.createBuilder().contentType(ZIP_CONTENT_TYPE).build())) - .isTrue(); - } - }