From c538859ba481ec47727a555afd457e38a27f6dbe Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 28 Jun 2013 14:59:21 +0000
Subject: [PATCH] ServerState.java: Renamed list instance member to lastCnSeenPerServerId. Added javadocs.

---
 opends/src/server/org/opends/server/replication/common/ServerState.java |  141 ++++++++++++++++++++++++-----------------------
 1 files changed, 72 insertions(+), 69 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/common/ServerState.java b/opends/src/server/org/opends/server/replication/common/ServerState.java
index e9963fa..d5ad4d3 100644
--- a/opends/src/server/org/opends/server/replication/common/ServerState.java
+++ b/opends/src/server/org/opends/server/replication/common/ServerState.java
@@ -29,20 +29,13 @@
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.zip.DataFormatException;
 
 import org.opends.server.protocols.asn1.ASN1Writer;
 import org.opends.server.replication.protocol.ProtocolVersion;
 import org.opends.server.types.ByteString;
 
-
 /**
  * ServerState class.
  * This object is used to store the last update seen on this server
@@ -52,7 +45,16 @@
  */
 public class ServerState implements Iterable<Integer>
 {
-  private final HashMap<Integer, ChangeNumber> list;
+
+  /**
+   * Contains what the current server knows about the last ChangeNumber seen for
+   * each serverId.
+   */
+  private final Map<Integer, ChangeNumber> lastCnSeenPerServerId;
+  /**
+   * Whether the state has been saved to persistent storage. It starts at true,
+   * and moves to false when an update is made to the current object.
+   */
   private volatile boolean saved = true;
 
   /**
@@ -60,7 +62,7 @@
    */
   public ServerState()
   {
-    list = new HashMap<Integer, ChangeNumber>();
+    lastCnSeenPerServerId = new HashMap<Integer, ChangeNumber>();
   }
 
   /**
@@ -70,9 +72,9 @@
    */
   public void clear()
   {
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
-      list.clear();
+      lastCnSeenPerServerId.clear();
     }
   }
 
@@ -92,7 +94,7 @@
   {
     try
     {
-      list = new HashMap<Integer, ChangeNumber>();
+      lastCnSeenPerServerId = new HashMap<Integer, ChangeNumber>();
 
       while (endpos > pos)
       {
@@ -115,7 +117,7 @@
         /*
          * Add the serverid
          */
-        list.put(serverId, cn);
+        lastCnSeenPerServerId.put(serverId, cn);
       }
 
     } catch (UnsupportedEncodingException e)
@@ -161,19 +163,16 @@
 
     saved = false;
 
-    synchronized(list)
+    synchronized (lastCnSeenPerServerId)
     {
       int id =  changeNumber.getServerId();
-      ChangeNumber oldCN = list.get(id);
+      ChangeNumber oldCN = lastCnSeenPerServerId.get(id);
       if (oldCN == null || changeNumber.newer(oldCN))
       {
-        list.put(id,changeNumber);
+        lastCnSeenPerServerId.put(id, changeNumber);
         return true;
       }
-      else
-      {
-        return false;
-      }
+      return false;
     }
   }
 
@@ -193,7 +192,7 @@
 
     boolean updated = false;
 
