diff --git a/gravitee-apim-repository/gravitee-apim-repository-jdbc/src/main/java/io/gravitee/repository/jdbc/management/JdbcUserRepository.java b/gravitee-apim-repository/gravitee-apim-repository-jdbc/src/main/java/io/gravitee/repository/jdbc/management/JdbcUserRepository.java index b100d685cce..1cfd1410e99 100644 --- a/gravitee-apim-repository/gravitee-apim-repository-jdbc/src/main/java/io/gravitee/repository/jdbc/management/JdbcUserRepository.java +++ b/gravitee-apim-repository/gravitee-apim-repository-jdbc/src/main/java/io/gravitee/repository/jdbc/management/JdbcUserRepository.java @@ -110,6 +110,9 @@ public List findByEmail(String email, String organizationId) throws Techni @Override public Set findByIds(final Collection ids) throws TechnicalException { + if (ids == null || ids.isEmpty()) { + return Collections.emptySet(); + } final String[] lastId = new String[1]; List uniqueIds = ids .stream() diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImpl.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImpl.java index d6cd9770d59..3dd445333cc 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImpl.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImpl.java @@ -55,6 +55,9 @@ public Optional findBaseUserById(String id) { @Override public Set findBaseUsersByIds(List userIds) { + if (userIds == null || userIds.isEmpty()) { + return Set.of(); + } try { log.debug("Find users [userIds={}]", userIds); return userRepository.findByIds(userIds).stream().map(UserAdapter.INSTANCE::fromUser).collect(Collectors.toSet()); diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/domain_service/api/ApiCRDExportDomainServiceImpl.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/domain_service/api/ApiCRDExportDomainServiceImpl.java index 74b541b200b..f40ffad21cd 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/domain_service/api/ApiCRDExportDomainServiceImpl.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/domain_service/api/ApiCRDExportDomainServiceImpl.java @@ -94,8 +94,10 @@ private void setMembersSourceId(Set members) { membersById.forEach((id, member) -> { var user = usersById.get(id); - member.setSourceId(user.getSourceId()); - member.setSource(user.getSource()); + if (user != null) { + member.setSourceId(user.getSourceId()); + member.setSource(user.getSource()); + } member.setId(null); }); } diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImplTest.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImplTest.java index f59896154a2..57351302de6 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImplTest.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/infra/crud_service/user/UserCrudServiceImplTest.java @@ -36,6 +36,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.NullAndEmptySource; public class UserCrudServiceImplTest { @@ -121,6 +123,13 @@ void should_throw_when_technical_exception_occurs() throws TechnicalException { @Nested class FindBaseUserByIds { + @ParameterizedTest + @NullAndEmptySource + void should_return_empty_set_when_user_ids_is_null_or_empty(List userIds) { + var result = service.findBaseUsersByIds(userIds); + assertThat(result).isEmpty(); + } + @Test void should_find_users_and_adapt_them() throws TechnicalException { // Given