Class AbstractOperation

    • Field Detail

      • NO_RESPONSE_CONTROLS

        protected static final List<Control> NO_RESPONSE_CONTROLS
        The set of response controls that will always be returned for an abandon operation.
      • clientConnection

        protected final ClientConnection clientConnection
        The client connection with which this operation is associated.
      • messageID

        protected final int messageID
        The message ID for this operation.
      • operationID

        protected final long operationID
        The operation ID for this operation.
      • cancelRequest

        protected CancelRequest cancelRequest
        The cancel request for this operation.
      • cancelResult

        protected CancelResult cancelResult
        The cancel result for this operation.
    • Constructor Detail

      • AbstractOperation

        protected AbstractOperation​(ClientConnection clientConnection,
                                    long operationID,
                                    int messageID,
                                    List<Control> requestControls)
        Creates a new operation with the provided information.
        Parameters:
        clientConnection - The client connection with which this operation is associated.
        operationID - The identifier assigned to this operation for the client connection.
        messageID - The message ID of the request with which this operation is associated.
        requestControls - The set of controls included in the request.
    • Method Detail

      • disconnectClient

        public void disconnectClient​(DisconnectReason disconnectReason,
                                     boolean sendNotification,
                                     org.forgerock.i18n.LocalizableMessage message)
        Description copied from interface: Operation
        Terminates the client connection being used to process this operation. If this is called by a plugin, then that plugin must return a result indicating that the client connection has been terminated.
        Specified by:
        disconnectClient in interface Operation
        Specified by:
        disconnectClient in interface PluginOperation
        Parameters:
        disconnectReason - The disconnect reason that provides the generic cause for the disconnect.
        sendNotification - Indicates whether to try to provide notification to the client that the connection will be closed.
        message - The message to send to the client. It may be null if no notification is to be sent.
      • getConnectionID

        public final long getConnectionID()
        Description copied from interface: Operation
        Retrieves the unique identifier that is assigned to the client connection that submitted this operation.
        Specified by:
        getConnectionID in interface Operation
        Specified by:
        getConnectionID in interface PluginOperation
        Returns:
        The unique identifier that is assigned to the client connection that submitted this operation.
      • getOperationID

        public final long getOperationID()
        Description copied from interface: Operation
        Retrieves the operation ID for this operation.
        Specified by:
        getOperationID in interface Operation
        Specified by:
        getOperationID in interface PluginOperation
        Returns:
        The operation ID for this operation.
      • getMessageID

        public final int getMessageID()
        Description copied from interface: Operation
        Retrieves the message ID assigned to this operation.
        Specified by:
        getMessageID in interface Operation
        Specified by:
        getMessageID in interface PluginOperation
        Returns:
        The message ID assigned to this operation.
      • getRequestControls

        public final List<Control> getRequestControls()
        Description copied from interface: Operation
        Retrieves the set of controls included in the request from the client. The returned list must not be altered.
        Specified by:
        getRequestControls in interface Operation
        Specified by:
        getRequestControls in interface PluginOperation
        Returns:
        The set of controls included in the request from the client.
      • getRequestControl

        public final <T extends Control> T getRequestControl​(ControlDecoder<T> d)
                                                      throws DirectoryException
        Description copied from interface: Operation
        Retrieves a control included in the request from the client.
        Specified by:
        getRequestControl in interface Operation
        Specified by:
        getRequestControl in interface PluginOperation
        Type Parameters:
        T - The type of control requested.
        Parameters:
        d - The requested control's decoder.
        Returns:
        The decoded form of the requested control included in the request from the client or null if the control was not found.
        Throws:
        DirectoryException - if an error occurs while decoding the control.
      • addRequestControl

        public final void addRequestControl​(Control control)
        Description copied from interface: Operation
        Adds the provided control to the set of request controls for this operation. This method may only be called by pre-parse plugins.
        Specified by:
        addRequestControl in interface Operation
        Specified by:
        addRequestControl in interface PreParseOperation
        Parameters:
        control - The control to add to the set of request controls for this operation.
      • getResultCode

        public final ResultCode getResultCode()
        Description copied from interface: Operation
        Retrieves the result code for this operation.
        Specified by:
        getResultCode in interface Operation
        Specified by:
        getResultCode in interface PostResponseOperation
        Returns:
        The result code associated for this operation, or UNDEFINED if the operation has not yet completed.
      • setResultCode

        public final void setResultCode​(ResultCode resultCode)
        Description copied from interface: Operation
        Specifies the result code for this operation. This method may not be called by post-response plugins.
        Specified by:
        setResultCode in interface Operation
        Parameters:
        resultCode - The result code for this operation.
      • getMaskedResultCode

        public final ResultCode getMaskedResultCode()
        Description copied from interface: Operation
        Retrieves the real, masked result code for this operation.
        Specified by:
        getMaskedResultCode in interface Operation
        Returns:
        The real, masked result code associated for this operation, or UNDEFINED if the operation has not yet completed.
      • setMaskedResultCode

        public final void setMaskedResultCode​(ResultCode maskedResultCode)
        Description copied from interface: Operation
        Specifies the real, masked result code for this operation. This method may not be called by post-response plugins.
        Specified by:
        setMaskedResultCode in interface Operation
        Parameters:
        maskedResultCode - The real, masked result code for this operation.
      • getErrorMessage

        public final org.forgerock.i18n.LocalizableMessageBuilder getErrorMessage()
        Description copied from interface: Operation
        Retrieves the error message for this operation. Its contents may be altered by pre-parse, pre-operation, and post-operation plugins, but not by post-response plugins.
        Specified by:
        getErrorMessage in interface Operation
        Specified by:
        getErrorMessage in interface PostResponseOperation
        Specified by:
        getErrorMessage in interface PreParseOperation
        Returns:
        The error message for this operation.
      • setErrorMessage

        public final void setErrorMessage​(org.forgerock.i18n.LocalizableMessageBuilder errorMessage)
        Description copied from interface: Operation
        Specifies the error message for this operation. This method may not be called by post-response plugins.
        Specified by:
        setErrorMessage in interface Operation
        Specified by:
        setErrorMessage in interface PreParseOperation
        Parameters:
        errorMessage - The error message for this operation.
      • appendErrorMessage

        public final void appendErrorMessage​(org.forgerock.i18n.LocalizableMessage message)
        Description copied from interface: Operation
        Appends the provided message to the error message buffer. If the buffer has not yet been created, then this will create it first and then add the provided message. This method may not be called by post-response plugins.
        Specified by:
        appendErrorMessage in interface Operation
        Specified by:
        appendErrorMessage in interface PreParseOperation
        Parameters:
        message - The message to append to the error message
      • getMaskedErrorMessage

        public final org.forgerock.i18n.LocalizableMessageBuilder getMaskedErrorMessage()
        Description copied from interface: Operation
        Retrieves the real, masked error message for this operation. Its contents may be altered by pre-parse, pre-operation, and post-operation plugins, but not by post-response plugins.
        Specified by:
        getMaskedErrorMessage in interface Operation
        Returns:
        The real, masked error message for this operation.
      • setMaskedErrorMessage

        public final void setMaskedErrorMessage​(org.forgerock.i18n.LocalizableMessageBuilder maskedErrorMessage)
        Description copied from interface: Operation
        Specifies the real, masked error message for this operation. This method may not be called by post-response plugins.
        Specified by:
        setMaskedErrorMessage in interface Operation
        Parameters:
        maskedErrorMessage - The real, masked error message for this operation.
      • appendMaskedErrorMessage

        public final void appendMaskedErrorMessage​(org.forgerock.i18n.LocalizableMessage maskedMessage)
        Description copied from interface: Operation
        Appends the provided message to the real, masked error message buffer. If the buffer has not yet been created, then this will create it first and then add the provided message. This method may not be called by post-response plugins.
        Specified by:
        appendMaskedErrorMessage in interface Operation
        Parameters:
        maskedMessage - The message to append to the real, masked error message
      • addAdditionalLogItem

        public void addAdditionalLogItem​(AdditionalLogItem item)
        Description copied from interface: Operation
        Adds an additional log item to this operation, which should be written to the log but not included in the response to the client. This method may not be called by post-response plugins.
        Specified by:
        addAdditionalLogItem in interface Operation
        Specified by:
        addAdditionalLogItem in interface PreParseOperation
        Parameters:
        item - The additional log item for this operation.
      • getMatchedDN

        public final DN getMatchedDN()
        Description copied from interface: Operation
        Retrieves the matched DN for this operation.
        Specified by:
        getMatchedDN in interface Operation
        Specified by:
        getMatchedDN in interface PostResponseOperation
        Returns:
        The matched DN for this operation, or null if the operation has not yet completed or does not have a matched DN.
      • setMatchedDN

        public final void setMatchedDN​(DN matchedDN)
        Description copied from interface: Operation
        Specifies the matched DN for this operation. This may not be called by post-response plugins.
        Specified by:
        setMatchedDN in interface Operation
        Parameters:
        matchedDN - The matched DN for this operation.
      • getReferralURLs

        public final List<String> getReferralURLs()
        Description copied from interface: Operation
        Retrieves the set of referral URLs for this operation. Its contents must not be altered by the caller.
        Specified by:
        getReferralURLs in interface Operation
        Specified by:
        getReferralURLs in interface PostResponseOperation
        Returns:
        The set of referral URLs for this operation, or null if the operation is not yet complete or does not have a set of referral URLs.
      • setReferralURLs

        public final void setReferralURLs​(List<String> referralURLs)
        Description copied from interface: Operation
        Specifies the set of referral URLs for this operation. This may not be called by post-response plugins.
        Specified by:
        setReferralURLs in interface Operation
        Parameters:
        referralURLs - The set of referral URLs for this operation.
      • setResponseData

        public final void setResponseData​(DirectoryException directoryException)
        Description copied from interface: Operation
        Sets the response elements for this operation based on the information contained in the provided DirectoryException object. This method may not be called by post-response plugins.
        Specified by:
        setResponseData in interface Operation
        Parameters:
        directoryException - The exception containing the information to use for the response elements.
      • isInternalOperation

        public final boolean isInternalOperation()
        Description copied from interface: Operation
        Indicates whether this is an internal operation rather than one that was requested by an external client.
        Specified by:
        isInternalOperation in interface Operation
        Specified by:
        isInternalOperation in interface PluginOperation
        Returns:
        true if this is an internal operation, or false if it is not.
      • setInternalOperation

        public final void setInternalOperation​(boolean isInternalOperation)
        Description copied from interface: Operation
        Specifies whether this is an internal operation rather than one that was requested by an external client. This may not be called from within a plugin.
        Specified by:
        setInternalOperation in interface Operation
        Parameters:
        isInternalOperation - Specifies whether this is an internal operation rather than one that was requested by an external client.
      • isInnerOperation

        public boolean isInnerOperation()
        Description copied from interface: Operation
        Indicates whether this is an inner operation rather than one that was directly requested by an external client. Said otherwise, inner operations include internal operations, but also operations in the server indirectly mandated by external requests like Rest2LDAP for example. This may not be called from within a plugin.
        Specified by:
        isInnerOperation in interface Operation
        Returns:
        true if this is an inner operation, or false if it is not.
      • setInnerOperation

        public void setInnerOperation​(boolean isInnerOperation)
        Description copied from interface: Operation
        Specifies whether this is an inner operation rather than one that was directly requested by an external client. Said otherwise, inner operations include internal operations, but also operations in the server indirectly mandated by external requests like Rest2LDAP for example. This may not be called from within a plugin.
        Specified by:
        setInnerOperation in interface Operation
        Parameters:
        isInnerOperation - Specifies whether this is an inner operation rather than one that was requested by an external client.
      • isSynchronizationOperation

        public final boolean isSynchronizationOperation()
        Description copied from interface: Operation
        Indicates whether this is a synchronization operation rather than one that was requested by an external client.
        Specified by:
        isSynchronizationOperation in interface Operation
        Specified by:
        isSynchronizationOperation in interface PluginOperation
        Returns:
        true if this is a data synchronization operation, or false if it is not.
      • setSynchronizationOperation

        public final void setSynchronizationOperation​(boolean isSynchronizationOperation)
        Description copied from interface: Operation
        Specifies whether this is a synchronization operation rather than one that was requested by an external client. This method may not be called from within a plugin.
        Specified by:
        setSynchronizationOperation in interface Operation
        Parameters:
        isSynchronizationOperation - Specifies whether this is a synchronization operation rather than one that was requested by an external client.
      • dontSynchronize

        public boolean dontSynchronize()
        Description copied from interface: Operation
        Indicates whether this operation needs to be synchronized to other copies of the data.
        Specified by:
        dontSynchronize in interface Operation
        Returns:
        true if this operation should not be synchronized, or false if it should be synchronized.
      • setDontSynchronize

        public final void setDontSynchronize​(boolean dontSynchronize)
        Description copied from interface: Operation
        Specifies whether this operation must be synchronized to other copies of the data.
        Specified by:
        setDontSynchronize in interface Operation
        Parameters:
        dontSynchronize - Specifies whether this operation must be synchronized to other copies of the data.
      • getAuthorizationEntry

        public final Entry getAuthorizationEntry()
        Description copied from interface: Operation
        Retrieves the entry for the user that should be considered the authorization identity for this operation. In many cases, it will be the same as the authorization entry for the underlying client connection, or null if no authentication has been performed on that connection. However, it may be some other value if special processing has been requested (e.g., the operation included a proxied authorization control). This method should not be called by pre-parse plugins because the correct value may not yet have been determined.
        Specified by:
        getAuthorizationEntry in interface Operation
        Returns:
        The entry for the user that should be considered the authorization identity for this operation, or null if the authorization identity should be the unauthenticated user.
      • setAuthorizationEntry

        public final void setAuthorizationEntry​(Entry authorizationEntry)
        Description copied from interface: Operation
        Provides the entry for the user that should be considered the authorization identity for this operation. This must not be called from within a plugin.
        Specified by:
        setAuthorizationEntry in interface Operation
        Parameters:
        authorizationEntry - The entry for the user that should be considered the authorization identity for this operation, or null if it should be the unauthenticated user.
      • getAuthorizationDN

        public final DN getAuthorizationDN()
        Description copied from interface: Operation
        Retrieves the authorization DN for this operation. In many cases, it will be the same as the DN of the authenticated user for the underlying connection, or the null DN if no authentication has been performed on that connection. However, it may be some other value if special processing has been requested (e.g., the operation included a proxied authorization control). This method should not be called by pre-parse plugins because the correct value may not have yet been determined.
        Specified by:
        getAuthorizationDN in interface Operation
        Specified by:
        getAuthorizationDN in interface PostResponseOperation
        Returns:
        The authorization DN for this operation, or the null DN if it should be the unauthenticated user..
      • getAttachments

        public final Map<String,​Object> getAttachments()
        Description copied from interface: Operation
        Retrieves the set of attachments defined for this operation, as a mapping between the attachment name and the associated object.
        Specified by:
        getAttachments in interface Operation
        Specified by:
        getAttachments in interface PluginOperation
        Returns:
        The set of attachments defined for this operation.
      • setAttachments

        public final void setAttachments​(Map<String,​Object> attachments)
        Description copied from interface: Operation
        Set the attachments to the operation.
        Specified by:
        setAttachments in interface Operation
        Parameters:
        attachments - - Attachments to register within the operation
      • getAttachment

        public final <T> T getAttachment​(String name)
        Description copied from interface: Operation
        Retrieves the attachment with the specified name.
        Specified by:
        getAttachment in interface Operation
        Specified by:
        getAttachment in interface PluginOperation
        Type Parameters:
        T - the type of the attached object
        Parameters:
        name - The name for the attachment to retrieve. It will be treated in a case-sensitive manner.
        Returns:
        The requested attachment object, or null if it does not exist.
      • removeAttachment

        public final <T> T removeAttachment​(String name)
        Description copied from interface: Operation
        Removes the attachment with the specified name.
        Specified by:
        removeAttachment in interface Operation
        Specified by:
        removeAttachment in interface PluginOperation
        Type Parameters:
        T - the type of the attached object
        Parameters:
        name - The name for the attachment to remove. It will be treated in a case-sensitive manner.
        Returns:
        The attachment that was removed, or null if it does not exist.
      • setAttachment

        public final <T> T setAttachment​(String name,
                                         Object value)
        Description copied from interface: Operation
        Sets the value of the specified attachment. If an attachment already exists with the same name, it will be replaced. Otherwise, a new attachment will be added.
        Specified by:
        setAttachment in interface Operation
        Specified by:
        setAttachment in interface PluginOperation
        Type Parameters:
        T - the type of the attached object
        Parameters:
        name - The name to use for the attachment.
        value - The value to use for the attachment.
        Returns:
        The former value held by the attachment with the given name, or null if there was previously no such attachment.
      • operationCompleted

        public final void operationCompleted()
        Description copied from interface: Operation
        Indicates that processing on this operation has completed successfully and that the client should perform any associated cleanup work.
        Specified by:
        operationCompleted in interface Operation
      • cancel

        public CancelResult cancel​(CancelRequest cancelRequest)
        Description copied from interface: Operation
        Attempts to cancel this operation before processing has completed.
        Specified by:
        cancel in interface Operation
        Parameters:
        cancelRequest - Information about the way in which the operation should be canceled.
        Returns:
        A code providing information on the result of the cancellation.
      • abort

        public void abort​(CancelRequest cancelRequest)
        Description copied from interface: Operation
        Attempts to abort this operation before processing has completed.
        Specified by:
        abort in interface Operation
        Parameters:
        cancelRequest - Information about the way in which the operation should be canceled.
      • checkIfCanceled

        public final void checkIfCanceled​(boolean signalTooLate)
                                   throws CanceledOperationException
        Description copied from interface: Operation
        Checks to see if this operation requested to cancel in which case CanceledOperationException will be thrown.
        Specified by:
        checkIfCanceled in interface Operation
        Specified by:
        checkIfCanceled in interface PluginOperation
        Parameters:
        signalTooLate - true to signal that any further cancel requests will be too late after return from this call or false otherwise.
        Throws:
        CanceledOperationException - if this operation should be cancelled.
      • getCancelRequest

        public final CancelRequest getCancelRequest()
        Description copied from interface: Operation
        Retrieves the cancel request that has been issued for this operation, if there is one. This method should not be called by post-operation or post-response plugins.
        Specified by:
        getCancelRequest in interface Operation
        Returns:
        The cancel request that has been issued for this operation, or null if there has not been any request to cancel.
      • getCancelResult

        public final CancelResult getCancelResult()
        Description copied from interface: Operation
        Retrieves the cancel result for this operation.
        Specified by:
        getCancelResult in interface Operation
        Returns:
        The cancel result for this operation. It will be null if the operation has not seen and reacted to a cancel request.
      • setProcessingStartTime

        public final void setProcessingStartTime()
        Set the time at which the processing started for this operation.
      • getProcessingStopTime

        public final long getProcessingStopTime()
        Description copied from interface: Operation
        Retrieves the time that processing stopped for this operation. This will actually hold a time immediately before the response was sent to the client.
        Specified by:
        getProcessingStopTime in interface Operation
        Specified by:
        getProcessingStopTime in interface PostResponseOperation
        Returns:
        The time that processing stopped for this operation.
      • setProcessingStopTime

        public final void setProcessingStopTime()
        Set the time at which the processing stopped for this operation. This will actually hold a time immediately before the response was sent to the client.
      • getProcessingTime

        public final long getProcessingTime()
        Description copied from interface: Operation
        Retrieves the length of time in milliseconds that the server spent processing this operation. This should not be called until after the server has sent the response to the client.
        Specified by:
        getProcessingTime in interface Operation
        Specified by:
        getProcessingTime in interface PostResponseOperation
        Returns:
        The length of time in milliseconds that the server spent processing this operation.
      • getProcessingNanoTime

        public final long getProcessingNanoTime()
        Description copied from interface: Operation
        Retrieves the length of time in nanoseconds that the server spent processing this operation if available. This should not be called until after the server has sent the response to the client.
        Specified by:
        getProcessingNanoTime in interface Operation
        Returns:
        The length of time in nanoseconds that the server spent processing this operation or -1 if its not available.
      • registerPostResponseCallback

        public final void registerPostResponseCallback​(Runnable callback)
        Description copied from interface: Operation
        Registers a callback which should be run once this operation has completed and the response sent back to the client.
        Specified by:
        registerPostResponseCallback in interface Operation
        Parameters:
        callback - The callback to be run once this operation has completed and the response sent back to the client.
      • hashCode

        public final int hashCode()
        Overrides:
        hashCode in class Object
      • equals

        public final boolean equals​(Object obj)
        Overrides:
        equals in class Object
      • invokePostResponseCallbacks

        protected final void invokePostResponseCallbacks()
        Invokes the post response callbacks that were registered with this operation.
      • updateOperationErrMsgAndResCode

        public void updateOperationErrMsgAndResCode()
        Updates the error message and the result code of the operation. This method is called because no workflows were found to process the operation.
      • processOperationResult

        public boolean processOperationResult​(PluginResult.OperationResult operationResult)
        Processes the provided operation result for the current operation.
        Parameters:
        operationResult - the operation result
        Returns:
        true if processing can continue, false otherwise
      • processOperationResult

        public static boolean processOperationResult​(Operation op,
                                                     PluginResult.OperationResult opResult)
        Processes the provided operation result for the provided operation.
        Parameters:
        op - the operation
        opResult - the operation result
        Returns:
        true if processing can continue, false otherwise
      • getTransactionId

        public String getTransactionId()