List groupRoles()

in src/main/java/org/apache/directory/fortress/core/impl/RoleDAO.java [568:635]


    List<Role> groupRoles ( Group group ) throws FinderException
    {
        List<Role> roleList = new ArrayList<>();
        LdapConnection ld = null;
        String roleRoot = getRootDn( group.getContextId(), GlobalIds.ROLE_ROOT );
        StringBuilder filterbuf = new StringBuilder();

        try
        {
            // loop for each group member....
            // add role name to search filter
            //
            List<String> members = group.getMembers();
            if ( CollectionUtils.isNotEmpty( members ) )
            {
                filterbuf.append( GlobalIds.FILTER_PREFIX );
                filterbuf.append( GlobalIds.ROLE_OBJECT_CLASS_NM );
                filterbuf.append( ")(" );
                filterbuf.append( "|" );
                for ( String memberdn : members )
                {
                    filterbuf.append( "(" );
                    filterbuf.append( SchemaConstants.ENTRY_DN_AT );
                    filterbuf.append( "=" );
                    filterbuf.append( memberdn );
                    filterbuf.append( ")" );
                }
                filterbuf.append( "))" );

                ld = getAdminConnection();
                try ( SearchCursor searchResults = search( ld, roleRoot,
                    SearchScope.ONELEVEL, filterbuf.toString(), ROLE_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) ) )
                {
                    long sequence = 0;
                    while ( searchResults.next() )
                    {
                        roleList.add( unloadLdapEntry( searchResults.getEntry(), sequence++, group.getContextId() ) );
                    }
                }
                catch ( IOException e )
                {
                    String error = "groupRoles filter [" + filterbuf.toString() + "] caught IOException=" + e.getMessage();
                    throw new FinderException( GlobalErrIds.ROLE_SEARCH_FAILED, error, e );
                }
                catch ( CursorException e )
                {
                    String error = "groupRoles filter [" + filterbuf.toString() + "] caught CursorException=" + e.getMessage();
                    throw new FinderException( GlobalErrIds.ROLE_SEARCH_FAILED, error, e );
                }
            }
            else
            {
                String error = "groupRoles passed empty member list";
                throw new FinderException( GlobalErrIds.GROUP_MEMBER_NULL, error );
            }
        }
        catch ( LdapException e )
        {
            String error = "groupRoles filter [" + filterbuf.toString() + "] caught LdapException=" + e;
            throw new FinderException( GlobalErrIds.ROLE_SEARCH_FAILED, error, e );
        }
        finally
        {
            closeAdminConnection( ld );
        }

        return roleList;
    }