libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 32124aafb399b6b2faa6e8581b07fbb2646244fb
parent f229468d6edc3511673f04d5f720100ef9ce2e55
Author: Florian Dold <florian.dold@gmail.com>
Date:   Tue,  5 Nov 2019 17:46:37 +0100

message definitions

Diffstat:
Msandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsNpkdRequest.kt | 14+++++++++++++-
Msandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsRequest.kt | 162+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Msandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsResponse.kt | 12+++---------
Msandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsTypes.kt | 18------------------
Msandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsUnsecuredRequest.kt | 14+++++++++++++-
Msandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/EbicsMessages.kt | 6------
6 files changed, 183 insertions(+), 43 deletions(-)

diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsNpkdRequest.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsNpkdRequest.kt @@ -76,13 +76,25 @@ class EbicsNpkdRequest { val product: EbicsTypes.Product? = null @get:XmlElement(name = "OrderDetails", required = true) - lateinit var orderDetails: EbicsTypes.SimpleOrderDetails + lateinit var orderDetails: OrderDetails @get:XmlElement(name = "SecurityMedium", required = true) lateinit var securityMedium: String } @XmlAccessorType(XmlAccessType.NONE) + @XmlType(name = "", propOrder = ["orderType", "orderAttribute"]) + class OrderDetails { + @get:XmlElement(name = "OrderType", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + lateinit var orderType: String + + @get:XmlElement(name = "OrderAttribute", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + lateinit var orderAttribute: String + } + + @XmlAccessorType(XmlAccessType.NONE) @XmlType(name = "") class EmptyMutableHeader diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsRequest.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsRequest.kt @@ -1,7 +1,13 @@ package tech.libeufin.schema.ebics_h004 import org.apache.xml.security.binding.xmldsig.SignatureType +import java.math.BigInteger import javax.xml.bind.annotation.* +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter +import javax.xml.bind.annotation.adapters.HexBinaryAdapter +import javax.xml.bind.annotation.adapters.XmlAdapter +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter +import javax.xml.datatype.XMLGregorianCalendar @XmlAccessorType(XmlAccessType.NONE) @XmlType(name = "", propOrder = ["header", "authSignature", "body"]) @@ -17,11 +23,6 @@ class EbicsRequest { lateinit var body: Body @XmlAccessorType(XmlAccessType.NONE) - class Body { - - } - - @XmlAccessorType(XmlAccessType.NONE) @XmlType(name = "", propOrder = ["static", "mutable"]) class Header { @get:XmlElement(name = "static", required = true) @@ -32,15 +33,160 @@ class EbicsRequest { @get:XmlAttribute(name = "authenticate", required = true) var authenticate: Boolean = false - } - class StaticHeaderType { + abstract class StaticHeaderType { + @get:XmlElement(name = "HostID", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + lateinit var hostID: String + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "Nonce", type = String::class) + @get:XmlJavaTypeAdapter(HexBinaryAdapter::class) + @get:XmlSchemaType(name = "hexBinary") + lateinit var nonce: ByteArray + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "Timestamp") + @get:XmlSchemaType(name = "dateTime") + var timestamp: XMLGregorianCalendar? = null + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "PartnerID") + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + var partnerID: String? = null + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "UserID") + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + var userID: String? = null + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "SystemID") + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + var systemID: String? = null + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "Product") + val product: EbicsTypes.Product? = null + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "OrderDetails") + var orderDetails: OrderDetails? = null + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "SecurityMedium") + var securityMedium: String? = null + + /** + * Present only in the initialization phase. + */ + @get:XmlElement(name = "NumSegments") + var numSegments: BigInteger? = null + + /** + * Present only in the transaction / finalization phase. + */ + @get:XmlElement(name = "TransactionID") + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + var transactionID: String? = null } + @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "") + @XmlType(name = "", propOrder = ["transactionPhase", "segmentNumber"]) class MutableHeader { + @get:XmlElement(name = "TransactionID") + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + var transactionPhase: String? = null + + /** + * Number of the currently transmitted segment, if this message + * contains order data. + */ + @get:XmlElement(name = "SegmentNumber") + var segmentNumber: BigInteger? = null + + } + + @XmlAccessorType(XmlAccessType.NONE) + @XmlType(name = "", propOrder = ["orderType", "orderID", "orderAttribute"]) + class OrderDetails { + @get:XmlElement(name = "OrderType", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + lateinit var orderType: String + + /** + * Only present if this ebicsRequest is a upload order + * relating to an already existing order. + */ + @get:XmlElement(name = "OrderId", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + var orderID: String? = null + + @get:XmlElement(name = "OrderAttribute", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + lateinit var orderAttribute: String + } + + @XmlAccessorType(XmlAccessType.NONE) + @XmlType(propOrder = ["preValidation", "dataTransfer", "transferReceipt"]) + class Body { + @get:XmlElement(name = "PreValidation") + var preValidation: PreValidation? = null + + @get:XmlElement(name = "DataTransfer") + var dataTransfer: DataTransfer? = null + + @get:XmlElement(name = "TransferReceipt") + var transferReceipt: TransferReceipt? = null + } + + /** + * FIXME: not implemented yet + */ + @XmlAccessorType(XmlAccessType.NONE) + class PreValidation { + @get:XmlAttribute(name = "authenticate", required = true) + var authenticate: Boolean = false + } + + @XmlAccessorType(XmlAccessType.NONE) + @XmlType(propOrder = ["dataEncryptionInfo", "signatureData", "orderData"]) + class DataTransfer { + @get:XmlElement(name = "DataEncryptionInfo") + var dataEncryptionInfo: EbicsTypes.DataEncryptionInfo? = null + + @get:XmlElement(name = "SignatureData") + var signatureData: ByteArray? = null + + @get:XmlElement(name = "OrderData") + var orderData: ByteArray? = null + } + + @XmlAccessorType(XmlAccessType.NONE) + @XmlType(name = "", propOrder = ["receiptCode"]) + class TransferReceipt { + @get:XmlAttribute(name = "authenticate", required = true) + var authenticate: Boolean = false + @get:XmlElement(name = "ReceiptCode") + var receiptCode: Int? = null } } diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsResponse.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsResponse.kt @@ -61,8 +61,8 @@ class EbicsResponse { @XmlAccessorType(XmlAccessType.NONE) @XmlType( - name = "ResponseMutableHeaderType", - propOrder = ["transactionPhase", "segmentNumber", "orderID", "returnCode", "reportText", "any"] + name = "", + propOrder = ["transactionPhase", "segmentNumber", "orderID", "returnCode", "reportText"] ) class MutableHeaderType { @get:XmlElement(name = "TransactionPhase", required = true) @@ -86,9 +86,6 @@ class EbicsResponse { @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class) @get:XmlSchemaType(name = "normalizedString") lateinit var reportText: String - - @get:XmlAnyElement(lax = true) - var any: List<Any>? = null } @XmlAccessorType(XmlAccessType.NONE) @@ -118,16 +115,13 @@ class EbicsResponse { } @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "DataTransferResponseType", propOrder = ["dataEncryptionInfo", "orderData", "any"]) + @XmlType(name = "DataTransferResponseType", propOrder = ["dataEncryptionInfo", "orderData"]) class DataTransferResponseType { @get:XmlElement(name = "DataEncryptionInfo") var dataEncryptionInfo: EbicsTypes.DataEncryptionInfo? = null @get:XmlElement(name = "OrderData", required = true) lateinit var orderData: OrderData - - @get:XmlAnyElement(lax = true) - var any: List<Any>? = null } diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsTypes.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsTypes.kt @@ -53,24 +53,6 @@ class EbicsTypes private constructor() { var instituteID: String? = null } - /** - * Order details for the static EBICS header. - */ - @XmlAccessorType(XmlAccessType.NONE) - @XmlType(name = "OrderDetailsType", propOrder = ["orderType", "orderAttribute"]) - class SimpleOrderDetails { - @get:XmlElement(name = "OrderType", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderType: String - - @get:XmlElement(name = "OrderAttribute", required = true) - @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) - lateinit var orderAttribute: String - } - - - - @XmlAccessorType(XmlAccessType.NONE) class DataEncryptionInfo { diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsUnsecuredRequest.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsUnsecuredRequest.kt @@ -85,9 +85,21 @@ class EbicsUnsecuredRequest { val product: EbicsTypes.Product? = null @get:XmlElement(name = "OrderDetails", required = true) - lateinit var orderDetails: EbicsTypes.SimpleOrderDetails + lateinit var orderDetails: OrderDetails @get:XmlElement(name = "SecurityMedium", required = true) lateinit var securityMedium: String } + + @XmlAccessorType(XmlAccessType.NONE) + @XmlType(name = "", propOrder = ["orderType", "orderAttribute"]) + class OrderDetails { + @get:XmlElement(name = "OrderType", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + lateinit var orderType: String + + @get:XmlElement(name = "OrderAttribute", required = true) + @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) + lateinit var orderAttribute: String + } } diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/EbicsMessages.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/EbicsMessages.kt @@ -42,9 +42,6 @@ class PubKeyValueType { @get:XmlElement(name = "TimeStamp") @get:XmlSchemaType(name = "dateTime") var timeStamp: XMLGregorianCalendar? = null - - @XmlAnyElement(lax = true) - var any: List<Any>? = null } @@ -92,7 +89,4 @@ class SignaturePubKeyOrderData { @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class) @get:XmlSchemaType(name = "token") lateinit var userID: String - - @get:XmlAnyElement(lax = true) - var any: List<Any>? = null }