From d1e5fe55252799742c6dc12265130edce17ff4be Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Wed, 27 Sep 2006 20:28:10 +0000
Subject: [PATCH] Make a few general changes to operation processing:

---
 opends/src/server/org/opends/server/core/ExtendedOperation.java |   66 +----
 opends/src/server/org/opends/server/core/CompareOperation.java  |   85 -------
 opends/src/server/org/opends/server/core/Operation.java         |   43 +++
 opends/src/server/org/opends/server/core/AddOperation.java      |  102 --------
 opends/src/server/org/opends/server/core/ModifyDNOperation.java |  102 --------
 opends/src/server/org/opends/server/core/ModifyOperation.java   |  102 --------
 opends/src/server/org/opends/server/core/SearchOperation.java   |   85 -------
 opends/src/server/org/opends/server/core/DeleteOperation.java   |   68 -----
 8 files changed, 90 insertions(+), 563 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/AddOperation.java b/opends/src/server/org/opends/server/core/AddOperation.java
index c5d8808..f9cd074 100644
--- a/opends/src/server/org/opends/server/core/AddOperation.java
+++ b/opends/src/server/org/opends/server/core/AddOperation.java
@@ -695,22 +695,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       return;
     }
@@ -759,22 +744,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logAddResponse(this);
         return;
@@ -909,22 +879,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logAddResponse(this);
         return;
@@ -993,22 +948,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logAddResponse(this);
           return;
@@ -1770,22 +1710,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logAddResponse(this);
           return;
@@ -1823,22 +1748,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logAddResponse(this);
           return;
diff --git a/opends/src/server/org/opends/server/core/CompareOperation.java b/opends/src/server/org/opends/server/core/CompareOperation.java
index cd15438..df6a53d 100644
--- a/opends/src/server/org/opends/server/core/CompareOperation.java
+++ b/opends/src/server/org/opends/server/core/CompareOperation.java
@@ -567,22 +567,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       return;
     }
@@ -625,22 +610,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logCompareResponse(this);
         return;
@@ -671,22 +641,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logCompareResponse(this);
         return;
@@ -957,22 +912,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logCompareResponse(this);
           return;
@@ -1094,22 +1034,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       logCompareResponse(this);
       return;
diff --git a/opends/src/server/org/opends/server/core/DeleteOperation.java b/opends/src/server/org/opends/server/core/DeleteOperation.java
index 13185af..9ee9afc 100644
--- a/opends/src/server/org/opends/server/core/DeleteOperation.java
+++ b/opends/src/server/org/opends/server/core/DeleteOperation.java
@@ -499,22 +499,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       return;
     }
@@ -557,22 +542,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logDeleteResponse(this);
         return;
@@ -922,22 +892,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logDeleteResponse(this);
           return;
@@ -974,22 +929,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logDeleteResponse(this);
           return;
diff --git a/opends/src/server/org/opends/server/core/ExtendedOperation.java b/opends/src/server/org/opends/server/core/ExtendedOperation.java
index 8e76852..9084c17 100644
--- a/opends/src/server/org/opends/server/core/ExtendedOperation.java
+++ b/opends/src/server/org/opends/server/core/ExtendedOperation.java
@@ -47,6 +47,7 @@
 import static org.opends.server.loggers.Debug.*;
 import static org.opends.server.messages.CoreMessages.*;
 import static org.opends.server.messages.MessageHandler.*;
+import static org.opends.server.util.ServerConstants.*;
 
 
 
@@ -458,24 +459,13 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
+      if (! (requestOID.equals(OID_CANCEL_REQUEST) ||
+             requestOID.equals(OID_START_TLS_REQUEST)))
       {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
+        indicateCancelled(cancelRequest);
+        processingStopTime = System.currentTimeMillis();
+        return;
       }
-
-      processingStopTime = System.currentTimeMillis();
-      return;
     }
 
 
@@ -516,25 +506,13 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
+        if (! (requestOID.equals(OID_CANCEL_REQUEST) ||
+               requestOID.equals(OID_START_TLS_REQUEST)))
         {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
+          indicateCancelled(cancelRequest);
+          processingStopTime = System.currentTimeMillis();
+          return;
         }
-
-        processingStopTime = System.currentTimeMillis();
-        logExtendedResponse(this);
-        return;
       }
 
 
@@ -601,25 +579,13 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
+        if (! (requestOID.equals(OID_CANCEL_REQUEST) ||
+               requestOID.equals(OID_START_TLS_REQUEST)))
         {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
+          indicateCancelled(cancelRequest);
+          processingStopTime = System.currentTimeMillis();
+          return;
         }
-
-        processingStopTime = System.currentTimeMillis();
-        logExtendedResponse(this);
-        return;
       }
 
 
diff --git a/opends/src/server/org/opends/server/core/ModifyDNOperation.java b/opends/src/server/org/opends/server/core/ModifyDNOperation.java
index 03caba5..5f1d6a5 100644
--- a/opends/src/server/org/opends/server/core/ModifyDNOperation.java
+++ b/opends/src/server/org/opends/server/core/ModifyDNOperation.java
@@ -814,22 +814,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       return;
     }
@@ -872,22 +857,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyDNResponse(this);
         return;
@@ -1020,22 +990,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyDNResponse(this);
         return;
