From 8cb1d485feb9e56fed06f5557459a5c41a11ca1f Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 26 Nov 2014 17:03:17 +0000
Subject: [PATCH] OPENDJ-1545 Remove Workflow, NetworkGroups and related attempts at building a proxy

---
 /dev/null                                                                                                                |  199 ---------------------------------
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java |  161 ++++++++++++++++++++++++--
 2 files changed, 149 insertions(+), 211 deletions(-)

diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkflowResultCode.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkflowResultCode.java
deleted file mode 100644
index f20e656..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkflowResultCode.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- *      Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- *      Copyright 2008 Sun Microsystems, Inc.
- *      Portions Copyright 2014 ForgeRock AS
- */
-package org.opends.server.core;
-
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.LocalizableMessageBuilder;
-import org.forgerock.opendj.ldap.ResultCode;
-
-/**
- * This class implements the workflow result code. The workflow result code
- * contains an LDAP result code along with an LDAP error message.
- */
-public class WorkflowResultCode
-{
-  /** The global result code. */
-  private ResultCode resultCode = ResultCode.UNDEFINED;
-
-  /** The global error message. */
-  private LocalizableMessageBuilder errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
-
-  /**
-   * Creates a new instance of a workflow result. By default the result code
-   * is set to UNDEFINED and there is no error message.
-   */
-  public WorkflowResultCode()
-  {
-    // Nothing to implement.
-  }
-
-  /**
-   * Creates a new instance of a workflow result code and initializes it
-   * with a result code and an error message.
-   *
-   * @param resultCode    the initial value for the result code
-   * @param errorMessage  the initial value for the error message
-   */
-  public WorkflowResultCode(ResultCode resultCode, LocalizableMessageBuilder errorMessage)
-  {
-    this.resultCode   = resultCode;
-    this.errorMessage = errorMessage;
-  }
-
-
-  /**
-   * Elaborates a global result code. A workflow may execute an operation
-   * on several subordinate workflows. In such case, the parent workflow
-   * has to take into account all the subordinate result codes to elaborate
-   * a global result code.
-   *
-   * Sometimes, a referral result code has to be turned into a reference entry.
-   * When such case is occurring the elaborateGlobalResultCode method
-   * will return true.
-   *
-   * The global result code is elaborated as follows:
-   *
-   * <PRE>
-   *  -----------+------------+------------+-------------------------------
-   *  new        | current    | resulting  |
-   *  resultCode | resultCode | resultCode | action
-   *  -----------+------------+------------+-------------------------------
-   *  SUCCESS      NO_SUCH_OBJ  SUCCESS      -
-   *               REFERRAL     SUCCESS      send reference entry to client
-   *               other        [unchanged]  -
-   *  ---------------------------------------------------------------------
-   *  NO_SUCH_OBJ  SUCCESS      [unchanged]  -
-   *               REFERRAL     [unchanged]  -
-   *               other        [unchanged]  -
-   *  ---------------------------------------------------------------------
-   *  REFERRAL     SUCCESS      [unchanged]  send reference entry to client
-   *               REFERRAL     SUCCESS      send reference entry to client
-   *               NO_SUCH_OBJ  REFERRAL     -
-   *               other        [unchanged]  send reference entry to client
-   *  ---------------------------------------------------------------------
-   *  others       SUCCESS      other        -
-   *               REFERRAL     other        send reference entry to client
-   *               NO_SUCH_OBJ  other        -
-   *               other2       [unchanged]  -
-   *  ---------------------------------------------------------------------
-   * </PRE>
-   *
-   * @param newResultCode    the new result code to take into account
-   * @param newErrorMessage  the new error message associated to the new error code
-   * @return <code>true</code> if a referral result code must be turned into a reference entry
-   */
-  public boolean elaborateGlobalResultCode(ResultCode newResultCode, LocalizableMessageBuilder newErrorMessage)
-  {
-    // if global result code has not been set yet then just take the new
-    // result code as is
-    if (resultCode == ResultCode.UNDEFINED)
-    {
-      resultCode   = newResultCode;
-      errorMessage = new LocalizableMessageBuilder (newErrorMessage);
-      return false;
-    }
-
-
-    // Elaborate the new result code (see table in the description header).
-    switch (newResultCode.asEnum())
-    {
-    case SUCCESS:
-      switch (resultCode.asEnum())
-      {
-        case NO_SUCH_OBJECT:
-          resultCode = ResultCode.SUCCESS;
-          errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
-          return false;
-        case REFERRAL:
-          resultCode = ResultCode.SUCCESS;
-          errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
-          return true;
-        default:
-          // global resultCode remains the same
-          return false;
-      }
-
-    case NO_SUCH_OBJECT:
-      // global resultCode remains the same
-      return false;
-
-    case REFERRAL:
-      switch (resultCode.asEnum())
-      {
-        case REFERRAL:
-          resultCode = ResultCode.SUCCESS;
-          errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
-          return true;
-        case NO_SUCH_OBJECT:
-          resultCode = ResultCode.REFERRAL;
-          errorMessage = new LocalizableMessageBuilder (LocalizableMessage.EMPTY);
-          return false;
-        default:
-          // global resultCode remains the same
-          return true;
-      }
-
-    default:
-      switch (resultCode.asEnum())
-      {
-        case REFERRAL:
-          resultCode = newResultCode;
-          errorMessage = new LocalizableMessageBuilder (newErrorMessage);
-          return true;
-        case SUCCESS:
-        case NO_SUCH_OBJECT:
-          resultCode = newResultCode;
-          errorMessage = new LocalizableMessageBuilder (newErrorMessage);
-          return false;
-        default:
-          // Do nothing (we don't want to override the first error)
-          return false;
-      }
-    }
-  }
-
-  /**
-   * Returns the global result code.
-   *
-   * @return the global result code.
-   */
-  public ResultCode resultCode()
-  {
-    return resultCode;
-  }
-
-  /**
-   * Returns the global error message.
-   *
-   * @return the global error message.
-   */
-  public LocalizableMessageBuilder errorMessage()
-  {
-    return errorMessage;
-  }
-
-}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
index 49fbdc5..6fe37c0 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
@@ -56,6 +56,144 @@
  */
 public class LocalBackendWorkflowElement
 {
+  /**
+   * This class implements the workflow result code. The workflow result code
+   * contains an LDAP result code along with an LDAP error message.
+   */
+  private static class SearchResultCode
+  {
+    /** The global result code. */
+    private ResultCode resultCode = ResultCode.UNDEFINED;
+
+    /** The global error message. */
+    private LocalizableMessageBuilder errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
+
+    /**
+     * Creates a new instance of a workflow result code and initializes it with
+     * a result code and an error message.
+     *
+     * @param resultCode
+     *          the initial value for the result code
+     * @param errorMessage
+     *          the initial value for the error message
+     */
+    SearchResultCode(ResultCode resultCode, LocalizableMessageBuilder errorMessage)
+    {
+      this.resultCode = resultCode;
+      this.errorMessage = errorMessage;
+    }
+
+    /**
+     * Elaborates a global result code. A workflow may execute an operation on
+     * several subordinate workflows. In such case, the parent workflow has to
+     * take into account all the subordinate result codes to elaborate a global
+     * result code. Sometimes, a referral result code has to be turned into a
+     * reference entry. When such case is occurring the
+     * elaborateGlobalResultCode method will return true. The global result code
+     * is elaborated as follows:
+     *
+     * <PRE>
+     *  -----------+------------+------------+-------------------------------
+     *  new        | current    | resulting  |
+     *  resultCode | resultCode | resultCode | action
+     *  -----------+------------+------------+-------------------------------
+     *  SUCCESS      NO_SUCH_OBJ  SUCCESS      -
+     *               REFERRAL     SUCCESS      send reference entry to client
+     *               other        [unchanged]  -
+     *  ---------------------------------------------------------------------
+     *  NO_SUCH_OBJ  SUCCESS      [unchanged]  -
+     *               REFERRAL     [unchanged]  -
+     *               other        [unchanged]  -
+     *  ---------------------------------------------------------------------
+     *  REFERRAL     SUCCESS      [unchanged]  send reference entry to client
+     *               REFERRAL     SUCCESS      send reference entry to client
+     *               NO_SUCH_OBJ  REFERRAL     -
+     *               other        [unchanged]  send reference entry to client
+     *  ---------------------------------------------------------------------
+     *  others       SUCCESS      other        -
+     *               REFERRAL     other        send reference entry to client
+     *               NO_SUCH_OBJ  other        -
+     *               other2       [unchanged]  -
+     *  ---------------------------------------------------------------------
+     * </PRE>
+     *
+     * @param newResultCode
+     *          the new result code to take into account
+     * @param newErrorMessage
+     *          the new error message associated to the new error code
+     * @return <code>true</code> if a referral result code must be turned into a
+     *         reference entry
+     */
+    private boolean elaborateGlobalResultCode(ResultCode newResultCode, LocalizableMessageBuilder newErrorMessage)
+    {
+      // if global result code has not been set yet then just take the new
+      // result code as is
+      if (resultCode == ResultCode.UNDEFINED)
+      {
+        resultCode = newResultCode;
+        errorMessage = new LocalizableMessageBuilder(newErrorMessage);
+        return false;
+      }
+
+      // Elaborate the new result code (see table in the description header).
+      switch (newResultCode.asEnum())
+      {
+      case SUCCESS:
+        switch (resultCode.asEnum())
+        {
+        case NO_SUCH_OBJECT:
+          resultCode = ResultCode.SUCCESS;
+          errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
+          return false;
+        case REFERRAL:
+          resultCode = ResultCode.SUCCESS;
+          errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
+          return true;
+        default:
+          // global resultCode remains the same
+          return false;
+        }
+
+      case NO_SUCH_OBJECT:
+        // global resultCode remains the same
+        return false;
+
+      case REFERRAL:
+        switch (resultCode.asEnum())
+        {
+        case REFERRAL:
+          resultCode = ResultCode.SUCCESS;
+          errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
+          return true;
+        case NO_SUCH_OBJECT:
+          resultCode = ResultCode.REFERRAL;
+          errorMessage = new LocalizableMessageBuilder(LocalizableMessage.EMPTY);
+          return false;
+        default:
+          // global resultCode remains the same
+          return true;
+        }
+
+      default:
+        switch (resultCode.asEnum())
+        {
+        case REFERRAL:
+          resultCode = newResultCode;
+          errorMessage = new LocalizableMessageBuilder(newErrorMessage);
+          return true;
+        case SUCCESS:
+        case NO_SUCH_OBJECT:
+          resultCode = newResultCode;
+          errorMessage = new LocalizableMessageBuilder(newErrorMessage);
+          return false;
+        default:
+          // Do nothing (we don't want to override the first error)
+          return false;
+        }
+      }
+    }
+  }
+
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
   /** The backend's baseDN mapped by this object. */
@@ -722,8 +860,8 @@
 
     // Create a workflow result code in case we need to perform search in
     // subordinate workflows.
-    WorkflowResultCode workflowResultCode =
-        new WorkflowResultCode(searchOp.getResultCode(), searchOp.getErrorMessage());
+    SearchResultCode searchResultCode =
+        new SearchResultCode(searchOp.getResultCode(), searchOp.getErrorMessage());
 
     // The search scope is not 'base', so let's do a search on all the public
     // naming contexts with appropriate new search scope and new base DN.
@@ -743,7 +881,7 @@
       // in the naming context workflow.
       searchOp.setBaseDN(ncDN);
       execute(searchOp, ncDN);
-      boolean sendReferenceEntry = workflowResultCode.elaborateGlobalResultCode(
+      boolean sendReferenceEntry = searchResultCode.elaborateGlobalResultCode(
           searchOp.getResultCode(), searchOp.getErrorMessage());
       if (sendReferenceEntry)
       {
@@ -758,12 +896,12 @@
 
     // If the result code is still uninitialized (ie no naming context),
     // we should return NO_SUCH_OBJECT
-    workflowResultCode.elaborateGlobalResultCode(
+    searchResultCode.elaborateGlobalResultCode(
         ResultCode.NO_SUCH_OBJECT, new LocalizableMessageBuilder(LocalizableMessage.EMPTY));
 
     // Set the operation result code and error message
-    searchOp.setResultCode(workflowResultCode.resultCode());
-    searchOp.setErrorMessage(workflowResultCode.errorMessage());
+    searchOp.setResultCode(searchResultCode.resultCode);
+    searchOp.setErrorMessage(searchResultCode.errorMessage);
   }
 
   private static Collection<LocalBackendWorkflowElement> getRootDSESubordinates()
@@ -816,8 +954,7 @@
     searchOp.setScope(newScope);
 
     // Let's search in the subordinate workflows.
-    WorkflowResultCode workflowResultCode = new WorkflowResultCode(
-        searchOp.getResultCode(), searchOp.getErrorMessage());
+    SearchResultCode searchResultCode = new SearchResultCode(searchOp.getResultCode(), searchOp.getErrorMessage());
     DN originalBaseDN = searchOp.getBaseDN();
     for (LocalBackendWorkflowElement subordinate : getSubordinates(workflow))
     {
@@ -845,8 +982,8 @@
       // operation in the subordinate workflow.
       searchOp.setBaseDN(subordinateDN);
       execute(searchOp, subordinateDN);
-      boolean sendReferenceEntry =
-          workflowResultCode.elaborateGlobalResultCode(searchOp.getResultCode(), searchOp.getErrorMessage());
+      boolean sendReferenceEntry = searchResultCode.elaborateGlobalResultCode(
+          searchOp.getResultCode(), searchOp.getErrorMessage());
       if (sendReferenceEntry)
       {
         // TODO jdemendi - turn a referral result code into a reference entry
@@ -860,8 +997,8 @@
     searchOp.setScope(originalScope);
 
     // Update the operation result code and error message
-    searchOp.setResultCode(workflowResultCode.resultCode());
-    searchOp.setErrorMessage(workflowResultCode.errorMessage());
+    searchOp.setResultCode(searchResultCode.resultCode);
+    searchOp.setErrorMessage(searchResultCode.errorMessage);
   }
 
   private static Collection<LocalBackendWorkflowElement> getSubordinates(LocalBackendWorkflowElement workflow)

--
Gitblit v1.10.0