summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine A <>2024-04-08 10:09:54 +0200
committerAntoine A <>2024-04-08 10:09:54 +0200
commitd43a1a66429f056be442e8fa21ae50a3642147bb (patch)
tree18900ab5877dfcd4f61b03e2ef7560206febc2ef
parentfddb1e818e191f4870bac68b7f7893f18fccb4fb (diff)
downloadlibeufin-d43a1a66429f056be442e8fa21ae50a3642147bb.tar.gz
libeufin-d43a1a66429f056be442e8fa21ae50a3642147bb.tar.bz2
libeufin-d43a1a66429f056be442e8fa21ae50a3642147bb.zip
Optimise imports
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/Config.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/Main.kt7
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt7
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt8
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt4
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt4
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt8
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/GcDAO.kt7
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt3
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt8
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/params.kt2
-rw-r--r--bank/src/test/kotlin/AmountTest.kt7
-rw-r--r--bank/src/test/kotlin/CommonApiTest.kt12
-rw-r--r--bank/src/test/kotlin/DatabaseTest.kt5
-rw-r--r--bank/src/test/kotlin/GcTest.kt20
-rw-r--r--bank/src/test/kotlin/StatsTest.kt14
-rw-r--r--bank/src/test/kotlin/helpers.kt5
-rw-r--r--common/src/main/kotlin/Cli.kt4
-rw-r--r--common/src/main/kotlin/TalerConfig.kt7
-rw-r--r--common/src/main/kotlin/crypto/CryptoUtil.kt17
-rw-r--r--common/src/main/kotlin/crypto/PwCrypto.kt17
-rw-r--r--common/src/main/kotlin/db/DbPool.kt9
-rw-r--r--common/src/main/kotlin/db/config.kt10
-rw-r--r--common/src/main/kotlin/db/schema.kt3
-rw-r--r--common/src/main/kotlin/db/types.kt4
-rw-r--r--common/src/main/kotlin/db/utils.kt5
-rw-r--r--common/src/main/kotlin/helpers.kt6
-rw-r--r--common/src/test/kotlin/AmountTest.kt6
-rw-r--r--common/src/test/kotlin/ConfigTest.kt4
-rw-r--r--common/src/test/kotlin/CryptoUtilTest.kt17
-rw-r--r--common/src/test/kotlin/PaytoTest.kt8
-rw-r--r--common/src/test/kotlin/TalerConfigTest.kt6
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt6
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt10
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt2
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt24
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt5
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt17
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt5
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/db/Database.kt11
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/db/InitiatedDAO.kt11
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/db/PaymentDAO.kt9
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsAdministrative.kt14
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt21
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt13
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt15
-rw-r--r--nexus/src/test/kotlin/DatabaseTest.kt13
-rw-r--r--nexus/src/test/kotlin/EbicsTest.kt8
-rw-r--r--nexus/src/test/kotlin/Parsing.kt7
-rw-r--r--nexus/src/test/kotlin/XmlCombinatorsTest.kt2
-rw-r--r--nexus/src/test/kotlin/XmlUtilTest.kt1
-rw-r--r--nexus/src/test/kotlin/helpers.kt9
-rw-r--r--testbench/src/main/kotlin/Main.kt20
-rw-r--r--testbench/src/test/kotlin/IntegrationTest.kt29
-rw-r--r--testbench/src/test/kotlin/Iso20022Test.kt11
-rw-r--r--testbench/src/test/kotlin/MigrationTest.kt18
60 files changed, 250 insertions, 285 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
index c746c419..9cdfcf0f 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Config.kt
@@ -23,7 +23,7 @@ import kotlinx.serialization.json.Json
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.db.DatabaseConfig
import java.nio.file.Path
import java.time.Duration
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/Main.kt b/bank/src/main/kotlin/tech/libeufin/bank/Main.kt
index 48c1e082..1e28af34 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/Main.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/Main.kt
@@ -51,19 +51,20 @@ import org.postgresql.util.PSQLState
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.slf4j.event.Level
+import tech.libeufin.bank.api.*
import tech.libeufin.bank.db.AccountDAO.*
import tech.libeufin.bank.db.Database
import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.db.dbInit
+import tech.libeufin.common.db.pgDataSource
import java.net.InetAddress
import java.sql.SQLException
+import java.time.Instant
import java.util.zip.DataFormatException
import java.util.zip.Inflater
-import java.time.Instant
import kotlin.io.path.Path
import kotlin.io.path.exists
import kotlin.io.path.readText
-import tech.libeufin.bank.api.*
private val logger: Logger = LoggerFactory.getLogger("libeufin-bank")
// Dirty local variable to stop the server in test TODO remove this ugly hack
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt b/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
index 93d649ee..bb148166 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/TalerCommon.kt
@@ -30,8 +30,6 @@ import kotlinx.serialization.json.JsonDecoder
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.jsonPrimitive
import kotlinx.serialization.json.longOrNull
-import tech.libeufin.common.Base32Crockford
-import tech.libeufin.common.EncodingException
import tech.libeufin.common.TalerAmount
import java.net.URL
import java.time.Duration
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt b/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
index 39193912..1ef1ace5 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/api/CoreBankApi.kt
@@ -28,6 +28,7 @@ import kotlinx.coroutines.future.await
import kotlinx.coroutines.withContext
import org.slf4j.Logger
import org.slf4j.LoggerFactory
+import tech.libeufin.bank.*
import tech.libeufin.bank.auth.*
import tech.libeufin.bank.db.AbortResult
import tech.libeufin.bank.db.AccountDAO.*
@@ -39,7 +40,6 @@ import tech.libeufin.bank.db.TransactionDAO.BankTransactionResult
import tech.libeufin.bank.db.WithdrawalDAO.WithdrawalConfirmationResult
import tech.libeufin.bank.db.WithdrawalDAO.WithdrawalCreationResult
import tech.libeufin.common.*
-import tech.libeufin.bank.*
import java.time.Duration
import java.time.Instant
import java.time.temporal.ChronoUnit
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt b/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
index 577da51d..83bde34f 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/auth/auth.kt
@@ -27,8 +27,11 @@ import io.ktor.util.*
import io.ktor.util.pipeline.*
import tech.libeufin.bank.*
import tech.libeufin.bank.db.Database
-import tech.libeufin.common.*
-import tech.libeufin.common.crypto.*
+import tech.libeufin.common.Base32Crockford
+import tech.libeufin.common.TalerErrorCode
+import tech.libeufin.common.crypto.PwCrypto
+import tech.libeufin.common.decodeBase64
+import tech.libeufin.common.splitOnce
import java.time.Instant
/** Used to store if the currently authenticated user is admin */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
index 5f102ccc..036ec116 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt
@@ -21,8 +21,8 @@ package tech.libeufin.bank.db
import tech.libeufin.bank.*
import tech.libeufin.common.*
+import tech.libeufin.common.crypto.PwCrypto
import tech.libeufin.common.db.*
-import tech.libeufin.common.crypto.*
import java.time.Instant
/** Data access logic for accounts */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
index 799d466a..c4f25657 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt
@@ -20,8 +20,12 @@
package tech.libeufin.bank.db
import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.ShortHashCode
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.asInstant
+import tech.libeufin.common.db.getAmount
+import tech.libeufin.common.db.oneOrNull
+import tech.libeufin.common.micros
import java.time.Instant
/** Data access logic for cashout operations */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt
index 3e025a0c..5849881d 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/ConversionDAO.kt
@@ -24,7 +24,9 @@ import tech.libeufin.bank.DecimalNumber
import tech.libeufin.bank.RoundingMode
import tech.libeufin.bank.internalServerError
import tech.libeufin.common.TalerAmount
-import tech.libeufin.common.db.*
+import tech.libeufin.common.db.getAmount
+import tech.libeufin.common.db.oneOrNull
+import tech.libeufin.common.db.transaction
/** Data access logic for conversion */
class ConversionDAO(private val db: Database) {
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt
index 3f47bd06..b6e6fd7e 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/Database.kt
@@ -27,12 +27,10 @@ import kotlinx.coroutines.withTimeoutOrNull
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import tech.libeufin.bank.*
-import tech.libeufin.common.*
+import tech.libeufin.common.asInstant
import tech.libeufin.common.db.*
import java.sql.PreparedStatement
import java.sql.ResultSet
-import java.sql.Types
-import java.time.LocalDateTime
import kotlin.math.abs
private val logger: Logger = LoggerFactory.getLogger("libeufin-bank-db")
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt
index c425c516..3ae15c7e 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/ExchangeDAO.kt
@@ -20,8 +20,12 @@
package tech.libeufin.bank.db
import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.BankPaytoCtx
+import tech.libeufin.common.EddsaPublicKey
+import tech.libeufin.common.ShortHashCode
+import tech.libeufin.common.db.getAmount
+import tech.libeufin.common.db.getBankPayto
+import tech.libeufin.common.micros
import java.time.Instant
/** Data access logic for exchange specific logic */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/GcDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/GcDAO.kt
index 29eede85..c00888df 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/GcDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/GcDAO.kt
@@ -19,12 +19,9 @@
package tech.libeufin.bank.db
-import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
-import tech.libeufin.common.crypto.*
-import java.time.Instant
+import tech.libeufin.common.micros
import java.time.Duration
+import java.time.Instant
/** Data access logic for garbage collection */
class GcDAO(private val db: Database) {
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt
index fbc99960..388d530a 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt
@@ -22,8 +22,8 @@ package tech.libeufin.bank.db
import tech.libeufin.bank.Operation
import tech.libeufin.bank.TanChannel
import tech.libeufin.bank.internalServerError
+import tech.libeufin.common.db.oneOrNull
import tech.libeufin.common.micros
-import tech.libeufin.common.db.*
import java.time.Duration
import java.time.Instant
import java.util.concurrent.TimeUnit
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt
index 18a14c24..f7f1d09c 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt
@@ -22,8 +22,9 @@ package tech.libeufin.bank.db
import tech.libeufin.bank.BearerToken
import tech.libeufin.bank.TokenScope
import tech.libeufin.common.asInstant
+import tech.libeufin.common.db.executeUpdateViolation
+import tech.libeufin.common.db.oneOrNull
import tech.libeufin.common.micros
-import tech.libeufin.common.db.*
import java.time.Instant
/** Data access logic for auth tokens */
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
index 9e27cb26..6a02205c 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt
@@ -24,8 +24,12 @@ import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import kotlinx.coroutines.withTimeoutOrNull
import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.EddsaPublicKey
+import tech.libeufin.common.Payto
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.db.getAmount
+import tech.libeufin.common.db.oneOrNull
+import tech.libeufin.common.micros
import java.time.Instant
import java.util.*
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/params.kt b/bank/src/main/kotlin/tech/libeufin/bank/params.kt
index 4972ef99..72e6cabd 100644
--- a/bank/src/main/kotlin/tech/libeufin/bank/params.kt
+++ b/bank/src/main/kotlin/tech/libeufin/bank/params.kt
@@ -26,7 +26,7 @@ import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneOffset
import java.time.temporal.TemporalAdjusters
-import java.util.UUID
+import java.util.*
fun Parameters.expect(name: String): String
= get(name) ?: throw badRequest("Missing '$name' parameter", TalerErrorCode.GENERIC_PARAMETER_MISSING)
diff --git a/bank/src/test/kotlin/AmountTest.kt b/bank/src/test/kotlin/AmountTest.kt
index f89432b5..51c21b87 100644
--- a/bank/src/test/kotlin/AmountTest.kt
+++ b/bank/src/test/kotlin/AmountTest.kt
@@ -21,8 +21,11 @@ import org.junit.Test
import tech.libeufin.bank.DecimalNumber
import tech.libeufin.bank.db.TransactionDAO.BankTransactionResult
import tech.libeufin.bank.db.WithdrawalDAO.WithdrawalCreationResult
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.TalerErrorCode
+import tech.libeufin.common.db.oneOrNull
+import tech.libeufin.common.json
+import tech.libeufin.common.obj
import java.time.Instant
import java.util.*
import kotlin.test.assertEquals
diff --git a/bank/src/test/kotlin/CommonApiTest.kt b/bank/src/test/kotlin/CommonApiTest.kt
index 645dbaa8..28866eea 100644
--- a/bank/src/test/kotlin/CommonApiTest.kt
+++ b/bank/src/test/kotlin/CommonApiTest.kt
@@ -18,19 +18,9 @@
*/
import io.ktor.client.request.*
-import io.ktor.client.statement.*
import io.ktor.http.*
-import io.ktor.server.testing.*
-import kotlinx.serialization.json.JsonElement
import org.junit.Test
-import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import java.time.Duration
-import java.time.Instant
-import java.util.*
-import kotlin.test.assertEquals
-import kotlin.test.assertNotNull
-import kotlin.test.assertNull
+import tech.libeufin.common.TalerErrorCode
class CommonApiTest {
@Test
diff --git a/bank/src/test/kotlin/DatabaseTest.kt b/bank/src/test/kotlin/DatabaseTest.kt
index 0536ae42..f7dbd82f 100644
--- a/bank/src/test/kotlin/DatabaseTest.kt
+++ b/bank/src/test/kotlin/DatabaseTest.kt
@@ -22,15 +22,14 @@ import kotlinx.coroutines.launch
import org.junit.Test
import tech.libeufin.bank.createAdminAccount
import tech.libeufin.bank.db.AccountDAO.AccountCreationResult
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.db.oneOrNull
import java.time.Duration
import java.time.Instant
import java.time.temporal.ChronoUnit
import java.util.concurrent.TimeUnit
import kotlin.test.assertEquals
-import kotlin.test.assertNull
import kotlin.test.assertIs
+import kotlin.test.assertNull
class DatabaseTest {
diff --git a/bank/src/test/kotlin/GcTest.kt b/bank/src/test/kotlin/GcTest.kt
index 32f78552..17a3b9d0 100644
--- a/bank/src/test/kotlin/GcTest.kt
+++ b/bank/src/test/kotlin/GcTest.kt
@@ -17,22 +17,20 @@
* <http://www.gnu.org/licenses/>
*/
+import io.ktor.client.request.*
import org.junit.Test
-import tech.libeufin.bank.DecimalNumber
-import tech.libeufin.bank.db.TransactionDAO.BankTransactionResult
-import tech.libeufin.bank.db.WithdrawalDAO.*
-import tech.libeufin.bank.db.TransactionDAO.*
+import tech.libeufin.bank.*
import tech.libeufin.bank.db.CashoutDAO.CashoutCreationResult
import tech.libeufin.bank.db.ExchangeDAO.TransferResult
+import tech.libeufin.bank.db.TransactionDAO.BankTransactionResult
+import tech.libeufin.bank.db.WithdrawalDAO.*
import tech.libeufin.common.*
-import tech.libeufin.common.db.*
-import io.ktor.client.request.*
-import io.ktor.client.statement.*
-import io.ktor.http.*
-import tech.libeufin.bank.*
-import java.time.*
+import tech.libeufin.common.db.one
+import java.time.Duration
+import java.time.Instant
import java.util.*
-import kotlin.test.*
+import kotlin.test.assertEquals
+import kotlin.test.assertIs
class GcTest {
@Test
diff --git a/bank/src/test/kotlin/StatsTest.kt b/bank/src/test/kotlin/StatsTest.kt
index 4dd52e3d..f5ec3161 100644
--- a/bank/src/test/kotlin/StatsTest.kt
+++ b/bank/src/test/kotlin/StatsTest.kt
@@ -19,13 +19,17 @@
import io.ktor.client.request.*
import org.junit.Test
-import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.bank.MonitorParams
+import tech.libeufin.bank.MonitorResponse
+import tech.libeufin.bank.MonitorWithConversion
+import tech.libeufin.bank.Timeframe
+import tech.libeufin.common.ShortHashCode
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.db.executeQueryCheck
+import tech.libeufin.common.micros
import java.time.Instant
-import java.time.ZoneOffset
import java.time.LocalDateTime
-import java.time.OffsetDateTime
+import java.time.ZoneOffset
import kotlin.test.assertEquals
class StatsTest {
diff --git a/bank/src/test/kotlin/helpers.kt b/bank/src/test/kotlin/helpers.kt
index 1a1f5b19..8c0f070b 100644
--- a/bank/src/test/kotlin/helpers.kt
+++ b/bank/src/test/kotlin/helpers.kt
@@ -27,15 +27,16 @@ import tech.libeufin.bank.*
import tech.libeufin.bank.db.AccountDAO.AccountCreationResult
import tech.libeufin.bank.db.Database
import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.db.dbInit
+import tech.libeufin.common.db.pgDataSource
import java.nio.file.NoSuchFileException
import kotlin.io.path.Path
import kotlin.io.path.deleteExisting
import kotlin.io.path.readText
import kotlin.random.Random
import kotlin.test.assertEquals
-import kotlin.test.assertNotNull
import kotlin.test.assertIs
+import kotlin.test.assertNotNull
/* ----- Setup ----- */
diff --git a/common/src/main/kotlin/Cli.kt b/common/src/main/kotlin/Cli.kt
index ae9d8e87..906c2a1a 100644
--- a/common/src/main/kotlin/Cli.kt
+++ b/common/src/main/kotlin/Cli.kt
@@ -30,10 +30,12 @@ import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.types.enum
import com.github.ajalt.clikt.parameters.types.path
+import kotlinx.coroutines.cancelAndJoin
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.runBlocking
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.slf4j.event.Level
-import kotlinx.coroutines.*
private val logger: Logger = LoggerFactory.getLogger("libeufin-config")
diff --git a/common/src/main/kotlin/TalerConfig.kt b/common/src/main/kotlin/TalerConfig.kt
index 8961ff47..84d212d3 100644
--- a/common/src/main/kotlin/TalerConfig.kt
+++ b/common/src/main/kotlin/TalerConfig.kt
@@ -24,9 +24,12 @@ import org.slf4j.LoggerFactory
import java.nio.file.AccessDeniedException
import java.nio.file.NoSuchFileException
import java.nio.file.Path
-import java.time.*
-import java.time.temporal.ChronoUnit
+import java.time.Duration
+import java.time.Instant
+import java.time.LocalDate
+import java.time.ZoneId
import java.time.format.DateTimeParseException
+import java.time.temporal.ChronoUnit
import kotlin.io.path.*
private val logger: Logger = LoggerFactory.getLogger("libeufin-config")
diff --git a/common/src/main/kotlin/crypto/CryptoUtil.kt b/common/src/main/kotlin/crypto/CryptoUtil.kt
index f6079ffe..09f69531 100644
--- a/common/src/main/kotlin/crypto/CryptoUtil.kt
+++ b/common/src/main/kotlin/crypto/CryptoUtil.kt
@@ -19,29 +19,26 @@
package tech.libeufin.common.crypto
-import org.bouncycastle.jce.provider.BouncyCastleProvider
-import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder
-import org.bouncycastle.operator.ContentSigner
-import org.bouncycastle.cert.jcajce.*
+import org.bouncycastle.asn1.x500.X500Name
import org.bouncycastle.asn1.x509.*
import org.bouncycastle.asn1.x509.Extension
-import org.bouncycastle.asn1.x500.X500Name
-import org.bouncycastle.asn1.ASN1ObjectIdentifier
+import org.bouncycastle.cert.jcajce.*
+import org.bouncycastle.jce.provider.BouncyCastleProvider
+import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder
+import tech.libeufin.common.*
import java.io.ByteArrayOutputStream
import java.io.InputStream
import java.math.BigInteger
-import java.util.*
import java.security.*
+import java.security.cert.*
import java.security.interfaces.RSAPrivateCrtKey
import java.security.interfaces.RSAPublicKey
-import java.security.cert.*
import java.security.spec.*
+import java.util.*
import javax.crypto.*
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.PBEKeySpec
-import javax.crypto.spec.PBEParameterSpec
import javax.crypto.spec.SecretKeySpec
-import tech.libeufin.common.*
/** Helpers for dealing with cryptographic operations in EBICS / LibEuFin */
object CryptoUtil {
diff --git a/common/src/main/kotlin/crypto/PwCrypto.kt b/common/src/main/kotlin/crypto/PwCrypto.kt
index 2dd8af07..11e3a7dd 100644
--- a/common/src/main/kotlin/crypto/PwCrypto.kt
+++ b/common/src/main/kotlin/crypto/PwCrypto.kt
@@ -19,21 +19,8 @@
package tech.libeufin.common.crypto
-import org.bouncycastle.jce.provider.BouncyCastleProvider
-import java.io.ByteArrayOutputStream
-import java.io.InputStream
-import java.math.BigInteger
-import java.security.*
-import java.security.interfaces.RSAPrivateCrtKey
-import java.security.interfaces.RSAPublicKey
-import java.security.spec.*
-import javax.crypto.*
-import javax.crypto.spec.IvParameterSpec
-import javax.crypto.spec.PBEKeySpec
-import javax.crypto.spec.PBEParameterSpec
-import javax.crypto.spec.SecretKeySpec
-import java.util.Base64
-import tech.libeufin.common.*
+import tech.libeufin.common.encodeBase64
+import java.security.SecureRandom
/** Cryptographic operations for secure password storage and verification */
object PwCrypto {
diff --git a/common/src/main/kotlin/db/DbPool.kt b/common/src/main/kotlin/db/DbPool.kt
index f003e1d2..77891a68 100644
--- a/common/src/main/kotlin/db/DbPool.kt
+++ b/common/src/main/kotlin/db/DbPool.kt
@@ -19,14 +19,15 @@
package tech.libeufin.common.db
-import tech.libeufin.common.*
-import org.postgresql.jdbc.PgConnection
-import org.postgresql.util.PSQLState
-import java.sql.SQLException
import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
+import org.postgresql.jdbc.PgConnection
+import org.postgresql.util.PSQLState
+import tech.libeufin.common.MIN_VERSION
+import tech.libeufin.common.SERIALIZATION_RETRY
+import java.sql.SQLException
open class DbPool(cfg: DatabaseConfig, schema: String) : java.io.Closeable {
val pgSource = pgDataSource(cfg.dbConnStr)
diff --git a/common/src/main/kotlin/db/config.kt b/common/src/main/kotlin/db/config.kt
index 6f225f05..28bc1321 100644
--- a/common/src/main/kotlin/db/config.kt
+++ b/common/src/main/kotlin/db/config.kt
@@ -19,19 +19,11 @@
package tech.libeufin.common.db
-import tech.libeufin.common.*
+import io.ktor.http.*
import org.postgresql.ds.PGSimpleDataSource
import org.postgresql.jdbc.PgConnection
-import org.postgresql.util.PSQLState
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-import io.ktor.http.parseQueryString
import java.net.URI
import java.nio.file.Path
-import java.sql.PreparedStatement
-import java.sql.ResultSet
-import java.sql.SQLException
-import kotlin.io.path.Path
fun currentUser(): String = System.getProperty("user.name")
diff --git a/common/src/main/kotlin/db/schema.kt b/common/src/main/kotlin/db/schema.kt
index 176c04ee..77b7db3d 100644
--- a/common/src/main/kotlin/db/schema.kt
+++ b/common/src/main/kotlin/db/schema.kt
@@ -19,9 +19,8 @@
package tech.libeufin.common.db
-import tech.libeufin.common.*
-import org.postgresql.jdbc.PgConnection
import org.postgresql.ds.PGSimpleDataSource
+import org.postgresql.jdbc.PgConnection
import java.sql.Connection
import kotlin.io.path.Path
import kotlin.io.path.exists
diff --git a/common/src/main/kotlin/db/types.kt b/common/src/main/kotlin/db/types.kt
index cafc30c2..6986897f 100644
--- a/common/src/main/kotlin/db/types.kt
+++ b/common/src/main/kotlin/db/types.kt
@@ -19,7 +19,9 @@
package tech.libeufin.common.db
-import tech.libeufin.common.*
+import tech.libeufin.common.BankPaytoCtx
+import tech.libeufin.common.Payto
+import tech.libeufin.common.TalerAmount
import java.sql.ResultSet
fun ResultSet.getAmount(name: String, currency: String): TalerAmount {
diff --git a/common/src/main/kotlin/db/utils.kt b/common/src/main/kotlin/db/utils.kt
index d1197894..f06c4e4e 100644
--- a/common/src/main/kotlin/db/utils.kt
+++ b/common/src/main/kotlin/db/utils.kt
@@ -19,18 +19,13 @@
package tech.libeufin.common.db
-import tech.libeufin.common.*
-import org.postgresql.ds.PGSimpleDataSource
import org.postgresql.jdbc.PgConnection
import org.postgresql.util.PSQLState
import org.slf4j.Logger
import org.slf4j.LoggerFactory
-import java.net.URI
-import java.nio.file.Path
import java.sql.PreparedStatement
import java.sql.ResultSet
import java.sql.SQLException
-import kotlin.io.path.Path
internal val logger: Logger = LoggerFactory.getLogger("libeufin-db")
diff --git a/common/src/main/kotlin/helpers.kt b/common/src/main/kotlin/helpers.kt
index fc361ab9..e9c43961 100644
--- a/common/src/main/kotlin/helpers.kt
+++ b/common/src/main/kotlin/helpers.kt
@@ -19,14 +19,14 @@
package tech.libeufin.common
+import java.io.ByteArrayOutputStream
+import java.io.FilterInputStream
+import java.io.InputStream
import java.math.BigInteger
import java.util.*
import java.util.zip.DeflaterInputStream
import java.util.zip.InflaterInputStream
import java.util.zip.ZipInputStream
-import java.io.FilterInputStream
-import java.io.InputStream
-import java.io.ByteArrayOutputStream
import kotlin.random.Random
/* ----- String ----- */
diff --git a/common/src/test/kotlin/AmountTest.kt b/common/src/test/kotlin/AmountTest.kt
index ccd836aa..78fc2ba8 100644
--- a/common/src/test/kotlin/AmountTest.kt
+++ b/common/src/test/kotlin/AmountTest.kt
@@ -17,11 +17,9 @@
* <http://www.gnu.org/licenses/>
*/
-import java.time.Instant
-import java.util.*
-import kotlin.test.*
import org.junit.Test
-import tech.libeufin.common.*
+import tech.libeufin.common.TalerAmount
+import kotlin.test.assertEquals
class AmountTest {
@Test
diff --git a/common/src/test/kotlin/ConfigTest.kt b/common/src/test/kotlin/ConfigTest.kt
index d27e9512..3c22d930 100644
--- a/common/src/test/kotlin/ConfigTest.kt
+++ b/common/src/test/kotlin/ConfigTest.kt
@@ -18,10 +18,10 @@
*/
import org.junit.Test
-import uk.org.webcompere.systemstubs.SystemStubs.*
-import java.time.Duration
import tech.libeufin.common.*
import tech.libeufin.common.db.*
+import uk.org.webcompere.systemstubs.SystemStubs.*
+import java.time.Duration
import kotlin.test.*
class ConfigTest {
diff --git a/common/src/test/kotlin/CryptoUtilTest.kt b/common/src/test/kotlin/CryptoUtilTest.kt
index 6e062b1a..789c7afa 100644
--- a/common/src/test/kotlin/CryptoUtilTest.kt
+++ b/common/src/test/kotlin/CryptoUtilTest.kt
@@ -19,15 +19,18 @@
import org.junit.Ignore
import org.junit.Test
-import kotlin.io.path.*
-import tech.libeufin.common.*
-import tech.libeufin.common.crypto.*
-import java.security.KeyPairGenerator
-import java.security.interfaces.RSAPrivateCrtKey
+import tech.libeufin.common.Base32Crockford
+import tech.libeufin.common.crypto.CryptoUtil
+import tech.libeufin.common.crypto.PwCrypto
+import tech.libeufin.common.decodeUpHex
+import tech.libeufin.common.encodeHex
+import tech.libeufin.common.encodeUpHex
import java.util.*
-import javax.crypto.EncryptedPrivateKeyInfo
+import kotlin.io.path.Path
+import kotlin.io.path.readBytes
+import kotlin.io.path.readText
+import kotlin.io.path.writeBytes
import kotlin.test.assertEquals
-import kotlin.test.assertFalse
import kotlin.test.assertTrue
class CryptoUtilTest {
diff --git a/common/src/test/kotlin/PaytoTest.kt b/common/src/test/kotlin/PaytoTest.kt
index 0573af02..cfb33ada 100644
--- a/common/src/test/kotlin/PaytoTest.kt
+++ b/common/src/test/kotlin/PaytoTest.kt
@@ -18,8 +18,12 @@
*/
import org.junit.Test
-import tech.libeufin.common.*
-import kotlin.test.*
+import tech.libeufin.common.BankPaytoCtx
+import tech.libeufin.common.CommonError
+import tech.libeufin.common.Payto
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
+import kotlin.test.assertNull
class PaytoTest {
@Test
diff --git a/common/src/test/kotlin/TalerConfigTest.kt b/common/src/test/kotlin/TalerConfigTest.kt
index 6cc7aa04..c4d7c341 100644
--- a/common/src/test/kotlin/TalerConfigTest.kt
+++ b/common/src/test/kotlin/TalerConfigTest.kt
@@ -18,9 +18,11 @@
*/
import org.junit.Test
+import tech.libeufin.common.ConfigSource
+import tech.libeufin.common.fromFile
+import tech.libeufin.common.fromMem
+import kotlin.io.path.Path
import kotlin.test.assertEquals
-import tech.libeufin.common.*
-import kotlin.io.path.*
class TalerConfigTest {
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt
index 0128ab85..f5077649 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/DbInit.kt
@@ -22,8 +22,10 @@ import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.parameters.groups.provideDelegate
import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.option
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.CommonOption
+import tech.libeufin.common.cliCmd
+import tech.libeufin.common.db.dbInit
+import tech.libeufin.common.db.pgDataSource
/**
* This subcommand tries to load the SQL files that define
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt
index 328fe240..610b2c8b 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsFetch.kt
@@ -27,12 +27,12 @@ import io.ktor.client.*
import io.ktor.client.plugins.*
import kotlinx.coroutines.*
import tech.libeufin.common.*
-import tech.libeufin.nexus.ebics.*
import tech.libeufin.nexus.db.*
+import tech.libeufin.nexus.ebics.*
import java.io.IOException
import java.io.InputStream
-import java.time.Instant
import java.time.Duration
+import java.time.Instant
import java.time.LocalDate
import java.time.ZoneId
import kotlin.io.*
@@ -180,13 +180,13 @@ private suspend fun ingestDocument(
}
}
HacAction.ORDER_HAC_FINAL_NEG -> {
- logger.debug("$ack")
+ logger.debug("{}", ack)
db.initiated.logFailure(ack.orderId!!)?.let { (requestUID, msg) ->
logger.error("Payment '$requestUID' refused at ${ack.timestamp.fmtDateTime()}${if (msg != null) ": $msg" else ""}")
}
}
else -> {
- logger.debug("$ack")
+ logger.debug("{}", ack)
if (ack.orderId != null) {
db.initiated.logMessage(ack.orderId, ack.msg())
}
@@ -197,7 +197,7 @@ private suspend fun ingestDocument(
SupportedDocument.PAIN_002 -> {
val status = parseCustomerPaymentStatusReport(xml)
val msg = status.msg()
- logger.debug("$status")
+ logger.debug("{}", status)
if (status.paymentCode == ExternalPaymentGroupStatusCode.RJCT) {
db.initiated.bankFailure(status.msgId, msg)
logger.error("Transaction '${status.msgId}' was rejected : $msg")
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt
index 12a72d40..8a54124f 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSubmit.kt
@@ -25,8 +25,8 @@ import com.github.ajalt.clikt.parameters.options.*
import io.ktor.client.*
import kotlinx.coroutines.*
import tech.libeufin.common.*
-import tech.libeufin.nexus.ebics.*
import tech.libeufin.nexus.db.*
+import tech.libeufin.nexus.ebics.*
import java.time.*
import java.util.*
import kotlin.time.toKotlinDuration
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 7e7a5e5d..08bb23f1 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -27,22 +27,22 @@ package tech.libeufin.nexus
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.subcommands
-import com.github.ajalt.clikt.parameters.arguments.*
-import com.github.ajalt.clikt.parameters.groups.*
-import com.github.ajalt.clikt.parameters.options.*
-import io.ktor.client.*
-import io.ktor.util.*
-import kotlinx.coroutines.*
+import com.github.ajalt.clikt.parameters.arguments.argument
+import com.github.ajalt.clikt.parameters.arguments.convert
+import com.github.ajalt.clikt.parameters.groups.provideDelegate
+import com.github.ajalt.clikt.parameters.options.convert
+import com.github.ajalt.clikt.parameters.options.option
+import com.github.ajalt.clikt.parameters.options.versionOption
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import tech.libeufin.common.*
-import tech.libeufin.common.db.*
-import tech.libeufin.nexus.ebics.*
-import tech.libeufin.nexus.db.*
+import tech.libeufin.common.db.DatabaseConfig
+import tech.libeufin.nexus.db.Database
+import tech.libeufin.nexus.db.InitiatedPayment
import java.nio.file.Path
-import java.util.*
-import java.time.*
-import java.time.format.*
+import java.time.Instant
+import java.time.ZoneId
+import java.time.format.DateTimeFormatter
val NEXUS_CONFIG_SOURCE = ConfigSource("libeufin", "libeufin-nexus", "libeufin-nexus")
internal val logger: Logger = LoggerFactory.getLogger("libeufin-nexus")
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt
index 71937a42..3e697e6d 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/PDF.kt
@@ -24,12 +24,11 @@ import com.itextpdf.kernel.pdf.PdfWriter
import com.itextpdf.layout.Document
import com.itextpdf.layout.element.AreaBreak
import com.itextpdf.layout.element.Paragraph
+import tech.libeufin.common.crypto.CryptoUtil
+import java.io.ByteArrayOutputStream
import java.security.interfaces.RSAPrivateCrtKey
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
-import java.util.*
-import java.io.ByteArrayOutputStream
-import tech.libeufin.common.crypto.*
/**
* Generate the PDF document with all the client public keys
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt
index 2893f367..608177cd 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/XMLUtil.kt
@@ -19,22 +19,14 @@
package tech.libeufin.nexus
-import tech.libeufin.nexus.ebics.*
-import io.ktor.http.*
import org.w3c.dom.Document
import org.w3c.dom.Node
import org.w3c.dom.NodeList
-import org.w3c.dom.ls.LSInput
-import org.w3c.dom.ls.LSResourceResolver
-import org.xml.sax.ErrorHandler
import org.xml.sax.InputSource
-import org.xml.sax.SAXException
-import org.xml.sax.SAXParseException
-import java.io.*
+import java.io.ByteArrayOutputStream
+import java.io.InputStream
import java.security.PrivateKey
import java.security.PublicKey
-import java.security.interfaces.RSAPrivateCrtKey
-import javax.xml.XMLConstants
import javax.xml.crypto.*
import javax.xml.crypto.dom.DOMURIReference
import javax.xml.crypto.dsig.*
@@ -42,16 +34,11 @@ import javax.xml.crypto.dsig.dom.DOMSignContext
import javax.xml.crypto.dsig.dom.DOMValidateContext
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec
import javax.xml.crypto.dsig.spec.TransformParameterSpec
-import javax.xml.namespace.NamespaceContext
import javax.xml.parsers.DocumentBuilderFactory
import javax.xml.transform.OutputKeys
-import javax.xml.transform.Source
import javax.xml.transform.TransformerFactory
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
-import javax.xml.transform.stream.StreamSource
-import javax.xml.validation.SchemaFactory
-import javax.xml.validation.Validator
import javax.xml.xpath.XPath
import javax.xml.xpath.XPathConstants
import javax.xml.xpath.XPathFactory
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt
index eb64a1f6..30714fb6 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/XmlCombinators.kt
@@ -19,13 +19,14 @@
package tech.libeufin.nexus
-import org.w3c.dom.*
+import org.w3c.dom.Document
+import org.w3c.dom.Element
import java.io.InputStream
import java.io.StringWriter
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
-import javax.xml.parsers.*
+import javax.xml.parsers.DocumentBuilderFactory
import javax.xml.stream.XMLOutputFactory
import javax.xml.stream.XMLStreamWriter
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/Database.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/Database.kt
index d76a0405..b6422612 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/db/Database.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/db/Database.kt
@@ -18,15 +18,10 @@
*/
package tech.libeufin.nexus.db
-import org.postgresql.util.PSQLState
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
-import tech.libeufin.nexus.*
-import java.sql.PreparedStatement
-import java.sql.SQLException
-import java.text.SimpleDateFormat
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.db.DatabaseConfig
+import tech.libeufin.common.db.DbPool
import java.time.Instant
-import java.util.*
/**
* Minimal set of information to initiate a new payment in
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/InitiatedDAO.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/InitiatedDAO.kt
index ac27f04b..04fd3965 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/db/InitiatedDAO.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/db/InitiatedDAO.kt
@@ -19,11 +19,14 @@
package tech.libeufin.nexus.db
-import tech.libeufin.nexus.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
-import java.time.Instant
+import tech.libeufin.common.asInstant
+import tech.libeufin.common.db.all
+import tech.libeufin.common.db.executeUpdateViolation
+import tech.libeufin.common.db.getAmount
+import tech.libeufin.common.db.oneOrNull
+import tech.libeufin.common.micros
import java.sql.ResultSet
+import java.time.Instant
/** Data access logic for initiated outgoing payments */
class InitiatedDAO(private val db: Database) {
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/db/PaymentDAO.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/db/PaymentDAO.kt
index 8aa7cd2d..d316267f 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/db/PaymentDAO.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/db/PaymentDAO.kt
@@ -19,9 +19,12 @@
package tech.libeufin.nexus.db
-import tech.libeufin.nexus.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.EddsaPublicKey
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.db.one
+import tech.libeufin.common.micros
+import tech.libeufin.nexus.IncomingPayment
+import tech.libeufin.nexus.OutgoingPayment
import java.time.Instant
/** Data access logic for incoming & outgoing payments */
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsAdministrative.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsAdministrative.kt
index 464db37f..0d7b26e4 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsAdministrative.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsAdministrative.kt
@@ -20,18 +20,10 @@
package tech.libeufin.nexus.ebics
import org.w3c.dom.Document
-import tech.libeufin.common.crypto.CryptoUtil
-import tech.libeufin.common.*
-import tech.libeufin.nexus.*
-import tech.libeufin.nexus.BankPublicKeysFile
-import tech.libeufin.nexus.ClientPrivateKeysFile
+import tech.libeufin.nexus.NexusConfig
+import tech.libeufin.nexus.XmlBuilder
+import tech.libeufin.nexus.XmlDestructor
import java.io.InputStream
-import java.time.Instant
-import java.time.ZoneId
-import java.util.*
-import javax.xml.datatype.DatatypeFactory
-import java.security.interfaces.*
-import tech.libeufin.nexus.ebics.EbicsKeyMng.Order.*
data class VersionNumber(val number: Float, val schema: String) {
override fun toString(): String = "$number:$schema"
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt
index 1c4294e3..754de501 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsBTS.kt
@@ -18,19 +18,16 @@
*/
package tech.libeufin.nexus.ebics
-import io.ktor.client.*
+import org.w3c.dom.Document
+import tech.libeufin.common.crypto.CryptoUtil
+import tech.libeufin.common.decodeBase64
+import tech.libeufin.common.encodeBase64
+import tech.libeufin.common.encodeHex
+import tech.libeufin.common.encodeUpHex
import tech.libeufin.nexus.*
-import tech.libeufin.common.*
-import tech.libeufin.common.crypto.*
-import java.math.BigInteger
-import java.time.*
-import java.time.format.*
-import java.util.*
-import java.io.File
-import org.w3c.dom.*
-import javax.xml.datatype.XMLGregorianCalendar
-import javax.xml.datatype.DatatypeFactory
-import java.security.interfaces.*
+import java.time.Instant
+import java.time.ZoneId
+import java.time.format.DateTimeFormatter
fun Instant.xmlDate(): String =
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt
index 7bed5ac0..889895ce 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt
@@ -38,21 +38,18 @@ import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.http.*
import io.ktor.utils.io.jvm.javaio.*
+import kotlinx.coroutines.*
+import org.w3c.dom.Document
+import org.xml.sax.SAXException
import tech.libeufin.common.*
import tech.libeufin.common.crypto.*
import tech.libeufin.nexus.*
-import java.io.ByteArrayOutputStream
import java.io.InputStream
import java.io.SequenceInputStream
+import java.security.SecureRandom
import java.security.interfaces.RSAPrivateCrtKey
-import java.time.LocalDateTime
-import java.time.format.DateTimeFormatter
-import java.util.*
import java.time.Instant
-import kotlinx.coroutines.*
-import java.security.SecureRandom
-import org.w3c.dom.Document
-import org.xml.sax.SAXException
+import java.util.*
/**
* Which documents can be downloaded via EBICS.
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt
index 37e26e1c..fd5a61f4 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsKeyMng.kt
@@ -21,17 +21,16 @@ package tech.libeufin.nexus.ebics
import org.w3c.dom.Document
import tech.libeufin.common.crypto.CryptoUtil
-import tech.libeufin.common.*
+import tech.libeufin.common.decodeBase64
+import tech.libeufin.common.deflate
+import tech.libeufin.common.encodeBase64
+import tech.libeufin.common.encodeUpHex
import tech.libeufin.nexus.*
-import tech.libeufin.nexus.BankPublicKeysFile
-import tech.libeufin.nexus.ClientPrivateKeysFile
+import tech.libeufin.nexus.ebics.EbicsKeyMng.Order.*
import java.io.InputStream
+import java.security.interfaces.RSAPrivateCrtKey
+import java.security.interfaces.RSAPublicKey
import java.time.Instant
-import java.time.ZoneId
-import java.util.*
-import javax.xml.datatype.DatatypeFactory
-import java.security.interfaces.*
-import tech.libeufin.nexus.ebics.EbicsKeyMng.Order.*
/** EBICS protocol for key management */
class EbicsKeyMng(
diff --git a/nexus/src/test/kotlin/DatabaseTest.kt b/nexus/src/test/kotlin/DatabaseTest.kt
index 6809c285..66bbe564 100644
--- a/nexus/src/test/kotlin/DatabaseTest.kt
+++ b/nexus/src/test/kotlin/DatabaseTest.kt
@@ -18,14 +18,13 @@
*/
import org.junit.Test
-import tech.libeufin.common.*
-import tech.libeufin.nexus.*
-import tech.libeufin.nexus.db.*
-import tech.libeufin.nexus.db.InitiatedDAO.*
-import tech.libeufin.nexus.db.PaymentDAO.*
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.nexus.db.InitiatedDAO.PaymentInitiationResult
import java.time.Instant
-import kotlin.random.Random
-import kotlin.test.*
+import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertNull
+import kotlin.test.assertTrue
class OutgoingPaymentsTest {
@Test
diff --git a/nexus/src/test/kotlin/EbicsTest.kt b/nexus/src/test/kotlin/EbicsTest.kt
index aa182a93..58c1ab67 100644
--- a/nexus/src/test/kotlin/EbicsTest.kt
+++ b/nexus/src/test/kotlin/EbicsTest.kt
@@ -20,11 +20,13 @@
import io.ktor.client.engine.mock.*
import io.ktor.http.*
import org.junit.Test
-import tech.libeufin.nexus.*
-import tech.libeufin.nexus.ebics.*
+import tech.libeufin.nexus.ebics.EbicsError
+import tech.libeufin.nexus.ebics.postToBank
+import tech.libeufin.nexus.generateKeysPdf
import kotlin.io.path.Path
import kotlin.io.path.writeBytes
-import kotlin.test.*
+import kotlin.test.assertEquals
+import kotlin.test.assertFailsWith
class EbicsTest {
// POSTs an EBICS message to the mock bank. Tests
diff --git a/nexus/src/test/kotlin/Parsing.kt b/nexus/src/test/kotlin/Parsing.kt
index f5cbfb9c..7f2bb162 100644
--- a/nexus/src/test/kotlin/Parsing.kt
+++ b/nexus/src/test/kotlin/Parsing.kt
@@ -18,9 +18,12 @@
*/
import org.junit.Test
-import tech.libeufin.common.*
+import tech.libeufin.common.EddsaPublicKey
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.parseIncomingTxMetadata
import tech.libeufin.nexus.getAmountNoCurrency
-import kotlin.test.*
+import kotlin.test.assertEquals
+import kotlin.test.assertFails
class Parsing {
diff --git a/nexus/src/test/kotlin/XmlCombinatorsTest.kt b/nexus/src/test/kotlin/XmlCombinatorsTest.kt
index aeb8b327..7aeb11b0 100644
--- a/nexus/src/test/kotlin/XmlCombinatorsTest.kt
+++ b/nexus/src/test/kotlin/XmlCombinatorsTest.kt
@@ -18,8 +18,8 @@
*/
import org.junit.Test
-import tech.libeufin.nexus.XmlBuilder
import tech.libeufin.nexus.XMLUtil
+import tech.libeufin.nexus.XmlBuilder
import kotlin.test.assertEquals
class XmlCombinatorsTest {
diff --git a/nexus/src/test/kotlin/XmlUtilTest.kt b/nexus/src/test/kotlin/XmlUtilTest.kt
index a60e0904..4c48aa5d 100644
--- a/nexus/src/test/kotlin/XmlUtilTest.kt
+++ b/nexus/src/test/kotlin/XmlUtilTest.kt
@@ -23,7 +23,6 @@ import tech.libeufin.common.crypto.CryptoUtil
import tech.libeufin.common.decodeBase64
import tech.libeufin.nexus.XMLUtil
import java.security.KeyPairGenerator
-import javax.xml.transform.stream.StreamSource
class XmlUtilTest {
diff --git a/nexus/src/test/kotlin/helpers.kt b/nexus/src/test/kotlin/helpers.kt
index 2f02f2ec..8b7eac4a 100644
--- a/nexus/src/test/kotlin/helpers.kt
+++ b/nexus/src/test/kotlin/helpers.kt
@@ -21,10 +21,13 @@ import io.ktor.client.*
import io.ktor.client.engine.mock.*
import io.ktor.client.request.*
import kotlinx.coroutines.runBlocking
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
+import tech.libeufin.common.TalerAmount
+import tech.libeufin.common.db.dbInit
+import tech.libeufin.common.db.pgDataSource
+import tech.libeufin.common.fromFile
import tech.libeufin.nexus.*
-import tech.libeufin.nexus.db.*
+import tech.libeufin.nexus.db.Database
+import tech.libeufin.nexus.db.InitiatedPayment
import java.time.Instant
import kotlin.io.path.Path
diff --git a/testbench/src/main/kotlin/Main.kt b/testbench/src/main/kotlin/Main.kt
index 7a3216bb..af61a94f 100644
--- a/testbench/src/main/kotlin/Main.kt
+++ b/testbench/src/main/kotlin/Main.kt
@@ -19,20 +19,18 @@
package tech.libeufin.testbench
-import tech.libeufin.nexus.*
-import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import com.github.ajalt.clikt.core.*
-import com.github.ajalt.clikt.parameters.arguments.*
-import com.github.ajalt.clikt.parameters.types.*
-import com.github.ajalt.clikt.testing.*
+import com.github.ajalt.clikt.core.CliktCommand
+import com.github.ajalt.clikt.core.ProgramResult
+import com.github.ajalt.clikt.parameters.arguments.argument
+import com.github.ajalt.clikt.testing.test
import io.ktor.client.*
import io.ktor.client.engine.cio.*
-import kotlin.test.*
-import kotlin.io.path.*
-import java.time.Instant
import kotlinx.coroutines.runBlocking
-import io.ktor.client.request.*
+import tech.libeufin.nexus.LibeufinNexusCommand
+import tech.libeufin.nexus.loadBankKeys
+import tech.libeufin.nexus.loadClientKeys
+import tech.libeufin.nexus.loadConfig
+import kotlin.io.path.*
val nexusCmd = LibeufinNexusCommand()
val client = HttpClient(CIO)
diff --git a/testbench/src/test/kotlin/IntegrationTest.kt b/testbench/src/test/kotlin/IntegrationTest.kt
index a8812c8b..f24e6d92 100644
--- a/testbench/src/test/kotlin/IntegrationTest.kt
+++ b/testbench/src/test/kotlin/IntegrationTest.kt
@@ -17,28 +17,25 @@
* <http://www.gnu.org/licenses/>
*/
-import org.junit.Test
-import tech.libeufin.bank.*
-import tech.libeufin.nexus.*
-import tech.libeufin.nexus.db.Database as NexusDb
-import tech.libeufin.bank.db.AccountDAO.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
-import java.time.Instant
-import java.util.Arrays
-import java.sql.SQLException
-import kotlinx.coroutines.runBlocking
-import com.github.ajalt.clikt.testing.test
import com.github.ajalt.clikt.core.CliktCommand
-import org.postgresql.jdbc.PgConnection
-import kotlin.test.*
-import kotlin.io.path.*
+import com.github.ajalt.clikt.testing.test
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
-import io.ktor.http.HttpStatusCode
+import io.ktor.http.*
+import kotlinx.coroutines.runBlocking
+import org.junit.Test
+import tech.libeufin.bank.*
+import tech.libeufin.common.*
+import tech.libeufin.common.db.one
+import tech.libeufin.nexus.*
+import java.time.Instant
+import kotlin.io.path.Path
+import kotlin.io.path.readText
+import kotlin.test.assertEquals
+import tech.libeufin.nexus.db.Database as NexusDb
fun CliktCommand.run(cmd: String) {
val result = test(cmd)
diff --git a/testbench/src/test/kotlin/Iso20022Test.kt b/testbench/src/test/kotlin/Iso20022Test.kt
index 55b5295e..b287d0d1 100644
--- a/testbench/src/test/kotlin/Iso20022Test.kt
+++ b/testbench/src/test/kotlin/Iso20022Test.kt
@@ -17,10 +17,15 @@
* <http://www.gnu.org/licenses/>
*/
-import tech.libeufin.nexus.*
import org.junit.Test
-import java.nio.file.*
-import kotlin.io.path.*
+import tech.libeufin.nexus.parseCustomerAck
+import tech.libeufin.nexus.parseCustomerPaymentStatusReport
+import tech.libeufin.nexus.parseTxNotif
+import java.nio.file.Files
+import kotlin.io.path.Path
+import kotlin.io.path.exists
+import kotlin.io.path.isDirectory
+import kotlin.io.path.listDirectoryEntries
class Iso20022Test {
@Test
diff --git a/testbench/src/test/kotlin/MigrationTest.kt b/testbench/src/test/kotlin/MigrationTest.kt
index 25b72605..ac56cf20 100644
--- a/testbench/src/test/kotlin/MigrationTest.kt
+++ b/testbench/src/test/kotlin/MigrationTest.kt
@@ -17,20 +17,12 @@
* <http://www.gnu.org/licenses/>
*/
-import org.junit.Test
-import tech.libeufin.bank.db.TransactionDAO.BankTransactionResult
-import tech.libeufin.bank.db.WithdrawalDAO.WithdrawalCreationResult
-import tech.libeufin.bank.db.*
-import tech.libeufin.bank.*
-import tech.libeufin.common.*
-import tech.libeufin.common.db.*
-import java.time.Instant
-import java.util.*
-import org.postgresql.jdbc.PgConnection
-import kotlin.test.assertEquals
import kotlinx.coroutines.runBlocking
-import java.nio.file.Path
-import kotlin.io.path.*
+import org.junit.Test
+import tech.libeufin.common.db.pgConnection
+import tech.libeufin.common.db.pgDataSource
+import kotlin.io.path.Path
+import kotlin.io.path.readText
class MigrationTest {
@Test