in src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java [975:1050]
List<User> findUsers( User user ) throws FinderException
{
List<User> userList = new ArrayList<>();
LdapConnection ld = null;
String userRoot = getRootDn( user.getContextId(), GlobalIds.USER_ROOT );
try
{
//String filter;
StringBuilder filterbuf = new StringBuilder();
if ( StringUtils.isNotEmpty( user.getUserId() ) )
{
// place a wild card after the input userId:
String searchVal = encodeSafeText( user.getUserId(), GlobalIds.USERID_LEN );
filterbuf.append( GlobalIds.FILTER_PREFIX );
filterbuf.append( Config.getInstance().getProperty( USER_OBJECT_CLASS ) );
filterbuf.append( ")(" );
filterbuf.append( SchemaConstants.UID_AT );
filterbuf.append( "=" );
filterbuf.append( searchVal );
filterbuf.append( "*))" );
}
else if ( StringUtils.isNotEmpty( user.getInternalId() ) )
{
// internalUserId search
String searchVal = encodeSafeText( user.getInternalId(), GlobalIds.USERID_LEN );
// this is not a wildcard search. Must be exact match.
filterbuf.append( GlobalIds.FILTER_PREFIX );
filterbuf.append( Config.getInstance().getProperty( USER_OBJECT_CLASS ) );
filterbuf.append( ")(" );
filterbuf.append( GlobalIds.FT_IID );
filterbuf.append( "=" );
filterbuf.append( searchVal );
filterbuf.append( "))" );
}
else
{
// Beware - returns ALL users!!:"
filterbuf.append( "(objectclass=" );
filterbuf.append( Config.getInstance().getProperty( USER_OBJECT_CLASS ) );
filterbuf.append( ")" );
}
ld = getAdminConnection();
try ( SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) ) ) )
{
long sequence = 0;
while ( searchResults.next() )
{
userList.add( unloadLdapEntry( searchResults.getEntry(), sequence++, user.getContextId() ) );
}
}
catch ( IOException e )
{
String warning = "findUsers userRoot [" + userRoot + "] caught IOException=" + e.getMessage();
throw new FinderException( GlobalErrIds.USER_SEARCH_FAILED, warning, e );
}
catch ( CursorException e )
{
String warning = "findUsers userRoot [" + userRoot + "] caught CursorException=" + e.getMessage();
throw new FinderException( GlobalErrIds.USER_SEARCH_FAILED, warning, e );
}
}
catch ( LdapException e )
{
String warning = "findUsers userRoot [" + userRoot + "] caught LDAPException=" + e;
throw new FinderException( GlobalErrIds.USER_SEARCH_FAILED, warning, e );
}
finally
{
closeAdminConnection( ld );
}
return userList;
}