From 05dfa5fee15b191c3ee1afae0010b70733b1a35b Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Mon, 25 Jun 2007 15:51:57 +0000
Subject: [PATCH] Update the pre-parse and pre-operation plugin results to add the ability to skip core processing without skipping post-operation plugins.  Also, make sure that post-response plugins are always invoked for all operations that get far enough in their processing to have called the pre-parse plugins.

---
 opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java |   59 +++++++++++
 opends/src/server/org/opends/server/core/ExtendedOperation.java              |   15 +++
 opends/src/server/org/opends/server/core/CompareOperation.java               |   17 +++
 opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java     |   59 +++++++++++
 opends/src/server/org/opends/server/core/AddOperation.java                   |   18 +++
 opends/src/server/org/opends/server/core/ModifyDNOperation.java              |   18 +++
 opends/src/server/org/opends/server/core/ModifyOperation.java                |   18 +++
 opends/src/server/org/opends/server/core/AbandonOperation.java               |    5 +
 opends/src/server/org/opends/server/core/BindOperation.java                  |   25 +++++
 opends/src/server/org/opends/server/core/SearchOperation.java                |   17 +++
 opends/src/server/org/opends/server/core/DeleteOperation.java                |   16 +++
 11 files changed, 265 insertions(+), 2 deletions(-)

diff --git a/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java b/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java
index 7eab0f0..628e325 100644
--- a/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java
@@ -55,6 +55,10 @@
   // from this plugin to the client with no further processing.
   private final boolean sendResponseImmediately;
 
+  // Indicates whether the server should skip the core processing for
+  // the associated operation.
+  private final boolean skipCoreProcessing;
+
 
 
   /**
@@ -67,7 +71,7 @@
    */
   private PreOperationPluginResult()
   {
-    this(false, true, false);
+    this(false, true, false, false);
   }
 
 
@@ -92,9 +96,44 @@
                                   boolean continuePluginProcessing,
                                   boolean sendResponseImmediately)
   {
+    this(connectionTerminated, continuePluginProcessing,
+         sendResponseImmediately, false);
+  }
+
+
+
+  /**
+   * Creates a new pre-operation plugin result with the provided
+   * information.
+   *
+   * @param  connectionTerminated      Indicates whether the
+   *                                   post-response plugin terminated
+   *                                   the client connection.
+   * @param  continuePluginProcessing  Indicates whether any further
+   *                                   pre-operation plugins should be
+   *                                   invoked for this operation.
+   * @param  sendResponseImmediately   Indicates whether the server
+   *                                   should send the response set by
+   *                                   this plugin to the client
+   *                                   immediately with no further
+   *                                   processing on the operation.
+   * @param  skipCoreProcessing        Indicates whether the server
+   *                                   should skip the core processing
+   *                                   for the operation.  If
+   *                                   {@code sendResponseImmediately}
+   *                                   is {@code false}, then any
+   *                                   post-operation plugins will
+   *                                   still be invoked.
+   */
+  public PreOperationPluginResult(boolean connectionTerminated,
+                                  boolean continuePluginProcessing,
+                                  boolean sendResponseImmediately,
+                                  boolean skipCoreProcessing)
+  {
     this.connectionTerminated     = connectionTerminated;
     this.continuePluginProcessing = continuePluginProcessing;
     this.sendResponseImmediately  = sendResponseImmediately;
+    this.skipCoreProcessing       = skipCoreProcessing;
   }
 
 
