From 29d368c797dc6b8da022c12722f5eccb8a218a39 Mon Sep 17 00:00:00 2001 From: krishna-patel-ch Date: Mon, 9 Sep 2024 15:32:47 +0100 Subject: [PATCH] A ConcurrentHashMap does not work with null keys or values. This means it will crash when you call ConcurrentHashMap.getOrDefault(null). We were calling ConcurrentHashMap.getOrDefault(userId), and userId was nullable in that context. Fixed logic to prevent ConcurrentHashMap.getOrDefault method being called with null input. --- .../association/mapper/AssociationsListMappers.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/uk/gov/companieshouse/accounts/association/mapper/AssociationsListMappers.java b/src/main/java/uk/gov/companieshouse/accounts/association/mapper/AssociationsListMappers.java index 6feef34..e8258ca 100644 --- a/src/main/java/uk/gov/companieshouse/accounts/association/mapper/AssociationsListMappers.java +++ b/src/main/java/uk/gov/companieshouse/accounts/association/mapper/AssociationsListMappers.java @@ -43,7 +43,11 @@ public AssociationsList daoToDto( final Page associationsList, f final var endpointUrl = computeEndpointUrl( companyDetails ); final var users = Objects.isNull( userDetails ) ? usersService.fetchUserDetails( associationsList.stream() ) : Map.of( userDetails.getUserId(), userDetails ); final var companies = Objects.isNull( companyDetails ) ? companyService.fetchCompanyProfiles( associationsList.stream() ) : Map.of( companyDetails.getCompanyNumber(), companyDetails ); - final var associations = associationsList.map( associationDao -> daoToDto( associationDao, users.getOrDefault( associationDao.getUserId(), null ), companies.get( associationDao.getCompanyNumber() ) ) ); + final var associations = associationsList.map( associationDao -> { + final var user = Objects.isNull( associationDao.getUserId() ) ? null : users.getOrDefault( associationDao.getUserId(), null ); + final var company = companies.get( associationDao.getCompanyNumber() ); + return daoToDto( associationDao, user, company ); + } ); return enrichWithMetadata( associations, endpointUrl ); }