@@ -1115,22 +1070,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyDNResponse(this);
           return;
@@ -1573,22 +1513,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyDNResponse(this);
           return;
@@ -1801,22 +1726,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyDNResponse(this);
           return;
diff --git a/opends/src/server/org/opends/server/core/ModifyOperation.java b/opends/src/server/org/opends/server/core/ModifyOperation.java
index bc0e246..e2ff8a8 100644
--- a/opends/src/server/org/opends/server/core/ModifyOperation.java
+++ b/opends/src/server/org/opends/server/core/ModifyOperation.java
@@ -700,22 +700,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       return;
     }
@@ -758,22 +743,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyResponse(this);
         return;
@@ -828,22 +798,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyResponse(this);
         return;
@@ -877,22 +832,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyResponse(this);
           return;
@@ -2277,22 +2217,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyResponse(this);
           return;
@@ -2329,22 +2254,7 @@
         // Check for and handle a request to cancel this operation.
         if (cancelRequest != null)
         {
-          setCancelResult(CancelResult.CANCELED);
-
-          if (cancelRequest.notifyOriginalRequestor() ||
-              DirectoryServer.notifyAbandonedOperations())
-          {
-            setResultCode(ResultCode.CANCELED);
-
-            String cancelReason = cancelRequest.getCancelReason();
-            if (cancelReason != null)
-            {
-              appendErrorMessage(cancelReason);
-            }
-
-            clientConnection.sendResponse(this);
-          }
-
+          indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyResponse(this);
           return;
diff --git a/opends/src/server/org/opends/server/core/Operation.java b/opends/src/server/org/opends/server/core/Operation.java
index baf1b94..1f5c35d 100644
--- a/opends/src/server/org/opends/server/core/Operation.java
+++ b/opends/src/server/org/opends/server/core/Operation.java
@@ -152,7 +152,15 @@
     this.clientConnection = clientConnection;
     this.operationID      = operationID;
     this.messageID        = messageID;
-    this.requestControls  = requestControls;
+
+    if (requestControls == null)
+    {
+      this.requestControls = new ArrayList<Control>(0);
+    }
+    else
+    {
+      this.requestControls  = requestControls;
+    }
 
     resultCode                 = ResultCode.UNDEFINED;
     additionalLogMessage       = new StringBuilder();
@@ -831,6 +839,39 @@
 
 
   /**
+   * Indicates that this operation has been cancelled.  If appropriate, it will
+   * send a response to the client to indicate that.  This method must not be
+   * called by abandon, bind, or unbind operations under any circumstances, nor
+   * by extended operations if the request OID is that of the cancel or the
+   * StartTLS operation.
+   *
+   * @param  cancelRequest  The request to cancel this operation.
+   */
+  protected void indicateCancelled(CancelRequest cancelRequest)
+  {
+    assert debugEnter(CLASS_NAME, "indicateCancelled",
+                      String.valueOf(cancelRequest));
+
+    setCancelResult(CancelResult.CANCELED);
+
+    if (cancelRequest.notifyOriginalRequestor() ||
+        DirectoryServer.notifyAbandonedOperations())
+    {
+      setResultCode(ResultCode.CANCELED);
+
+      String cancelReason = cancelRequest.getCancelReason();
+      if (cancelReason != null)
+      {
+        appendErrorMessage(cancelReason);
+      }
+
+      clientConnection.sendResponse(this);
+    }
+  }
+
+
+
+  /**
    * Retrieves a string representation of this operation.
    *
    * @return  A string representation of this operation.
diff --git a/opends/src/server/org/opends/server/core/SearchOperation.java b/opends/src/server/org/opends/server/core/SearchOperation.java
index 3005ceb..5e8657f 100644
--- a/opends/src/server/org/opends/server/core/SearchOperation.java
+++ b/opends/src/server/org/opends/server/core/SearchOperation.java
@@ -1537,22 +1537,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       return;
     }
@@ -1594,22 +1579,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
         return;
@@ -1929,22 +1899,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
         return;
@@ -1977,22 +1932,7 @@
       // Check for and handle a request to cancel this operation.
       if (cancelRequest != null)
       {
-        setCancelResult(CancelResult.CANCELED);
-
-        if (cancelRequest.notifyOriginalRequestor() ||
-            DirectoryServer.notifyAbandonedOperations())
-        {
-          setResultCode(ResultCode.CANCELED);
-
-          String cancelReason = cancelRequest.getCancelReason();
-          if (cancelReason != null)
-          {
-            appendErrorMessage(cancelReason);
-          }
-
-          clientConnection.sendResponse(this);
-        }
-
+        indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
         return;
@@ -2097,22 +2037,7 @@
     // Check for and handle a request to cancel this operation.
     if (cancelRequest != null)
     {
-      setCancelResult(CancelResult.CANCELED);
-
-      if (cancelRequest.notifyOriginalRequestor() ||
-          DirectoryServer.notifyAbandonedOperations())
-      {
-        setResultCode(ResultCode.CANCELED);
-
-        String cancelReason = cancelRequest.getCancelReason();
-        if (cancelReason != null)
-        {
-          appendErrorMessage(cancelReason);
-        }
-
-        clientConnection.sendResponse(this);
-      }
-
+      indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       logSearchResultDone(this);
       return;

--
Gitblit v1.10.0