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

---
 opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalClientConnection.java            |   12 +-
 opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java                      |   11 ++
 opendj3-server-dev/src/server/org/opends/server/api/ClientConnection.java                                   |   97 -----------------------
 opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java                        |   23 -----
 opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java                    |   32 ++++---
 opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/WorkflowConfigurationTest.java |   42 ----------
 6 files changed, 36 insertions(+), 181 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/api/ClientConnection.java b/opendj3-server-dev/src/server/org/opends/server/api/ClientConnection.java
index e03d3f7..0afb223 100644
--- a/opendj3-server-dev/src/server/org/opends/server/api/ClientConnection.java
+++ b/opendj3-server-dev/src/server/org/opends/server/api/ClientConnection.java
@@ -26,8 +26,6 @@
  */
 package org.opends.server.api;
 
-
-
 import java.net.InetAddress;
 import java.nio.channels.ByteChannel;
 import java.nio.channels.Selector;
@@ -42,6 +40,7 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.api.plugin.PluginResult;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.PersistentSearch;
@@ -50,7 +49,6 @@
 import org.opends.server.core.networkgroups.NetworkGroup;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.types.AuthenticationInfo;
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.CancelResult;
@@ -60,11 +58,9 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.IntermediateResponse;
 import org.opends.server.types.Operation;
-import org.opends.server.types.OperationType;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
-import org.opends.server.types.operation.PreParseOperation;
 import org.opends.server.util.TimeThread;
 
 import static org.opends.messages.CoreMessages.*;
@@ -143,13 +139,6 @@
   private final CopyOnWriteArrayList<PersistentSearch>
       persistentSearches;
 
-  /** The network group to which the connection belongs to. */
-  private NetworkGroup networkGroup;
-
-  /** Need to evaluate the network group for the first operation. */
-  protected boolean mustEvaluateNetworkGroup;
-
-
   /**
    * Performs the appropriate initialization generic to all client
    * connections.
@@ -169,11 +158,6 @@
     lookthroughLimit   = DirectoryServer.getLookthroughLimit();
     finalized          = false;
     privileges         = new HashSet<Privilege>();
-    networkGroup       = NetworkGroup.getDefaultNetworkGroup();
-    networkGroup.addConnection(this);
-    mustEvaluateNetworkGroup = true;
-
-    logger.trace(INFO_CHANGE_NETWORK_GROUP, getConnectionID(), null, networkGroup.getID());
   }
 
 
@@ -226,8 +210,6 @@
       DirectoryServer.getAuthenticatedUsers().remove(
            authZEntry.getName(), this);
     }
-
-    networkGroup.removeConnection(this);
   }
 
 
@@ -468,8 +450,6 @@
     return 0L;
   }
 
-
-
   /**
    * Retrieves the total number of operations performed
    * on this connection.
@@ -480,47 +460,6 @@
   public abstract long getNumberOfOperations();
 
   /**
-   * Indicates whether the network group must be evaluated for
-   * the next connection.
-   * @param operation The operation going to be performed. Bind
-   *                  operations imply a network group evaluation.
-   * @return boolean indicating if the network group must be evaluated
-   */
-  public boolean mustEvaluateNetworkGroup(
-          PreParseOperation operation) {
-    //  Connections inside the internal network group MUST NOT
-    // change network group
-    if (this.networkGroup == NetworkGroup.getInternalNetworkGroup()) {
-      return false;
-    }
-    // Connections inside the admin network group MUST NOT
-    // change network group
-    if (this.networkGroup == NetworkGroup.getAdminNetworkGroup()) {
-      return false;
-    }
-
-    // If the operation is a BIND, the network group MUST be evaluated
-    if (operation != null
-        && operation.getOperationType() == OperationType.BIND) {
-      return true;
-    }
-
-    return mustEvaluateNetworkGroup;
-  }
-
-  /**
-   * Indicates that the network group will have to be evaluated
-   * for the next connection.
-   *
-   * @param bool true if the network group must be evaluated
-   */
-  public void mustEvaluateNetworkGroup(boolean bool) {
-      mustEvaluateNetworkGroup = bool;
-  }
-
-
-
-  /**
    * Sends a response to the client based on the information in the
    * provided operation.
    *
@@ -987,8 +926,6 @@
   public void setUnauthenticated()
   {
     setAuthenticationInfo(new AuthenticationInfo());
-    this.sizeLimit = networkGroup.getSizeLimit();
-    this.timeLimit = networkGroup.getTimeLimit();
   }
 
 
@@ -1654,40 +1591,12 @@
    *
    * @return the network group attached to the connection
    */
