org.opends.server.core
Class SearchOperationWrapper

java.lang.Object
  extended by org.opends.server.core.OperationWrapper
      extended by org.opends.server.core.SearchOperationWrapper
All Implemented Interfaces:
SearchOperation, Operation
Direct Known Subclasses:
LocalBackendSearchOperation

public abstract class SearchOperationWrapper
extends OperationWrapper
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
protected SearchOperationWrapper(SearchOperation search)
          Creates a new search operation based on the provided search operation.
 
Method Summary
 java.util.LinkedHashSet<java.lang.String> getAttributes()
          Retrieves the set of requested attributes for this search operation.
 DN getBaseDN()
          Retrieves the base DN for this search operation.
 DereferencePolicy 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.
 SearchFilter getFilter()
          Retrieves the filter for this search operation.
 MatchedValuesControl getMatchedValuesControl()
          The matched values control associated with this search operation.
 PersistentSearch getPersistentSearch()
          Get the psearch from the search operation.
 DN getProxiedAuthorizationDN()
          Retrieves the proxied authorization DN for this operation if proxied authorization has been requested.
 ByteString getRawBaseDN()
          Retrieves the raw, unprocessed base DN as included in the request from the client.
 RawFilter getRawFilter()
          Retrieves the raw, unprocessed search filter as included in the request from the client.
 int getReferencesSent()
          Retrieves the number of search references sent to the client for this search operation.
 SearchScope getScope()
          Retrieves the scope for this search operation.
 int getSizeLimit()
          Retrieves the size limit for this search operation.
 int getTimeLimit()
          Retrieves the time limit for this search operation.
 java.lang.Long getTimeLimitExpiration()
          Get the time after which the search time limit has expired.
 boolean getTypesOnly()
          Retrieves the typesOnly flag for this search operation.
 void incrementEntriesSent()
          Increments by 1 the number of entries sent to the client for this search operation.
 void incrementReferencesSent()
          Increments by 1 the number of search references sent to the client for this search operation.
 boolean isClientAcceptsReferrals()
          Indicates whether the client is able to handle referrals.
 boolean isIncludeUsableControl()
          Indicates whether to include the account usable response control with search result entries or not.
 boolean isRealAttributesOnly()
          Returns true if only real attributes should be returned.
 boolean isReturnLDAPSubentries()
          Indicates whether LDAP subentries should be returned or not.
 boolean isSendResponse()
          Indicates wether the search result done message has to be sent to the client, or not.
 boolean isVirtualAttributesOnly()
          Returns true if only virtual attributes should be returned.
 boolean returnEntry(Entry entry, java.util.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.
 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(java.util.LinkedHashSet<java.lang.String> attributes)
          Specifies the set of requested attributes for this search operation.
 void setBaseDN(DN baseDN)
          Specifies the base DN for this search operation.
 void setClientAcceptsReferrals(boolean clientAcceptReferrals)
          Specify whether the client is able to handle referrals.
 void setDerefPolicy(DereferencePolicy derefPolicy)
          Specifies the alias dereferencing policy for this search operation.
 void setIncludeUsableControl(boolean includeUsableControl)
          Specify whether to include the account usable response control within the search result entries.
 void setMatchedValuesControl(MatchedValuesControl controls)
          Set the match values control.
 void setPersistentSearch(PersistentSearch psearch)
          Register the psearch in the search operation.
 void setProxiedAuthorizationDN(DN proxiedAuthorizationDN)
          Set the proxied authorization DN for this operation if proxied authorization has been requested.
 void setRawBaseDN(ByteString rawBaseDN)
          Specifies the raw, unprocessed base DN as included in the request from the client.
 void setRawFilter(RawFilter rawFilter)
          Specifies the raw, unprocessed search filter as included in the request from the client.
 void setRealAttributesOnly(boolean realAttributesOnly)
          Specify wether to only return real attributes.
 void setReturnLDAPSubentries(boolean returnLDAPSubentries)
          Set the flag indicating wether the LDAP subentries should be returned.
 void setScope(SearchScope scope)
          Specifies the scope for this search operation.
 void setSendResponse(boolean sendResponse)
          Specify wether 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 setTimeLimitExpiration(java.lang.Long timeLimitExpiration)
          Set the time after which the search time limit has expired.
 void setTypesOnly(boolean typesOnly)
          Specifies the typesOnly flag for this search operation.
 void setVirtualAttributesOnly(boolean virtualAttributesOnly)
          Specify wether to only return virtual attributes.
 java.lang.String toString()
          Retrieves a string representation of this operation.
 
Methods inherited from class org.opends.server.core.OperationWrapper
abort, addRequestControl, addResponseControl, appendAdditionalLogMessage, appendErrorMessage, cancel, checkIfCanceled, disconnectClient, dontSynchronize, getAdditionalLogMessage, getAttachment, getAttachments, getAuthorizationDN, getAuthorizationEntry, getCancelRequest, getCancelResult, getClientConnection, getCommonLogElements, getConnectionID, getErrorMessage, getMatchedDN, getMessageID, getOperationID, getOperationType, getProcessingNanoTime, getProcessingStartTime, getProcessingStopTime, getProcessingTime, getReferralURLs, getRequestControls, getRequestLogElements, getResponseControls, getResponseLogElements, getResultCode, isInternalOperation, isSynchronizationOperation, operationCompleted, removeAttachment, removeRequestControl, removeResponseControl, setAdditionalLogMessage, setAttachment, setAttachments, setAuthorizationEntry, setDontSynchronize, setErrorMessage, setInternalOperation, setMatchedDN, setReferralURLs, setResponseData, setResultCode, setSynchronizationOperation, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.opends.server.types.Operation
abort, addRequestControl, addResponseControl, appendAdditionalLogMessage, appendErrorMessage, cancel, checkIfCanceled, disconnectClient, dontSynchronize, getAdditionalLogMessage, getAttachment, getAttachments, getAuthorizationDN, getAuthorizationEntry, getCancelRequest, getCancelResult, getClientConnection, getCommonLogElements, getConnectionID, getErrorMessage, getMatchedDN, getMessageID, getOperationID, getOperationType, getProcessingNanoTime, getProcessingStartTime, getProcessingStopTime, getProcessingTime, getReferralURLs, getRequestControls, getRequestLogElements, getResponseControls, getResponseLogElements, getResultCode, isInternalOperation, isSynchronizationOperation, operationCompleted, removeAttachment, removeRequestControl, removeResponseControl, setAdditionalLogMessage, setAttachment, setAttachments, setAuthorizationEntry, setDontSynchronize, setErrorMessage, setInternalOperation, setMatchedDN, setReferralURLs, setResponseData, setResultCode, setSynchronizationOperation, toString
 

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,
                           java.util.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 interface SearchOperation
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 be null if none are needed).
Returns:
true if the caller should continue processing the search request and sending additional entries and references, or false if 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)
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 interface SearchOperation
Parameters:
dn - The DN related to the specified search reference.
reference - The search reference to send to the client.
Returns:
true if the caller should continue processing the search request and sending additional entries and references , or false if not for some reason (e.g., the size limit has been reached or the search has been abandoned).

