Package org.opends.server.core
Class SearchOperationWrapper
- java.lang.Object
-
- org.opends.server.core.OperationWrapper<SearchOperation>
-
- org.opends.server.core.SearchOperationWrapper
-
- All Implemented Interfaces:
Runnable,SearchOperation,Operation
- Direct Known Subclasses:
LocalBackendSearchOperation
public abstract class SearchOperationWrapper extends OperationWrapper<SearchOperation> implements SearchOperation
This abstract class wraps/decorates a given search operation. This class will be extended by sub-classes to enhance the functionality of the SearchOperationBasis.
-
-
Field Summary
-
Fields inherited from interface org.opends.server.types.Operation
LOCALBACKENDOPERATIONS
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedSearchOperationWrapper(SearchOperation search)Creates a new search operation based on the provided search operation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidendSearchPhase()Indicates that the search phase is over and that any further entry comes from a persistent search.Set<String>getAttributes()Retrieves the set of requested attributes for this search operation.DNgetBaseDN()Retrieves the base DN for this search operation.DereferenceAliasesPolicygetDerefPolicy()Retrieves the alias dereferencing policy for this search operation.intgetEntriesSent()Retrieves the number of entries sent to the client for this search operation.SearchFiltergetFilter()Retrieves the filter for this search operation.MatchedValuesControlgetMatchedValuesControl()The matched values control associated with this search operation.ByteStringgetRawBaseDN()Retrieves the raw, unprocessed base DN as included in the request from the client.RawFiltergetRawFilter()Retrieves the raw, unprocessed search filter as included in the request from the client.intgetReferencesSent()Retrieves the number of search references sent to the client for this search operation.SearchScopegetScope()Retrieves the scope for this search operation.intgetSizeLimit()Retrieves the size limit for this search operation.intgetTimeLimit()Retrieves the time limit for this search operation.longgetTimeLimitExpiration()Get the time after which the search time limit has expired.booleangetTypesOnly()Retrieves the typesOnly flag for this search operation.booleanisClientAcceptsReferrals()Indicates whether the client is able to handle referrals.booleanisIncludeUsableControl()Indicates whether to include the account usable response control with search result entries or not.booleanisRealAttributesOnly()Returns true if only real attributes should be returned.booleanisReturnSubentriesOnly()Indicates whether LDAP subentries should be returned or not.booleanisSendResponse()Indicates whether the search result done message has to be sent to the client, or not.booleanisVirtualAttributesOnly()Returns true if only virtual attributes should be returned.booleanreturnEntry(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.booleanreturnEntry(Entry entry, List<Control> controls, boolean evaluateAci)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.booleanreturnPersistentSearchEntry(Entry entry, List<Control> controls)Used as a callback for persistent searches to send an entry which has just changed to the client.booleanreturnReference(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.booleanreturnReference(DN dn, SearchResultReference reference, boolean evaluateAci)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.voidsendSearchEntry(SearchResultEntry entry)Sends the provided search result entry to the client.booleansendSearchReference(SearchResultReference reference)Sends the provided search result reference to the client.voidsendSearchResultDone()Sends the search result done message to the client.voidsetAttributes(Set<String> attributes)Specifies the set of requested attributes for this search operation.voidsetBaseDN(DN baseDN)Specifies the base DN for this search operation.voidsetClientAcceptsReferrals(boolean clientAcceptReferrals)Specify whether the client is able to handle referrals.voidsetDerefPolicy(DereferenceAliasesPolicy derefPolicy)Specifies the alias dereferencing policy for this search operation.voidsetIncludeUsableControl(boolean includeUsableControl)Specify whether to include the account usable response control within the search result entries.voidsetMatchedValuesControl(MatchedValuesControl controls)Set the match values control.voidsetRawBaseDN(ByteString rawBaseDN)Specifies the raw, unprocessed base DN as included in the request from the client.voidsetRawFilter(RawFilter rawFilter)Specifies the raw, unprocessed search filter as included in the request from the client.voidsetRealAttributesOnly(boolean realAttributesOnly)Specify whether to only return real attributes.voidsetReturnSubentriesOnly(boolean returnLDAPSubentries)Set the flag indicating whether the LDAP subentries should be returned.voidsetScope(SearchScope scope)Specifies the scope for this search operation.voidsetSendResponse(boolean sendResponse)Specify whether the search result done message has to be sent to the client, or not.voidsetSizeLimit(int sizeLimit)Specifies the size limit for this search operation.voidsetTimeLimit(int timeLimit)Specifies the time limit for this search operation.voidsetTimeLimitExpiration(long timeLimitExpiration)Set the time after which the search time limit has expired.voidsetTypesOnly(boolean typesOnly)Specifies the typesOnly flag for this search operation.voidsetVirtualAttributesOnly(boolean virtualAttributesOnly)Specify whether to only return virtual attributes.StringtoString()Retrieves a string representation of this operation.-
Methods inherited from class org.opends.server.core.OperationWrapper
abort, addAdditionalLogItem, addRequestControl, addResponseControl, appendErrorMessage, appendMaskedErrorMessage, cancel, checkIfCanceled, disconnectClient, dontSynchronize, equals, getAdditionalLogItems, getAttachment, getAttachments, getAuthorizationDN, getAuthorizationEntry, getCancelRequest, getCancelResult, getClientConnection, getConnectionID, getErrorMessage, getMaskedErrorMessage, getMaskedResultCode, getMatchedDN, getMessageID, getOperation, getOperationID, getOperationType, getProcessingNanoTime, getProcessingStartTime, getProcessingStopTime, getProcessingTime, getProxiedAuthorizationDN, getReferralURLs, getRequestControl, getRequestControls, getResponseControls, getResultCode, hashCode, isInnerOperation, isInternalOperation, isSynchronizationOperation, operationCompleted, registerPostResponseCallback, removeAttachment, removeResponseControl, run, setAttachment, setAttachments, setAuthorizationEntry, setDontSynchronize, setErrorMessage, setInnerOperation, setInternalOperation, setMaskedErrorMessage, setMaskedResultCode, setMatchedDN, setProxiedAuthorizationDN, setReferralURLs, setResponseData, setResultCode, setSynchronizationOperation, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.opends.server.types.Operation
abort, addAdditionalLogItem, addRequestControl, addResponseControl, appendErrorMessage, appendMaskedErrorMessage, cancel, checkIfCanceled, disconnectClient, dontSynchronize, getAdditionalLogItems, getAttachment, getAttachments, getAuthorizationDN, getAuthorizationEntry, getCancelRequest, getCancelResult, getClientConnection, getConnectionID, getErrorMessage, getMaskedErrorMessage, getMaskedResultCode, getMatchedDN, getMessageID, getOperationID, getOperationType, getProcessingNanoTime, getProcessingStartTime, getProcessingStopTime, getProcessingTime, getReferralURLs, getRequestControl, getRequestControls, getResponseControls, getResultCode, isInnerOperation, isInternalOperation, isSynchronizationOperation, operationCompleted, registerPostResponseCallback, removeAttachment, removeResponseControl, run, setAttachment, setAttachments, setAuthorizationEntry, setDontSynchronize, setErrorMessage, setInnerOperation, setInternalOperation, setMaskedErrorMessage, setMaskedResultCode, setMatchedDN, setReferralURLs, setResponseData, setResultCode, setSynchronizationOperation, toString
-
Methods inherited from interface org.opends.server.core.SearchOperation
getProxiedAuthorizationDN, setProxiedAuthorizationDN
-
-
-
-
Constructor Detail
-
SearchOperationWrapper
protected SearchOperationWrapper(SearchOperation search)
Creates a new search operation based on the provided search operation.- Parameters:
search- The search operation to wrap
-
-
Method Detail
-
returnEntry
public boolean returnEntry(Entry entry, List<Control> controls)
Description copied from interface:SearchOperationUsed 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:
returnEntryin interfaceSearchOperation- 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 benullif none are needed).- Returns:
trueif the caller should continue processing the search request and sending additional entries and references, orfalseif not for some reason (e.g., the size limit has been reached or the search has been abandoned).
-
returnEntry
public boolean returnEntry(Entry entry, List<Control> controls, boolean evaluateAci)
Description copied from interface:SearchOperationUsed 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:
returnEntryin interfaceSearchOperation- 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 benullif none are needed).evaluateAci- Indicates whether the access rights to the entry should be evaluated.- Returns:
trueif the caller should continue processing the search request and sending additional entries and references, orfalseif not for some reason (e.g., the size limit has been reached or the search has been abandoned).
-
returnPersistentSearchEntry
public boolean returnPersistentSearchEntry(Entry entry, List<Control> controls)
Description copied from interface:SearchOperationUsed as a callback for persistent searches to send an entry which has just changed to the client. Contrary toSearchOperation.returnEntry(Entry, List), the entry is not matched against the state kept to dereference aliases during the search phase, and neither the size limit nor the time limit of the search applies to it: a persistent search must report every change it is notified of, for as long as it is alive, whether or not the entry was returned before.- Specified by:
returnPersistentSearchEntryin interfaceSearchOperation- Parameters:
entry- The entry which has changed and should be sent to the client.controls- The set of controls to include with the entry (may benullif none are needed).- Returns:
trueif the persistent search should keep reporting changes, orfalseif it should stop for some reason (e.g. the search has been abandoned).
-
endSearchPhase
public void endSearchPhase()
Description copied from interface:SearchOperationIndicates that the search phase is over and that any further entry comes from a persistent search. State kept to dereference aliases during the search phase is released. Entries can still reachSearchOperation.returnEntry(Entry, List)afterwards, as backends are free to report their own results from another thread, so that method keeps track of this phase being over.- Specified by:
endSearchPhasein interfaceSearchOperation
-
returnReference
public boolean returnReference(DN dn, SearchResultReference reference)
Description copied from interface:SearchOperationUsed 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:
returnReferencein interfaceSearchOperation- Parameters:
dn- The DN related to the specified search reference.reference- The search reference to send to the client.- Returns:
trueif the caller should continue processing the search request and sending additional entries and references , orfalseif not for some reason (e.g., the size limit has been reached or the search has been abandoned).
-
returnReference
public boolean returnReference(DN dn, SearchResultReference reference, boolean evaluateAci)
Description copied from interface:SearchOperationUsed 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:
returnReferencein interfaceSearchOperation- Parameters:
dn- The DN related to the specified search reference.reference- The search reference to send to the client.evaluateAci- Indicates whether the access rights to the entry should be evaluated.- Returns:
trueif the caller should continue processing the search request and sending additional entries and references , orfalseif not for some reason (e.g., the size limit has been reached or the search has been abandoned).
-
toString
public String toString()
Description copied from interface:OperationRetrieves a string representation of this operation.- Specified by:
toStringin interfaceOperation- Overrides:
toStringin classOperationWrapper<SearchOperation>- Returns:
- A string representation of this operation.
-
getAttributes
public Set<String> getAttributes()
Description copied from interface:SearchOperationRetrieves the set of requested attributes for this search operation. Its contents should not be altered.- Specified by:
getAttributesin interfaceSearchOperation- Returns:
- The set of requested attributes for this search operation.
-
getBaseDN
public DN getBaseDN()
Description copied from interface:SearchOperationRetrieves the base DN for this search operation. This should not be called by pre-parse plugins, as the raw base DN will not yet have been processed. Instead, they should use thegetRawBaseDNmethod.- Specified by:
getBaseDNin interfaceSearchOperation- Returns:
- The base DN for this search operation, or
nullif the raw base DN has not yet been processed.
-
getDerefPolicy
public DereferenceAliasesPolicy getDerefPolicy()
Description copied from interface:SearchOperationRetrieves the alias dereferencing policy for this search operation.- Specified by:
getDerefPolicyin interfaceSearchOperation- Returns:
- The alias dereferencing policy for this search operation.
-
getEntriesSent
public int getEntriesSent()
Description copied from interface:SearchOperationRetrieves the number of entries sent to the client for this search operation.- Specified by:
getEntriesSentin interfaceSearchOperation- Returns:
- The number of entries sent to the client for this search operation.
-
getFilter
public SearchFilter getFilter()
Description copied from interface:SearchOperationRetrieves the filter for this search operation. This should not be called by pre-parse plugins, because the raw filter will not yet have been processed.- Specified by:
getFilterin interfaceSearchOperation- Returns:
- The filter for this search operation, or
nullif the raw filter has not yet been processed.
-
getRawBaseDN
public ByteString getRawBaseDN()
Description copied from interface:SearchOperationRetrieves the raw, unprocessed base DN as included in the request from the client. This may or may not contain a valid DN, as no validation will have been performed.- Specified by:
getRawBaseDNin interfaceSearchOperation- Returns:
- The raw, unprocessed base DN as included in the request from the client.
-
getRawFilter
public RawFilter getRawFilter()
Description copied from interface:SearchOperationRetrieves the raw, unprocessed search filter as included in the request from the client. It may or may not contain a valid filter (e.g., unsupported attribute types or values with an invalid syntax) because no validation will have been performed on it.- Specified by:
getRawFilterin interfaceSearchOperation- Returns:
- The raw, unprocessed search filter as included in the request from the client.
-
getReferencesSent
public int getReferencesSent()
Description copied from interface:SearchOperationRetrieves the number of search references sent to the client for this search operation.- Specified by:
getReferencesSentin interfaceSearchOperation- Returns:
- The number of search references sent to the client for this search operation.
-
getScope
public SearchScope getScope()
Description copied from interface:SearchOperationRetrieves the scope for this search operation.- Specified by:
getScopein interfaceSearchOperation- Returns:
- The scope for this search operation.
-
getSizeLimit
public int getSizeLimit()
Description copied from interface:SearchOperationRetrieves the size limit for this search operation.- Specified by:
getSizeLimitin interfaceSearchOperation- Returns:
- The size limit for this search operation.
-
getTimeLimit
public int getTimeLimit()
Description copied from interface:SearchOperationRetrieves the time limit for this search operation.- Specified by:
getTimeLimitin interfaceSearchOperation- Returns:
- The time limit for this search operation.
-
getTypesOnly
public boolean getTypesOnly()
Description copied from interface:SearchOperationRetrieves the typesOnly flag for this search operation.- Specified by:
getTypesOnlyin interfaceSearchOperation- Returns:
- The typesOnly flag for this search operation.
-
sendSearchResultDone
public void sendSearchResultDone()
Description copied from interface:SearchOperationSends 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.- Specified by:
sendSearchResultDonein interfaceSearchOperation
-
setAttributes
public void setAttributes(Set<String> attributes)
Description copied from interface:SearchOperationSpecifies the set of requested attributes for this search operation. It should only be called by pre-parse plugins.- Specified by:
setAttributesin interfaceSearchOperation- Parameters:
attributes- The set of requested attributes for this search operation.
-
setBaseDN
public void setBaseDN(DN baseDN)
Description copied from interface:SearchOperationSpecifies the base DN for this search operation. This method is only intended for internal use.- Specified by:
setBaseDNin interfaceSearchOperation- Parameters:
baseDN- The base DN for this search operation.
-
setDerefPolicy
public void setDerefPolicy(DereferenceAliasesPolicy derefPolicy)
Description copied from interface:SearchOperationSpecifies the alias dereferencing policy for this search operation. This should only be called by pre-parse plugins.- Specified by:
setDerefPolicyin interfaceSearchOperation- Parameters:
derefPolicy- The alias dereferencing policy for this search operation.
-
setRawBaseDN
public void setRawBaseDN(ByteString rawBaseDN)
Description copied from interface:SearchOperationSpecifies the raw, unprocessed base DN as included in the request from the client. This method should only be called by pre-parse plugins.- Specified by:
setRawBaseDNin interfaceSearchOperation- Parameters:
rawBaseDN- The raw, unprocessed base DN as included in the request from the client.
-
setRawFilter
public void setRawFilter(RawFilter rawFilter)
Description copied from interface:SearchOperationSpecifies the raw, unprocessed search filter as included in the request from the client. This method should only be called by pre-parse plugins.- Specified by:
setRawFilterin interfaceSearchOperation- Parameters:
rawFilter- The raw, unprocessed search filter as included in the request from the client.
-
setScope
public void setScope(SearchScope scope)
Description copied from interface:SearchOperationSpecifies the scope for this search operation. This should only be called by pre-parse plugins.- Specified by:
setScopein interfaceSearchOperation- Parameters:
scope- The scope for this search operation.
-
setSizeLimit
public void setSizeLimit(int sizeLimit)
Description copied from interface:SearchOperationSpecifies the size limit for this search operation. This should only be called by pre-parse plugins.- Specified by:
setSizeLimitin interfaceSearchOperation- Parameters:
sizeLimit- The size limit for this search operation.
-
setTimeLimit
public void setTimeLimit(int timeLimit)
Description copied from interface:SearchOperationSpecifies the time limit for this search operation. This should only be called by pre-parse plugins.- Specified by:
setTimeLimitin interfaceSearchOperation- Parameters:
timeLimit- The time limit for this search operation.
-
setTypesOnly
public void setTypesOnly(boolean typesOnly)
Description copied from interface:SearchOperationSpecifies the typesOnly flag for this search operation. This should only be called by pre-parse plugins.- Specified by:
setTypesOnlyin interfaceSearchOperation- Parameters:
typesOnly- The typesOnly flag for this search operation.
-
setTimeLimitExpiration
public void setTimeLimitExpiration(long timeLimitExpiration)
Description copied from interface:SearchOperationSet the time after which the search time limit has expired.- Specified by:
setTimeLimitExpirationin interfaceSearchOperation- Parameters:
timeLimitExpiration- - Time after which the search has expired
-
isReturnSubentriesOnly
public boolean isReturnSubentriesOnly()
Description copied from interface:SearchOperationIndicates whether LDAP subentries should be returned or not.- Specified by:
isReturnSubentriesOnlyin interfaceSearchOperation- Returns:
- true if the LDAP subentries should be returned, false otherwise
-
setReturnSubentriesOnly
public void setReturnSubentriesOnly(boolean returnLDAPSubentries)
Description copied from interface:SearchOperationSet the flag indicating whether the LDAP subentries should be returned.- Specified by:
setReturnSubentriesOnlyin interfaceSearchOperation- Parameters:
returnLDAPSubentries- - Boolean indicating whether the LDAP subentries should be returned or not
-
getMatchedValuesControl
public MatchedValuesControl getMatchedValuesControl()
Description copied from interface:SearchOperationThe matched values control associated with this search operation.- Specified by:
getMatchedValuesControlin interfaceSearchOperation- Returns:
- the match values control
-
setMatchedValuesControl
public void setMatchedValuesControl(MatchedValuesControl controls)
Description copied from interface:SearchOperationSet the match values control.- Specified by:
setMatchedValuesControlin interfaceSearchOperation- Parameters:
controls- - The matched values control
-
isIncludeUsableControl
public boolean isIncludeUsableControl()
Description copied from interface:SearchOperationIndicates whether to include the account usable response control with search result entries or not.- Specified by:
isIncludeUsableControlin interfaceSearchOperation- Returns:
- true if the usable control has to be part of the search result entry
-
setIncludeUsableControl
public void setIncludeUsableControl(boolean includeUsableControl)
Description copied from interface:SearchOperationSpecify whether to include the account usable response control within the search result entries.- Specified by:
setIncludeUsableControlin interfaceSearchOperation- Parameters:
includeUsableControl- - True if the account usable response control has to be included within the search result entries, false otherwise
-
getTimeLimitExpiration
public long getTimeLimitExpiration()
Description copied from interface:SearchOperationGet the time after which the search time limit has expired.- Specified by:
getTimeLimitExpirationin interfaceSearchOperation- Returns:
- the timeLimitExpiration
-
isClientAcceptsReferrals
public boolean isClientAcceptsReferrals()
Description copied from interface:SearchOperationIndicates whether the client is able to handle referrals.- Specified by:
isClientAcceptsReferralsin interfaceSearchOperation- Returns:
- true, if the client is able to handle referrals
-
setClientAcceptsReferrals
public void setClientAcceptsReferrals(boolean clientAcceptReferrals)
Description copied from interface:SearchOperationSpecify whether the client is able to handle referrals.- Specified by:
setClientAcceptsReferralsin interfaceSearchOperation- Parameters:
clientAcceptReferrals- - Boolean set to true if the client can handle referrals
-
isSendResponse
public boolean isSendResponse()
Description copied from interface:SearchOperationIndicates whether the search result done message has to be sent to the client, or not.- Specified by:
isSendResponsein interfaceSearchOperation- Returns:
- true if the search result done message is to be sent to the client
-
setSendResponse
public void setSendResponse(boolean sendResponse)
Description copied from interface:SearchOperationSpecify whether the search result done message has to be sent to the client, or not.- Specified by:
setSendResponsein interfaceSearchOperation- Parameters:
sendResponse- - boolean indicating whether the search result done message is to send to the client
-
isRealAttributesOnly
public boolean isRealAttributesOnly()
Description copied from interface:SearchOperationReturns true if only real attributes should be returned.- Specified by:
isRealAttributesOnlyin interfaceSearchOperation- Returns:
- true if only real attributes should be returned, false otherwise
-
setRealAttributesOnly
public void setRealAttributesOnly(boolean realAttributesOnly)
Description copied from interface:SearchOperationSpecify whether to only return real attributes.- Specified by:
setRealAttributesOnlyin interfaceSearchOperation- Parameters:
realAttributesOnly- - boolean setup to true, if only the real attributes should be returned
-
isVirtualAttributesOnly
public boolean isVirtualAttributesOnly()
Description copied from interface:SearchOperationReturns true if only virtual attributes should be returned.- Specified by:
isVirtualAttributesOnlyin interfaceSearchOperation- Returns:
- true if only virtual attributes should be returned, false otherwise
-
setVirtualAttributesOnly
public void setVirtualAttributesOnly(boolean virtualAttributesOnly)
Description copied from interface:SearchOperationSpecify whether to only return virtual attributes.- Specified by:
setVirtualAttributesOnlyin interfaceSearchOperation- Parameters:
virtualAttributesOnly- - boolean setup to true, if only the virtual attributes should be returned
-
sendSearchEntry
public void sendSearchEntry(SearchResultEntry entry) throws DirectoryException
Description copied from interface:SearchOperationSends the provided search result entry to the client.- Specified by:
sendSearchEntryin interfaceSearchOperation- Parameters:
entry- The search result entry to be sent to the client.- Throws:
DirectoryException- 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 DirectoryException
Description copied from interface:SearchOperationSends the provided search result reference to the client.- Specified by:
sendSearchReferencein interfaceSearchOperation- Parameters:
reference- The search result reference to be sent to the client.- Returns:
trueif the client is able to accept referrals, orfalseif the client cannot handle referrals and no more attempts should be made to send them for the associated search operation.- Throws:
DirectoryException- If a problem occurs while attempting to send the reference to the client and the search should be terminated.
-
-