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/ShortCircuitPlugin.java |  132 +++++++++++++++++++++++++------------------
 1 files changed, 77 insertions(+), 55 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java
index 33c0bd5..bb0a654 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ShortCircuitPlugin.java
@@ -38,18 +38,7 @@
 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.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
@@ -57,6 +46,7 @@
 import org.opends.server.protocols.ldap.LDAPControl;
 import org.opends.server.types.Control;
 import org.opends.server.types.ResultCode;
+import org.opends.server.types.operation.*;
 
 
 
@@ -139,9 +129,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(AbandonOperation abandonOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseAbandonOperation abandonOperation)
   {
-    int resultCode = shortCircuitInternal(abandonOperation, "PreParse");
+    int resultCode = shortCircuitInternal(abandonOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       abandonOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -160,9 +152,10 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(AddOperation addOperation)
+  public PreParsePluginResult doPreParse(PreParseAddOperation addOperation)
   {
-    int resultCode = shortCircuitInternal(addOperation, "PreParse");
+    int resultCode = shortCircuitInternal(addOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       addOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -181,9 +174,10 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(BindOperation bindOperation)
+  public PreParsePluginResult doPreParse(PreParseBindOperation bindOperation)
   {
-    int resultCode = shortCircuitInternal(bindOperation, "PreParse");
+    int resultCode = shortCircuitInternal(bindOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       bindOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -202,9 +196,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(CompareOperation compareOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseCompareOperation compareOperation)
   {
-    int resultCode = shortCircuitInternal(compareOperation, "PreParse");
+    int resultCode = shortCircuitInternal(compareOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       compareOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -223,9 +219,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(DeleteOperation deleteOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseDeleteOperation deleteOperation)
   {
-    int resultCode = shortCircuitInternal(deleteOperation, "PreParse");
+    int resultCode = shortCircuitInternal(deleteOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       deleteOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -244,9 +242,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(ExtendedOperation extendedOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseExtendedOperation extendedOperation)
   {
-    int resultCode = shortCircuitInternal(extendedOperation, "PreParse");
+    int resultCode =
+             shortCircuitInternal(extendedOperation.getRequestControls(),
+                                  "PreParse");
     if (resultCode >= 0)
     {
       extendedOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -265,9 +266,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(ModifyOperation modifyOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseModifyOperation modifyOperation)
   {
-    int resultCode = shortCircuitInternal(modifyOperation, "PreParse");
+    int resultCode = shortCircuitInternal(modifyOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       modifyOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -286,9 +289,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(ModifyDNOperation modifyDNOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseModifyDNOperation modifyDNOperation)
   {
-    int resultCode = shortCircuitInternal(modifyDNOperation, "PreParse");
+    int resultCode =
+             shortCircuitInternal(modifyDNOperation.getRequestControls(),
+                                  "PreParse");
     if (resultCode >= 0)
     {
       modifyDNOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -307,9 +313,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(SearchOperation searchOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseSearchOperation searchOperation)
   {
-    int resultCode = shortCircuitInternal(searchOperation, "PreParse");
+    int resultCode = shortCircuitInternal(searchOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       searchOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -328,9 +336,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreParsePluginResult doPreParse(UnbindOperation unbindOperation)
+  public PreParsePluginResult
+       doPreParse(PreParseUnbindOperation unbindOperation)
   {
-    int resultCode = shortCircuitInternal(unbindOperation, "PreParse");
+    int resultCode = shortCircuitInternal(unbindOperation.getRequestControls(),
+                                          "PreParse");
     if (resultCode >= 0)
     {
       unbindOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -349,9 +359,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(AddOperation addOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationAddOperation addOperation)
   {
-    int resultCode = shortCircuitInternal(addOperation, "PreOperation");
+    int resultCode = shortCircuitInternal(addOperation.getRequestControls(),
+                                          "PreOperation");
     if (resultCode >= 0)
     {
       addOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -370,9 +382,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(BindOperation bindOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationBindOperation bindOperation)
   {
-    int resultCode = shortCircuitInternal(bindOperation, "PreOperation");
+    int resultCode = shortCircuitInternal(bindOperation.getRequestControls(),
+                                          "PreOperation");
     if (resultCode >= 0)
     {
       bindOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -391,10 +405,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(CompareOperation
-                                                      compareOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationCompareOperation compareOperation)
   {
-    int resultCode = shortCircuitInternal(compareOperation, "PreOperation");
+    int resultCode = shortCircuitInternal(compareOperation.getRequestControls(),
+                                          "PreOperation");
     if (resultCode >= 0)
     {
       compareOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -413,10 +428,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(DeleteOperation
-                                                      deleteOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationDeleteOperation deleteOperation)
   {
-    int resultCode = shortCircuitInternal(deleteOperation, "PreOperation");
+    int resultCode = shortCircuitInternal(deleteOperation.getRequestControls(),
+                                          "PreOperation");
     if (resultCode >= 0)
     {
       deleteOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -435,10 +451,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(ExtendedOperation
-                                                      extendedOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationExtendedOperation extendedOperation)
   {
-    int resultCode = shortCircuitInternal(extendedOperation, "PreOperation");
+    int resultCode =
+             shortCircuitInternal(extendedOperation.getRequestControls(),
+                                  "PreOperation");
     if (resultCode >= 0)
     {
       extendedOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -457,10 +475,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(ModifyOperation
-                                                      modifyOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationModifyOperation modifyOperation)
   {
-    int resultCode = shortCircuitInternal(modifyOperation, "PreOperation");
+    int resultCode = shortCircuitInternal(modifyOperation.getRequestControls(),
+                                          "PreOperation");
     if (resultCode >= 0)
     {
       modifyOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -479,10 +498,12 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(ModifyDNOperation
-                                                      modifyDNOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationModifyDNOperation modifyDNOperation)
   {
-    int resultCode = shortCircuitInternal(modifyDNOperation, "PreOperation");
+    int resultCode =
+             shortCircuitInternal(modifyDNOperation.getRequestControls(),
+                                  "PreOperation");
     if (resultCode >= 0)
     {
       modifyDNOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -501,10 +522,11 @@
    * {@inheritDoc}
    */
   @Override()
-  public PreOperationPluginResult doPreOperation(SearchOperation
-                                                      searchOperation)
+  public PreOperationPluginResult
+       doPreOperation(PreOperationSearchOperation searchOperation)
   {
-    int resultCode = shortCircuitInternal(searchOperation, "PreOperation");
+    int resultCode = shortCircuitInternal(searchOperation.getRequestControls(),
+                                          "PreOperation");
     if (resultCode >= 0)
     {
       searchOperation.setResultCode(ResultCode.valueOf(resultCode));
@@ -529,9 +551,9 @@
    * @return  The result code that should be immediately sent to the client, or
    *          -1 if operation processing should continue as normal.
    */
-  private int shortCircuitInternal(Operation operation, String section)
+  private int shortCircuitInternal(List<Control> requestControls,
+                                   String section)
   {
-    List<Control> requestControls = operation.getRequestControls();
     if (requestControls != null)
     {
       for (Control c : requestControls)

--
Gitblit v1.10.0