From 48e73e27e5a6b254471fabeefa3a197dd071c1b8 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Mon, 02 Oct 2006 16:32:07 +0000
Subject: [PATCH] Perform significant refactoring in the core and plugin code in order to help make it easier for external developers to extend OpenDS.  In particular, this is a big step towards eliminating the need for developers to reference anything in the core package, and it's also a signficant simplification to the plugin API because it helps expose which operation methods are safe to call at various points in the plugin processing.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java |  275 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 168 insertions(+), 107 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java
index bea935b..fb80627 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/DisconnectClientPlugin.java
@@ -32,6 +32,7 @@
 import java.util.List;
 import java.util.Set;
 
+import org.opends.server.api.ClientConnection;
 import org.opends.server.api.plugin.DirectoryServerPlugin;
 import org.opends.server.api.plugin.PluginType;
 import org.opends.server.api.plugin.PostOperationPluginResult;
@@ -40,22 +41,12 @@
 import org.opends.server.api.plugin.PreParsePluginResult;
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.AbandonOperation;
-import org.opends.server.core.AddOperation;
-import org.opends.server.core.BindOperation;
-import org.opends.server.core.CompareOperation;
-import org.opends.server.core.DeleteOperation;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.ExtendedOperation;
-import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
-import org.opends.server.core.SearchOperation;
-import org.opends.server.core.UnbindOperation;
 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.DisconnectReason;
+import org.opends.server.types.operation.*;
 
 
 
