diff --git a/common/src/main/java/de/ozgcloud/eingang/common/xml/XMLHelper.java b/common/src/main/java/de/ozgcloud/eingang/common/xml/XMLHelper.java index c94b0ae5cc80b81378f6013bb6601bca7835cd65..2f229a4b13b4b1f67a69da4853b79778ece2e06b 100644 --- a/common/src/main/java/de/ozgcloud/eingang/common/xml/XMLHelper.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/xml/XMLHelper.java @@ -11,18 +11,35 @@ import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import javax.xml.xpath.XPathFactoryConfigurationException; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.w3c.dom.Document; import org.xml.sax.SAXException; import de.ozgcloud.eingang.common.errorhandling.TechnicalException; import de.ozgcloud.eingang.common.formdata.IncomingFile; +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class XMLHelper { - private XMLHelper() { + private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder(); + private static final XPathFactory X_PATH_FACTORY = createXPathFactory(); + + public static Document parseDocument(IncomingFile incomingFile) { + try (var inputStream = incomingFile.getContentStream()) { + return DOCUMENT_BUILDER.parse(inputStream); + } catch (SAXException | IOException e) { + throw new TechnicalException("Failed to parse xml document!", e); + } } - private static final DocumentBuilder DOCUMENT_BUILDER = createDocumentBuilder(); + public static XPathExpression compileXPathExpression(String xPathString) { + try { + return X_PATH_FACTORY.newXPath().compile(xPathString); + } catch (XPathExpressionException e) { + throw new TechnicalException("Failed to compile xpath expression!", e); + } + } private static DocumentBuilder createDocumentBuilder() { var documentBuilderFactory = DocumentBuilderFactory.newInstance(); @@ -34,8 +51,6 @@ public class XMLHelper { } } - private static final XPathFactory X_PATH_FACTORY = createXPathFactory(); - private static XPathFactory createXPathFactory() { var xPathFactory = XPathFactory.newInstance(); try { @@ -45,20 +60,4 @@ public class XMLHelper { throw new TechnicalException("Failed to configure xpath factory!", e); } } - - public static Document parseDocument(IncomingFile incomingFile) { - try (var inputStream = incomingFile.getContentStream()) { - return DOCUMENT_BUILDER.parse(inputStream); - } catch (SAXException | IOException e) { - throw new TechnicalException("Failed to parse xml document!", e); - } - } - - public static XPathExpression compileXPathExpression(String xPathString) { - try { - return X_PATH_FACTORY.newXPath().compile(xPathString); - } catch (XPathExpressionException e) { - throw new TechnicalException("Failed to compile xpath expression!", e); - } - } } diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java index b8f2a5b22249707ee116edde4751a442efe2acdd..40e803fe1c1a89f4937d00453d574ebb09df7c67 100644 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java @@ -65,8 +65,4 @@ public class IncomingFileTestFactory { public static MockMultipartFile asMultipartFile(String multipartName, IncomingFile file) { return new MockMultipartFile(multipartName, file.getName(), file.getContentType(), file.getContentStream().readAllBytes()); } - - public static IncomingFile createWithName(String name) { - return createBuilder().name(name).build(); - } } 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 f2a5d411e664c3a06141e06b7798f07f8bb603ae..e851176d883d602d13ddf2c04df730b2baa31d70 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 @@ -36,11 +36,11 @@ import java.util.stream.Stream; @Log4j2 @Component -public class XtaIncomingFilesMapper { +class XtaIncomingFilesMapper { public static final String ZIP_CONTENT_TYPE = "application/zip"; static final Predicate<IncomingFile> IS_ZIP_FILE = contentType -> ZIP_CONTENT_TYPE.equals(contentType.getContentType()); - List<IncomingFile> toIncomingFiles(Collection<XtaFile> messageFiles) { + public List<IncomingFile> toIncomingFiles(Collection<XtaFile> messageFiles) { if (Objects.nonNull(messageFiles)) { return messageFiles.stream() .map(this::toIncomingFile) diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java index b061b1590bae4d357d79eec4f5eea866b314ae34..b848e641879b226152228b9a506f06438b184946 100644 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java @@ -39,7 +39,7 @@ class XdomeaMessageDataMapperTest { @DisplayName("should throw if not found") @Test void shouldThrowIfNotFound() { - var incomingFilesWithout = List.of(IncomingFileTestFactory.createWithName(FILE_NAME_WITHOUT_SUFFIX)); + var incomingFilesWithout = List.of(IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITHOUT_SUFFIX).build()); assertThatThrownBy(() -> fileClassifier.findXdomeaXMLFile(incomingFilesWithout)) .isInstanceOf(TechnicalException.class); @@ -48,9 +48,9 @@ class XdomeaMessageDataMapperTest { @DisplayName("should return if found") @Test void shouldReturnIfFound() { - var targetIncomingFile = IncomingFileTestFactory.createWithName(FILE_NAME_WITH_SUFFIX); + var targetIncomingFile = IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITH_SUFFIX).build(); var incomingFilesWith = List.of( - IncomingFileTestFactory.createWithName(FILE_NAME_WITHOUT_SUFFIX), + IncomingFileTestFactory.createBuilder().name(FILE_NAME_WITHOUT_SUFFIX).build(), targetIncomingFile ); @@ -114,7 +114,7 @@ class XdomeaMessageDataMapperTest { ATTATCHMENT_PNG_NAME, ATTATCHMENT_PDF_NAME ) - .map(IncomingFileTestFactory::createWithName) + .map(name -> IncomingFileTestFactory.createBuilder().name(name).build()) .toList(); doReturn(xdomeaXMLFile).when(fileClassifier).findXdomeaXMLFile(incomingFileList);