-  public final NetworkGroup getNetworkGroup()
+  public NetworkGroup getNetworkGroup()
   {
-    return networkGroup;
+    return NetworkGroup.getDefaultNetworkGroup();
   }
 
   /**
-   * Sets the network group to which the connection belongs.
-   *
-   * @param networkGroup  the network group to which the
-   *                      connections belongs to
-   */
-  public final void setNetworkGroup (NetworkGroup networkGroup)
-  {
-    if (this.networkGroup != networkGroup) {
-      logger.trace(INFO_CHANGE_NETWORK_GROUP, getConnectionID(),
-          this.networkGroup.getID(), networkGroup.getID());
-
-      // If there is a change, first remove this connection
-      // from the current network group
-      this.networkGroup.removeConnection(this);
-      // Then set the new network group
-      this.networkGroup = networkGroup;
-      // And add the connection to the new ng
-      this.networkGroup.addConnection(this);
-
-      // The client connection inherits the resource limits
-      sizeLimit = networkGroup.getSizeLimit();
-      timeLimit = networkGroup.getTimeLimit();
-    }
-  }
-
-
-
-  /**
    * Retrieves the length of time in milliseconds that this client
    * connection has been idle.
    * <BR><BR>
diff --git a/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java b/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
index 1bd6ea9..926d94f 100644
--- a/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
+++ b/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
@@ -33,7 +33,6 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.ldap.ResultCode;
-import org.opends.server.api.ClientConnection;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.RootDseWorkflowTopology;
 import org.opends.server.core.Workflow;
@@ -221,16 +220,6 @@
   }
 
   /**
-   * Adds a connection to the group.
-   *
-   * @param connection
-   *          the ClientConnection
-   */
-  public void addConnection(ClientConnection connection)
-  {
-  }
-
-  /**
    * Deregisters a workflow with the network group. The workflow to
    * deregister is identified by its baseDN.
    *
@@ -468,18 +457,6 @@
     return workflowCandidate;
   }
 
-
-
-  /**
-   * Removes a connection from the group.
-   *
-   * @param connection
-   *          the ClientConnection
-   */
-  public void removeConnection(ClientConnection connection)
-  {
-  }
-
   /**
    * Deregisters the current network group (this) with the server. The
    * method also decrements the reference counter of the workflows so
diff --git a/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalClientConnection.java b/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
index 52aaa79..afc2c49 100644
--- a/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
+++ b/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
@@ -108,9 +108,6 @@
   {
     super();
 
-
-    this.setNetworkGroup(NetworkGroup.getInternalNetworkGroup());
-
     // This connection will be authenticated as a root user so that no
     // access control will be enforced.
     String commonName    = "Internal Client";
@@ -211,8 +208,6 @@
   {
     super();
 
-    this.setNetworkGroup(NetworkGroup.getInternalNetworkGroup());
-
     // Don't call super.setAuthenticationInfo() since this will register this
     // connection in the authenticated users table, which is unnecessary and
     // will also cause the connection to be leaked since internal connections
@@ -255,7 +250,12 @@
     this(getAuthInfoForDN(userDN));
   }
 
-
+  /** {@inheritDoc} */
+  @Override
+  public NetworkGroup getNetworkGroup()
+  {
+    return NetworkGroup.getInternalNetworkGroup();
+  }
 
   /**
    * Creates an authentication information object for the user with
diff --git a/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java b/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
index ad6a816..a81fc81 100644
--- a/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
+++ b/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
@@ -27,7 +27,8 @@
 package org.opends.server.protocols.jmx;
 
 import java.net.InetAddress;
-import java.util.*;
+import java.util.Collection;
+import java.util.LinkedList;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -87,8 +88,6 @@
   {
     super();
 
-    setNetworkGroup(NetworkGroup.getAdminNetworkGroup());
-
     nextMessageID    = new AtomicInteger(1);
     nextOperationID  = new AtomicLong(0);
 
@@ -110,6 +109,12 @@
         .addNotificationListener(this, null, null);
   }
 
+  /** {@inheritDoc} */
+  @Override
+  public NetworkGroup getNetworkGroup()
+  {
+    return NetworkGroup.getAdminNetworkGroup();
+  }
 
   /** {@inheritDoc} */
   @Override
diff --git a/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java b/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
index 6462af2..5084bfc 100644
--- a/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
+++ b/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
@@ -29,6 +29,7 @@
 import java.io.Closeable;
 import java.io.IOException;
 import java.net.InetAddress;
