OperationManager operationManager = directoryService.getOperationManager();
// Check if we received serverside sort Control
SortRequestControl sortControl = ( SortRequestControl ) searchRequest.getControls().get( SortRequestControl.OID );
SortResponseControl sortRespCtrl = null;
SearchResultDone done = searchRequest.getResultResponse();
LdapResult ldapResult = done.getLdapResult();
if( sortControl != null )
{
sortRespCtrl = canSort( sortControl, ldapResult, getDirectoryService().getSchemaManager() );
if ( sortControl.isCritical() && ( sortRespCtrl.getSortResult() != SortResultCode.SUCCESS ) )
{
ldapResult.setResultCode( ResultCodeEnum.UNAVAILABLE_CRITICAL_EXTENSION );
done.addControl( sortRespCtrl );
return new EmptyCursor<Entry>();
}
}
Cursor<Entry> cursor = null;
try
{
cursor = operationManager.search( searchContext );
if ( ( sortRespCtrl != null ) && ( sortRespCtrl.getSortResult() == SortResultCode.SUCCESS ) )
{
cursor = sortResults( cursor, sortControl, getDirectoryService().getSchemaManager() );
}
// the below condition is to satisfy the scenario 6 in section 2 of rfc2891