Filter out null values when looking up entries by ID

This should prevent null elements in the stream when doing concurrent operations.

Closes #28865

Signed-off-by: Alexander Schwartz <aschwart@redhat.com>
This commit is contained in:
Alexander Schwartz 2024-07-19 17:12:49 +02:00 committed by Alexander Schwartz
parent 21d00704ae
commit 65d4b74758

View file

@ -279,7 +279,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
query.setParameter("realm", realm.getId()); query.setParameter("realm", realm.getId());
Stream<String> roles = query.getResultStream(); Stream<String> roles = query.getResultStream();
return closing(roles.map(realm::getRoleById)); return closing(roles.map(realm::getRoleById).filter(Objects::nonNull));
} }
@Override @Override
@ -332,7 +332,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
.setParameter("ids", ids.collect(Collectors.toList())); .setParameter("ids", ids.collect(Collectors.toList()));
return closing(paginateQuery(query, first, max).getResultStream()) return closing(paginateQuery(query, first, max).getResultStream())
.map(g -> session.roles().getRoleById(realm, g)); .map(g -> session.roles().getRoleById(realm, g)).filter(Objects::nonNull);
} }
@Override @Override
@ -556,7 +556,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
.setParameter("ids", idsList); .setParameter("ids", idsList);
return closing(paginateQuery(query, first, max).getResultStream()) return closing(paginateQuery(query, first, max).getResultStream())
.map(g -> session.groups().getGroupById(realm, g)); .map(g -> session.groups().getGroupById(realm, g)).filter(Objects::nonNull);
} }
@Override @Override
@ -576,7 +576,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
return closing(paginateQuery(query, first, max).getResultStream()) return closing(paginateQuery(query, first, max).getResultStream())
.map(g -> session.groups().getGroupById(realm, g)); .map(g -> session.groups().getGroupById(realm, g)).filter(Objects::nonNull);
} }
@Override @Override
@ -904,7 +904,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
TypedQuery<String> query = em.createQuery(queryBuilder); TypedQuery<String> query = em.createQuery(queryBuilder);
return closing(paginateQuery(query, firstResult, maxResults).getResultStream()) return closing(paginateQuery(query, firstResult, maxResults).getResultStream())
.map(id -> session.clients().getClientById(realm, id)); .map(id -> session.clients().getClientById(realm, id)).filter(Objects::nonNull);
} }
@Override @Override
@ -949,7 +949,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
TypedQuery<String> query = em.createQuery(queryBuilder); TypedQuery<String> query = em.createQuery(queryBuilder);
return closing(paginateQuery(query, firstResult, maxResults).getResultStream()) return closing(paginateQuery(query, firstResult, maxResults).getResultStream())
.map(id -> session.clients().getClientById(realm, id)); .map(id -> session.clients().getClientById(realm, id)).filter(Objects::nonNull);
} }
@Override @Override
@ -1019,7 +1019,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
query.setParameter("realm", realm.getId()); query.setParameter("realm", realm.getId());
Stream<String> scopes = query.getResultStream(); Stream<String> scopes = query.getResultStream();
return closing(scopes.map(realm::getClientScopeById)); return closing(scopes.map(realm::getClientScopeById).filter(Objects::nonNull));
} }
@Override @Override
@ -1159,7 +1159,7 @@ public class JpaRealmProvider implements RealmProvider, ClientProvider, ClientSc
.setParameter("search", search); .setParameter("search", search);
Stream<String> groups = paginateQuery(query, first, max).getResultStream(); Stream<String> groups = paginateQuery(query, first, max).getResultStream();
return closing(groups.map(id -> session.groups().getGroupById(realm, id)).sorted(GroupModel.COMPARE_BY_NAME).distinct()); return closing(groups.map(id -> session.groups().getGroupById(realm, id)).filter(Objects::nonNull).sorted(GroupModel.COMPARE_BY_NAME).distinct());
} }
@Override @Override