commit 32124aafb399b6b2faa6e8581b07fbb2646244fb
parent f229468d6edc3511673f04d5f720100ef9ce2e55
Author: Florian Dold <florian.dold@gmail.com>
Date: Tue, 5 Nov 2019 17:46:37 +0100
message definitions
Diffstat:
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
}