toString

public java.lang.String toString()
Retrieves a string representation of this operation.

Specified by:
toString in interface Operation
Overrides:
toString in class java.lang.Object
Returns:
A string representation of this operation.

getAttributes

public java.util.LinkedHashSet<java.lang.String> getAttributes()
Retrieves the set of requested attributes for this search operation. Its contents should not be be altered.

Specified by:
getAttributes in interface SearchOperation
Returns:
The set of requested attributes for this search operation.

getBaseDN

public DN getBaseDN()
Retrieves 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 the getRawBaseDN method.

Specified by:
getBaseDN in interface SearchOperation
Returns:
The base DN for this search operation, or null if the raw base DN has not yet been processed.

getDerefPolicy

public DereferencePolicy getDerefPolicy()
Retrieves the alias dereferencing policy for this search operation.

Specified by:
getDerefPolicy in interface SearchOperation
Returns:
The alias dereferencing policy for this search operation.

getEntriesSent

public int getEntriesSent()
Retrieves the number of entries sent to the client for this search operation.

Specified by:
getEntriesSent in interface SearchOperation
Returns:
The number of entries sent to the client for this search operation.

getFilter

public SearchFilter getFilter()
Retrieves 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:
getFilter in interface SearchOperation
Returns:
The filter for this search operation, or null if the raw filter has not yet been processed.

getRawBaseDN

public ByteString getRawBaseDN()
Retrieves 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:
getRawBaseDN in interface SearchOperation
Returns:
The raw, unprocessed base DN as included in the request from the client.

getRawFilter

public RawFilter getRawFilter()
Retrieves 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:
getRawFilter in interface SearchOperation
Returns:
The raw, unprocessed search filter as included in the request from the client.

getReferencesSent

public int getReferencesSent()
Retrieves the number of search references sent to the client for this search operation.

