From cb5aca9520b60a90810c741e7c5c50c43597d0a8 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 20 May 2014 13:42:22 +0000
Subject: [PATCH] Code cleanup.

---
 opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java |  119 ++++++++++++++++++++++++++++-------------------------------
 1 files changed, 56 insertions(+), 63 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index f2cc724..0b2401b 100644
--- a/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -38,6 +38,7 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.DecodeException;
 import org.forgerock.opendj.ldap.DereferenceAliasesPolicy;
@@ -53,7 +54,6 @@
 import org.opends.server.api.DirectoryThread;
 import org.opends.server.api.SynchronizationProvider;
 import org.opends.server.backends.task.Task;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.*;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchListener;
@@ -62,13 +62,22 @@
 import org.opends.server.protocols.ldap.LDAPControl;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPModification;
-import org.opends.server.replication.common.*;
+import org.opends.server.replication.common.CSN;
+import org.opends.server.replication.common.ServerState;
+import org.opends.server.replication.common.ServerStatus;
+import org.opends.server.replication.common.StatusMachineEvent;
 import org.opends.server.replication.protocol.*;
 import org.opends.server.replication.service.ReplicationBroker;
 import org.opends.server.replication.service.ReplicationDomain;
 import org.opends.server.tasks.PurgeConflictsHistoricalTask;
 import org.opends.server.tasks.TaskUtils;
 import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.Attributes;
+import org.opends.server.types.DN;
+import org.opends.server.types.Entry;
+import org.opends.server.types.Modification;
+import org.opends.server.types.RDN;
 import org.opends.server.types.operation.*;
 import org.opends.server.util.LDIFReader;
 import org.opends.server.util.TimeThread;
@@ -182,14 +191,12 @@
   /** The number of unresolved naming conflicts. */
   private final AtomicInteger numUnresolvedNamingConflicts =
       new AtomicInteger();
-  private final PersistentServerState state;
   /** The number of updates replayed successfully by the replication. */
   private final AtomicInteger numReplayedPostOpCalled = new AtomicInteger();
 
+  private final PersistentServerState state;
   private volatile boolean generationIdSavedStatus = false;
 
-  private final CSNGenerator generator;
-
   /**
    * This object is used to store the list of update currently being
    * done on the local database.
@@ -202,11 +209,12 @@
       new AtomicReference<RSUpdater>(null);
 
   /**
-   * It contain the updates that were done on other servers, transmitted
-   * by the replication server and that are currently replayed.
-   * It is useful to make sure that dependencies between operations
-   * are correctly fulfilled and to to make sure that the ServerState is
-   * not updated too early.
+   * It contain the updates that were done on other servers, transmitted by the
+   * replication server and that are currently replayed.
+   * <p>
+   * It is useful to make sure that dependencies between operations are
+   * correctly fulfilled and to make sure that the ServerState is not updated
+   * too early.
    */
   private final RemotePendingChanges remotePendingChanges;
   private boolean solveConflictFlag = true;
@@ -503,9 +511,7 @@
      * The generator time is adjusted to the time of the last CSN received from
      * remote other servers.
      */
-    generator = getGenerator();
-
-    pendingChanges = new PendingChanges(generator, this);
+    pendingChanges = new PendingChanges(getGenerator(), this);
     remotePendingChanges = new RemotePendingChanges(getServerState());
 
     // listen for changes on the configuration