+import java.net.Socket;
 import java.nio.ByteBuffer;
 import java.nio.channels.*;
 import java.security.cert.Certificate;
@@ -468,11 +469,6 @@
       SocketChannel clientChannel, String protocol) throws DirectoryException
   {
     this.connectionHandler = connectionHandler;
-    if (connectionHandler.isAdminConnectionHandler())
-    {
-      setNetworkGroup(NetworkGroup.getAdminNetworkGroup());
-    }
-
     this.clientChannel = clientChannel;
     timeoutClientChannel = new TimeoutWriteByteChannel();
     opsInProgressLock = new Object();
@@ -486,15 +482,14 @@
     keepStats = connectionHandler.keepStats();
     this.protocol = protocol;
     writeSelector = new AtomicReference<Selector>();
-    clientAddress =
-        clientChannel.socket().getInetAddress().getHostAddress();
-    clientPort = clientChannel.socket().getPort();
-    serverAddress =
-        clientChannel.socket().getLocalAddress().getHostAddress();
-    serverPort = clientChannel.socket().getLocalPort();
 
-    statTracker =
-            this.connectionHandler.getStatTracker();
+    final Socket socket = clientChannel.socket();
+    clientAddress = socket.getInetAddress().getHostAddress();
+    clientPort = socket.getPort();
+    serverAddress = socket.getLocalAddress().getHostAddress();
+    serverPort = socket.getLocalPort();
+
+    statTracker = this.connectionHandler.getStatTracker();
 
     if (keepStats)
     {
@@ -519,6 +514,17 @@
     connectionID = DirectoryServer.newConnectionAccepted(this);
   }
 
+  /** {@inheritDoc} */
+  @Override
+  public NetworkGroup getNetworkGroup()
+  {
+    if (connectionHandler.isAdminConnectionHandler())
+    {
+      return NetworkGroup.getAdminNetworkGroup();
+    }
+    return NetworkGroup.getDefaultNetworkGroup();
+  }
+
   /**
    * Retrieves the connection ID assigned to this connection.
    *
diff --git a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/WorkflowConfigurationTest.java b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/WorkflowConfigurationTest.java
index bc6203f..d181a47 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/WorkflowConfigurationTest.java
+++ b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/WorkflowConfigurationTest.java
@@ -34,7 +34,6 @@
 import org.forgerock.opendj.ldap.SearchScope;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.api.Backend;
-import org.opends.server.api.ClientConnection;
 import org.opends.server.config.ConfigConstants;
 import org.opends.server.core.networkgroups.NetworkGroup;
 import org.opends.server.protocols.internal.InternalClientConnection;
@@ -515,45 +514,4 @@
     dsconfigRemoveMemoryBackend(backendID2);
     checkBackendIsNotAccessible(baseDN2);
   }
-
-
-  /**
-   * This test checks the creation and utilization of network group
-   * in the route process.
-   */
-  @Test
-  public void useNetworkGroup() throws Exception
-  {
-    // Local settings
-    String backendID = "test";
-    String baseDN    = "o=test";
-
-    // Create a route for o=test suffix in the internal network group.
-    // Search on o=test should succeed.
-    WorkflowImpl workflowImpl = createWorkflow(baseDN, backendID);
-    InternalSearchOperation searchOperation =
-      doSearch(baseDN, SearchScope.BASE_OBJECT, ResultCode.SUCCESS);
-
-    // Create a network group and store it in the client connection.
-    // As the network group is empty, all searches should fail with a
-    // no such object result code.
-    String networkGroupID = "useNetworkGroupID";
-    NetworkGroup networkGroup = new NetworkGroup(networkGroupID);
-    ClientConnection clientConnection = searchOperation.getClientConnection();
-    clientConnection.setNetworkGroup(networkGroup);
-    searchOperation.run();
-    assertEquals(searchOperation.getResultCode(), ResultCode.NO_SUCH_OBJECT);
-
-    // Now register the o=test workflow and search again. The search
-    // should succeed.
-    networkGroup.registerWorkflow(workflowImpl);
-    searchOperation.run();
-    assertEquals(searchOperation.getResultCode(), ResultCode.SUCCESS);
-
-    // Put back the internal network group in the client connection
-    // and check that searches are still working.
-    clientConnection.setNetworkGroup(NetworkGroup.getInternalNetworkGroup());
-    searchOperation.run();
-    assertEquals(searchOperation.getResultCode(), ResultCode.SUCCESS);
-  }
 }

--
Gitblit v1.10.0