aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-10-03 16:09:47 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-10-03 16:09:47 +0200
commitee8c694c12850b27144a664c948c3b84398ead6f (patch)
treec04076dee3a38f882d3fb810a85fbc6a9a104dfa /src
parentb3060f8ba40280d438e2b4b06b39aed84c587f7a (diff)
downloadmoa-zs-ee8c694c12850b27144a664c948c3b84398ead6f.tar.gz
moa-zs-ee8c694c12850b27144a664c948c3b84398ead6f.tar.bz2
moa-zs-ee8c694c12850b27144a664c948c3b84398ead6f.zip
Update zusemsg and zusetnvz to Newest Version & Accommodate Changes
Upgrade zusemsg 2.2.0 to 2.2.007: - msg:RelayedViaERV - Change from boolean to complex type (ervcode). - Move from msg:DeliveryRequestStatusType/Success into msg:DeliveryRequestStatusType, which affects Success, Error, and PartialSuccess. - Was removed from DeliveryNotificationType. - Change msg:DeliveryNotification/Answer from list to singleton. - Change msg:DeliveryRequestStatusType/PartialSuccess is to type AnswerType. - msg:DeliveryRequestStatusType and msg:DeliveryNotificationType receive the attribute ID (for signature referencing). - Add new optional element msg:AustrianAdressesOnly (IndicatorType) to DeliveryRequestType/Receiver/(choice sequence). - Add new optional element ClearingProfilID to DeliveryRequestType/Sender. - Add new element ERVConfirmedDelivery, which subsitutes msg:Answer and extends msg:AbstractOperation - Has element ErvCode (also new token256 type). - Has element ERVDeliveryTimestamp. - Add new optional element TargetIdentification of type p:IdentificationType to msg:DeliveryNotification/User/ as optional element. - Add new enumeration "System" to msg:DeliveryNotification/User/Role. - Rename type AustrianLanguageType from "AustrianEthicMinorityLanguageType" to "AustrianLanguageType" and add "DE" as value. - msg:Tags were unbounded, now they are limited to 20. - VersionNumberType: Patch version can have three digits. Upgrade zusetnvz 2.2.0 to 2.2.006: - Add StandardMimeTypeList to tnvz:QueryPersonResponse and tnvz:QueryAdressabilityResponse. - Add AllStandardMimeTypes (indicator) to tnvz:PersonResult/Success. - Add optional msg:MetadataList to tnvz:PersonQueryType/Metadata tnvz:AddressabilityQueryType/Metadata. - Move tnvz:AustrianAdressesOnly to msg namespace. Carry zusemsg changes into app2mzs interface: - Switch namespace of AustrianAdressesOnly from tnvz to msg. - Add new optional element ClearingProfilID to mzs:DeliveryRequestType/Sender; Reason: Element was added to zusemsg 2.2.007. - Add new choice in mzs:DeliveryNotification to forward new answer type msg:ERVConfirmedDelivery to the app. - Move msg:RelayedViaERV from SuccessType into MessageType (now it's available to all types that derive from MessageType). Accommodate zusemsg/tnvz changes in code base: - TNVZHelper: Consider StandardMimeTypeList when assessing if DeliveryRequest/mimetypes overlap with TNVZ's Accepted Mimetypes. - Msg2MzsConverter: - Put getRelayedViaERV() into all DeliveryStatusRequest replies. - Honor that Notification/Answer is Singleton instead of List. - Handle case were DeliveryNotification/Answer is of type ERVConfirmedDeliveryType. - Remove RelayedViaERV from DeliveryNotification as this element is not available anymore. - NotificationResponse: Honor that Notification/Answer is Singleton instead of List. Fix all testcases and sample soap messages to comply with schema changes.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java34
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java36
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java3
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java2
-rw-r--r--src/main/resources/mzs/app2mzs.xsd6
-rw-r--r--src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd7
-rw-r--r--src/main/resources/zusemsg/zuse_p2.xsd110
-rw-r--r--src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl5
-rw-r--r--src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl4
-rw-r--r--src/main/resources/zusetnvz/zusenqd_p2.xsd10
-rw-r--r--src/main/resources/zusetnvz/zusetnvz_p2.xsd66
-rw-r--r--src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java9
-rw-r--r--src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java35
-rw-r--r--src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml1
-rw-r--r--src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml1
15 files changed, 219 insertions, 110 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java
index 5cc4954..e6bacec 100644
--- a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java
+++ b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java
@@ -69,9 +69,9 @@ public class TnvzHelper {
var tnvzResponse = tnvzPort.queryPerson(tnvzQuery);
verifyResponse(tnvzResponse);
- var tnvzResult = getResult(tnvzResponse);
+ var tnvzResult = getFirstResult(tnvzResponse);
var typesInRequest = extractListOfMimemtypesIn(mzsRequest);
- checkMimetypes(tnvzResult, typesInRequest);
+ checkMimetypes(tnvzResponse, typesInRequest);
return tnvzResult.getSuccess().getIdentification();
}
@@ -196,14 +196,15 @@ public class TnvzHelper {
}
}
- private PersonResultType getResult(QueryPersonResponse tnvzResponse) {
+ private PersonResultType getFirstResult(QueryPersonResponse tnvzResponse) {
return tnvzResponse.getQueryResultList().getQueryResult().get(0);
}
- private void checkMimetypes(PersonResultType tnvzResult, Set<String> typesInRequest) {
- var mismatchedTypes = findMimeTypeMismatches(tnvzResult, typesInRequest);
+ private void checkMimetypes(QueryPersonResponse tnvzResponse, Set<String> typesInRequest) {
+
+ var mismatchedTypes = findMimeTypeMismatches(tnvzResponse, typesInRequest);
if (!mismatchedTypes.isEmpty()) {
- var acceptedTypesString = join(",", getAcceptedTypes(tnvzResult));
+ var acceptedTypesString = join(",", getAcceptedTypes(tnvzResponse));
var mismatchedTypesString = join(",", mismatchedTypes);
var message = String.format(MIMETYPE_MISSMATCH_ERROR_MSG, mismatchedTypesString, acceptedTypesString);
var code = MoaZSException.ERROR_MZS_MIMETYPE_MISSMATCH;
@@ -211,10 +212,11 @@ public class TnvzHelper {
}
}
- private Collection<String> findMimeTypeMismatches(PersonResultType result, Set<String> typesInRequest) {
- var acceptedTypes = getAcceptedTypes(result);
+ private Collection<String> findMimeTypeMismatches(QueryPersonResponse response, Set<String> typesInRequest) {
+ var acceptedTypes = getAcceptedTypes(response);
- if (acceptedTypes.contains("*/*")) {
+ var result = getFirstResult(response);
+ if (result.getSuccess().getAllStandardMimeTypes() != null) {
return List.of();
}
@@ -224,8 +226,18 @@ public class TnvzHelper {
return typesInRequestCopy;
}
- private List<String> getAcceptedTypes(PersonResultType result) {
- return result.getSuccess().getMimeTypeList().getMimeType();
+ private Set<String> getAcceptedTypes(QueryPersonResponse response) {
+
+ Set<String> union = new HashSet<>();
+ var standardTypes = response.getStandardMimeTypeList().getMimeType();
+ union.addAll(standardTypes);
+
+ var acceptedTypeList = getFirstResult(response).getSuccess().getMimeTypeList();
+ if(acceptedTypeList != null) {
+ union.addAll(acceptedTypeList.getMimeType());
+ }
+
+ return union;
}
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
index 65b6425..cabb128 100644
--- a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
+++ b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
@@ -24,53 +24,48 @@ import static java.util.stream.Collectors.toList;
@Component
public class Msg2MzsConverter {
- private static final Logger log = LoggerFactory.getLogger(Msg2MzsConverter.class);
-
- private static final String ANSWERS_MISSING_ERROR_MSG = "msg:DeliveryNotification contains no msg:Answer elements" +
- " and cannot be converted to mzs:DeliveryNotification.";
private static final String UNKNOWN_ANSWER_ERROR_MSG = "msg:DeliveryNotification/msg:Answer is of unknown type" +
" and cannot be converted.";
- private static final String TOO_MANY_ANSWERS_MSG = "msg:DeliveryNotification contains more msg:Answer elements than" +
- " expected. All answers except the first one will be ignored.";
public DeliveryResponseType convert(DeliveryRequestStatusType status, Optional<byte[]> signedStatus) {
var responseBuilder = deliveryResponseTypeBuilder();
if (status.getError() != null) {
- responseBuilder.withError(convert(status.getError(), signedStatus));
+ responseBuilder.withError(convert(status.getError(), signedStatus, status.getRelayedViaERV()));
} else if (status.getSuccess() != null) {
- responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus));
+ responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus, status.getRelayedViaERV()));
} else {
- responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus));
+ responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus, status.getRelayedViaERV()));
}
return responseBuilder.build();
}
- private SuccessType convert(DeliveryRequestStatusType.Success success, Optional<byte[]> signedStatus) {
+ private SuccessType convert(DeliveryRequestStatusType.Success success, Optional<byte[]> signedStatus, RelayedViaERV relayed) {
return successTypeBuilder()
.withAppDeliveryID(success.getAppDeliveryID())
.withDeliverySystem(success.getDeliverySystem())
.withGZ(success.getGZ())
.withZSDeliveryID(success.getZSDeliveryID())
.withSignedDeliveryRequestStatus(signedStatus.orElse(null))
- .withRelayedViaERV(success.isRelayedViaERV())
+ .withRelayedViaERV(relayed)
.withDeliveryTimestamp(success.getDeliveryTimestamp())
.build();
}
- private PartialSuccessType convert(DeliveryAnswerType answer, Optional<byte[]> signedStatus) {
+ private PartialSuccessType convert(DeliveryAnswerType answer, Optional<byte[]> signedStatus, RelayedViaERV relayed) {
return partialSuccessTypeBuilder()
.withAppDeliveryID(answer.getAppDeliveryID())
.withDeliverySystem(answer.getDeliverySystem())
.withGZ(answer.getGZ())
.withZSDeliveryID(answer.getZSDeliveryID())
+ .withRelayedViaERV(relayed)
.withSignedDeliveryRequestStatus(signedStatus.orElse(null))
.build();
}
- private ErrorType convert(DeliveryRequestStatusType.Error error, Optional<byte[]> signedStatus) {
+ private ErrorType convert(DeliveryRequestStatusType.Error error, Optional<byte[]> signedStatus, RelayedViaERV relayed) {
var builder = errorTypeBuilder()
.withAppDeliveryID(error.getAppDeliveryID())
.withDeliverySystem(error.getDeliverySystem())
@@ -78,6 +73,7 @@ public class Msg2MzsConverter {
.withZSDeliveryID(error.getZSDeliveryID())
.withSignedDeliveryRequestStatus(signedStatus.orElse(null))
.withPreAdviceNoteSent(error.getPreAdviceNoteSent())
+ .withRelayedViaERV(relayed)
.withCode(new BigInteger(error.getErrorInfo().getCode()));
if(error.getErrorInfo().getText() != null) builder.withText(error.getErrorInfo().getText());
@@ -90,15 +86,7 @@ public class Msg2MzsConverter {
var builder = deliveryNotificationTypeBuilder();
- if (msgNotification.getAnswer().isEmpty()) {
- throw moaZSException(ANSWERS_MISSING_ERROR_MSG);
- }
-
- if (msgNotification.getAnswer().size() > 1) {
- log.warn(TOO_MANY_ANSWERS_MSG);
- }
-
- JAXBElement<? extends AbstractOperationType> answer = msgNotification.getAnswer().get(0);
+ JAXBElement<? extends AbstractOperationType> answer = msgNotification.getAnswer();
if(answer.getValue() instanceof AcceptedType) {
var accepted = (AcceptedType) answer.getValue();
@@ -108,6 +96,9 @@ public class Msg2MzsConverter {
var error = (DeliveryErrorType) answer.getValue();
builder.withError(extractError(msgNotification, error, signedNotification))
.withNotificationsPerformed(error.getNotificationsPerformed());
+ } else if(answer.getValue() instanceof ERVConfirmedDeliveryType) {
+ ERVConfirmedDeliveryType ervConfirmed = (ERVConfirmedDeliveryType) answer.getValue();
+ builder.withERVConfirmedDelivery(ervConfirmed);
} else {
throw moaZSException(UNKNOWN_ANSWER_ERROR_MSG);
}
@@ -141,7 +132,6 @@ public class Msg2MzsConverter {
.withZSDeliveryID(msgNotification.getZSDeliveryID())
.withGZ(msgNotification.getGZ())
.withSignedDeliveryRequestStatus(signedNotification.orElse(null))
- .withRelayedViaERV(msgNotification.isRelayedViaERV())
.withDeliveryTimestamp(msgNotification.getTimestamp())
.build();
}
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java b/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java
index 23b19e7..8cf82da 100644
--- a/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java
+++ b/src/main/java/at/gv/egiz/moazs/scheme/NameSpace.java
@@ -7,7 +7,8 @@ public class NameSpace {
private static final at.gv.zustellung.msg.xsd.ObjectFactory MSG_FACTORY = new at.gv.zustellung.msg.xsd.ObjectFactory();
private static final at.gv.zustellung.app2mzs.xsd.ObjectFactory MZS_FACTORY = new at.gv.zustellung.app2mzs.xsd.ObjectFactory();
- public static final String MSG_VERSION = "2.2.0";
+ public static final String MSG_VERSION = "2.2.007";
+ public static final String TNVZ_VERSION = "2.2.006";
public static final String MSG = MSG_FACTORY.createDeliveryRequest(null).getName().getNamespaceURI();
public static final String MSGP = new at.gv.zustellung.msg.xsd.persondata.ObjectFactory().createPerson(null).getName().getNamespaceURI();
public static final String MZS = new at.gv.zustellung.app2mzs.xsd.ObjectFactory().createDeliveryRequest(null).getName().getNamespaceURI();
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java b/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java
index 85e7737..1a1a8eb 100644
--- a/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java
+++ b/src/main/java/at/gv/egiz/moazs/scheme/NotificationResponse.java
@@ -67,7 +67,7 @@ public class NotificationResponse extends MsgResponse<DeliveryNotificationType>
.build();
var notificationType = deliveryNotificationTypeBuilder(notification)
- .withAnswer(List.of(factory.createAnswer(error)))
+ .withAnswer(factory.createAnswer(error))
.build();
return new NotificationResponse(notificationType);
diff --git a/src/main/resources/mzs/app2mzs.xsd b/src/main/resources/mzs/app2mzs.xsd
index c586606..c188faa 100644
--- a/src/main/resources/mzs/app2mzs.xsd
+++ b/src/main/resources/mzs/app2mzs.xsd
@@ -35,6 +35,7 @@
</xs:complexType>
</xs:element>
</xs:choice>
+ <xs:element ref="msg:ClearingProfilID" minOccurs="0"/>
<xs:element ref="msg:Logo" minOccurs="0"/>
<xs:element ref="msg:AdditionalCriteria" minOccurs="0"/>
</xs:sequence>
@@ -48,7 +49,7 @@
<xs:element name="Identification" type="p:IdentificationType" />
<xs:sequence>
<xs:element ref="p:Person"/>
- <xs:element ref="tnvz:AustrianAddressesOnly" minOccurs="0"/>
+ <xs:element ref="msg:AustrianAddressesOnly" minOccurs="0"/>
<xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:choice>
@@ -168,6 +169,7 @@
<xs:choice>
<xs:element ref="Success"/>
<xs:element ref="Error"/>
+ <xs:element ref="msg:ERVConfirmedDelivery"/>
</xs:choice>
<xs:element ref="msg:SenderDetails"/>
<xs:element ref="msg:ReceiverDetails"/>
@@ -213,7 +215,6 @@
<xs:extension base="MessageType">
<xs:sequence>
<xs:element ref="msg:DeliveryTimestamp"/>
- <xs:element ref="msg:RelayedViaERV" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
@@ -253,6 +254,7 @@
<xs:element ref="msg:DeliverySystem"/>
<xs:element ref="msg:ZSDeliveryID" />
<xs:element ref="msg:GZ" minOccurs="0"/>
+ <xs:element ref="msg:RelayedViaERV" minOccurs="0"/>
<xs:element name="SignedDeliveryRequestStatus" type="xs:base64Binary" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
diff --git a/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd b/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd
index a20e3f5..ee18bf2 100644
--- a/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd
+++ b/src/main/resources/zusemsg/zuse_mypersondata_en_p2.xsd
@@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet -->
-<!--
-PersonData Blueprint solution for use with ZUSE Spezifikation, containes slimmed down version of PersonData 2.0 spec with special consideration to ZUSE Needs, compatible with PersonData 2.0
--->
-<?xml-stylesheet type="text/xsl" href="getelementnames.xslt"?>
-<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" targetNamespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0">
+
+<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" targetNamespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.006">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/>
<xs:annotation>
<xs:documentation>This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups</xs:documentation>
diff --git a/src/main/resources/zusemsg/zuse_p2.xsd b/src/main/resources/zusemsg/zuse_p2.xsd
index 6fa07a4..3343263 100644
--- a/src/main/resources/zusemsg/zuse_p2.xsd
+++ b/src/main/resources/zusemsg/zuse_p2.xsd
@@ -1,7 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0">
+<!-- ###
+
+ Die Versionsnummer des Schemas wird immer dann hochgezogen, wenn das Schema
+ selbst verändert wurde aber auch dann, wenn zumindest eines der importierten
+ ZUSE-Schemata angepasst wurde.
+
+ ###-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.007">
<!--### Imports ###-->
+ <!--### ZUSE-Personendaten: namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" version="2.2.007" ###-->
<xs:import namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" schemaLocation="zuse_mypersondata_en_p2.xsd"/>
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/>
<!--### Abfrage der Webserviceversion-->
@@ -12,7 +20,7 @@
<xs:element name="Version">
<xs:simpleType>
<xs:restriction base="xs:token">
- <xs:enumeration value="2.2.0"/>
+ <xs:enumeration value="2.2.007"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
@@ -61,20 +69,24 @@
<xs:extension base="msg:DeliveryAnswerType">
<xs:sequence>
<xs:element ref="msg:DeliveryTimestamp"/>
- <xs:element ref="msg:RelayedViaERV" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
- <xs:element name="PartialSuccess" type="msg:DeliveryAnswerType">
+ <xs:element name="PartialSuccess">
<xs:annotation>
<xs:documentation>Zustellstück wurde erfolgreich übernommen, attachment wird später geladen</xs:documentation>
</xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="msg:DeliveryAnswerType"/>
+ </xs:complexContent>
+ </xs:complexType>
</xs:element>
<xs:element name="Error">
<xs:annotation>
- <xs:documentation>Zustellstück konnte nicht erfolgreich angenommen werden</xs:documentation>
+ <xs:documentation>Zustellstück konnte nicht übernommen werden</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
@@ -88,9 +100,15 @@
</xs:complexType>
</xs:element>
</xs:choice>
+ <xs:element ref="msg:RelayedViaERV" minOccurs="0"/>
<xs:element ref="dsig:Signature"/>
</xs:sequence>
<xs:attribute name="Version" type="msg:VersionNumberType"/>
+ <xs:attribute name="Id" type="xs:ID" use="optional">
+ <xs:annotation>
+ <xs:documentation>Eindeutige ID des Elements, um in der Signatur referenziert werden zu können </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:complexType>
<xs:element name="DeliveryRequestStatusACK" type="msg:DeliveryRequestStatusACKType">
<xs:annotation>
@@ -118,7 +136,6 @@
<xs:sequence>
<xs:element ref="msg:SenderDetails"/>
<xs:element ref="msg:ReceiverDetails"/>
- <xs:element ref="msg:RelayedViaERV" minOccurs="0"/>
<xs:element ref="msg:Timestamp">
<xs:annotation>
<xs:documentation>Timestamp der Nachrichtenoperation, welcher vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Annahmezeitpunkt</xs:documentation>
@@ -129,19 +146,28 @@
<xs:documentation>Benutzer, der die Nachricht angenommen hat.</xs:documentation>
</xs:annotation>
</xs:element>
- <xs:element ref="msg:Answer" maxOccurs="unbounded"/>
+ <xs:element ref="msg:Answer"/>
<xs:element ref="dsig:Signature"/>
<xs:element name="AdditionalFormat" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:base64Binary">
- <xs:attribute name="Type" type="xs:token" use="required"/>
+ <xs:attribute name="Type" type="xs:token" use="required">
+ <xs:annotation>
+ <xs:documentation>Als MIME-Type ist „application/pdf“ zu verwenden</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Version" type="msg:VersionNumberType"/>
+ <xs:attribute name="Id" type="xs:ID" use="optional">
+ <xs:annotation>
+ <xs:documentation>Eindeutige ID des Elements, um in der Signatur referenziert zu können </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
@@ -284,6 +310,11 @@
</xs:choice>
</xs:sequence>
</xs:complexType>
+ <xs:element name="AustrianAddressesOnly" type="msg:IndicatorType">
+ <xs:annotation>
+ <xs:documentation>Die Existenz des Elements zeigt an, dass die gesuchte Person in Österreich gemeldet sein muss</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="AuthLevel" type="msg:token256">
<xs:annotation>
<xs:documentation>Höchstes Authentifizierungsniveau mit dem sich der Teilnehmer beim Portal/Kommunikationssystem angemeldet hatte. Folgende Werte sind zulässig - absteigend sortiert nach der Höhe des Authentifizierungsniveaus: "EID" > "FON" > "LOW"
@@ -331,6 +362,11 @@
</xs:element>
</xs:sequence>
</xs:complexType>
+ <xs:element name="ClearingProfilID" type="xs:token">
+ <xs:annotation>
+ <xs:documentation>Ist zu verwenden, wenn die Abrechnung über ein anderes Profil erfolgen soll, als dem Versender-Profil </xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="ConfirmationAddress">
<xs:annotation>
<xs:documentation>Webservice oder E-Mail-Adresse, an welches die Zustellbestätigung oder Fehlermeldung weitergeleitet wird (Callback)</xs:documentation>
@@ -439,6 +475,31 @@
</xs:element>
</xs:sequence>
</xs:complexType>
+ <xs:element name="ERVConfirmedDelivery" type="msg:ERVConfirmedDeliveryType" substitutionGroup="msg:Answer">
+ <xs:annotation>
+ <xs:documentation>Diese Operation zeigt an, dass eine in den ERV weitergeleitete Nachricht erfolgreich im Verfügungsbereich des Empfängers eingelangt ist. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="ERVConfirmedDeliveryType">
+ <xs:complexContent>
+ <xs:extension base="msg:AbstractOperationType">
+ <xs:sequence>
+ <xs:element ref="msg:ERVCode"/>
+ <xs:element ref="msg:ERVDeliveryTimestamp"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="ERVCode" type="msg:token256">
+ <xs:annotation>
+ <xs:documentation>Anschriftcode des Elektronischen Rechtsverkehrs der Justiz (ERV): Wenn die Nachricht in den ERV weitergeleitet wird, ist der Anschriftcode - zwecks Nachvollziehbarkeit - bis zum Versender zurückgegeben.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ERVDeliveryTimestamp" type="xs:dateTime">
+ <xs:annotation>
+ <xs:documentation>Datum, wann die Zustellung in der jeweiligen Übermittlungsstelle und damit im Verfügungsbereich des Empfängers eingelangt ist, d.h. die Zustellung erfolgt ist, wird als Zustellzeitpunkt verwendet und an das jeweilige Zustellsystem zurück-gemeldet. Dieses Datum ist gemäß GOG berechnet und gibt den nächsten auf die Ankunft in der Übermittlungsstelle folgenden Werktag an und enthält keine Zeitangabe.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="GZ" type="xs:token">
<xs:annotation>
<xs:documentation>Geschäftszahl</xs:documentation>
@@ -459,7 +520,7 @@
<xs:documentation>element of internet address type</xs:documentation>
</xs:annotation>
</xs:element>
- <xs:element name="Language" type="msg:AustrianEthicMinorityLanguageType">
+ <xs:element name="Language" type="msg:AustrianLanguageType">
<xs:annotation>
<xs:documentation>Sprache in welcher der Zustellnachweis gesendet werden soll</xs:documentation>
</xs:annotation>
@@ -531,7 +592,7 @@
</xs:element>
<xs:complexType name="MetadataEntryType">
<xs:sequence>
- <xs:element name="OID">
+ <xs:element name="OID" type="xs:token">
<xs:annotation>
<xs:documentation>Unique object identifier</xs:documentation>
</xs:annotation>
@@ -677,6 +738,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
<xs:element ref="p:Identification"/>
<xs:sequence>
<xs:element ref="p:Person"/>
+ <xs:element ref="msg:AustrianAddressesOnly" minOccurs="0"/>
<xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:choice>
@@ -700,10 +762,15 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="RelayedViaERV" type="xs:boolean">
+ <xs:element name="RelayedViaERV">
<xs:annotation>
<xs:documentation>Gibt an ob das Zustellstück über den ERV zugestellt wurde</xs:documentation>
</xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="msg:ERVCode"/>
+ </xs:sequence>
+ </xs:complexType>
</xs:element>
<xs:element name="Roles">
<xs:annotation>
@@ -728,6 +795,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
<xs:complexType>
<xs:sequence>
<xs:element ref="msg:SenderPerson"/>
+ <xs:element ref="msg:ClearingProfilID" minOccurs="0"/>
<xs:element ref="msg:Logo" minOccurs="0"/>
<xs:element ref="msg:AdditionalCriteria" minOccurs="0">
<xs:annotation>
@@ -736,7 +804,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
</xs:element>
<xs:element ref="msg:ConfirmationAddress" minOccurs="0">
<xs:annotation>
- <xs:documentation>Webservice oder E-Mail-Adresse, an welches die Zustellbestätigung, der Zustellnachweis oder Fehlermeldung weitergeleitet wird (Callback)</xs:documentation>
+ <xs:documentation>Webservice oder E-Mail-Adresse, an welche die Übergabebestätigung, der Zustellnachweis oder die Fehlermeldung zurückgemeldet wird (Callback)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
@@ -820,10 +888,15 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
</xs:annotation>
<xs:complexType>
<xs:sequence>
- <xs:element ref="msg:Tag" maxOccurs="unbounded"/>
+ <xs:element ref="msg:Tag" maxOccurs="20"/>
</xs:sequence>
</xs:complexType>
</xs:element>
+ <xs:element name="TargetIdentification" type="p:IdentificationType">
+ <xs:annotation>
+ <xs:documentation>Wenn im DeliveryRequest ein Target angegeben wurde, d.h. der Bereich und das VKZ des behördlichen Versenders, dann enthält das TargetIdentification Element das entsprechende, umgeschlüsselt vbPK für den Versender</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="Timestamp" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Timestamp, der vom Anzeigemodul erzeugt wurde. Im Falle der Annahme einer Zustellung entspricht der Timestamp dem Zustellzeitpunkt</xs:documentation>
@@ -841,7 +914,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
• Receiver: Empfänger persönlich
• Representative: Vertretungsbevollmächtigter
• InsolvencyAdministrator: Insolvenzverwalters
-
+• System: Eine Systemkomponente der eZustellung ist Auslöser der MessageOperation
</xs:documentation>
</xs:annotation>
<xs:simpleType>
@@ -849,10 +922,12 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
<xs:enumeration value="Receiver"/>
<xs:enumeration value="Representative"/>
<xs:enumeration value="InsolvencyAdministrator"/>
+ <xs:enumeration value="System"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="p:Identification"/>
+ <xs:element ref="msg:TargetIdentification" minOccurs="0"/>
<xs:element ref="p:PhysicalPerson"/>
</xs:sequence>
</xs:complexType>
@@ -868,7 +943,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
</xs:element>
<xs:element name="ZSDeliveryID" type="msg:token256">
<xs:annotation>
- <xs:documentation>ID des Zustellstücke. Die ZSDeliveryID in Kombination mit der ParticipantID des Zustellsystems, welches die Nachricht übernmittelt hat muss eindeutig sein.</xs:documentation>
+ <xs:documentation>ID des Zustellstückes MUSS über alle Zustellsysteme eindeutig sein. Die ZSDeliveryID wird durch eine UUID gemäß RFC-4122 repräsentiert. Der Node-Teil MUSS pro Zustellsystem eindeutig sein und wird vom Anzeigemodul vergeben.</xs:documentation>
</xs:annotation>
</xs:element>
<!--### Simple Types-->
@@ -881,13 +956,14 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
<xs:maxLength value="256"/>
</xs:restriction>
</xs:simpleType>
- <xs:simpleType name="AustrianEthicMinorityLanguageType">
+ <xs:simpleType name="AustrianLanguageType">
<xs:annotation>
<xs:documentation>2-stelliger Sprachcode der anerkannten österreichischen Minderheiten</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:minLength value="2"/>
<xs:maxLength value="2"/>
+ <xs:enumeration value="DE"/>
<xs:enumeration value="HR"/>
<xs:enumeration value="HU"/>
<xs:enumeration value="SL"/>
@@ -907,7 +983,7 @@ Landeskennung ::= {2} ALPHA; (gem. ISO 3166 - Alpha2)
<xs:documentation>Typ definiert einen regulären Ausdruck für Versionsnummer - z.B. 1.0.0</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
- <xs:pattern value="[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}"/>
+ <xs:pattern value="[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
diff --git a/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl b/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl
index c3c1c6f..7948786 100644
--- a/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl
+++ b/src/main/resources/zusetnvz/ksb2tnvz_p2.wsdl
@@ -46,7 +46,7 @@
<wsdl:binding name="TnvzKsbPortSoap12" type="service:TnvzKsbPort">
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetVersion">
- <soap12:operation soapAction="GetVersion" soapActionRequired="false"/>
+ <soap12:operation soapAction="GetVersion" soapActionRequired="false" style="document"/>
<wsdl:input name="GetVersionRequest">
<soap12:body use="literal"/>
</wsdl:input>
@@ -55,7 +55,7 @@
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ImportNonQualifiedData">
- <soap12:operation soapAction="ImportNonQualifiedData" soapActionRequired="false"/>
+ <soap12:operation soapAction="ImportNonQualifiedData" soapActionRequired="false" style="document"/>
<wsdl:input name="ImportNonQualifiedDataRequest">
<soap12:body use="literal"/>
</wsdl:input>
@@ -72,7 +72,6 @@
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
- <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
</wsdl:binding>
<wsdl:service name="TnvzKsbPortService">
<wsdl:port name="TnvzKsbPortSoap12" binding="service:TnvzKsbPortSoap12">
diff --git a/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl b/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl
index 9501552..2ba1eea 100644
--- a/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl
+++ b/src/main/resources/zusetnvz/zuse2tnvz_p2.wsdl
@@ -58,7 +58,7 @@
<wsdl:binding name="TNVZServicePortSoap12" type="service:TNVZServicePort">
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetVersion">
- <soap12:operation soapAction="GetVersion" soapActionRequired="false"/>
+ <soap12:operation soapAction="GetVersion" soapActionRequired="false" style="document"/>
<wsdl:input name="GetVersionRequest">
<soap12:body use="literal"/>
</wsdl:input>
@@ -67,7 +67,7 @@
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetInfo">
- <soap12:operation soapAction="GetInfo" soapActionRequired="false"/>
+ <soap12:operation soapAction="GetInfo" soapActionRequired="false" style="document"/>
<wsdl:input name="GetInfoRequest">
<soap12:body use="literal"/>
</wsdl:input>
diff --git a/src/main/resources/zusetnvz/zusenqd_p2.xsd b/src/main/resources/zusetnvz/zusenqd_p2.xsd
index 5c31408..60a0c32 100644
--- a/src/main/resources/zusetnvz/zusenqd_p2.xsd
+++ b/src/main/resources/zusetnvz/zusenqd_p2.xsd
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet -->
-<xs:schema xmlns:nqd="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0">
- <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/>
+<xs:schema xmlns:nqd="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/nonqualifieddata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.007">
+ <!--### ZUSE-Personendaten: namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" version="2.2.007" ###-->
<xs:import namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" schemaLocation="../zusemsg/zuse_mypersondata_en_p2.xsd"/>
+ <!--### ZUSE-Nachricht: namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" version="2.2.007" ###-->
+ <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/>
<!--********* Definition der Request- und Response-Elemente ***********-->
<!--*** Abfrage der Webserviceversion ***-->
<xs:element name="GetVersionRequest" type="msg:SimpleRequestType"/>
@@ -12,7 +14,7 @@
<xs:element name="Version">
<xs:simpleType>
<xs:restriction base="xs:token">
- <xs:enumeration value="2.2.0"/>
+ <xs:enumeration value="2.2.007"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
@@ -75,7 +77,7 @@
<xs:documentation>Zustellsystem, welches die Löschung durchführt</xs:documentation>
</xs:annotation>
</xs:element>
- <xs:element name="tnvzDeleteEntryList">
+ <xs:element name="DeleteEntryList">
<xs:annotation>
<xs:documentation>Liste der von einer (Daten-)Löschung betroffenen Teilnehmer</xs:documentation>
</xs:annotation>
diff --git a/src/main/resources/zusetnvz/zusetnvz_p2.xsd b/src/main/resources/zusetnvz/zusetnvz_p2.xsd
index 3fba91c..81c9082 100644
--- a/src/main/resources/zusetnvz/zusetnvz_p2.xsd
+++ b/src/main/resources/zusetnvz/zusetnvz_p2.xsd
@@ -1,8 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet -->
-<xs:schema xmlns:tnvz="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.0">
- <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/>
+<!-- ###
+
+ Die Versionsnummer des Schemas wird immer dann hochgezogen, wenn das Schema
+ selbst verändert wurde aber auch dann, wenn zumindest eines der importierten
+ ZUSE-Schemata angepasst wurde.
+
+ ###-->
+<xs:schema xmlns:tnvz="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msg="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://reference.e-government.gv.at/namespace/zustellung/tnvz/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.007">
+ <!--### Imports ###-->
+ <!--### ZUSE-Personendaten: namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" version="2.2.007" ###-->
<xs:import namespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" schemaLocation="../zusemsg/zuse_mypersondata_en_p2.xsd"/>
+ <!--### ZUSE-Nachricht: namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" version="2.2.007" ###-->
+ <xs:import namespace="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#" schemaLocation="../zusemsg/zuse_p2.xsd"/>
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../zusemsg/W3C-XMLDSig.xsd"/>
<xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="../zusemsg/xenc-schema.xsd"/>
<!--******** Definition der Request- und Response-Elemente ********-->
@@ -14,7 +24,7 @@
<xs:element name="Version">
<xs:simpleType>
<xs:restriction base="xs:token">
- <xs:enumeration value="2.2.0"/>
+ <xs:enumeration value="2.2.006"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
@@ -60,13 +70,16 @@
<xs:element name="QueryPersonResponse">
<xs:complexType>
<xs:choice>
- <xs:element name="QueryResultList">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="QueryResult" type="tnvz:PersonResultType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
+ <xs:sequence>
+ <xs:element ref="tnvz:StandardMimeTypeList"/>
+ <xs:element name="QueryResultList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="QueryResult" type="tnvz:PersonResultType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
<xs:element ref="tnvz:Error"/>
</xs:choice>
</xs:complexType>
@@ -91,13 +104,16 @@
<xs:element name="QueryAddressabilityResponse">
<xs:complexType>
<xs:choice>
- <xs:element name="QueryResultList">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="QueryResult" type="tnvz:AddressabilityResultType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
+ <xs:sequence>
+ <xs:element ref="tnvz:StandardMimeTypeList"/>
+ <xs:element name="QueryResultList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="QueryResult" type="tnvz:AddressabilityResultType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
<xs:element ref="tnvz:Error"/>
</xs:choice>
</xs:complexType>
@@ -126,6 +142,7 @@
</xs:choice>
<xs:element ref="msg:PreAdviceNote" minOccurs="0"/>
<xs:element ref="msg:IgnorePostRedirectionOrder" minOccurs="0"/>
+ <xs:element ref="msg:MetadataList" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
@@ -153,6 +170,7 @@
<xs:complexType name="PersonResultSuccessType">
<xs:sequence>
<xs:element ref="p:Identification"/>
+ <xs:element name="AllStandardMimeTypes" type="msg:IndicatorType" minOccurs="0"/>
<xs:element ref="tnvz:MimeTypeList" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
@@ -184,6 +202,7 @@
</xs:choice>
<xs:element ref="msg:PreAdviceNote" minOccurs="0"/>
<xs:element ref="msg:IgnorePostRedirectionOrder" minOccurs="0"/>
+ <xs:element ref="msg:MetadataList" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
@@ -238,7 +257,7 @@
<xs:element ref="p:Identification"/>
<xs:sequence>
<xs:element ref="p:Person"/>
- <xs:element ref="tnvz:AustrianAddressesOnly" minOccurs="0"/>
+ <xs:element ref="msg:AustrianAddressesOnly" minOccurs="0"/>
<xs:element ref="msg:NotificationAddressList" minOccurs="0">
<xs:annotation>
<xs:documentation>Ein oder mehrere Verständigungsadressen mit deren Hilfe der Empfänger eindeutig bestimmt werden soll</xs:documentation>
@@ -253,18 +272,23 @@
</xs:choice>
</xs:complexType>
</xs:element>
- <xs:element name="AustrianAddressesOnly" type="msg:IndicatorType">
+ <xs:element name="StandardMimeTypeList" type="tnvz:MimeTypeListType">
<xs:annotation>
- <xs:documentation>Die Existenz des Elements zeigt an, dass die gesuchte Person in Österreich gemeldet sein muss</xs:documentation>
+ <xs:documentation>Liste der üblichen Formaten, die der Teilnehmer jedenfalls akzeptieren muss und nicht abwählen kann. (Ausnahme: der ERV verarbeitet nur für die Langzeitarchivung geeignete PDF Formate)</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:complexType name="MimeTypeListType">
+ <xs:sequence>
+ <xs:element ref="msg:MimeType" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
<xs:element name="MimeTypeList">
<xs:annotation>
<xs:documentation>Liste der Dateiformate, die vom Empfänger neben den üblichen Formaten unterstützt werden </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
- <xs:element ref="msg:MimeType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="msg:MimeType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
diff --git a/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java b/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java
index 95c7140..2794fcd 100644
--- a/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java
+++ b/src/test/java/at/gv/egiz/moazs/ITEndToEndTest.java
@@ -12,8 +12,6 @@ import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType;
import at.gv.zustellung.msg.xsd.DeliveryRequestType;
import at.gv.zustellung.tnvz.xsd.TNVZServicePort;
import org.apache.commons.io.FileUtils;
-import org.awaitility.Awaitility;
-import org.awaitility.Duration;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -42,7 +40,7 @@ import java.util.function.Consumer;
import static at.gv.zustellung.app2mzs.xsd.DeliveryNotificationACKType.deliveryNotificationACKTypeBuilder;
import static at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType.Value.valueBuilder;
import static at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType.identificationTypeBuilder;
-import static at.gv.zustellung.msg.xsd.DeliveryAnswerType.deliveryAnswerTypeBuilder;
+import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.PartialSuccess.partialSuccessBuilder;
import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder;
import static java.net.http.HttpResponse.BodyHandlers.ofString;
import static org.apache.commons.io.FileUtils.readFileToString;
@@ -82,7 +80,6 @@ public class ITEndToEndTest {
public Consumer<byte[]> signatureVerifier() {
return bytes -> {};
}
-
@Bean
@Primary
public ClientFactory mockClientFactory() {
@@ -116,7 +113,7 @@ public class ITEndToEndTest {
.withValue(value).withId("id").withType("type").build();
var tnvzHelperTest = new TnvzHelperTest();
tnvzHelperTest.setup();
- var tnvzSuccess = tnvzHelperTest.tnvzSuccess(List.of("*/*"), receiverId);
+ var tnvzSuccess = tnvzHelperTest.tnvzSuccess(List.of(""), true, receiverId);
when(tnvz.queryPerson(any())).thenReturn(tnvzSuccess);
return tnvz;
@@ -133,7 +130,7 @@ public class ITEndToEndTest {
var appDeliveryID = request.getMetaData().getAppDeliveryID();
var zsDeliveryID = "ZSDID-" + appDeliveryID;
var responseID = RequestStatusResponse.getResponseID(appDeliveryID);
- var answer = deliveryAnswerTypeBuilder()
+ var answer = partialSuccessBuilder()
.withDeliverySystem(DELIVERY_SYSTEM)
.withAppDeliveryID(appDeliveryID)
.withZSDeliveryID(zsDeliveryID)
diff --git a/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java
index 550f089..0d5fe9d 100644
--- a/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java
+++ b/src/test/java/at/gv/egiz/moazs/TnvzHelperTest.java
@@ -1,13 +1,13 @@
package at.gv.egiz.moazs;
-import at.gv.egiz.moazs.scheme.Mzs2MsgConverter;
import at.gv.egiz.moazs.client.TnvzHelper;
+import at.gv.egiz.moazs.scheme.Mzs2MsgConverter;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
import at.gv.zustellung.app2mzs.xsd.persondata.IdentificationType;
-import at.gv.zustellung.msg.xsd.MetaData;
-import at.gv.zustellung.msg.xsd.SystemComponentType;
+import at.gv.zustellung.msg.xsd.ObjectFactory;
import at.gv.zustellung.tnvz.xsd.MimeTypeList;
+import at.gv.zustellung.tnvz.xsd.MimeTypeListType;
import at.gv.zustellung.tnvz.xsd.QueryPersonResponse;
import at.gv.zustellung.tnvz.xsd.TNVZServicePort;
import org.junit.Before;
@@ -29,6 +29,7 @@ import static at.gv.zustellung.msg.xsd.ErrorInfoType.errorInfoTypeBuilder;
import static at.gv.zustellung.msg.xsd.MetaData.metaDataBuilder;
import static at.gv.zustellung.msg.xsd.SystemComponentType.systemComponentTypeBuilder;
import static at.gv.zustellung.tnvz.xsd.MimeTypeList.mimeTypeListBuilder;
+import static at.gv.zustellung.tnvz.xsd.MimeTypeListType.mimeTypeListTypeBuilder;
import static at.gv.zustellung.tnvz.xsd.PersonResultSuccessType.personResultSuccessTypeBuilder;
import static at.gv.zustellung.tnvz.xsd.PersonResultType.Error.errorBuilder;
import static at.gv.zustellung.tnvz.xsd.PersonResultType.personResultTypeBuilder;
@@ -42,6 +43,8 @@ import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class TnvzHelperTest {
+ private static final ObjectFactory FACTORY = new ObjectFactory();
+
private TnvzHelper helper;
@Mock
@@ -57,11 +60,11 @@ public class TnvzHelperTest {
@Test
public void acceptWildcardMimetype() {
- List<String> acceptedTypes = List.of("*/*");
+ List<String> acceptedTypes = List.of();
List<String> attachedTypes = List.of("pdf", "xml", "html", "random/attachedtype");
var receiverId = identification("zbpk", "receiver-id-value");
var deliveryRequest = deliveryRequest(attachedTypes, receiverId);
- var success = tnvzSuccess(acceptedTypes, receiverId);
+ var success = tnvzSuccess(acceptedTypes, true, receiverId);
when(port.queryPerson(any())).thenReturn(success);
var actual = helper.performQueryPersonRequest(deliveryRequest, port);
@@ -86,7 +89,7 @@ public class TnvzHelperTest {
List<String> attachedTypes = List.of("pdf", "xml", "html", "random/attachedtype");
var receiverId = identification("zbpk", "receiver-id-value");
var deliveryRequest = deliveryRequest(attachedTypes, receiverId);
- var success = tnvzSuccess(acceptedTypes, receiverId);
+ var success = tnvzSuccess(acceptedTypes, false, receiverId);
when(port.queryPerson(any())).thenReturn(success);
helper.performQueryPersonRequest(deliveryRequest, port);
@@ -98,7 +101,7 @@ public class TnvzHelperTest {
List<String> attachedTypes = List.of("pdf", "xml");
var receiverId = identification("zbpk", "receiver-id-value");
var deliveryRequest = deliveryRequest(attachedTypes, receiverId);
- var success = tnvzSuccess(acceptedTypes, receiverId);
+ var success = tnvzSuccess(acceptedTypes, false, receiverId);
when(port.queryPerson(any())).thenReturn(success);
var actual = helper.performQueryPersonRequest(deliveryRequest, port);
@@ -156,23 +159,31 @@ public class TnvzHelperTest {
.collect(toList());
}
- public QueryPersonResponse tnvzSuccess(List<String> mimeTypes, IdentificationType receiverId) {
+ public QueryPersonResponse tnvzSuccess(List<String> mimeTypes, boolean allMimetypesAccepted, IdentificationType receiverId) {
- var success = personResultSuccessTypeBuilder()
+ var successBuilder = personResultSuccessTypeBuilder()
.withMimeTypeList(setupMimeTypeList(mimeTypes))
- .withIdentification(converter.convert(receiverId))
- .build();
+ .withIdentification(converter.convert(receiverId));
+
+ if(allMimetypesAccepted) {
+ successBuilder.withAllStandardMimeTypes(FACTORY.createIndicatorType());
+ }
var personResult = personResultTypeBuilder()
- .withSuccess(success)
+ .withSuccess(successBuilder.build())
.build();
var queryResultList = queryResultListBuilder()
.withQueryResult(List.of(personResult))
.build();
+ MimeTypeListType standardList = mimeTypeListTypeBuilder()
+ .withMimeType(List.of())
+ .build();
+
return queryPersonResponseBuilder()
.withQueryResultList(queryResultList)
+ .withStandardMimeTypeList(standardList)
.build();
}
diff --git a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml
index 2f99af5..82af5cc 100644
--- a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml
+++ b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-notification.xml
@@ -33,7 +33,6 @@
<p:DateOfBirth>1984-01-24</p:DateOfBirth>
</p:PhysicalPerson>
</msg:ReceiverDetails>
- <msg:RelayedViaERV>false</msg:RelayedViaERV>
<msg:Timestamp>%s</msg:Timestamp>
<msg:Answer xsi:type="msg:AcceptedType">
<msg:NotificationsPerformed>
diff --git a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml
index f81a554..f61531f 100644
--- a/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml
+++ b/src/test/resources/at/gv/egiz/moazs/ITEndToEndTest/msg-delivery-request-status.xml
@@ -11,7 +11,6 @@
<msg:AppDeliveryID>%s</msg:AppDeliveryID>
<msg:GZ>%s</msg:GZ>
<msg:DeliveryTimestamp>%s</msg:DeliveryTimestamp>
- <msg:RelayedViaERV>false</msg:RelayedViaERV>
</msg:Success>
<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="signature-1-1">
<dsig:SignedInfo>