@@ -166,9 +157,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(AbandonOperation abandonOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseAbandonOperation abandonOperation)
   {
-    if (disconnectInternal(abandonOperation, "PreParse"))
+    if (disconnectInternal(abandonOperation.getClientConnection(),
+                           abandonOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -184,9 +177,10 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(AddOperation addOperation)
+  public PreParsePluginResult doPreParse(PreParseAddOperation addOperation)
   {
-    if (disconnectInternal(addOperation, "PreParse"))
+    if (disconnectInternal(addOperation.getClientConnection(),
+                           addOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -202,9 +196,10 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(BindOperation bindOperation)
+  public PreParsePluginResult doPreParse(PreParseBindOperation bindOperation)
   {
-    if (disconnectInternal(bindOperation, "PreParse"))
+    if (disconnectInternal(bindOperation.getClientConnection(),
+                           bindOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -220,9 +215,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(CompareOperation compareOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseCompareOperation compareOperation)
   {
-    if (disconnectInternal(compareOperation, "PreParse"))
+    if (disconnectInternal(compareOperation.getClientConnection(),
+                           compareOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -238,9 +235,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(DeleteOperation deleteOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseDeleteOperation deleteOperation)
   {
-    if (disconnectInternal(deleteOperation, "PreParse"))
+    if (disconnectInternal(deleteOperation.getClientConnection(),
+                           deleteOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -256,9 +255,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(ExtendedOperation extendedOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseExtendedOperation extendedOperation)
   {
-    if (disconnectInternal(extendedOperation, "PreParse"))
+    if (disconnectInternal(extendedOperation.getClientConnection(),
+                           extendedOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -274,9 +275,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(ModifyOperation modifyOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseModifyOperation modifyOperation)
   {
-    if (disconnectInternal(modifyOperation, "PreParse"))
+    if (disconnectInternal(modifyOperation.getClientConnection(),
+                           modifyOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -292,9 +295,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(ModifyDNOperation modifyDNOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseModifyDNOperation modifyDNOperation)
   {
-    if (disconnectInternal(modifyDNOperation, "PreParse"))
+    if (disconnectInternal(modifyDNOperation.getClientConnection(),
+                           modifyDNOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -310,9 +315,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(SearchOperation searchOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseSearchOperation searchOperation)
   {
-    if (disconnectInternal(searchOperation, "PreParse"))
+    if (disconnectInternal(searchOperation.getClientConnection(),
+                           searchOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -328,9 +335,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(UnbindOperation unbindOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseUnbindOperation unbindOperation)
   {
-    if (disconnectInternal(unbindOperation, "PreParse"))
+    if (disconnectInternal(unbindOperation.getClientConnection(),
+                           unbindOperation.getRequestControls(), "PreParse"))
     {
       return new PreParsePluginResult(true, false, false);
     }
@@ -346,9 +355,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(AddOperation addOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationAddOperation addOperation)
   {
-    if (disconnectInternal(addOperation, "PreOperation"))
+    if (disconnectInternal(addOperation.getClientConnection(),
+                           addOperation.getRequestControls(), "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -364,9 +375,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(BindOperation bindOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationBindOperation bindOperation)
   {
-    if (disconnectInternal(bindOperation, "PreOperation"))
+    if (disconnectInternal(bindOperation.getClientConnection(),
+                           bindOperation.getRequestControls(), "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -382,10 +395,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(CompareOperation
-                                                      compareOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationCompareOperation compareOperation)
   {
-    if (disconnectInternal(compareOperation, "PreOperation"))
+    if (disconnectInternal(compareOperation.getClientConnection(),
+                           compareOperation.getRequestControls(),
+                           "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -401,10 +416,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(DeleteOperation
-                                                      deleteOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationDeleteOperation deleteOperation)
   {
-    if (disconnectInternal(deleteOperation, "PreOperation"))
+    if (disconnectInternal(deleteOperation.getClientConnection(),
+                           deleteOperation.getRequestControls(),
+                           "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -420,10 +437,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(ExtendedOperation
-                                                      extendedOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationExtendedOperation extendedOperation)
   {
-    if (disconnectInternal(extendedOperation, "PreOperation"))
+    if (disconnectInternal(extendedOperation.getClientConnection(),
+                           extendedOperation.getRequestControls(),
+                           "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -439,10 +458,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(ModifyOperation
-                                                      modifyOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationModifyOperation modifyOperation)
   {
-    if (disconnectInternal(modifyOperation, "PreOperation"))
+    if (disconnectInternal(modifyOperation.getClientConnection(),
+                           modifyOperation.getRequestControls(),
+                           "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -458,10 +479,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(ModifyDNOperation
-                                                      modifyDNOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
   {
-    if (disconnectInternal(modifyDNOperation, "PreOperation"))
+    if (disconnectInternal(modifyDNOperation.getClientConnection(),
+                           modifyDNOperation.getRequestControls(),
+                           "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -477,10 +500,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(SearchOperation
-                                                      searchOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationSearchOperation searchOperation)
   {
-    if (disconnectInternal(searchOperation, "PreOperation"))
+    if (disconnectInternal(searchOperation.getClientConnection(),
+                           searchOperation.getRequestControls(),
+                           "PreOperation"))
     {
       return new PreOperationPluginResult(true, false, false);
     }
@@ -496,10 +521,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(AbandonOperation
-                                                        abandonOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationAbandonOperation abandonOperation)
   {
-    if (disconnectInternal(abandonOperation, "PreOperation"))
+    if (disconnectInternal(abandonOperation.getClientConnection(),
+                           abandonOperation.getRequestControls(),
+                           "PreOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -515,9 +542,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(AddOperation addOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationAddOperation addOperation)
   {
-    if (disconnectInternal(addOperation, "PostOperation"))
+    if (disconnectInternal(addOperation.getClientConnection(),
+                           addOperation.getRequestControls(), "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -533,9 +562,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(BindOperation bindOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationBindOperation bindOperation)
   {
-    if (disconnectInternal(bindOperation, "PostOperation"))
+    if (disconnectInternal(bindOperation.getClientConnection(),
+                           bindOperation.getRequestControls(), "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -551,10 +582,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(CompareOperation
-                                                        compareOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationCompareOperation compareOperation)
   {
-    if (disconnectInternal(compareOperation, "PostOperation"))
+    if (disconnectInternal(compareOperation.getClientConnection(),
+                           compareOperation.getRequestControls(),
+                           "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -570,10 +603,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(DeleteOperation
-                                                        deleteOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationDeleteOperation deleteOperation)
   {
-    if (disconnectInternal(deleteOperation, "PostOperation"))
+    if (disconnectInternal(deleteOperation.getClientConnection(),
+                           deleteOperation.getRequestControls(),
+                           "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -589,10 +624,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(ExtendedOperation
-                                                        extendedOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationExtendedOperation extendedOperation)
   {
-    if (disconnectInternal(extendedOperation, "PostOperation"))
+    if (disconnectInternal(extendedOperation.getClientConnection(),
+                           extendedOperation.getRequestControls(),
+                           "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -608,10 +645,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(ModifyOperation
-                                                        modifyOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationModifyOperation modifyOperation)
   {
-    if (disconnectInternal(modifyOperation, "PostOperation"))
+    if (disconnectInternal(modifyOperation.getClientConnection(),
+                           modifyOperation.getRequestControls(),
+                           "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -627,10 +666,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(ModifyDNOperation
-                                                        modifyDNOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationModifyDNOperation modifyDNOperation)
   {
-    if (disconnectInternal(modifyDNOperation, "PostOperation"))
+    if (disconnectInternal(modifyDNOperation.getClientConnection(),
+                           modifyDNOperation.getRequestControls(),
+                           "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -646,10 +687,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(SearchOperation
-                                                        searchOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationSearchOperation searchOperation)
   {
-    if (disconnectInternal(searchOperation, "PostOperation"))
+    if (disconnectInternal(searchOperation.getClientConnection(),
+                           searchOperation.getRequestControls(),
+                           "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -665,10 +708,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostOperationPluginResult doPostOperation(UnbindOperation
-                                                        unbindOperation)
+  public PostOperationPluginResult
+       doPostOperation(PostOperationUnbindOperation unbindOperation)
   {
-    if (disconnectInternal(unbindOperation, "PostOperation"))
+    if (disconnectInternal(unbindOperation.getClientConnection(),
+                           unbindOperation.getRequestControls(),
+                           "PostOperation"))
     {
       return new PostOperationPluginResult(true, false);
     }
@@ -684,9 +729,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(AddOperation addOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseAddOperation addOperation)
   {
-    if (disconnectInternal(addOperation, "PostResponse"))
+    if (disconnectInternal(addOperation.getClientConnection(),
+                           addOperation.getRequestControls(), "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -702,9 +749,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(BindOperation bindOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseBindOperation bindOperation)
   {
-    if (disconnectInternal(bindOperation, "PostResponse"))
+    if (disconnectInternal(bindOperation.getClientConnection(),
+                           bindOperation.getRequestControls(), "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -720,10 +769,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(CompareOperation
-                                                        compareOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseCompareOperation compareOperation)
   {
-    if (disconnectInternal(compareOperation, "PostResponse"))
+    if (disconnectInternal(compareOperation.getClientConnection(),
+                           compareOperation.getRequestControls(),
+                           "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -739,10 +790,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(DeleteOperation
-                                                        deleteOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseDeleteOperation deleteOperation)
   {
-    if (disconnectInternal(deleteOperation, "PostResponse"))
+    if (disconnectInternal(deleteOperation.getClientConnection(),
+                           deleteOperation.getRequestControls(),
+                           "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -758,10 +811,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(ExtendedOperation
-                                                        extendedOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseExtendedOperation extendedOperation)
   {
-    if (disconnectInternal(extendedOperation, "PostResponse"))
+    if (disconnectInternal(extendedOperation.getClientConnection(),
+                           extendedOperation.getRequestControls(),
+                           "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -777,10 +832,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(ModifyOperation
-                                                        modifyOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseModifyOperation modifyOperation)
   {
-    if (disconnectInternal(modifyOperation, "PostResponse"))
+    if (disconnectInternal(modifyOperation.getClientConnection(),
+                           modifyOperation.getRequestControls(),
+                           "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -796,10 +853,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(ModifyDNOperation
-                                                        modifyDNOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseModifyDNOperation modifyDNOperation)
   {
-    if (disconnectInternal(modifyDNOperation, "PostResponse"))
+    if (disconnectInternal(modifyDNOperation.getClientConnection(),
+                           modifyDNOperation.getRequestControls(),
+                           "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -815,10 +874,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PostResponsePluginResult doPostResponse(SearchOperation
-                                                        searchOperation)
+  public PostResponsePluginResult
+       doPostResponse(PostResponseSearchOperation searchOperation)
   {
-    if (disconnectInternal(searchOperation, "PostResponse"))
+    if (disconnectInternal(searchOperation.getClientConnection(),
+                           searchOperation.getRequestControls(),
+                           "PostResponse"))
     {
       return new PostResponsePluginResult(true, false);
     }
@@ -840,9 +901,10 @@
    * @return  <CODE>true</CODE> if the client connection was terminated, or
    *          <CODE>false</CODE> if it was not.
    */
-  private boolean disconnectInternal(Operation operation, String section)
+  private boolean disconnectInternal(ClientConnection clientConnection,
+                                     List<Control> requestControls,
+                                     String section)
   {
-    List<Control> requestControls = operation.getRequestControls();
     if (requestControls != null)
     {
       for (Control c : requestControls)
@@ -851,8 +913,7 @@
         {
           if (c.getValue().stringValue().equalsIgnoreCase(section))
           {
-            operation.getClientConnection().disconnect(
-                 DisconnectReason.CLOSED_BY_PLUGIN, true,
+            clientConnection.disconnect(DisconnectReason.CLOSED_BY_PLUGIN, true,
                  "Closed by disconnect client plugin (section " + section + ")",
                  -1);
 

--
Gitblit v1.10.0