@@ -697,13 +703,7 @@
   private SearchResultEntry findReplicationSearchResultEntry(
       InternalSearchOperation searchOperation)
   {
-    if (searchOperation.getResultCode() != ResultCode.SUCCESS)
-    {
-      return null;
-    }
-
-    List<SearchResultEntry> result = searchOperation.getSearchEntries();
-    SearchResultEntry resultEntry = result.get(0);
+    final SearchResultEntry resultEntry = getFirstResult(searchOperation);
     if (resultEntry != null)
     {
       AttributeType synchronizationGenIDType =
@@ -1600,9 +1600,8 @@
          * another entry.
          * We must not let the change proceed, return a negative
          * result and set the result code to NO_SUCH_OBJECT.
-         * When the operation will return, the thread that started the
-         * operation will try to find the correct entry and restart a new
-         * operation.
+         * When the operation will return, the thread that started the operation
+         * will try to find the correct entry and restart a new operation.
          */
         return new SynchronizationProviderResult.StopProcessing(
             ResultCode.NO_SUCH_OBJECT, null);
@@ -2561,26 +2560,32 @@
           0, 0, false,
           SearchFilter.createFilterFromString("(objectclass=*)"),
           attrs);
-
-      if (search.getResultCode() == ResultCode.SUCCESS)
+      final SearchResultEntry resultEntry = getFirstResult(search);
+      if (resultEntry != null)
       {
-        final List<SearchResultEntry> result = search.getSearchEntries();
-        if (!result.isEmpty())
-        {
-          final SearchResultEntry resultEntry = result.get(0);
-          if (resultEntry != null)
-          {
-            return getEntryUUID(resultEntry);
-          }
-        }
+        return getEntryUUID(resultEntry);
       }
-    } catch (DirectoryException e)
+    }
+    catch (DirectoryException e)
     {
       // never happens because the filter is always valid.
     }
     return null;
   }
 
+  private static SearchResultEntry getFirstResult(InternalSearchOperation search)
+  {
+    if (search.getResultCode() == ResultCode.SUCCESS)
+    {
+      final LinkedList<SearchResultEntry> results = search.getSearchEntries();
+      if (!results.isEmpty())
+      {
+        return results.getFirst();
+      }
+    }
+    return null;
+  }
+
   /**
    * find the current DN of an entry from its entry UUID.
    *
@@ -2595,19 +2600,13 @@
       InternalSearchOperation search = conn.processSearch(getBaseDN(),
             SearchScope.WHOLE_SUBTREE,
             SearchFilter.createFilterFromString("entryuuid="+uuid));
-      if (search.getResultCode() == ResultCode.SUCCESS)
+      final SearchResultEntry resultEntry = getFirstResult(search);
+      if (resultEntry != null)
       {
-        final List<SearchResultEntry> results = search.getSearchEntries();
-        if (!results.isEmpty())
-        {
-          final SearchResultEntry resultEntry = results.get(0);
-          if (resultEntry != null)
-          {
-            return resultEntry.getName();
-          }
-        }
+        return resultEntry.getName();
       }
-    } catch (DirectoryException e)
+    }
+    catch (DirectoryException e)
     {
       // never happens because the filter is always valid.
     }
@@ -3016,19 +3015,15 @@
 
       if (op.getResultCode() == ResultCode.SUCCESS)
       {
-        List<SearchResultEntry> entries = op.getSearchEntries();
-        if (entries != null)
+        for (SearchResultEntry entry : op.getSearchEntries())
         {
-          for (SearchResultEntry entry : entries)
-          {
-            /*
-             * Check the ADD and ModRDN date of the child entry (All of them,
-             * not only the one that are newer than the DEL op)
-             * and keep the entry as a conflicting entry,
-             */
-            conflict = true;
-            renameConflictEntry(conflictOp, entry.getName(), getEntryUUID(entry));
-          }
+          /*
+           * Check the ADD and ModRDN date of the child entry
+           * (All of them, not only the one that are newer than the DEL op)
+           * and keep the entry as a conflicting entry.
+           */
+          conflict = true;
+          renameConflictEntry(conflictOp, entry.getName(), getEntryUUID(entry));
         }
       }
       else
@@ -3207,10 +3202,9 @@
   {
     state.clearInMemory();
     state.loadState();
+    getGenerator().adjust(state.getMaxCSN(getServerId()));
 
-    generator.adjust(state.getMaxCSN(getServerId()));
     // Retrieves the generation ID associated with the data imported
-
     generationId = loadGenerationId();
   }
 
@@ -4536,9 +4530,8 @@
     {
       // Expand @objectclass references in attribute list if needed.
       // We do this now in order to take into account dynamic schema changes.
-      Set<String> expandedNames = getExpandedNames(names);
-
-      Entry filteredEntry =
+      final Set<String> expandedNames = getExpandedNames(names);
+      final Entry filteredEntry =
           entry.filterEntry(expandedNames, false, false, false);
       return filteredEntry.getAttributes();
     }

--
Gitblit v1.10.0