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;
}