-    for (ChangeNumber cn : serverState.list.values())
+    for (ChangeNumber cn : serverState.lastCnSeenPerServerId.values())
     {
       if (update(cn))
       {
@@ -218,18 +217,19 @@
 
     boolean result = false;
 
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
       clear();
       for (Integer id : serverState) {
         ChangeNumber maxChangeNumber = serverState.getMaxChangeNumber(id);
-        if (this.update(maxChangeNumber)) {
+        if (update(maxChangeNumber))
+        {
           result = true;
         }
       }
     }
 
-    return (result);
+    return result;
   }
 
   /**
@@ -245,16 +245,15 @@
    */
   public Set<String> toStringSet()
   {
-    HashSet<String> set = new HashSet<String>();
+    Set<String> set = new HashSet<String>();
 
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
-      for (int key  : list.keySet())
+      for (int key : lastCnSeenPerServerId.keySet())
       {
-        ChangeNumber change = list.get(key);
+        ChangeNumber change = lastCnSeenPerServerId.get(key);
         Date date = new Date(change.getTime());
-        set.add(change.toString() + " " + date.toString() + " "
-            + change.getTime());
+        set.add(change + " " + date + " " + change.getTime());
       }
     }
 
@@ -271,11 +270,12 @@
   {
     ArrayList<ByteString> values = new ArrayList<ByteString>(0);
 
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
-      for (int id : list.keySet())
+      for (int id : lastCnSeenPerServerId.keySet())
       {
-        ByteString value = ByteString.valueOf(list.get(id).toString());
+        ByteString value =
+            ByteString.valueOf(lastCnSeenPerServerId.get(id).toString());
         values.add(value);
       }
     }
@@ -297,18 +297,18 @@
   public void writeTo(ASN1Writer writer, short protocolVersion)
       throws IOException
   {
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
       if (protocolVersion >= ProtocolVersion.REPLICATION_PROTOCOL_V7)
       {
-        for (ChangeNumber cn : list.values())
+        for (ChangeNumber cn : lastCnSeenPerServerId.values())
         {
           writer.writeOctetString(cn.toByteString());
         }
       }
       else
       {
-        for (ChangeNumber cn : list.values())
+        for (ChangeNumber cn : lastCnSeenPerServerId.values())
         {
           writer.writeOctetString(cn.toString());
         }
@@ -320,20 +320,21 @@
    * Return the text representation of ServerState.
    * @return the text representation of ServerState
    */
+  @Override
   public String toString()
   {
     StringBuilder buffer = new StringBuilder();
 
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
-      for (int key  : list.keySet())
+      for (int key : lastCnSeenPerServerId.keySet())
       {
-        ChangeNumber change = list.get(key);
+        ChangeNumber change = lastCnSeenPerServerId.get(key);
         buffer.append(change.toString());
         buffer.append(" ");
       }
-      if (!list.isEmpty())
-        buffer.deleteCharAt(buffer.length()-1);
+      if (!lastCnSeenPerServerId.isEmpty())
+        buffer.deleteCharAt(buffer.length() - 1);
     }
 
     return buffer.toString();
@@ -347,7 +348,7 @@
    */
   public ChangeNumber getMaxChangeNumber(int serverId2)
   {
-    return list.get(serverId2);
+    return lastCnSeenPerServerId.get(serverId2);
   }
 
   /**
@@ -358,11 +359,11 @@
   {
     ChangeNumber maxCN = null;
 
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
-      for (int id : list.keySet())
+      for (int id : lastCnSeenPerServerId.keySet())
       {
-        ChangeNumber tmpMax = list.get(id);
+        ChangeNumber tmpMax = lastCnSeenPerServerId.get(id);
         if ((maxCN==null) || (tmpMax.newer(maxCN)))
           maxCN = tmpMax;
       }
@@ -391,18 +392,18 @@
    */
   public byte[] getBytes() throws UnsupportedEncodingException
   {
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
       int length = 0;
-      List<String> idList = new ArrayList<String>(list.size());
-      for (int id : list.keySet())
+      List<String> idList = new ArrayList<String>(lastCnSeenPerServerId.size());
+      for (int id : lastCnSeenPerServerId.keySet())
       {
         String temp = String.valueOf(id);
         idList.add(temp);
         length += temp.length() + 1;
       }
-      List<String> cnList = new ArrayList<String>(list.size());
-      for (ChangeNumber cn : list.values())
+      List<String> cnList = new ArrayList<String>(lastCnSeenPerServerId.size());
+      for (ChangeNumber cn : lastCnSeenPerServerId.values())
       {
         String temp = cn.toString();
         cnList.add(temp);
@@ -411,7 +412,7 @@
       byte[] result = new byte[length];
 
       int pos = 0;
-      for (int i=0; i< list.size(); i++)
+      for (int i = 0; i < lastCnSeenPerServerId.size(); i++)
       {
         String str = idList.get(i);
         pos = addByteArray(str.getBytes("UTF-8"), result, pos);
@@ -425,9 +426,10 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public Iterator<Integer> iterator()
   {
-    return list.keySet().iterator();
+    return lastCnSeenPerServerId.keySet().iterator();
   }
 
   /**
@@ -440,9 +442,10 @@
    */
   public boolean cover(ServerState covered)
   {
-    for (ChangeNumber coveredChange : covered.list.values())
+    for (ChangeNumber coveredChange : covered.lastCnSeenPerServerId.values())
     {
-      ChangeNumber change = this.list.get(coveredChange.getServerId());
+      ChangeNumber change =
+          this.lastCnSeenPerServerId.get(coveredChange.getServerId());
       if ((change == null) || (change.older(coveredChange)))
       {
         return false;
@@ -460,7 +463,7 @@
    */
   public boolean cover(ChangeNumber covered)
   {
-    ChangeNumber change = this.list.get(covered.getServerId());
+    ChangeNumber change = this.lastCnSeenPerServerId.get(covered.getServerId());
     return !((change == null) || (change.older(covered)));
   }
 
@@ -471,7 +474,7 @@
    */
   public boolean isEmpty()
   {
-    return list.isEmpty();
+    return lastCnSeenPerServerId.isEmpty();
   }
 
   /**
@@ -481,13 +484,13 @@
   public ServerState duplicate()
   {
     ServerState newState = new ServerState();
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
-      for (Integer key  : list.keySet())
+      for (Integer key : lastCnSeenPerServerId.keySet())
       {
-        ChangeNumber change = list.get(key);
+        ChangeNumber change = lastCnSeenPerServerId.get(key);
         Integer id =  change.getServerId();
-        newState.list.put(id,change);
+        newState.lastCnSeenPerServerId.put(id, change);
       }
     }
     return newState;
@@ -506,15 +509,15 @@
     throws  IllegalArgumentException
   {
      if ( (ss1 == null) || (ss2 == null) )
-       throw new IllegalArgumentException("Null server state(s)");
+      throw new IllegalArgumentException("Null server state(s)");
 
      int diff = 0;
-     for (Integer serverId : ss1.list.keySet())
+     for (Integer serverId : ss1.lastCnSeenPerServerId.keySet())
      {
-       ChangeNumber cn1 = ss1.list.get(serverId);
+       ChangeNumber cn1 = ss1.lastCnSeenPerServerId.get(serverId);
        if (cn1 != null)
        {
-         ChangeNumber cn2 = ss2.list.get(serverId);
+         ChangeNumber cn2 = ss2.lastCnSeenPerServerId.get(serverId);
          if (cn2 != null)
          {
            diff += ChangeNumber.diffSeqNum(cn1, cn2);
@@ -561,15 +564,15 @@
   public ServerState duplicateOnlyOlderThan(ChangeNumber cn)
   {
     ServerState newState = new ServerState();
-    synchronized (list)
+    synchronized (lastCnSeenPerServerId)
     {
-      for (Integer key  : list.keySet())
+      for (Integer key : lastCnSeenPerServerId.keySet())
       {
-        ChangeNumber change = list.get(key);
+        ChangeNumber change = lastCnSeenPerServerId.get(key);
         Integer id =  change.getServerId();
         if (change.older(cn))
         {
-          newState.list.put(id,change);
+          newState.lastCnSeenPerServerId.put(id, change);
         }
       }
     }

--
Gitblit v1.10.0