libeufin

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

commit 08950841cf4e29d6309690999a07f2d1304d9b0d
parent 31548c152fa85c5eb69db02d68d4acdf4766dafd
Author: Marcello Stanisci <stanisci.m@gmail.com>
Date:   Mon, 23 Sep 2019 16:34:33 +0200

Putting protocol version/number into HEV response.

Diffstat:
Msrc/main/kotlin/Main.kt | 14+++++++++++---
Msrc/main/kotlin/tech/libeufin/XMLManagement.kt | 6+-----
Msrc/main/kotlin/tech/libeufin/messages/HEVResponse.kt | 45++++++++++++++++++++-------------------------
Asrc/main/kotlin/tech/libeufin/messages/ProtocolAndVersion.kt | 8++++++++
4 files changed, 40 insertions(+), 33 deletions(-)

diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt @@ -28,6 +28,7 @@ import io.ktor.server.engine.* import io.ktor.server.netty.* import tech.libeufin.messages.HEVResponse import tech.libeufin.messages.HEVResponseDataType +import tech.libeufin.messages.ProtocolAndVersion import javax.swing.text.Document import javax.xml.bind.JAXBElement @@ -40,6 +41,7 @@ fun main(args: Array<String>) { get("/") { logger.debug("GET: not implemented") call.respondText("Hello LibEuFin!", ContentType.Text.Plain) + return@get } post("/") { val body: String = call.receiveText() @@ -67,10 +69,16 @@ fun main(args: Array<String>) { if ("ebicsHEVRequest" == bodyDocument.documentElement.localName) { - /* known type, and already valid here! */ - val hevResponse: HEVResponse = HEVResponse("rc", "rt") - val jaxbHEV: JAXBElement<HEVResponseDataType> = hevResponse.makeHEVResponse() + val hevResponse: HEVResponse = HEVResponse( + "000000", + "EBICS_OK", + arrayOf( + ProtocolAndVersion("H003", "02.40"), + ProtocolAndVersion("H004", "02.50") + ) + ) + val jaxbHEV: JAXBElement<HEVResponseDataType> = hevResponse.makeHEVResponse() val responseText: String? = xmlProcess.getStringFromJaxb(jaxbHEV) // FIXME: check if String is actually non-NULL! call.respondText(contentType = ContentType.Application.Xml, diff --git a/src/main/kotlin/tech/libeufin/XMLManagement.kt b/src/main/kotlin/tech/libeufin/XMLManagement.kt @@ -14,13 +14,9 @@ import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; -import javax.xml.validation.*; // has SchemaFactory -import javax.xml.parsers.DocumentBuilder; +import javax.xml.validation.*; // has SchemaFactory() import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; -import sun.misc.IOUtils -import tech.libeufin.messages.HEVResponseDataType; -import java.util.stream.Collectors /** * This class takes care of importing XSDs and validate diff --git a/src/main/kotlin/tech/libeufin/messages/HEVResponse.kt b/src/main/kotlin/tech/libeufin/messages/HEVResponse.kt @@ -1,38 +1,33 @@ -package tech.libeufin.messages; +package tech.libeufin.messages -import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBElement -/*public class HEVResponse { - HEVResponseDataType value; +class HEVResponse( + returnCode: String, + reportText: String, + protocolAndVersion: Array<ProtocolAndVersion>?) { - public HEVResponse(String returnCode, String reportText){ - SystemReturnCodeType srt = new SystemReturnCodeType(); - srt.setReturnCode(returnCode); - srt.setReportText(reportText); - this.value = new HEVResponseDataType(); - this.value.setSystemReturnCode(srt); - } + constructor( + returnCode: String, + reportText: String + ) : this(returnCode, reportText, null) - /** - * Instantiate the root element. - * @return the JAXB object. - */ - public JAXBElement<HEVResponseDataType> makeHEVResponse(){ - ObjectFactory of = new ObjectFactory(); - return of.createEbicsHEVResponse(this.value); - } -}*/ - -class HEVResponse(returnCode: String, reportText: String) { - - val value = { - // SystemReturnCodeType srt = new SystemReturnCodeType(); + val value: HEVResponseDataType = { val srt = SystemReturnCodeType() srt.setReturnCode(returnCode); srt.setReportText(reportText); val value = HEVResponseDataType(); value.setSystemReturnCode(srt); + + if (null != protocolAndVersion) { + protocolAndVersion.forEach { + val entry = HEVResponseDataType.VersionNumber() + entry.setProtocolVersion(it.protocol) + entry.setValue(it.version) + value.getVersionNumber().add(entry) + } + } value }() diff --git a/src/main/kotlin/tech/libeufin/messages/ProtocolAndVersion.kt b/src/main/kotlin/tech/libeufin/messages/ProtocolAndVersion.kt @@ -0,0 +1,7 @@ +package tech.libeufin.messages + +class ProtocolAndVersion(protocol: String, version: String) { + + val protocol = protocol + val version = version +} +\ No newline at end of file