From 70d24fe4d01fc99fe1e85df5e66abe6a52c9f3d9 Mon Sep 17 00:00:00 2001 From: Douglas Voet Date: Thu, 15 May 2025 17:42:24 -0400 Subject: [PATCH] doge screams into the void --- .../java/bio/terra/externalcreds/services/JwtUtils.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/service/src/main/java/bio/terra/externalcreds/services/JwtUtils.java b/service/src/main/java/bio/terra/externalcreds/services/JwtUtils.java index 0ae016d8..c59f568c 100644 --- a/service/src/main/java/bio/terra/externalcreds/services/JwtUtils.java +++ b/service/src/main/java/bio/terra/externalcreds/services/JwtUtils.java @@ -14,6 +14,7 @@ import java.sql.Timestamp; import java.text.ParseException; import java.time.Instant; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; @@ -60,7 +61,13 @@ public PassportWithVisas decodeAndValidatePassportJwtString(String passportJwtSt passportJwt.getClaimAsStringList(GA4GH_PASSPORT_V1_CLAIM), Collections.emptyList()); var visas = - visaJwtStrings.stream().map(this::decodeAndValidateJwt).map(JwtUtils::buildVisa).toList(); + visaJwtStrings.stream() + // this split is here because RAS prefers to encode the visa list as a single comma + // delimited string instead of a json array as the spec requires + .flatMap(s -> Arrays.stream(s.split(","))) + .map(this::decodeAndValidateJwt) + .map(JwtUtils::buildVisa) + .toList(); return new PassportWithVisas.Builder() .passport(buildPassport(passportJwt))