Specified by:
getReferencesSent in interface SearchOperation
Returns:
The number of search references sent to the client for this search operation.

getScope

public SearchScope getScope()
Retrieves the scope for this search operation.

Specified by:
getScope in interface SearchOperation
Returns:
The scope for this search operation.

getSizeLimit

public int getSizeLimit()
Retrieves the size limit for this search operation.

Specified by:
getSizeLimit in interface SearchOperation
Returns:
The size limit for this search operation.

getTimeLimit

public int getTimeLimit()
Retrieves the time limit for this search operation.

Specified by:
getTimeLimit in interface SearchOperation
Returns:
The time limit for this search operation.

getTypesOnly

public boolean getTypesOnly()
Retrieves the typesOnly flag for this search operation.

Specified by:
getTypesOnly in interface SearchOperation
Returns:
The typesOnly flag for this search operation.

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.

Specified by:
sendSearchResultDone in interface SearchOperation

setAttributes

public void setAttributes(java.util.LinkedHashSet<java.lang.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 interface SearchOperation
Parameters:
attributes - The set of requested attributes for this search operation.

setBaseDN

public void setBaseDN(DN baseDN)
Specifies the base DN for this search operation. This method is only intended for internal use.

Specified by:
setBaseDN in interface SearchOperation
Parameters:
baseDN - The base DN for this search operation.

setDerefPolicy

public void setDerefPolicy(DereferencePolicy derefPolicy)
Specifies the alias dereferencing policy for this search operation. This should only be called by pre-parse plugins.

Specified by:
setDerefPolicy in interface SearchOperation
Parameters:
derefPolicy - The alias dereferencing policy for this search operation.

setRawBaseDN

public void setRawBaseDN(ByteString rawBaseDN)
Specifies 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:
setRawBaseDN in interface SearchOperation
Parameters:
rawBaseDN - The raw, unprocessed base DN as included in the request from the client.

setRawFilter

public void setRawFilter(RawFilter rawFilter)
Specifies 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:
setRawFilter in interface SearchOperation
Parameters:
rawFilter - The raw, unprocessed search filter as included in the request from the client.

setScope

public void setScope(SearchScope scope)
Specifies the scope for this search operation. This should only be called by pre-parse plugins.

Specified by:
setScope in interface SearchOperation
Parameters:
scope - The scope for this search operation.

setSizeLimit

public 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 interface SearchOperation
Parameters:
sizeLimit - The size limit for this search operation.

setTimeLimit

public 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 interface SearchOperation
Parameters:
timeLimit - The time limit for this search operation.

setTypesOnly

public 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 interface SearchOperation
Parameters:
typesOnly - The typesOnly flag for this search operation.

setTimeLimitExpiration

public void setTimeLimitExpiration(java.lang.Long timeLimitExpiration)
Set the time after which the search time limit has expired.

Specified by:
setTimeLimitExpiration in interface SearchOperation
Parameters:
timeLimitExpiration - - Time after which the search has expired

isReturnLDAPSubentries

public boolean isReturnLDAPSubentries()
Indicates whether LDAP subentries should be returned or not.

Specified by:
isReturnLDAPSubentries in interface SearchOperation
Returns:
true if the LDAP subentries should be returned, false otherwise

setReturnLDAPSubentries

public void setReturnLDAPSubentries(boolean returnLDAPSubentries)
Set the flag indicating wether the LDAP subentries should be returned.

Specified by:
setReturnLDAPSubentries in interface SearchOperation
Parameters:
returnLDAPSubentries - - Boolean indicating wether the LDAP subentries should be returned or not

getMatchedValuesControl

public MatchedValuesControl getMatchedValuesControl()
The matched values control associated with this search operation.

Specified by:
getMatchedValuesControl in interface SearchOperation
Returns:
the match values control

setMatchedValuesControl

public void setMatchedValuesControl(MatchedValuesControl controls)
Set the match values control.

Specified by:
setMatchedValuesControl in interface SearchOperation
Parameters:
controls - - The matched values control

isIncludeUsableControl

public boolean isIncludeUsableControl()
Indicates whether to include the account usable response control with search result entries or not.

Specified by:
isIncludeUsableControl in interface SearchOperation
Returns:
true if the usable control has to be part of the search result entry

setIncludeUsableControl

public void setIncludeUsableControl(boolean includeUsableControl)
Specify whether to include the account usable response control within the search result entries.

Specified by:
setIncludeUsableControl in interface SearchOperation
Parameters:
includeUsableControl - - True if the account usable response control has to be included within the search result entries, false otherwise

setPersistentSearch

public void setPersistentSearch(PersistentSearch psearch)
Register the psearch in the search operation.

Specified by:
setPersistentSearch in interface SearchOperation
Parameters:
psearch - - Persistent search associated to that operation

getPersistentSearch

public PersistentSearch getPersistentSearch()
Get the psearch from the search operation.

Specified by:
getPersistentSearch in interface SearchOperation
Returns:
the psearch, or null if no psearch was registered

getTimeLimitExpiration

public java.lang.Long getTimeLimitExpiration()
Get the time after which the search time limit has expired.

Specified by:
getTimeLimitExpiration in interface SearchOperation
Returns:
the timeLimitExpiration

isClientAcceptsReferrals

public boolean isClientAcceptsReferrals()
Indicates whether the client is able to handle referrals.

Specified by:
isClientAcceptsReferrals in interface SearchOperation
Returns:
true, if the client is able to handle referrals

setClientAcceptsReferrals

public void setClientAcceptsReferrals(boolean clientAcceptReferrals)
Specify whether the client is able to handle referrals.

Specified by:
setClientAcceptsReferrals in interface SearchOperation
Parameters:
clientAcceptReferrals - - Boolean set to true if the client can handle referrals

incrementEntriesSent

public void incrementEntriesSent()
Increments by 1 the number of entries sent to the client for this search operation.

Specified by:
incrementEntriesSent in interface SearchOperation

incrementReferencesSent

public void incrementReferencesSent()
Increments by 1 the number of search references sent to the client for this search operation.

Specified by:
incrementReferencesSent in interface SearchOperation

isSendResponse

public boolean isSendResponse()
Indicates wether the search result done message has to be sent to the client, or not.

Specified by:
isSendResponse in interface SearchOperation
Returns:
true if the search result done message is to be sent to the client

setSendResponse

public void setSendResponse(boolean sendResponse)
Specify wether the search result done message has to be sent to the client, or not.

Specified by:
setSendResponse in interface SearchOperation
Parameters:
sendResponse - - boolean indicating wether the search result done message is to send to the client

isRealAttributesOnly

public boolean isRealAttributesOnly()
Returns true if only real attributes should be returned.

Specified by:
isRealAttributesOnly in interface SearchOperation
Returns:
true if only real attributes should be returned, false otherwise

setRealAttributesOnly

public void setRealAttributesOnly(boolean realAttributesOnly)
Specify wether to only return real attributes.

Specified by:
setRealAttributesOnly in interface SearchOperation
Parameters:
realAttributesOnly - - boolean setup to true, if only the real attributes should be returned

isVirtualAttributesOnly

public boolean isVirtualAttributesOnly()
Returns true if only virtual attributes should be returned.

Specified by:
isVirtualAttributesOnly in interface SearchOperation
Returns:
true if only virtual attributes should be returned, false otherwise

setVirtualAttributesOnly

public void setVirtualAttributesOnly(boolean virtualAttributesOnly)
Specify wether to only return virtual attributes.

Specified by:
setVirtualAttributesOnly in interface SearchOperation
Parameters:
virtualAttributesOnly - - boolean setup to true, if only the virtual attributes should be returned

sendSearchEntry

public void sendSearchEntry(SearchResultEntry entry)
                     throws DirectoryException
Sends the provided search result entry to the client.

Specified by:
sendSearchEntry in interface SearchOperation
Parameters:
entry - The search result entry to be sent to the client.
Throws:
DirectoryException

sendSearchReference

public boolean sendSearchReference(SearchResultReference reference)
                            throws DirectoryException
Sends the provided search result reference to the client.

Specified by:
sendSearchReference in interface SearchOperation
Parameters:
reference - The search result reference to be sent to the client.
Returns:
true if the client is able to accept referrals, or false if the client cannot handle referrals and no more attempts should be made to send them for the associated search operation.
Throws:
DirectoryException

getProxiedAuthorizationDN

public DN getProxiedAuthorizationDN()
Retrieves the proxied authorization DN for this operation if proxied authorization has been requested.

Specified by:
getProxiedAuthorizationDN in interface SearchOperation
Returns:
The proxied authorization DN for this operation if proxied authorization has been requested, or null if proxied authorization has not been requested.

setProxiedAuthorizationDN

public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN)
Set the proxied authorization DN for this operation if proxied authorization has been requested.

Specified by:
setProxiedAuthorizationDN in interface SearchOperation
Parameters:
proxiedAuthorizationDN - The proxied authorization DN for this operation if proxied authorization has been requested, or null if proxied authorization has not been requested.