From 7acd8cf9b3bd0aacea61fff3a07e17b9b57ad8cc Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Fri, 22 Nov 2019 13:57:41 +0100 Subject: Fix Msg Schema Error: Honor Mutual Exclusiveness of MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Problem: When activating the QueryPersonRequest, the TNVZ returns an Identification element that needs to be integrated into the msg:DeliveryRequest as a child of Receiver. The Identification child is mutually exclusive to another sequence consisting of (Person, AustrianAddressesOnly, Address). I forget to delete the sequence when adding the Identifcation element and violate the the msg schema. - Solution: Delete sequence when adding Identification. - Test the fix in test case. Thanks to Johannes Hörtnagl for pointing out the problem. --- .../at/gv/egiz/moazs/scheme/Mzs2MsgConverter.java | 9 ++++-- .../at/gv/egiz/moazs/Mzs2MsgConverterTest.java | 35 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/gv/egiz/moazs/scheme/Mzs2MsgConverter.java b/src/main/java/at/gv/egiz/moazs/scheme/Mzs2MsgConverter.java index 522bb1d..b3ad044 100644 --- a/src/main/java/at/gv/egiz/moazs/scheme/Mzs2MsgConverter.java +++ b/src/main/java/at/gv/egiz/moazs/scheme/Mzs2MsgConverter.java @@ -71,7 +71,7 @@ public class Mzs2MsgConverter { public DeliveryRequestType convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType mzsRequest, IdentificationType identification) { return setupBuilder(mzsRequest) - .withReceiver(convert(mzsRequest.getReceiver(), identification)) + .withReceiver(convertAndRepaceCombinationSequenceWithIdentification(mzsRequest.getReceiver(), identification)) .build(); } @@ -147,10 +147,13 @@ public class Mzs2MsgConverter { return setupReceiverBuilder(receiver).build(); } - private at.gv.zustellung.msg.xsd.Receiver convert(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Receiver receiver, - IdentificationType identificationType) { + private at.gv.zustellung.msg.xsd.Receiver convertAndRepaceCombinationSequenceWithIdentification(at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.Receiver receiver, + IdentificationType identificationType) { return setupReceiverBuilder(receiver) .withIdentification(identificationType) + .withPerson(null) + .withAustrianAddressesOnly(null) + .withAddress(null) .build(); } diff --git a/src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java b/src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java index 77654de..c6146a5 100644 --- a/src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java +++ b/src/test/java/at/gv/egiz/moazs/Mzs2MsgConverterTest.java @@ -25,6 +25,7 @@ import at.gv.egiz.moazs.scheme.Marshaller; import at.gv.egiz.moazs.scheme.Mzs2MsgConverter; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import at.gv.zustellung.msg.xsd.ObjectFactory; +import at.gv.zustellung.msg.xsd.persondata.IdentificationType; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -35,6 +36,8 @@ import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; +import static at.gv.zustellung.msg.xsd.persondata.IdentificationType.Value.valueBuilder; +import static at.gv.zustellung.msg.xsd.persondata.IdentificationType.identificationTypeBuilder; import static org.assertj.core.api.Assertions.assertThat; /** @@ -80,4 +83,36 @@ public class Mzs2MsgConverterTest { } } + + @Test + public void testCanConvertValidMzsRequestToMsgRequestWithIdentificationFromTNVZ() throws IOException { + + var fileName = basePath + "/validMzsDeliveryRequest.xml"; + + var idFromTNVZ = identificationTypeBuilder() + .withType("some-id-type") + .withValue(valueBuilder().withValue("some-id-value").build()) + .build(); + + try (var inputStream = new BufferedInputStream(new FileInputStream(fileName))) { + + JAXBElement mzsRequest = mzsMarshaller.unmarshallXml(inputStream); + + var msgRequest = converter.convert(mzsRequest.getValue(), idFromTNVZ); + + var jaxbMsgRequest = new ObjectFactory().createDeliveryRequest(msgRequest); + + String msgRequestXML = msgMarshaller.marshallXml(jaxbMsgRequest); + + logger.info(msgRequestXML); + + assertThat(msgRequestXML) + .contains("valid-delivery-request-id") + .contains("some-id-type") + .contains("some-id-value") + .doesNotContain("Mustermann1") + .doesNotContain("Maxi"); + } + + } } -- cgit v1.2.3