Package org.opends.server.core
Class SearchOperation
- java.lang.Object
-
- org.opends.server.types.Operation
-
- org.opends.server.core.SearchOperation
-
- All Implemented Interfaces:
Runnable
,InProgressOperation
,InProgressSearchOperation
,PluginOperation
,PostCommitOperation
,PostOperationOperation
,PostOperationSearchOperation
,PostResponseOperation
,PostResponseSearchOperation
,PreOperationOperation
,PreOperationSearchOperation
,PreParseOperation
,PreParseSearchOperation
public class SearchOperation extends Operation implements PreOperationSearchOperation, PreParseSearchOperation, PostOperationSearchOperation, PostResponseSearchOperation, InProgressSearchOperation
This class defines an operation used to search for entries in the Directory Server.
-
-
Field Summary
-
Fields inherited from class org.opends.server.types.Operation
requestContext
-
-
Constructor Summary
Constructors Constructor Description SearchOperation(org.forgerock.services.context.Context context, SearchRequest request)
Creates a new search operation with the provided information.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addResponseControl(Control control)
Adds the provided control to the set of controls to include in the response to the client.Set<String>
getAttributes()
Retrieves the set of requested attributes for this search operation.Dn
getBaseDN()
Retrieves the base DN for this search operation.DereferenceAliasesPolicy
getDerefPolicy()
Retrieves the alias dereferencing policy for this search operation.int
getEntriesSent()
Retrieves the number of entries sent to the client for this search operation.Filter
getFilter()
Retrieves the filter for this search operation.Matcher
getMatcher()
Retrieves the matcher derived from the search filter for this search operation.int
getMaxCandidateSetSize()
Return the maximum candidate set size for this search operation.OperationType
getOperationType()
Retrieves the operation type for this operation.Dn
getProxiedAuthorizationDN()
Retrieves the proxied authorization DN for this operation if proxied authorization has been requested.int
getReferencesSent()
Retrieves the number of search references sent to the client for this search operation.List<Control>
getResponseControls()
Retrieves the set of controls to include in the response to the client.SearchScope
getScope()
Retrieves the scope for this search operation.ServerSideSortRequestControl
getServerSideSortControlOrNull()
Return the Server Side Sort Control of the search request ornull
if absent.SimplePagedResultsControl
getSimplePagedResultsControlOrNull()
Return the Simple Paged Results Control of the search request ornull
if absent.int
getSizeLimit()
Retrieves the size limit for this search operation.int
getTimeLimit()
Retrieves the time limit for this search operation.boolean
getTypesOnly()
Retrieves the typesOnly flag for this search operation.VirtualListViewRequestControl
getVirtualListViewRequestControlOrNull()
Return the Virtual List View Request Control of the search request ornull
if absent.protected void
handleRequestControls()
Handles any controls contained in the request.boolean
isManageDsaIt()
Returnstrue
if this search operation contains the ManageDsaIT control.boolean
isSendResponse()
Indicates whether the search result done message has to be sent to the client, or not.boolean
mayReturnEntry(Entry entry)
Returns if the entry may be returned according to access control and other checks.void
removeResponseControl(Control control)
Removes the provided control from the set of controls to include in the response to the client.boolean
returnEntry(Entry entry, List<Control> controls)
Used as a callback for backends to indicate that the provided entry matches the search criteria and that additional processing should be performed to potentially send it back to the client.boolean
returnReference(Dn dn, SearchResultReference reference)
Used as a callback for backends to indicate that the provided search reference was encountered during processing and that additional processing should be performed to potentially send it back to the client.protected void
run0()
Performs the work of actually processing this operation.void
sendSearchEntry(SearchResultEntry entry)
Sends the provided search result entry to the client.boolean
sendSearchReference(SearchResultReference reference)
Sends the provided search result reference to the client.void
sendSearchResultDone()
Sends the search result done message to the client.void
setAttributes(Set<String> attributes)
Specifies the set of requested attributes for this search operation.void
setBaseDN(Dn baseDN)
Specifies the base DN as included in the request from the client.void
setDerefPolicy(DereferenceAliasesPolicy derefPolicy)
Specifies the alias dereferencing policy for this search operation.void
setFilter(Filter filter)
Specifies the search filter as included in the request from the client.void
setMaxCandidateSetSize(int maxCandidateSetSize)
Set the maximum candidate set size for this search operation.void
setProxiedAuthorizationDN(Dn proxiedAuthorizationDN)
Set the proxied authorization DN for this operation if proxied authorization has been requested.void
setScope(SearchScope scope)
Specifies the scope for this search operation.void
setSendResponse(boolean sendResponse)
Specify whether the search result done message has to be sent to the client, or not.void
setSizeLimit(int sizeLimit)
Specifies the size limit for this search operation.void
setTimeLimit(int timeLimit)
Specifies the time limit for this search operation.void
setTypesOnly(boolean typesOnly)
Specifies the typesOnly flag for this search operation.boolean
timeLimitExpired()
Returns whether the search operation has reached its time limit.void
toString(StringBuilder buffer)
Appends a string representation of this operation to the provided buffer.-
Methods inherited from class org.opends.server.types.Operation
addAdditionalLogItem, addPasswordPolicyWarningToLog, addPostReadResponse, addPreReadResponse, addRequestControl, appendErrorMessage, appendMaskedErrorMessage, checkAttributeConformsToSyntax, checkIfBackendIsWritable, checkIfCanceled, createLdapException, disconnectClient, dontSynchronize, equals, evaluateProxyAuthControls, filterNonDisclosableMatchedDN, getAdditionalLogItems, getAttachment, getAttachments, getAuthorizationDN, getAuthorizationEntry, getClientConnection, getConnectionID, getContext, getErrorMessage, getLargestEntrySize, getLocalBackend, getMatchedDN, getMessageID, getOperationID, getReferralURLs, getRequestControl, getRequestControls, getResultCode, getServerContext, hashCode, hasPrivilege, hasRequestControl, invokePostResponseCallbacks, isInnerOperation, isInternalOperation, isProxyAuthzControl, isSynchronizationOperation, mustCheckSchema, operationCompleted, processOperationResult, processOperationResult, registerPostResponseCallback, removeAllDisallowedControls, removeAttachment, run, setAttachment, setAttachments, setAuthorizationEntry, setDontSynchronize, setErrorMessage, setInnerOperation, setInternalOperation, setMatchedDN, setReferralURLs, setResult, setResult, setResultCode, setResultCodeAndMessageNoInfoDisclosure, setSynchronizationOperation, toString, trySetLargestEntrySize
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.opends.server.types.operation.InProgressOperation
addAdditionalLogItem, appendErrorMessage, getAdditionalLogItems, getAuthorizationDN, getErrorMessage, getMatchedDN, getReferralURLs, getResultCode, setErrorMessage, setMatchedDN, setReferralURLs, setResult, setResultCode
-
Methods inherited from interface org.opends.server.types.operation.PluginOperation
checkIfCanceled, disconnectClient, getAttachment, getAttachments, getClientConnection, getConnectionID, getMessageID, getOperationID, getRequestControl, getRequestControl, getRequestControls, isInternalOperation, isSynchronizationOperation, removeAttachment, setAttachment, toString
-
Methods inherited from interface org.opends.server.types.operation.PostOperationOperation
addAdditionalLogItem, appendErrorMessage, getAdditionalLogItems, getAuthorizationDN, getErrorMessage, getMatchedDN, getReferralURLs, getResultCode, setErrorMessage, setMatchedDN, setReferralURLs, setResult, setResultCode
-
Methods inherited from interface org.opends.server.types.operation.PostResponseOperation
getAdditionalLogItems, getAuthorizationDN, getErrorMessage, getMatchedDN, getReferralURLs, getResultCode
-
Methods inherited from interface org.opends.server.types.operation.PreOperationOperation
addAdditionalLogItem, appendErrorMessage, getAdditionalLogItems, getAuthorizationDN, getErrorMessage, setErrorMessage
-
Methods inherited from interface org.opends.server.types.operation.PreParseOperation
addAdditionalLogItem, addRequestControl, appendErrorMessage, getAdditionalLogItems, getErrorMessage, setErrorMessage
-
-
-
-
Constructor Detail
-
SearchOperation
public SearchOperation(org.forgerock.services.context.Context context, SearchRequest request)
Creates a new search operation with the provided information.- Parameters:
context
- The request context with which this operation is associated.request
- The search request.
-
-
Method Detail
-
setBaseDN
public final void setBaseDN(Dn baseDN)
Specifies the base DN as included in the request from the client.This method should only be called by pre-parse plugins or for internal use.
- Specified by:
setBaseDN
in interfacePreParseSearchOperation
- Parameters:
baseDN
- The non-null base DN as included in the request from the client.
-
getBaseDN
public final Dn getBaseDN()
Description copied from interface:PreOperationSearchOperation
Retrieves the base DN for this search operation.- Specified by:
getBaseDN
in interfaceInProgressSearchOperation
- Specified by:
getBaseDN
in interfacePostOperationSearchOperation
- Specified by:
getBaseDN
in interfacePostResponseSearchOperation
- Specified by:
getBaseDN
in interfacePreOperationSearchOperation
- Specified by:
getBaseDN
in interfacePreParseSearchOperation
- Returns:
- The base DN for this search operation.
-
getScope
public final SearchScope getScope()
Retrieves the scope for this search operation.- Specified by:
getScope
in interfaceInProgressSearchOperation
- Specified by:
getScope
in interfacePostOperationSearchOperation
- Specified by:
getScope
in interfacePostResponseSearchOperation
- Specified by:
getScope
in interfacePreOperationSearchOperation
- Specified by:
getScope
in interfacePreParseSearchOperation
- Returns:
- The scope for this search operation.
-
setScope
public final void setScope(SearchScope scope)
Specifies the scope for this search operation. This should only be called by pre-parse plugins.- Specified by:
setScope
in interfacePreParseSearchOperation
- Parameters:
scope
- The scope for this search operation.
-
getDerefPolicy
public final DereferenceAliasesPolicy getDerefPolicy()
Retrieves the alias dereferencing policy for this search operation.- Specified by:
getDerefPolicy
in interfaceInProgressSearchOperation
- Specified by:
getDerefPolicy
in interfacePostOperationSearchOperation
- Specified by:
getDerefPolicy
in interfacePostResponseSearchOperation
- Specified by:
getDerefPolicy
in interfacePreOperationSearchOperation
- Specified by:
getDerefPolicy
in interfacePreParseSearchOperation
- Returns:
- The alias dereferencing policy for this search operation.
-
setDerefPolicy
public final void setDerefPolicy(DereferenceAliasesPolicy derefPolicy)
Specifies the alias dereferencing policy for this search operation. This should only be called by pre-parse plugins.- Specified by:
setDerefPolicy
in interfacePreParseSearchOperation
- Parameters:
derefPolicy
- The alias dereferencing policy for this search operation.
-
getSizeLimit
public final int getSizeLimit()
Retrieves the size limit for this search operation.- Specified by:
getSizeLimit
in interfaceInProgressSearchOperation
- Specified by:
getSizeLimit
in interfacePostOperationSearchOperation
- Specified by:
getSizeLimit
in interfacePostResponseSearchOperation
- Specified by:
getSizeLimit
in interfacePreOperationSearchOperation
- Specified by:
getSizeLimit
in interfacePreParseSearchOperation
- Returns:
- The size limit for this search operation.
-
setSizeLimit
public final void setSizeLimit(int sizeLimit)
Specifies the size limit for this search operation. This should only be called by pre-parse plugins.- Specified by:
setSizeLimit
in interfacePreParseSearchOperation
- Parameters:
sizeLimit
- The size limit for this search operation.
-
getTimeLimit
public final int getTimeLimit()
Retrieves the time limit for this search operation.- Specified by:
getTimeLimit
in interfaceInProgressSearchOperation
- Specified by:
getTimeLimit
in interfacePostOperationSearchOperation
- Specified by:
getTimeLimit
in interfacePostResponseSearchOperation
- Specified by:
getTimeLimit
in interfacePreOperationSearchOperation
- Specified by:
getTimeLimit
in interfacePreParseSearchOperation
- Returns:
- The time limit for this search operation.
-
setTimeLimit
public final void setTimeLimit(int timeLimit)
Specifies the time limit for this search operation. This should only be called by pre-parse plugins.- Specified by:
setTimeLimit
in interfacePreParseSearchOperation
- Parameters:
timeLimit
- The time limit for this search operation.
-
getMaxCandidateSetSize
public final int getMaxCandidateSetSize()
Return the maximum candidate set size for this search operation.- Returns:
- The maximum candidate set size for this search operation.
-
setMaxCandidateSetSize
public final void setMaxCandidateSetSize(int maxCandidateSetSize)
Set the maximum candidate set size for this search operation.- Parameters:
maxCandidateSetSize
- The maximum candidate set size for this search operation.
-
getTypesOnly
public final boolean getTypesOnly()
Retrieves the typesOnly flag for this search operation.- Specified by:
getTypesOnly
in interfaceInProgressSearchOperation
- Specified by:
getTypesOnly
in interfacePostOperationSearchOperation
- Specified by:
getTypesOnly
in interfacePostResponseSearchOperation
- Specified by:
getTypesOnly
in interfacePreOperationSearchOperation
- Specified by:
getTypesOnly
in interfacePreParseSearchOperation
- Returns:
- The typesOnly flag for this search operation.
-
setTypesOnly
public final void setTypesOnly(boolean typesOnly)
Specifies the typesOnly flag for this search operation. This should only be called by pre-parse plugins.- Specified by:
setTypesOnly
in interfacePreParseSearchOperation
- Parameters:
typesOnly
- The typesOnly flag for this search operation.
-
setFilter
public final void setFilter(Filter filter)
Specifies the search filter as included in the request from the client.This method should only be called by pre-parse plugins.
- Specified by:
setFilter
in interfacePreParseSearchOperation
- Parameters:
filter
- The non-null search filter as included in the request from the client.
-
getFilter
public final Filter getFilter()
Retrieves the filter for this search operation.Only use this method for logging. Prefer to use
getMatcher()
for matching entries.- Specified by:
getFilter
in interfaceInProgressSearchOperation
- Specified by:
getFilter
in interfacePostOperationSearchOperation
- Specified by:
getFilter
in interfacePostResponseSearchOperation
- Specified by:
getFilter
in interfacePreOperationSearchOperation
- Specified by:
getFilter
in interfacePreParseSearchOperation
- Returns:
- The filter for this search operation.
-
getMatcher
public final Matcher getMatcher()
Retrieves the matcher derived from the search filter for this search operation.- Returns:
- the matcher for this search operation.
-
getAttributes
public final Set<String> getAttributes()
Retrieves the set of requested attributes for this search operation. Its contents should not be altered.- Specified by:
getAttributes
in interfaceInProgressSearchOperation
- Specified by:
getAttributes
in interfacePostOperationSearchOperation
- Specified by:
getAttributes
in interfacePostResponseSearchOperation
- Specified by:
getAttributes
in interfacePreOperationSearchOperation
- Specified by:
getAttributes
in interfacePreParseSearchOperation
- Returns:
- The set of requested attributes for this search operation.
-
setAttributes
public final void setAttributes(Set<String> attributes)
Specifies the set of requested attributes for this search operation. It should only be called by pre-parse plugins.- Specified by:
setAttributes
in interfacePreParseSearchOperation
- Parameters:
attributes
- The set of requested attributes for this search operation.
-
getEntriesSent
public final int getEntriesSent()
Retrieves the number of entries sent to the client for this search operation.- Specified by:
getEntriesSent
in interfacePostOperationSearchOperation
- Specified by:
getEntriesSent
in interfacePostResponseSearchOperation
- Returns:
- The number of entries sent to the client for this search operation.
-
getReferencesSent
public final int getReferencesSent()
Retrieves the number of search references sent to the client for this search operation.- Specified by:
getReferencesSent
in interfacePostOperationSearchOperation
- Specified by:
getReferencesSent
in interfacePostResponseSearchOperation
- Returns:
- The number of search references sent to the client for this search operation.
-
returnEntry
public boolean returnEntry(Entry entry, List<Control> controls)
Used as a callback for backends to indicate that the provided entry matches the search criteria and that additional processing should be performed to potentially send it back to the client.- Specified by:
returnEntry
in interfacePreOperationSearchOperation
- Specified by:
returnEntry
in interfacePreParseSearchOperation
- Parameters:
entry
- The entry that matches the search criteria and should be sent to the client.controls
- The set of controls to include with the entry (may benull
if none are needed).- Returns:
true
if the caller should continue processing the search request and sending additional entries and references, orfalse
if not for some reason (e.g., the size limit has been reached or the search has been abandoned).
-
mayReturnEntry
public boolean mayReturnEntry(Entry entry)
Returns if the entry may be returned according to access control and other checks.- Parameters:
entry
- the candidate entry to return- Returns:
- if the entry may be returned according to access control and other checks
-
timeLimitExpired
public boolean timeLimitExpired()
Returns whether the search operation has reached its time limit.- Returns:
- whether the search operation has reached its time limit
-
returnReference
public boolean returnReference(Dn dn, SearchResultReference reference)
Used as a callback for backends to indicate that the provided search reference was encountered during processing and that additional processing should be performed to potentially send it back to the client.- Specified by:
returnReference
in interfacePreOperationSearchOperation
- Specified by:
returnReference
in interfacePreParseSearchOperation
- Parameters:
reference
- The search reference to send to the client.dn
- The DN related to the specified search reference.- Returns:
true
if the caller should continue processing the search request and sending additional entries and references , orfalse
if not for some reason (e.g., the size limit has been reached or the search has been abandoned).
-
sendSearchResultDone
public void sendSearchResultDone()
Sends the search result done message to the client. Note that this method should only be called from external classes in special cases (e.g., persistent search) where they are sure that the result won't be sent by the core server. Also note that the result code and optionally the error message should have been set for this operation before this method is called.
-
getOperationType
public final OperationType getOperationType()
Description copied from interface:PluginOperation
Retrieves the operation type for this operation.- Specified by:
getOperationType
in interfacePluginOperation
- Returns:
- The operation type for this operation.
-
getProxiedAuthorizationDN
public final Dn getProxiedAuthorizationDN()
Description copied from class:Operation
Retrieves the proxied authorization DN for this operation if proxied authorization has been requested.- Specified by:
getProxiedAuthorizationDN
in classOperation
- Returns:
- The proxied authorization DN for this operation if proxied authorization has been requested, or
null
if proxied authorization has not been requested.
-
getResponseControls
public final List<Control> getResponseControls()
Description copied from interface:PluginOperation
Retrieves the set of controls to include in the response to the client. The contents of this list must not be altered.- Specified by:
getResponseControls
in interfacePluginOperation
- Returns:
- The set of controls to include in the response to the client.
-
addResponseControl
public final void addResponseControl(Control control)
Description copied from class:Operation
Adds the provided control to the set of controls to include in the response to the client.This method may not be called by post-response plugins.
- Specified by:
addResponseControl
in interfaceInProgressOperation
- Specified by:
addResponseControl
in interfacePostOperationOperation
- Specified by:
addResponseControl
in interfacePreOperationOperation
- Specified by:
addResponseControl
in interfacePreParseOperation
- Specified by:
addResponseControl
in classOperation
- Parameters:
control
- The control to add to the set of controls to include in the response to the client.
-
removeResponseControl
public final void removeResponseControl(Control control)
Description copied from class:Operation
Removes the provided control from the set of controls to include in the response to the client.This method may not be called by post-response plugins.
- Specified by:
removeResponseControl
in interfaceInProgressOperation
- Specified by:
removeResponseControl
in interfacePostOperationOperation
- Specified by:
removeResponseControl
in interfacePreOperationOperation
- Specified by:
removeResponseControl
in interfacePreParseOperation
- Specified by:
removeResponseControl
in classOperation
- Parameters:
control
- The control to remove from the set of controls to include in the response to the client.
-
toString
public void toString(StringBuilder buffer)
Description copied from interface:PluginOperation
Appends a string representation of this operation to the provided buffer.- Specified by:
toString
in interfacePluginOperation
- Specified by:
toString
in classOperation
- Parameters:
buffer
- The buffer into which a string representation of this operation should be appended.
-
getSimplePagedResultsControlOrNull
public SimplePagedResultsControl getSimplePagedResultsControlOrNull()
Return the Simple Paged Results Control of the search request ornull
if absent.- Returns:
- the Simple Paged Results Control of the search request or
null
if absent
-
getServerSideSortControlOrNull
public ServerSideSortRequestControl getServerSideSortControlOrNull()
Return the Server Side Sort Control of the search request ornull
if absent.- Returns:
- the Server Side Sort Control of the search request or
null
if absent
-
getVirtualListViewRequestControlOrNull
public VirtualListViewRequestControl getVirtualListViewRequestControlOrNull()
Return the Virtual List View Request Control of the search request ornull
if absent.- Returns:
- the Virtual List View Request Control of the search request or
null
if absent
-
isManageDsaIt
public boolean isManageDsaIt()
Returnstrue
if this search operation contains the ManageDsaIT control.- Returns:
true
if this search operation contains the ManageDsaIT control.
-
isSendResponse
public final boolean isSendResponse()
Indicates whether the search result done message has to be sent to the client, or not.- Returns:
- true if the search result done message is to be sent to the client
-
setSendResponse
public final void setSendResponse(boolean sendResponse)
Specify whether the search result done message has to be sent to the client, or not.- Parameters:
sendResponse
- - boolean indicating whether the search result done message is to send to the client
-
sendSearchEntry
public void sendSearchEntry(SearchResultEntry entry) throws LdapException
Sends the provided search result entry to the client.- Parameters:
entry
- The search result entry to be sent to the client.- Throws:
LdapException
- If a problem occurs while attempting to send the entry to the client and the search should be terminated.
-
sendSearchReference
public boolean sendSearchReference(SearchResultReference reference) throws LdapException
Sends the provided search result reference to the client.- Parameters:
reference
- The search result reference to be sent to the client.- Returns:
true
if the client is able to accept referrals, orfalse
if the client cannot handle referrals and no more attempts should be made to send them for the associated search operation.- Throws:
LdapException
- If a problem occurs while attempting to send the reference to the client and the search should be terminated.
-
setProxiedAuthorizationDN
public final void setProxiedAuthorizationDN(Dn proxiedAuthorizationDN)
Description copied from class:Operation
Set the proxied authorization DN for this operation if proxied authorization has been requested.- Specified by:
setProxiedAuthorizationDN
in classOperation
- Parameters:
proxiedAuthorizationDN
- The proxied authorization DN for this operation if proxied authorization has been requested, ornull
if proxied authorization has not been requested.
-
run0
protected void run0()
Description copied from class:Operation
Performs the work of actually processing this operation.
-
handleRequestControls
protected void handleRequestControls() throws LdapException
Handles any controls contained in the request.- Throws:
LdapException
- If there is a problem with any of the request controls.
-
-