Class GroupStorageManager

    • Constructor Detail

      • GroupStorageManager

        public GroupStorageManager​(KeycloakSession session)
    • Method Detail

      • searchGroupsByAttributes

        public Stream<GroupModel> searchGroupsByAttributes​(RealmModel realm,
                                                           Map<String,​String> attributes,
                                                           Integer firstResult,
                                                           Integer maxResults)
        Description copied from interface: GroupLookupProvider
        Returns the groups filtered by attribute names and attribute values for the given realm.
        Specified by:
        searchGroupsByAttributes in interface GroupLookupProvider
        Parameters:
        realm - Realm.
        attributes - name-value pairs that are compared to group attributes.
        firstResult - First result to return. Ignored if negative or null.
        maxResults - Maximum number of results to return. Ignored if negative or null.
        Returns:
        Stream of groups with attributes matching all searched attributes. Never returns null.
      • searchForGroupByNameStream

        public Stream<GroupModel> searchForGroupByNameStream​(RealmModel realm,
                                                             String search,
                                                             Boolean exact,
                                                             Integer firstResult,
                                                             Integer maxResults)
        Obtaining groups from an external client storage is time-bounded. In case the external group storage isn't available at least groups from a local storage are returned. For this purpose the DefaultKeycloakSessionFactory.getClientStorageProviderTimeout() property is used. Default value is 3000 milliseconds and it's configurable. See DefaultKeycloakSessionFactory for details.
        Specified by:
        searchForGroupByNameStream in interface GroupLookupProvider
        Parameters:
        realm - Realm.
        search - Case sensitive searched string.
        exact - Boolean which defines wheather search param should be matched exactly.
        firstResult - First result to return. Ignored if negative or null.
        maxResults - Maximum number of results to return. Ignored if negative or null.
        Returns:
        Stream of root groups that have the given string in their name themself or a group in their child-collection has. The returned hierarchy contains siblings that do not necessarily have a matching name. Never returns null.
      • getGroupsStream

        public Stream<GroupModel> getGroupsStream​(RealmModel realm,
                                                  Stream<String> ids,
                                                  String search,
                                                  Integer first,
                                                  Integer max)
        Description copied from interface: GroupProvider
        Returns a paginated stream of groups with given ids and given search value in group names.
        Specified by:
        getGroupsStream in interface GroupProvider
        Parameters:
        realm - Realm.
        ids - Stream of ids.
        search - Case insensitive string which will be searched for. Ignored if null.
        first - Index of the first result to return. Ignored if negative or null.
        max - Maximum number of results to return. Ignored if negative or null.
        Returns:
        Stream of desired groups. Never returns null.
      • getGroupsCount

        public Long getGroupsCount​(RealmModel realm,
                                   Boolean onlyTopGroups)
        Description copied from interface: GroupProvider
        Returns a number of groups/top level groups (i.e. groups without parent group) for the given realm.
        Specified by:
        getGroupsCount in interface GroupProvider
        Parameters:
        realm - Realm.
        onlyTopGroups - When true the function returns a count of top level groups only.
        Returns:
        Number of groups/top level groups.
      • getGroupsCountByNameContaining

        public Long getGroupsCountByNameContaining​(RealmModel realm,
                                                   String search)
        Description copied from interface: GroupProvider
        Returns the number of top level groups containing groups with the given string in name for the given realm.
        Specified by:
        getGroupsCountByNameContaining in interface GroupProvider
        Parameters:
        realm - Realm.
        search - Case insensitive string which will be searched for.
        Returns:
        Number of groups with the given string in its name.
      • getGroupsByRoleStream

        public Stream<GroupModel> getGroupsByRoleStream​(RealmModel realm,
                                                        RoleModel role,
                                                        Integer firstResult,
                                                        Integer maxResults)
        Description copied from interface: GroupProvider
        Returns groups with the given role in the given realm.
        Specified by:
        getGroupsByRoleStream in interface GroupProvider
        Parameters:
        realm - Realm.
        role - Role.
        firstResult - First result to return. Ignored if negative or null.
        maxResults - Maximum number of results to return. Ignored if negative or null.
        Returns:
        Stream of groups with the given role. Never returns null.
      • getTopLevelGroupsStream

        public Stream<GroupModel> getTopLevelGroupsStream​(RealmModel realm)
        Description copied from interface: GroupProvider
        Returns all top level groups (i.e. groups without parent group) for the given realm.
        Specified by:
        getTopLevelGroupsStream in interface GroupProvider
        Parameters:
        realm - Realm.
        Returns:
        Stream of all top level groups in the realm. Never returns null.
      • getTopLevelGroupsStream

        public Stream<GroupModel> getTopLevelGroupsStream​(RealmModel realm,
                                                          Integer firstResult,
                                                          Integer maxResults)
        Description copied from interface: GroupProvider
        Returns top level groups (i.e. groups without parent group) for the given realm.
        Specified by:
        getTopLevelGroupsStream in interface GroupProvider
        Parameters:
        realm - Realm.
        firstResult - First result to return. Ignored if negative or null.
        maxResults - Maximum number of results to return. Ignored if negative or null.
        Returns:
        Stream of top level groups in the realm. Never returns null.
      • createGroup

        public GroupModel createGroup​(RealmModel realm,
                                      String id,
                                      String name,
                                      GroupModel toParent)
        Description copied from interface: GroupProvider
        Creates a new group with the given name, id, name and parent to the given realm.
        Specified by:
        createGroup in interface GroupProvider
        Parameters:
        realm - Realm.
        id - Id, will be generated if null.
        name - Name.
        toParent - Parent group, or null if the group is top level group
        Returns:
        Model of the created group
      • removeGroup

        public boolean removeGroup​(RealmModel realm,
                                   GroupModel group)
        Description copied from interface: GroupProvider
        Removes the given group for the given realm.
        Specified by:
        removeGroup in interface GroupProvider
        Parameters:
        realm - Realm.
        group - Group.
        Returns:
        true if the group was removed, false if group doesn't exist or doesn't belong to the given realm
      • moveGroup

        public void moveGroup​(RealmModel realm,
                              GroupModel group,
                              GroupModel toParent)
        Description copied from interface: GroupProvider
        This method is used for moving groups in group structure, for example:
        • making an existing child group child group of some other group,
        • setting a top level group (i.e. group without parent group) child of some group,
        • making a child group top level group (i.e. removing its parent group).
          Specified by:
          moveGroup in interface GroupProvider
          Parameters:
          realm - Realm owning this group.
          group - Group to update.
          toParent - New parent group, or null if we are moving the group to top level group.
        • close

          public void close()
          Specified by:
          close in interface Provider