@@ -146,6 +185,22 @@
 
 
   /**
+   * Indicates whether the server should skip core processing for the
+   * operation.  If {@code sendResponseImmediately} is {@code false},
+   * then the server will still process any post-operation plugins
+   * that may be registered with the server.
+   *
+   * @return  {@code true} if the server should skip core processing
+   *          for the operation, or {@code false} if not.
+   */
+  public boolean skipCoreProcessing()
+  {
+    return skipCoreProcessing;
+  }
+
+
+
+  /**
    * Retrieves a string representation of this post-response plugin
    * result.
    *
@@ -176,6 +231,8 @@
     buffer.append(continuePluginProcessing);
     buffer.append(", sendResponseImmediately=");
     buffer.append(sendResponseImmediately);
+    buffer.append(", skipCoreProcessing=");
+    buffer.append(skipCoreProcessing);
     buffer.append(")");
   }
 }
diff --git a/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java b/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java
index 5a2b289..449720c 100644
--- a/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java
@@ -55,6 +55,10 @@
   // from this plugin to the client with no further processing.
   private final boolean sendResponseImmediately;
 
+  // Indicates whether the server should skip the core processing for
+  // the associated operation.
+  private final boolean skipCoreProcessing;
+
 
 
   /**
@@ -67,7 +71,7 @@
    */
   private PreParsePluginResult()
   {
-    this(false, true, false);
+    this(false, true, false, false);
   }
 
 
@@ -92,9 +96,44 @@
                               boolean continuePluginProcessing,
                               boolean sendResponseImmediately)
   {
+    this(connectionTerminated, continuePluginProcessing,
+         sendResponseImmediately, false);
+  }
+
+
+
+  /**
+   * Creates a new pre-operation plugin result with the provided
+   * information.
+   *
+   * @param  connectionTerminated      Indicates whether the
+   *                                   post-response plugin terminated
+   *                                   the client connection.
+   * @param  continuePluginProcessing  Indicates whether any further
+   *                                   pre-operation plugins should be
+   *                                   invoked for this operation.
+   * @param  sendResponseImmediately   Indicates whether the server
+   *                                   should send the response set by
+   *                                   this plugin to the client
+   *                                   immediately with no further
+   *                                   processing on the operation.
+   * @param  skipCoreProcessing        Indicates whether the server
+   *                                   should skip the core processing
+   *                                   for the operation.  If
+   *                                   {@code sendResponseImmediately}
+   *                                   is {@code false}, then any
+   *                                   post-operation plugins will
+   *                                   still be invoked.
+   */
+  public PreParsePluginResult(boolean connectionTerminated,
+                              boolean continuePluginProcessing,
+                              boolean sendResponseImmediately,
+                              boolean skipCoreProcessing)
+  {
     this.connectionTerminated     = connectionTerminated;
     this.continuePluginProcessing = continuePluginProcessing;
     this.sendResponseImmediately  = sendResponseImmediately;
+    this.skipCoreProcessing       = skipCoreProcessing;
   }
 
 
