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/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java |   68 ++++++++++++++++++---------------
 1 files changed, 37 insertions(+), 31 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java
index f5093d1..20eea6f 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DelayPreOpPlugin.java
@@ -35,13 +35,14 @@
 import org.opends.server.admin.std.server.PluginCfg;
 import org.opends.server.api.plugin.DirectoryServerPlugin;
 import org.opends.server.api.plugin.PluginType;
-import org.opends.server.api.plugin.PreOperationPluginResult;
+import org.opends.server.api.plugin.PluginResult;
 import org.opends.server.config.ConfigException;
 import org.opends.server.protocols.asn1.ASN1Long;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.ldap.LDAPControl;
 import org.opends.server.types.Control;
 import org.opends.server.types.ResultCode;
+import org.opends.server.types.CanceledOperationException;
 import org.opends.server.types.operation.*;
 import org.opends.messages.Message;
 
@@ -115,9 +116,9 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
+  public PluginResult.PreOperation
        doPreOperation(PreOperationAddOperation addOperation)
-  {
+      throws CanceledOperationException {
     return doPreOperationInternal(addOperation);
   }
 
@@ -127,10 +128,18 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
-       doPreOperation(PreOperationBindOperation bindOperation)
+  public PluginResult.PreOperation
+         doPreOperation(PreOperationBindOperation bindOperation)
   {
-    return doPreOperationInternal(bindOperation);
+    try
+    {
+      return doPreOperationInternal(bindOperation);
+    }
+    catch(CanceledOperationException coe)
+    {
+      // Bind ops can't be canceled. Just ignore.
+      return PluginResult.PreOperation.continueOperationProcessing();
+    }
   }
 
 
@@ -139,9 +148,9 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
-       doPreOperation(PreOperationCompareOperation compareOperation)
-  {
+  public PluginResult.PreOperation
+         doPreOperation(PreOperationCompareOperation compareOperation)
+      throws CanceledOperationException {
     return doPreOperationInternal(compareOperation);
   }
 
@@ -151,9 +160,9 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
+  public PluginResult.PreOperation
        doPreOperation(PreOperationDeleteOperation deleteOperation)
-  {
+      throws CanceledOperationException {
     return doPreOperationInternal(deleteOperation);
   }
 
@@ -163,9 +172,9 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
+  public PluginResult.PreOperation
        doPreOperation(PreOperationExtendedOperation extendedOperation)
-  {
+      throws CanceledOperationException {
     return doPreOperationInternal(extendedOperation);
   }
 
@@ -175,9 +184,9 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
+  public PluginResult.PreOperation
        doPreOperation(PreOperationModifyOperation modifyOperation)
-  {
+      throws CanceledOperationException {
     return doPreOperationInternal(modifyOperation);
   }
 
@@ -187,9 +196,9 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
+  public PluginResult.PreOperation
        doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
-  {
+      throws CanceledOperationException {
     return doPreOperationInternal(modifyDNOperation);
   }
 
@@ -199,9 +208,9 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult
+  public PluginResult.PreOperation
        doPreOperation(PreOperationSearchOperation searchOperation)
-  {
+      throws CanceledOperationException {
     return doPreOperationInternal(searchOperation);
   }
 
@@ -217,9 +226,9 @@
    *
    * @return  The result of the plugin processing.
    */
-  private PreOperationPluginResult
+  private PluginResult.PreOperation
        doPreOperationInternal(PreOperationOperation operation)
-  {
+      throws CanceledOperationException {
     long delayDuration = 0L;
     List<Control> requestControls = operation.getRequestControls();
     if (requestControls != null)
@@ -235,10 +244,10 @@
           }
           catch (Exception e)
           {
-            operation.setResultCode(ResultCode.PROTOCOL_ERROR);
-            operation.appendErrorMessage(Message.raw("Unable to decode the delay request " +
-                                         "control:  " + e));
-            return new PreOperationPluginResult(false, false, true);
+            return PluginResult.PreOperation.stopProcessing(
+                ResultCode.PROTOCOL_ERROR,
+                Message.raw("Unable to decode the delay request control:  " +
+                    e));
           }
         }
       }
@@ -246,16 +255,13 @@
 
     if (delayDuration <= 0)
     {
-      return PreOperationPluginResult.SUCCESS;
+      return PluginResult.PreOperation.continueOperationProcessing();
     }
 
     long stopSleepTime = System.currentTimeMillis() + delayDuration;
     while (System.currentTimeMillis() < stopSleepTime)
     {
-      if (operation.getCancelRequest() != null)
-      {
-        break;
-      }
+      operation.checkIfCanceled(false);
 
       try
       {
@@ -263,7 +269,7 @@
       } catch (Exception e) {}
     }
 
-    return new PreOperationPluginResult(false, false, false);
+    return PluginResult.PreOperation.continueOperationProcessing();
   }
 
 

--
Gitblit v1.10.0