From a5f828cdb6549933c9f49783f99be1de1085a75e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 27 Aug 2013 09:57:22 +0000
Subject: [PATCH] Made code more encapsulated and more explicit. Removed parameters obscuring the code.

---
 opends/src/server/org/opends/server/replication/server/ReplicationServer.java |  132 ++++++++++++++++++++++++-------------------
 1 files changed, 74 insertions(+), 58 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index 7455fa0..9aedc1b 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -430,14 +430,9 @@
 
             // FIXME: this will need changing if we ever support listening on
             // specific addresses.
-            if (isLocalAddress(inetAddress) && (port == replicationPort))
-            {
-              continue;
-            }
-
+            if ((isLocalAddress(inetAddress) && port == replicationPort)
             // Don't connect to a server if it is already connected.
-            final String normalizedServerURL = normalizeServerURL(rsURL);
-            if (connectedRSUrls.contains(normalizedServerURL))
+                || connectedRSUrls.contains(normalizeServerURL(rsURL)))
             {
               continue;
             }
@@ -726,15 +721,12 @@
    *
    * @param baseDn The base Dn for which the ReplicationServerDomain must be
    * returned.
-   * @param create Specifies whether to create the ReplicationServerDomain if
-   *        it does not already exist.
    * @return The ReplicationServerDomain associated to the base DN given in
    *         parameter.
    */
-  public ReplicationServerDomain getReplicationServerDomain(String baseDn,
-          boolean create)
+  public ReplicationServerDomain getReplicationServerDomain(String baseDn)
   {
-    return getReplicationServerDomain(baseDn, create, false);
+    return getReplicationServerDomain(baseDn, false);
   }
 
   /**
@@ -745,68 +737,62 @@
    * returned.
    * @param create Specifies whether to create the ReplicationServerDomain if
    *        it does not already exist.
-   * @param waitConnections     Waits for the Connections with other RS to
-   *                            be established before returning.
    * @return The ReplicationServerDomain associated to the base DN given in
    *         parameter.
    */
   public ReplicationServerDomain getReplicationServerDomain(String baseDn,
-          boolean create, boolean waitConnections)
+      boolean create)
   {
-    ReplicationServerDomain domain;
-
     synchronized (baseDNs)
     {
-      domain = baseDNs.get(baseDn);
-
-      if (domain != null ||!create) {
-        return domain;
+      ReplicationServerDomain domain = baseDNs.get(baseDn);
+      if (domain == null && create) {
+        domain = new ReplicationServerDomain(baseDn, this);
+        baseDNs.put(baseDn, domain);
       }
-
-      domain = new ReplicationServerDomain(baseDn, this);
-      baseDNs.put(baseDn, domain);
+      return domain;
     }
+  }
 
-    if (waitConnections)
+  /**
+   * Waits for connections to this ReplicationServer.
+   */
+  public void waitConnections()
+  {
+    // Acquire a domain ticket and wait for a complete cycle of the connect
+    // thread.
+    final long myDomainTicket;
+    synchronized (connectThreadLock)
     {
-      // Acquire a domain ticket and wait for a complete cycle of the connect
-      // thread.
-      final long myDomainTicket;
-      synchronized (connectThreadLock)
-      {
-        // Connect thread must be waiting.
-        synchronized (domainTicketLock)
-        {
-          // Determine the ticket which will be used in the next connect thread
-          // iteration.
-          myDomainTicket = domainTicket + 1;
-        }
-
-        // Wake up connect thread.
-        connectThreadLock.notify();
-      }
-
-      // Wait until the connect thread has processed next connect phase.
+      // Connect thread must be waiting.
       synchronized (domainTicketLock)
       {
-        // Condition.
-        while (myDomainTicket > domainTicket && !shutdown)
+        // Determine the ticket which will be used in the next connect thread
+        // iteration.
+        myDomainTicket = domainTicket + 1;
+      }
+
+      // Wake up connect thread.
+      connectThreadLock.notify();
+    }
+
+    // Wait until the connect thread has processed next connect phase.
+    synchronized (domainTicketLock)
+    {
+      while (myDomainTicket > domainTicket && !shutdown)
+      {
+        try
         {
-          try
-          {
-            // Wait with timeout so that we detect shutdown.
-            domainTicketLock.wait(500);
-          }
-          catch (InterruptedException e)
-          {
-            // Can't do anything with this.
-            Thread.currentThread().interrupt();
-          }
+          // Wait with timeout so that we detect shutdown.
+          domainTicketLock.wait(500);
+        }
+        catch (InterruptedException e)
+        {
+          // Can't do anything with this.
+          Thread.currentThread().interrupt();
         }
       }
     }
-
-    return domain;
   }
 
   /**
@@ -1158,7 +1144,7 @@
    */
   public long getGenerationId(String baseDN)
   {
-    ReplicationServerDomain rsd = getReplicationServerDomain(baseDN, false);
+    ReplicationServerDomain rsd = getReplicationServerDomain(baseDN);
     if (rsd!=null)
       return rsd.getGenerationId();
     return -1;
@@ -1924,4 +1910,34 @@
     return "RS(" + serverId + ") on " + serverURL + ", domains="
         + baseDNs.keySet();
   }
+
+  /**
+   * Initializes the generationId for the specified replication domain.
+   *
+   * @param baseDn
+   *          the replication domain
+   * @param generationId
+   *          the the generationId value for initialization
+   */
+  public void initDomainGenerationID(String baseDn, long generationId)
+  {
+    getReplicationServerDomain(baseDn, true).initGenerationID(generationId);
+  }
+
+  /**
+   * Adds the specified serverId to the specified replication domain.
+   *
+   * @param serverId
+   *          the server Id to add to the replication domain
+   * @param baseDn
+   *          the replication domain where to add the serverId
+   * @throws ChangelogException
+   *           If a database error happened.
+   */
+  public void addServerIdToDomain(int serverId, String baseDn)
+      throws ChangelogException
+  {
+    DbHandler dbHandler = newDbHandler(serverId, baseDn);
+    getReplicationServerDomain(baseDn, true).setDbHandler(serverId, dbHandler);
+  }
 }

--
Gitblit v1.10.0