mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-25 16:42:34 +00:00
Calling getTopLevelGroups is slow inside GroupLDAPStorageMapper#getLDAPGroupMappingsConverted (#8430)
Closes #14820 --------- Co-authored-by: Michal Hajas <mhajas@redhat.com>
This commit is contained in:
@@ -93,6 +93,28 @@ public class MapGroupProvider implements GroupProvider {
|
||||
: entityToAdapterFunc(realm).apply(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GroupModel getGroupByName(RealmModel realm, GroupModel parent, String name) {
|
||||
if (name == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
LOG.tracef("getGroupByName(%s, %s)%s", realm, name, getShortStackTrace());
|
||||
|
||||
DefaultModelCriteria<GroupModel> mcb = criteria();
|
||||
mcb = mcb.compare(SearchableFields.NAME, Operator.EQ, name)
|
||||
.compare(SearchableFields.REALM_ID, Operator.EQ, realm.getId());
|
||||
if (parent != null) {
|
||||
mcb = mcb.compare(SearchableFields.PARENT_ID, Operator.EQ, parent.getId());
|
||||
} else {
|
||||
mcb = mcb.compare(SearchableFields.PARENT_ID, Operator.NOT_EXISTS);
|
||||
}
|
||||
QueryParameters<GroupModel> queryParameters = withCriteria(mcb);
|
||||
String groupId = storeWithRealm(realm).read(queryParameters).findFirst().map(MapGroupEntity::getId)
|
||||
.orElse(null);
|
||||
return groupId == null ? null : session.groups().getGroupById(realm, groupId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Stream<GroupModel> getGroupsStream(RealmModel realm) {
|
||||
return getGroupsStreamInternal(realm, null, null);
|
||||
|
||||
Reference in New Issue
Block a user