From 75399e0664d06513437ab843f2c2546a37bf844c Mon Sep 17 00:00:00 2001 From: dankito Date: Fri, 18 Sep 2020 18:45:23 +0200 Subject: [PATCH] Implemented logging only if it's really an exception and not a known wrong implementation of FinTS standard --- .../dankito/banking/fints/response/ResponseParser.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/response/ResponseParser.kt b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/response/ResponseParser.kt index 2b7ad717..78696491 100644 --- a/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/response/ResponseParser.kt +++ b/fints4k/src/commonMain/kotlin/net/dankito/banking/fints/response/ResponseParser.kt @@ -456,7 +456,9 @@ open class ResponseParser( try { return parseCodeEnum(smsAbbuchungskontoErforderlichString, SmsAbbuchungskontoErforderlich.values()) } catch (e: Exception) { - log.error(e) { "Could not parse '$smsAbbuchungskontoErforderlichString' to SmsAbbuchungskontoErforderlich"} + if (isEncodedBooleanValue(smsAbbuchungskontoErforderlichString) == false) { + log.error(e) { "Could not parse '$smsAbbuchungskontoErforderlichString' to SmsAbbuchungskontoErforderlich" } + } } // Bankhaus Neelmeyer and Oldenburgische Landesbank encode SmsAbbuchungskontoErforderlich with boolean values (with is wrong according to FinTS standard) @@ -469,7 +471,9 @@ open class ResponseParser( try { return parseCodeEnum(auftraggeberkontoErforderlichString, AuftraggeberkontoErforderlich.values()) } catch (e: Exception) { - log.error(e) { "Could not parse '$auftraggeberkontoErforderlichString' to AuftraggeberkontoErforderlich" } + if (isEncodedBooleanValue(auftraggeberkontoErforderlichString) == false) { + log.error(e) { "Could not parse '$auftraggeberkontoErforderlichString' to AuftraggeberkontoErforderlich" } + } } // Bankhaus Neelmeyer and Oldenburgische Landesbank encode AuftraggeberkontoErforderlich with boolean values (with is wrong according to FinTS standard) @@ -478,6 +482,10 @@ open class ResponseParser( AuftraggeberkontoErforderlich.AuftraggeberkontoDarfNichtAngegebenWerden) } + protected open fun isEncodedBooleanValue(value: String): Boolean { + return value == "N" || value == "J" + } + protected open fun > tryToParseEnumAsBoolean(enumString: String, valueForTrue: T, valueForFalse: T): T { try { val bool = parseBoolean(enumString)