@@ -146,6 +185,22 @@
 
 
   /**
+   * Indicates whether the server should skip core processing for the
+   * operation.  If {@code sendResponseImmediately} is {@code false},
+   * then the server will still process any post-operation plugins
+   * that may be registered with the server.
+   *
+   * @return  {@code true} if the server should skip core processing
+   *          for the operation, or {@code false} if not.
+   */
+  public boolean skipCoreProcessing()
+  {
+    return skipCoreProcessing;
+  }
+
+
+
+  /**
    * Retrieves a string representation of this post-response plugin
    * result.
    *
@@ -176,6 +231,8 @@
     buffer.append(continuePluginProcessing);
     buffer.append(", sendResponseImmediately=");
     buffer.append(sendResponseImmediately);
+    buffer.append(", skipCoreProcessing=");
+    buffer.append(skipCoreProcessing);
     buffer.append(")");
   }
 }
diff --git a/opends/src/server/org/opends/server/core/AbandonOperation.java b/opends/src/server/org/opends/server/core/AbandonOperation.java
index 144fa7e..fdcefa8 100644
--- a/opends/src/server/org/opends/server/core/AbandonOperation.java
+++ b/opends/src/server/org/opends/server/core/AbandonOperation.java
@@ -306,6 +306,11 @@
         skipPostOperation = true;
         break abandonProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break abandonProcessing;
+      }
 
 
       // Log the abandon request message.
diff --git a/opends/src/server/org/opends/server/core/AddOperation.java b/opends/src/server/org/opends/server/core/AddOperation.java
index 96c516a..8b265d1 100644
--- a/opends/src/server/org/opends/server/core/AddOperation.java
+++ b/opends/src/server/org/opends/server/core/AddOperation.java
@@ -800,6 +800,7 @@
 
         logAddRequest(this);
         logAddResponse(this);
+        pluginConfigManager.invokePostResponseAddPlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -808,6 +809,11 @@
         logAddRequest(this);
         break addProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break addProcessing;
+      }
 
 
       // Log the add request message.
@@ -820,6 +826,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logAddResponse(this);
+        pluginConfigManager.invokePostResponseAddPlugins(this);
         return;
       }
 
@@ -958,6 +965,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logAddResponse(this);
+        pluginConfigManager.invokePostResponseAddPlugins(this);
         return;
       }
 
@@ -1027,6 +1035,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logAddResponse(this);
+          pluginConfigManager.invokePostResponseAddPlugins(this);
           return;
         }
 
@@ -1936,6 +1945,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logAddResponse(this);
+          pluginConfigManager.invokePostResponseAddPlugins(this);
           return;
         }
 
@@ -1958,6 +1968,7 @@
             processingStopTime = System.currentTimeMillis();
 
             logAddResponse(this);
+            pluginConfigManager.invokePostResponseAddPlugins(this);
             return;
           }
           else if (preOpResult.sendResponseImmediately())
@@ -1965,6 +1976,11 @@
             skipPostOperation = true;
             break addProcessing;
           }
+          else if (preOpResult.skipCoreProcessing())
+          {
+            skipPostOperation = false;
+            break addProcessing;
+          }
         }
 
 
@@ -1974,6 +1990,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logAddResponse(this);
+          pluginConfigManager.invokePostResponseAddPlugins(this);
           return;
         }
 
@@ -2223,6 +2240,7 @@
         processingStopTime = System.currentTimeMillis();
 
         logAddResponse(this);
+        pluginConfigManager.invokePostResponseAddPlugins(this);
         return;
       }
     }
diff --git a/opends/src/server/org/opends/server/core/BindOperation.java b/opends/src/server/org/opends/server/core/BindOperation.java
index 3f780ed..a62bff4 100644
--- a/opends/src/server/org/opends/server/core/BindOperation.java
+++ b/opends/src/server/org/opends/server/core/BindOperation.java
@@ -1009,6 +1009,7 @@
 
         logBindRequest(this);
         logBindResponse(this);
+        pluginConfigManager.invokePostResponseBindPlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -1017,6 +1018,11 @@
         logBindRequest(this);
         break bindProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break bindProcessing;
+      }
 
 
       // Log the bind request message.
@@ -1145,6 +1151,7 @@
               processingStopTime = System.currentTimeMillis();
 
               logBindResponse(this);
+              pluginConfigManager.invokePostResponseBindPlugins(this);
               return;
             }
             else if (preOpResult.sendResponseImmediately())
@@ -1152,6 +1159,11 @@
               skipPostOperation = true;
               break bindProcessing;
             }
+            else if (preOpResult.skipCoreProcessing())
+            {
+              skipPostOperation = false;
+              break bindProcessing;
+            }
 
             setResultCode(ResultCode.SUCCESS);
             authInfo = new AuthenticationInfo();
@@ -1444,6 +1456,7 @@
               processingStopTime = System.currentTimeMillis();
 
               logBindResponse(this);
+              pluginConfigManager.invokePostResponseBindPlugins(this);
               return;
             }
             else if (preOpResult.sendResponseImmediately())
@@ -1451,6 +1464,11 @@
               skipPostOperation = true;
               break bindProcessing;
             }
+            else if (preOpResult.skipCoreProcessing())
+            {
+              skipPostOperation = false;
+              break bindProcessing;
+            }
 
 
             // Determine whether the provided password matches any of the stored
@@ -1737,6 +1755,7 @@
             processingStopTime = System.currentTimeMillis();
 
             logBindResponse(this);
+            pluginConfigManager.invokePostResponseBindPlugins(this);
             return;
           }
           else if (preOpResult.sendResponseImmediately())
@@ -1744,6 +1763,11 @@
             skipPostOperation = true;
             break bindProcessing;
           }
+          else if (preOpResult.skipCoreProcessing())
+          {
+            skipPostOperation = false;
+            break bindProcessing;
+          }
 
 
           // Actually process the SASL bind.
@@ -2244,6 +2268,7 @@
         processingStopTime = System.currentTimeMillis();
 
         logBindResponse(this);
+        pluginConfigManager.invokePostResponseBindPlugins(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 1b156de..30bf972 100644
--- a/opends/src/server/org/opends/server/core/CompareOperation.java
+++ b/opends/src/server/org/opends/server/core/CompareOperation.java
@@ -575,6 +575,7 @@
 
         logCompareRequest(this);
         logCompareResponse(this);
+        pluginConfigManager.invokePostResponseComparePlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -583,6 +584,11 @@
         logCompareRequest(this);
         break compareProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break compareProcessing;
+      }
 
 
       // Log the compare request message.
@@ -595,6 +601,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logCompareResponse(this);
+        pluginConfigManager.invokePostResponseComparePlugins(this);
         return;
       }
 
@@ -643,6 +650,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logCompareResponse(this);
+        pluginConfigManager.invokePostResponseComparePlugins(this);
         return;
       }
 
@@ -992,6 +1000,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logCompareResponse(this);
+          pluginConfigManager.invokePostResponseComparePlugins(this);
           return;
         }
 
@@ -1010,6 +1019,7 @@
 
           processingStopTime = System.currentTimeMillis();
           logCompareResponse(this);
+          pluginConfigManager.invokePostResponseComparePlugins(this);
           return;
         }
         else if (preOpResult.sendResponseImmediately())
@@ -1017,6 +1027,11 @@
           skipPostOperation = true;
           break compareProcessing;
         }
+        else if (preOpResult.skipCoreProcessing())
+        {
+          skipPostOperation = false;
+          break compareProcessing;
+        }
 
 
         // Get the base attribute type and set of options.
@@ -1114,6 +1129,7 @@
       indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       logCompareResponse(this);
+      pluginConfigManager.invokePostResponseComparePlugins(this);
       return;
     }
 
@@ -1132,6 +1148,7 @@
 
         processingStopTime = System.currentTimeMillis();
         logCompareResponse(this);
+        pluginConfigManager.invokePostResponseComparePlugins(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 9457386..c28f696 100644
--- a/opends/src/server/org/opends/server/core/DeleteOperation.java
+++ b/opends/src/server/org/opends/server/core/DeleteOperation.java
@@ -526,6 +526,7 @@
 
         logDeleteRequest(this);
         logDeleteResponse(this);
+        pluginConfigManager.invokePostResponseDeletePlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -534,6 +535,11 @@
         logDeleteRequest(this);
         break deleteProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break deleteProcessing;
+      }
 
 
       // Log the delete request message.
@@ -546,6 +552,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logDeleteResponse(this);
+        pluginConfigManager.invokePostResponseDeletePlugins(this);
         return;
       }
 
@@ -983,6 +990,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logDeleteResponse(this);
+          pluginConfigManager.invokePostResponseDeletePlugins(this);
           return;
         }
 
@@ -1004,6 +1012,7 @@
 
             processingStopTime = System.currentTimeMillis();
             logDeleteResponse(this);
+            pluginConfigManager.invokePostResponseDeletePlugins(this);
             return;
           }
           else if (preOpResult.sendResponseImmediately())
@@ -1011,6 +1020,11 @@
             skipPostOperation = true;
             break deleteProcessing;
           }
+          else if (preOpResult.skipCoreProcessing())
+          {
+            skipPostOperation = false;
+            break deleteProcessing;
+          }
         }
 
 
@@ -1020,6 +1034,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logDeleteResponse(this);
+          pluginConfigManager.invokePostResponseDeletePlugins(this);
           return;
         }
 
@@ -1280,6 +1295,7 @@
 
         processingStopTime = System.currentTimeMillis();
         logDeleteResponse(this);
+        pluginConfigManager.invokePostResponseDeletePlugins(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 de6c008..8268157 100644
--- a/opends/src/server/org/opends/server/core/ExtendedOperation.java
+++ b/opends/src/server/org/opends/server/core/ExtendedOperation.java
@@ -484,6 +484,7 @@
 
         logExtendedRequest(this);
         logExtendedResponse(this);
+        pluginConfigManager.invokePostResponseExtendedPlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -492,6 +493,11 @@
         logExtendedRequest(this);
         break extendedProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break extendedProcessing;
+      }
 
 
       // Log the extended request message.
@@ -506,6 +512,7 @@
         {
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
+          pluginConfigManager.invokePostResponseExtendedPlugins(this);
           return;
         }
       }
@@ -582,6 +589,7 @@
         processingStopTime = System.currentTimeMillis();
 
         logExtendedResponse(this);
+        pluginConfigManager.invokePostResponseExtendedPlugins(this);
         return;
       }
       else if (preOpResult.sendResponseImmediately())
@@ -589,6 +597,11 @@
         skipPostOperation = true;
         break extendedProcessing;
       }
+      else if (preOpResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break extendedProcessing;
+      }
 
 
       // Check for and handle a request to cancel this operation.
@@ -599,6 +612,7 @@
         {
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
+          pluginConfigManager.invokePostResponseExtendedPlugins(this);
           return;
         }
       }
@@ -630,6 +644,7 @@
         processingStopTime = System.currentTimeMillis();
 
         logExtendedResponse(this);
+        pluginConfigManager.invokePostResponseExtendedPlugins(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 8eebd8a..22f41ef 100644
--- a/opends/src/server/org/opends/server/core/ModifyDNOperation.java
+++ b/opends/src/server/org/opends/server/core/ModifyDNOperation.java
@@ -781,6 +781,7 @@
 
         logModifyDNRequest(this);
         logModifyDNResponse(this);
+        pluginConfigManager.invokePostResponseModifyDNPlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -789,6 +790,11 @@
         logModifyDNRequest(this);
         break modifyDNProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break modifyDNProcessing;
+      }
 
 
       // Log the modify DN request message.
@@ -801,6 +807,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyDNResponse(this);
+        pluginConfigManager.invokePostResponseModifyDNPlugins(this);
         return;
       }
 
@@ -936,6 +943,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyDNResponse(this);
+        pluginConfigManager.invokePostResponseModifyDNPlugins(this);
         return;
       }
 
@@ -1019,6 +1027,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyDNResponse(this);
+          pluginConfigManager.invokePostResponseModifyDNPlugins(this);
           return;
         }
 
@@ -1564,6 +1573,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyDNResponse(this);
+          pluginConfigManager.invokePostResponseModifyDNPlugins(this);
           return;
         }
 
@@ -1591,6 +1601,7 @@
 
             processingStopTime = System.currentTimeMillis();
             logModifyDNResponse(this);
+            pluginConfigManager.invokePostResponseModifyDNPlugins(this);
             return;
           }
           else if (preOpResult.sendResponseImmediately())
@@ -1598,6 +1609,11 @@
             skipPostOperation = true;
             break modifyDNProcessing;
           }
+          else if (preOpResult.skipCoreProcessing())
+          {
+            skipPostOperation = false;
+            break modifyDNProcessing;
+          }
         }
 
 
@@ -1784,6 +1800,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyDNResponse(this);
+          pluginConfigManager.invokePostResponseModifyDNPlugins(this);
           return;
         }
 
@@ -2063,6 +2080,7 @@
 
         processingStopTime = System.currentTimeMillis();
         logModifyDNResponse(this);
+        pluginConfigManager.invokePostResponseModifyDNPlugins(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 419f8c0..78ba9fe 100644
--- a/opends/src/server/org/opends/server/core/ModifyOperation.java
+++ b/opends/src/server/org/opends/server/core/ModifyOperation.java
@@ -717,6 +717,7 @@
 
         logModifyRequest(this);
         logModifyResponse(this);
+        pluginConfigManager.invokePostResponseModifyPlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -725,6 +726,11 @@
         logModifyRequest(this);
         break modifyProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break modifyProcessing;
+      }
 
 
       // Log the modify request message.
@@ -737,6 +743,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyResponse(this);
+        pluginConfigManager.invokePostResponseModifyPlugins(this);
         return;
       }
 
@@ -825,6 +832,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logModifyResponse(this);
+        pluginConfigManager.invokePostResponseModifyPlugins(this);
         return;
       }
 
@@ -859,6 +867,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyResponse(this);
+          pluginConfigManager.invokePostResponseModifyPlugins(this);
           return;
         }
 
@@ -2473,6 +2482,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyResponse(this);
+          pluginConfigManager.invokePostResponseModifyPlugins(this);
           return;
         }
 
@@ -2494,6 +2504,7 @@
             processingStopTime = System.currentTimeMillis();
 
             logModifyResponse(this);
+            pluginConfigManager.invokePostResponseModifyPlugins(this);
             return;
           }
           else if (preOpResult.sendResponseImmediately())
@@ -2501,6 +2512,11 @@
             skipPostOperation = true;
             break modifyProcessing;
           }
+          else if (preOpResult.skipCoreProcessing())
+          {
+            skipPostOperation = false;
+            break modifyProcessing;
+          }
         }
 
 
@@ -2510,6 +2526,7 @@
           indicateCancelled(cancelRequest);
           processingStopTime = System.currentTimeMillis();
           logModifyResponse(this);
+          pluginConfigManager.invokePostResponseModifyPlugins(this);
           return;
         }
 
@@ -2861,6 +2878,7 @@
         processingStopTime = System.currentTimeMillis();
 
         logModifyResponse(this);
+        pluginConfigManager.invokePostResponseModifyPlugins(this);
         return;
       }
     }
diff --git a/opends/src/server/org/opends/server/core/SearchOperation.java b/opends/src/server/org/opends/server/core/SearchOperation.java
index 9b8fad7..007fd1d 100644
--- a/opends/src/server/org/opends/server/core/SearchOperation.java
+++ b/opends/src/server/org/opends/server/core/SearchOperation.java
@@ -1551,6 +1551,7 @@
 
         logSearchRequest(this);
         logSearchResultDone(this);
+        pluginConfigManager.invokePostResponseSearchPlugins(this);
         return;
       }
       else if (preParseResult.sendResponseImmediately())
@@ -1559,6 +1560,11 @@
         logSearchRequest(this);
         break searchProcessing;
       }
+      else if (preParseResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break searchProcessing;
+      }
 
 
       // Log the search request message.
@@ -1571,6 +1577,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
+        pluginConfigManager.invokePostResponseSearchPlugins(this);
         return;
       }
 
@@ -2037,6 +2044,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
+        pluginConfigManager.invokePostResponseSearchPlugins(this);
         return;
       }
 
@@ -2055,6 +2063,7 @@
 
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
+        pluginConfigManager.invokePostResponseSearchPlugins(this);
         return;
       }
       else if (preOpResult.sendResponseImmediately())
@@ -2062,6 +2071,11 @@
         skipPostOperation = true;
         break searchProcessing;
       }
+      else if (preOpResult.skipCoreProcessing())
+      {
+        skipPostOperation = false;
+        break searchProcessing;
+      }
 
 
       // Check for and handle a request to cancel this operation.
@@ -2070,6 +2084,7 @@
         indicateCancelled(cancelRequest);
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
+        pluginConfigManager.invokePostResponseSearchPlugins(this);
         return;
       }
 
@@ -2184,6 +2199,7 @@
       indicateCancelled(cancelRequest);
       processingStopTime = System.currentTimeMillis();
       logSearchResultDone(this);
+      pluginConfigManager.invokePostResponseSearchPlugins(this);
       return;
     }
 
@@ -2202,6 +2218,7 @@
 
         processingStopTime = System.currentTimeMillis();
         logSearchResultDone(this);
+        pluginConfigManager.invokePostResponseSearchPlugins(this);
         return;
       }
     }

--
Gitblit v1.10.0