diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XdomeaValueReader.java b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XdomeaValueReader.java index 8ffa13166a14607379702c97927167f5693ee287..90dcbeb54d465a6b50381ce74dc0ad77d744301f 100644 --- a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XdomeaValueReader.java +++ b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XdomeaValueReader.java @@ -16,16 +16,19 @@ import lombok.RequiredArgsConstructor; public class XdomeaValueReader { static final String PROCESS_ID_XPATH = getXpath("Kopf", "ProzessID"); - static final String AUTHOR_ID_SUFFIX_XPATH = getXpath("Kopf", "Absender", "code"); + static final String AUTHOR_ID_SUFFIX_XPATH = getXpath("Kopf", "Absender", "Behoerdenschluessel|Kennung", "code"); static final String AUTHOR_ID_PREFIX_XPATH = getXpath("Kopf", "Absender", "Praefix", "code"); - static final String READER_ID_SUFFIX_XPATH = getXpath("Kopf", "Empfaenger", "code"); + static final String READER_ID_SUFFIX_XPATH = getXpath("Kopf", "Empfaenger", "Behoerdenschluessel|Kennung", "code"); static final String READER_ID_PREFIX_XPATH = getXpath("Kopf", "Empfaenger", "Praefix", "code"); static final String MESSAGE_TYPE_ID_SUFFIX_XPATH = getXpath("Kopf", "Nachrichtentyp", "code"); static final String PRIMARY_DOCUMENT_NAME_XPATH = getXpath("Primaerdokument", "Dateiname"); static String getXpath(String... hierarchy) { return Arrays.stream(hierarchy) - .map(h -> "//*[local-name() = '" + h + "']") + .map(localNames -> Arrays.stream(localNames.split("\\|")) + .map(localName -> "local-name() = '" + localName + "'") + .collect(Collectors.joining(" or "))) + .map(predicate -> "//*[" + predicate + "]") .collect(Collectors.joining()); } diff --git a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java index 4098c503377f73e7b806ad0f62625cb05d9fb256..6256c854dbd400a3fabd26ed0f5520ac5dd89f13 100644 --- a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java +++ b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java @@ -65,12 +65,16 @@ class XdomeaXtaMessageCreatorITCase { } @DisplayName("should throw client exception for invalid message 0201") - @Test - void shouldThrowClientExceptionForInvalidMessage0201() { - var invalidMessageZipFile = XtaMessageExampleLoader.load(createExampleConfigBuilder() - .messageLabel("dfoerdermittel") - .patchLabel("invalid-behoerdenkennung-order.patch") - .build()).messageFile(); + @ParameterizedTest + @ValueSource(strings = { + "invalid-behoerdenkennung-order.patch", + "invalid-Kennung-missing.patch", + }) + void shouldThrowClientExceptionForInvalidMessage0201(String patchName) { + var invalidMessageZipFile = loadMessageFileWithPatch( + "dfoerdermittel", + patchName + ); assertThatThrownBy(() -> creator.createMessage(invalidMessageZipFile)) .isInstanceOf(ClientException.class); diff --git a/src/test/resources/messages/dfoerdermittel/invalid-Kennung-missing.patch b/src/test/resources/messages/dfoerdermittel/invalid-Kennung-missing.patch new file mode 100644 index 0000000000000000000000000000000000000000..2fb95620989a05e034fd84de03a7f0ff1bbad7a9 --- /dev/null +++ b/src/test/resources/messages/dfoerdermittel/invalid-Kennung-missing.patch @@ -0,0 +1,14 @@ +diff --git a/src/test/resources/messages/dfoerdermittel/message/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.zip/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml b/src/test/resources/messages/dfoerdermittel/message/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.zip/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml +index 7815e7b..82dd9db 100644 +--- a/src/test/resources/messages/dfoerdermittel/message/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.zip/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml ++++ b/src/test/resources/messages/dfoerdermittel/message/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.zip/d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.xml +@@ -10,9 +10,6 @@ + <Erstellungszeitpunkt>2023-04-04T06:59:15.4231885+02:00</Erstellungszeitpunkt> + <Absender> + <Behoerdenkennung> +- <Kennung listURI="" listVersionID=""> +- <code xmlns="">${authorIdentifier.value}</code> +- </Kennung> + <Praefix listURI="" listVersionID=""> + <code xmlns="">${authorIdentifier.prefix}</code> + </Praefix>