diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java index 19d35efce455bf42a5329463b4893b13a51aaed2..5d9faa593aa0a61b19dee676ab2a233106e010f3 100644 --- a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.w3c.dom.Document; @@ -99,11 +100,13 @@ class SemantikFormDataMapper { } private byte[] getXmlFormData(DepositData depositData) { + var primaryId = depositData.getPrimaryDataAttachmentId(); + return depositData.getAttachments().stream() - .filter(attachment -> attachment.getName().endsWith(CONTENT_FORMDATA_FILENAME_SUFFIX)) + .filter(attachment -> StringUtils.equals(attachment.getId(), primaryId)) .map(Attachment::getContent) .findFirst() - .orElseThrow(() -> new RuntimeException("Request does not contain a file ending with " + CONTENT_FORMDATA_FILENAME_SUFFIX)); + .orElseThrow(() -> new RuntimeException("Request does not contain primary data attachment")); } private void addFiles(Document document, List<IncomingFile> depositRequestFiles, Map<String, Object> formDataMap) { diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java index 49c38a83bab24294079f8e37f2b548a3cb9f1ca9..174569a3e12d247dd7dc3ac4d9e9ca609298f858 100644 --- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java @@ -47,6 +47,7 @@ public class DepositTestFactory { static Deposit withData(DepositData data) { Deposit deposit = new Deposit(); + data.setPrimaryDataAttachmentId(AttachmentTestFactory.XML_ID); deposit.setData(data); return deposit;