Implemented logging only if it's really an exception and not a known wrong implementation of FinTS standard

This commit is contained in:
dankito 2020-09-18 18:45:23 +02:00
parent 347b3e59e7
commit 75399e0664
1 changed files with 10 additions and 2 deletions

View File

@ -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 <T : Enum<T>> tryToParseEnumAsBoolean(enumString: String, valueForTrue: T, valueForFalse: T): T {
try {
val bool = parseBoolean(enumString)