Skip to content

Commit 2ab66cd

Browse files
EPA-231: Better logging
1 parent 28c90ab commit 2ab66cd

2 files changed

Lines changed: 25 additions & 6 deletions

File tree

epa4all-client/src/main/java/com/oviva/telematik/epa4all/client/internal/Epa4AllClientFactory.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.security.*;
2121
import java.time.Duration;
2222
import java.util.List;
23+
import java.util.stream.Collectors;
2324
import javax.net.ssl.SSLContext;
2425
import org.bouncycastle.jce.provider.BouncyCastleProvider;
2526
import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider;
@@ -120,24 +121,38 @@ private static SmcbCard findSmcBCard(KonnektorService konnektorService, String t
120121
}
121122
if (telematikId == null) {
122123
if (cards.size() > 1) {
123-
log.atInfo().log("more than one SMC-B card found, using first one");
124+
log.atInfo().log(
125+
"more than one SMC-B card found, using first one - available: %s"
126+
.formatted(cardListToString(cards)));
124127
}
125128
return cards.getFirst();
126129
}
127130

128-
cards = cards.stream().filter(c -> c.telematikId().equals(telematikId)).toList();
129-
if (cards.isEmpty()) {
130-
throw new Epa4AllClientException("no SMC-B card found for telematikId " + telematikId);
131+
var selectedCard = cards.stream().filter(c -> c.telematikId().equals(telematikId)).toList();
132+
if (selectedCard.isEmpty()) {
133+
throw new Epa4AllClientException(
134+
"no SMC-B card found for telematikId '%s', available %s"
135+
.formatted(telematikId, cardListToString(cards)));
131136
}
132-
if (cards.size() > 1) {
137+
if (selectedCard.size() > 1) {
133138
log.atInfo()
134139
.addKeyValue("telematikId", telematikId)
135140
.log(
136141
"more than one SMC-B card found for telematikId \"{}\", using first one",
137142
telematikId);
138143
}
139144

140-
return cards.getFirst();
145+
return selectedCard.getFirst();
146+
}
147+
148+
private static String cardListToString(List<SmcbCard> cards) {
149+
return "[ "
150+
+ cards.stream().map(Epa4AllClientFactory::cardToString).collect(Collectors.joining(", "))
151+
+ " ]";
152+
}
153+
154+
private static String cardToString(SmcbCard card) {
155+
return "'" + card.telematikId() + "' (" + card.holderName() + ")";
141156
}
142157

143158
private static VauProxy buildVauProxy(

epa4all-client/src/test/java/com/oviva/telematik/epa4all/client/internal/E2eEpa4AllClientImplTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,17 @@ class E2eEpa4AllClientImplTest {
2525
@Test
2626
void writeDocument() {
2727

28+
var telematikIdTinaGraefin = "9-SMC-B-Testkarte-883110000145356";
29+
var telematikIdFeliGraefin = "9-SMC-B-Testkarte-883110000157665";
30+
2831
System.setProperty("jdk.httpclient.HttpClient.log", "errors,requests,headers");
2932

3033
try (var cf =
3134
Epa4AllClientFactoryBuilder.newBuilder()
3235
.konnektorProxyAddress(
3336
new InetSocketAddress(KONNEKTOR_PROXY_HOST, KONNEKTOR_PROXY_PORT))
3437
.konnektorService(TestKonnektors.riseKonnektor_RU())
38+
.telematikId(telematikIdTinaGraefin)
3539
.environment(Environment.RU)
3640
.build()) {
3741

0 commit comments

Comments
 (0)