| | |
| | | setProcessingStartTime(); |
| | | |
| | | // Check for and handle a request to cancel this operation. |
| | | if (getCancelRequest() != null) |
| | | if (cancelRequest != null) |
| | | { |
| | | indicateCancelled(getCancelRequest()); |
| | | indicateCancelled(cancelRequest); |
| | | setProcessingStopTime(); |
| | | return; |
| | | } |
| | | |
| | | |
| | | // This flag is set to true as soon as a workflow has been executed. |
| | | boolean workflowExecuted = false; |
| | | |
| | | // Create a labeled block of code that we can break out of if a problem is |
| | | // detected. |
| | | deleteProcessing: |
| | |
| | | logDeleteRequest(this); |
| | | |
| | | |
| | | // Check for and handle a request to cancel this operation. |
| | | if (getCancelRequest() != null) |
| | | // Check for a request to cancel this operation. |
| | | if (cancelRequest != null) |
| | | { |
| | | indicateCancelled(getCancelRequest()); |
| | | setProcessingStopTime(); |
| | | logDeleteResponse(this); |
| | | pluginConfigManager.invokePostResponseDeletePlugins(this); |
| | | return; |
| | | break deleteProcessing; |
| | | } |
| | | |
| | | |
| | |
| | | break deleteProcessing; |
| | | } |
| | | workflow.execute(this); |
| | | workflowExecuted = true; |
| | | |
| | | } // end of processing block |
| | | |
| | | |
| | | // Check for a terminated connection. |
| | | if (getCancelResult() == CancelResult.CANCELED) |
| | | { |
| | | // Stop the processing timer. |
| | | setProcessingStopTime(); |
| | | |
| | | // Log the add response message. |
| | | logDeleteResponse(this); |
| | | |
| | | return; |
| | | } |
| | | |
| | | // Check for and handle a request to cancel this operation. |
| | | if ((getCancelRequest() != null) || |
| | | (getCancelResult() == CancelResult.CANCELED)) |
| | | if (cancelRequest != null) |
| | | { |
| | | if (getCancelRequest() != null){ |
| | | indicateCancelled(getCancelRequest()); |
| | | } |
| | | indicateCancelled(cancelRequest); |
| | | |
| | | // Stop the processing timer. |
| | | setProcessingStopTime(); |
| | | |
| | | // Log the delete response message. |
| | | logDeleteResponse(this); |
| | | invokePostResponsePlugins(); |
| | | |
| | | // Invoke the post-response delete plugins. |
| | | invokePostResponsePlugins(workflowExecuted); |
| | | |
| | | return; |
| | | } |
| | | |
| | |
| | | // Stop the processing timer. |
| | | setProcessingStopTime(); |
| | | |
| | | |
| | | // Send the delete response to the client. |
| | | getClientConnection().sendResponse(this); |
| | | |
| | | |
| | | // Log the delete response. |
| | | logDeleteResponse(this); |
| | | |
| | | // Check wether there are local operations in attachments |
| | | // Notifies any persistent searches that might be registered with the |
| | | // server. |
| | | notifyPersistentSearches(workflowExecuted); |
| | | |
| | | // Invoke the post-response delete plugins. |
| | | invokePostResponsePlugins(workflowExecuted); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Invokes the post response plugins. If a workflow has been executed |
| | | * then invoke the post response plugins provided by the workflow |
| | | * elements of the worklfow, otherwise invoke the post reponse plugins |
| | | * that have been registered with the current operation. |
| | | * |
| | | * @param workflowExecuted <code>true</code> if a workflow has been |
| | | * executed |
| | | */ |
| | | private void invokePostResponsePlugins(boolean workflowExecuted) |
| | | { |
| | | // Get the plugin config manager that will be used for invoking plugins. |
| | | PluginConfigManager pluginConfigManager = |
| | | DirectoryServer.getPluginConfigManager(); |
| | | |
| | | // Invoke the post response plugins |
| | | if (workflowExecuted) |
| | | { |
| | | // Invoke the post response plugins that have been registered by |
| | | // the workflow elements |
| | | List localOperations = |
| | | (List)getAttachment(Operation.LOCALBACKENDOPERATIONS); |
| | | |
| | | if (localOperations != null) |
| | | { |
| | | for (Object localOp : localOperations) |
| | | { |
| | | LocalBackendDeleteOperation localOperation = |
| | | (LocalBackendDeleteOperation)localOp; |
| | | pluginConfigManager.invokePostResponseDeletePlugins(localOperation); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // Invoke the post response plugins that have been registered with |
| | | // the current operation |
| | | pluginConfigManager.invokePostResponseDeletePlugins(this); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Notifies any persistent searches that might be registered with the server. |
| | | * If no workflow has been executed then don't notify persistent searches. |
| | | * |
| | | * @param workflowExecuted <code>true</code> if a workflow has been |
| | | * executed |
| | | */ |
| | | private void notifyPersistentSearches(boolean workflowExecuted) |
| | | { |
| | | if (! workflowExecuted) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | List localOperations = |
| | | (List)getAttachment(Operation.LOCALBACKENDOPERATIONS); |
| | | if (localOperations != null && (! localOperations.isEmpty())){ |
| | | |
| | | if (localOperations != null) |
| | | { |
| | | for (Object localOp : localOperations) |
| | | { |
| | | LocalBackendDeleteOperation localOperation = |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // Invoke the post-response delete plugins. |
| | | pluginConfigManager.invokePostResponseDeletePlugins(localOperation); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Updates the error message and the result code of the operation. |
| | | * |
| | |
| | | String.valueOf(getEntryDN()))); |
| | | } |
| | | |
| | | /** |
| | | * Execute the postResponseDeletePlugins. |
| | | */ |
| | | private void invokePostResponsePlugins() |
| | | { |
| | | // Get the plugin config manager that will be used for invoking plugins. |
| | | PluginConfigManager pluginConfigManager = |
| | | DirectoryServer.getPluginConfigManager(); |
| | | |
| | | // Check wether there are local operations in attachments |
| | | List localOperations = |
| | | (List)getAttachment(Operation.LOCALBACKENDOPERATIONS); |
| | | |
| | | if (localOperations != null && (! localOperations.isEmpty())){ |
| | | for (Object localOp : localOperations) |
| | | { |
| | | LocalBackendDeleteOperation localOperation = |
| | | (LocalBackendDeleteOperation)localOp; |
| | | // Invoke the post-response delete plugins. |
| | | pluginConfigManager.invokePostResponseDeletePlugins(localOperation); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |