[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] branch master updated: migrating to java.time
From: |
gnunet |
Subject: |
[libeufin] branch master updated: migrating to java.time |
Date: |
Mon, 25 May 2020 18:01:50 +0200 |
This is an automated email from the git hooks/post-receive script.
ms pushed a commit to branch master
in repository libeufin.
The following commit(s) were added to refs/heads/master by this push:
new 313f461 migrating to java.time
313f461 is described below
commit 313f461250a03566dc850000229420c4355e0206
Author: MS <address@hidden>
AuthorDate: Mon May 25 18:01:30 2020 +0200
migrating to java.time
---
.../src/main/kotlin/tech/libeufin/nexus/Helpers.kt | 6 ++--
nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt | 6 ++--
nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 15 ++++++----
.../tech/libeufin/sandbox/EbicsProtocolBackend.kt | 21 +++++++------
util/src/main/kotlin/time.kt | 34 +++++++++++++---------
5 files changed, 49 insertions(+), 33 deletions(-)
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
index e194269..6766d30 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Helpers.kt
@@ -113,6 +113,9 @@ fun processCamtMessage(
if (acct == null) {
throw NexusError(HttpStatusCode.NotFound, "user not found")
}
+ val bookingDate = parseDashedDate(
+
camt53doc.pickString("//*[local-name()='BookgDt']//*[local-name()='Dt']")
+ )
RawBankTransactionEntity.new {
bankAccount = acct
unstructuredRemittanceInformation =
@@ -121,8 +124,7 @@ fun processCamtMessage(
currency =
camt53doc.pickString("//*[local-name()='Ntry']//*[local-name()='Amt']/@Ccy")
amount =
camt53doc.pickString("//*[local-name()='Ntry']//*[local-name()='Amt']")
status =
camt53doc.pickString("//*[local-name()='Ntry']//*[local-name()='Sts']")
- bookingDate =
-
parseDashedDate(camt53doc.pickString("//*[local-name()='BookgDt']//*[local-name()='Dt']")).millis
+ this.bookingDate = bookingDate.millis()
counterpartIban =
camt53doc.pickString("//*[local-name()='${if
(this.transactionType == "DBIT") "CdtrAcct" else
"DbtrAcct"}']//*[local-name()='IBAN']")
counterpartName =
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt
index 7becd84..8c042a1 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/JSON.kt
@@ -5,9 +5,9 @@ import com.fasterxml.jackson.annotation.JsonSubTypes
import com.fasterxml.jackson.annotation.JsonTypeInfo
import com.fasterxml.jackson.annotation.JsonTypeName
import com.fasterxml.jackson.databind.JsonNode
-import org.joda.time.DateTime
import tech.libeufin.util.*
import java.time.LocalDate
+import java.time.LocalDateTime
data class EbicsBackupRequestJson(
val passphrase: String
@@ -22,7 +22,7 @@ data class EbicsStandardOrderParamsJson(val dateRange:
EbicsDateRangeJson?) {
var dateRange: EbicsDateRange? = if (this.dateRange != null) {
EbicsDateRange(
LocalDate.parse(this.dateRange.start ?: "1970-01-31"),
- LocalDate.parse(this.dateRange.end ?:
DateTime.now().toDashedDate())
+ LocalDate.parse(this.dateRange.end ?:
LocalDateTime.now().toDashedDate())
)
} else {
null
@@ -165,7 +165,7 @@ data class PaymentStatus(
val creditorName: String,
val amount: String,
val subject: String,
- val submissionDate: String,
+ val submissionDate: String?,
val preparationDate: String
)
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 8b3054e..5a30093 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -58,7 +58,6 @@ import io.ktor.utils.io.jvm.javaio.toByteReadChannel
import io.ktor.utils.io.jvm.javaio.toInputStream
import org.jetbrains.exposed.sql.and
import org.jetbrains.exposed.sql.transactions.transaction
-import org.joda.time.DateTime
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.slf4j.event.Level
@@ -69,6 +68,7 @@ import java.util.*
import java.util.zip.InflaterInputStream
import javax.crypto.EncryptedPrivateKeyInfo
import javax.sql.rowset.serial.SerialBlob
+import java.time.LocalDateTime
data class NexusError(val statusCode: HttpStatusCode, val reason: String) :
Exception("${reason} (HTTP status $statusCode)")
@@ -442,6 +442,7 @@ fun serverMain() {
val preparedPayment = preparedPayment
}
}
+ val sd = res.preparedPayment.submissionDate
call.respond(
PaymentStatus(
uuid = res.preparedPayment.id.value,
@@ -451,8 +452,10 @@ fun serverMain() {
creditorIban = res.preparedPayment.creditorIban,
amount =
"${res.preparedPayment.sum}:${res.preparedPayment.currency}",
subject = res.preparedPayment.subject,
- submissionDate =
DateTime(res.preparedPayment.submissionDate).toDashedDate(),
- preparationDate =
DateTime(res.preparedPayment.preparationDate).toDashedDate()
+ submissionDate = if (sd != null) {
+ importDateFromMillis(sd).toDashedDate()
+ } else null,
+ preparationDate =
importDateFromMillis(res.preparedPayment.preparationDate).toDashedDate()
)
)
return@get
@@ -556,8 +559,8 @@ fun serverMain() {
RawBankTransactionEntity.find {
(RawBankTransactionsTable.bankAccount eq bankAccount)
and
RawBankTransactionsTable.bookingDate.between(
- parseDashedDate(start ?:
"1970-01-01").millis,
- parseDashedDate(end ?:
DateTime.now().toDashedDate()).millis
+ parseDashedDate(start ?:
"1970-01-01").millis(),
+ parseDashedDate(end ?:
LocalDateTime.now().toDashedDate()).millis()
)
}.forEach {
ret.transactions.add(
@@ -566,7 +569,7 @@ fun serverMain() {
counterpartBic = it.counterpartBic,
counterpartIban = it.counterpartIban,
counterpartName = it.counterpartName,
- date = DateTime(it.bookingDate).toDashedDate(),
+ date =
importDateFromMillis(it.bookingDate).toDashedDate(),
subject = it.unstructuredRemittanceInformation,
amount = "${it.currency}:${it.amount}"
)
diff --git
a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
index 3fba96f..379c110 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
@@ -51,11 +51,11 @@ import javax.sql.rowset.serial.SerialBlob
import javax.xml.datatype.DatatypeFactory
import org.apache.commons.compress.utils.IOUtils
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
-import org.joda.time.DateTime
-import org.joda.time.Instant
import java.io.BufferedInputStream
import java.io.ByteArrayInputStream
import java.nio.charset.Charset
+import java.time.Instant
+import java.time.LocalDateTime
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@@ -163,8 +163,8 @@ fun buildCamtString(type: Int, history:
MutableList<RawPayment>): MutableList<St
*/
val ret = mutableListOf<String>()
history.forEach {
- val dashedDate = DateTime.parse(it.date).toDashedDate()
- val zonedDateTime = DateTime.now().toZonedString()
+ val dashedDate = expectNonNull(it.date)
+ val zonedDateTime = LocalDateTime.now().toZonedString()
ret.add(
constructXml(indent = true) {
root("Document") {
@@ -405,9 +405,12 @@ private fun constructCamtResponse(
): MutableList<String> {
val dateRange = (header.static.orderDetails?.orderParams as
EbicsRequest.StandardOrderParams).dateRange
- val (start: DateTime, end: DateTime) = if (dateRange != null) {
- Pair(DateTime(dateRange.start.toGregorianCalendar().time),
DateTime(dateRange.end.toGregorianCalendar().time))
- } else Pair(parseDashedDate("1970-01-01"), DateTime.now())
+ val (start: LocalDateTime, end: LocalDateTime) = if (dateRange != null) {
+ Pair(
+
importDateFromMillis(dateRange.start.toGregorianCalendar().timeInMillis),
+
importDateFromMillis(dateRange.end.toGregorianCalendar().timeInMillis)
+ )
+ } else Pair(parseDashedDate("1970-01-01"), LocalDateTime.now())
val history = mutableListOf<RawPayment>()
val bankAccount = getBankAccountFromSubscriber(subscriber)
transaction {
@@ -423,7 +426,7 @@ private fun constructCamtResponse(
subject = it.subject,
creditorIban = it.creditorIban,
debitorIban = it.debitorIban,
- date = DateTime(it.date).toDashedDate(),
+ date = importDateFromMillis(it.date).toDashedDate(),
amount = it.amount
)
)
@@ -464,7 +467,7 @@ private fun handleCct(paymentRequest: String) {
/** For now, the date discards any
* information about hours and minor units of time.
*/
- this.date = parseDashedDate(DateTime.now().toDashedDate()).millis
+ this.date = Instant.now().toEpochMilli()
}
}
}
diff --git a/util/src/main/kotlin/time.kt b/util/src/main/kotlin/time.kt
index 07fe4a7..653799c 100644
--- a/util/src/main/kotlin/time.kt
+++ b/util/src/main/kotlin/time.kt
@@ -1,23 +1,31 @@
package tech.libeufin.util
-import org.joda.time.DateTime
-import org.joda.time.format.DateTimeFormat
-import java.time.ZoneId
-import java.time.ZonedDateTime
+import java.time.*
import java.time.format.DateTimeFormatter
-fun DateTime.toZonedString(): String {
+fun LocalDateTime.toZonedString(): String {
val dateFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME
- val instant = java.time.Instant.ofEpochMilli(this.millis)
- val zoned = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault())
- return dateFormatter.format(zoned)
+ return dateFormatter.format(this.atZone(ZoneId.systemDefault()))
}
-fun DateTime.toDashedDate(): String {
- return this.toString("y-MM-d")
+fun LocalDateTime.toDashedDate(): String {
+ val dtf = DateTimeFormatter.ISO_LOCAL_DATE
+ return dtf.format(this)
}
-fun parseDashedDate(date: String): DateTime {
- logger.debug("Parsing date: $date")
- return DateTime.parse(date, DateTimeFormat.forPattern("y-M-d"))
+fun parseDashedDate(date: String): LocalDateTime {
+ val dtf = DateTimeFormatter.ISO_LOCAL_DATE
+ return LocalDateTime.from(LocalDate.parse(date, dtf))
}
+
+fun importDateFromMillis(millis: Long): LocalDateTime {
+ return LocalDateTime.ofInstant(
+ Instant.ofEpochMilli(millis),
+ ZoneId.systemDefault()
+ )
+}
+
+fun LocalDateTime.millis(): Long {
+ val instant = Instant.from(this)
+ return instant.toEpochMilli()
+}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [libeufin] branch master updated: migrating to java.time,
gnunet <=