From 35a408038c1de64a6f13f0e7b246a645e9945e3c Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Tue, 18 Mar 2008 22:44:58 +0000
Subject: [PATCH] With this refactoring:
---
opends/src/server/org/opends/server/core/AbandonOperationBasis.java | 127 +++++++++---------------------------------
1 files changed, 27 insertions(+), 100 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/AbandonOperationBasis.java b/opends/src/server/org/opends/server/core/AbandonOperationBasis.java
index 483a940..649f815 100644
--- a/opends/src/server/org/opends/server/core/AbandonOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/AbandonOperationBasis.java
@@ -38,16 +38,10 @@
import java.util.List;
import org.opends.server.api.ClientConnection;
-import org.opends.server.api.plugin.PreParsePluginResult;
+import org.opends.server.api.plugin.PluginResult;
import org.opends.server.loggers.debug.DebugLogger;
import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.types.AbstractOperation;
-import org.opends.server.types.CancelRequest;
-import org.opends.server.types.CancelResult;
-import org.opends.server.types.Control;
-import org.opends.server.types.DisconnectReason;
-import org.opends.server.types.OperationType;
-import org.opends.server.types.ResultCode;
+import org.opends.server.types.*;
import org.opends.server.types.operation.PostOperationAbandonOperation;
import org.opends.server.types.operation.PreParseAbandonOperation;
@@ -95,6 +89,8 @@
this.idToAbandon = idToAbandon;
+ this.cancelResult = new CancelResult(ResultCode.CANNOT_CANCEL,
+ ERR_CANNOT_CANCEL_ABANDON.get());
}
@@ -129,20 +125,6 @@
* {@inheritDoc}
*/
@Override()
- public final void disconnectClient(DisconnectReason disconnectReason,
- boolean sendNotification, Message message
- )
- {
- clientConnection.disconnect(disconnectReason, sendNotification,
- message);
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override()
public final String[][] getRequestLogElements()
{
// Note that no debugging will be done in this method because it is a likely
@@ -239,53 +221,31 @@
{
setResultCode(ResultCode.UNDEFINED);
+ // Start the processing timer.
+ setProcessingStartTime();
+
+ // Log the abandon request message.
+ logAbandonRequest(this);
// Get the plugin config manager that will be used for invoking plugins.
PluginConfigManager pluginConfigManager =
DirectoryServer.getPluginConfigManager();
- boolean skipPostOperation = false;
-
-
- // Start the processing timer.
- setProcessingStartTime();
-
// Create a labeled block of code that we can break out of if a problem is
// detected.
abandonProcessing:
{
// Invoke the pre-parse abandon plugins.
- PreParsePluginResult preParseResult =
+ PluginResult.PreParse preParseResult =
pluginConfigManager.invokePreParseAbandonPlugins(this);
- if (preParseResult.connectionTerminated())
+ if (!preParseResult.continueProcessing())
{
- // There's no point in continuing. Log the request and result and
- // return.
- setResultCode(ResultCode.CANCELED);
-
- appendErrorMessage(ERR_CANCELED_BY_PREPARSE_DISCONNECT.get());
-
- setProcessingStopTime();
-
- logAbandonRequest(this);
- logAbandonResult(this);
- return;
- }
- else if (preParseResult.sendResponseImmediately())
- {
- skipPostOperation = true;
+ setResultCode(preParseResult.getResultCode());
+ appendErrorMessage(preParseResult.getErrorMessage());
+ setMatchedDN(preParseResult.getMatchedDN());
+ setReferralURLs(preParseResult.getReferralURLs());
break abandonProcessing;
}
- else if (preParseResult.skipCoreProcessing())
- {
- skipPostOperation = false;
- break abandonProcessing;
- }
-
-
- // Log the abandon request message.
- logAbandonRequest(this);
-
// Actually perform the abandon operation. Make sure to set the result
// code to reflect whether the abandon was successful and an error message
@@ -306,20 +266,22 @@
// configurable option in the server.
boolean notifyRequestor = DirectoryServer.notifyAbandonedOperations();
Message cancelReason = INFO_CANCELED_BY_ABANDON_REQUEST.get(messageID);
- MessageBuilder cancelResponse = new MessageBuilder();
CancelResult result =
- operation.cancel(new CancelRequest(notifyRequestor, cancelReason,
- cancelResponse));
+ operation.cancel(new CancelRequest(notifyRequestor, cancelReason));
setResultCode(result.getResultCode());
- setErrorMessage(cancelResponse);
+ appendErrorMessage(result.getResponseMessage());
}
- }
-
- // Invoke the post-operation abandon plugins.
- if (! skipPostOperation)
- {
- pluginConfigManager.invokePostOperationAbandonPlugins(this);
+ PluginResult.PostOperation postOpResult =
+ pluginConfigManager.invokePostOperationAbandonPlugins(this);
+ if (!postOpResult.continueProcessing())
+ {
+ setResultCode(preParseResult.getResultCode());
+ appendErrorMessage(preParseResult.getErrorMessage());
+ setMatchedDN(preParseResult.getMatchedDN());
+ setReferralURLs(preParseResult.getReferralURLs());
+ break abandonProcessing;
+ }
}
@@ -337,41 +299,6 @@
* {@inheritDoc}
*/
@Override()
- public final CancelResult cancel(CancelRequest cancelRequest)
- {
- cancelRequest.addResponseMessage(ERR_CANNOT_CANCEL_ABANDON.get());
- return CancelResult.CANNOT_CANCEL;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override()
- public final CancelRequest getCancelRequest()
- {
- return null;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override()
- public boolean setCancelRequest(CancelRequest cancelRequest)
- {
- // Abandon operations cannot be canceled.
- return false;
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override()
public final void toString(StringBuilder buffer)
{
buffer.append("AbandonOperation(connID=");
--
Gitblit v1.10.0