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:
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