From 16a7fb0e49b5da15f64ed90a3f6af12d8b3eba96 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 21 Aug 2015 10:51:46 +0000
Subject: [PATCH] AttrHistoricalMultiple.java, AttrValueHistorical.java: Improved toString()

---
 opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java |   43 ++++++++-------------
 opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrValueHistorical.java    |   24 ++++++++++--
 2 files changed, 37 insertions(+), 30 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
index 639360c..17ef637 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
@@ -41,13 +41,10 @@
 import org.opends.server.types.Modification;
 
 /**
- * This class is used to store historical information for multiple valued
- * attributes.
- * One object of this type is created for each attribute that was changed in
- * the entry.
- * It allows to record the last time a given value was added, the last
- * time a given value was deleted and the last time the whole attribute was
- * deleted.
+ * This class is used to store historical information for multiple valued attributes.
+ * One object of this type is created for each attribute that was changed in the entry.
+ * It allows to record the last time a given value was added,the last
+ * time a given value was deleted and the last time the whole attribute was deleted.
  */
 public class AttrHistoricalMultiple extends AttrHistorical
 {
@@ -56,13 +53,12 @@
   /** Last time the attribute was modified. */
   private CSN lastUpdateTime;
   /**
-   * Change history for the values of this attribute. We are using a
-   * LinkedHashMap here because we want:
+   * Change history for the values of this attribute.
+   * <p>
+   * We are using a LinkedHashMap here because we want:
    * <ol>
-   * <li>Fast access for removing/adding a AttrValueHistorical keyed by the
-   * attribute value => Use a Map</li>
-   * <li>Ordering changes according to the CSN of each changes => Use a
-   * LinkedHashMap</li>
+   * <li>Fast access for removing/adding a AttrValueHistorical keyed by the attribute value => Use a Map</li>
+   * <li>Ordering changes according to the CSN of each changes => Use a LinkedHashMap</li>
    * </ol>
    */
   private final Map<AttrValueHistorical, AttrValueHistorical> valuesHist = new LinkedHashMap<>();
@@ -85,9 +81,7 @@
      }
    }
 
-   /**
-    * Create a new object.
-    */
+   /** Creates a new object. */
    public AttrHistoricalMultiple()
    {
      this.deleteTime = null;
@@ -383,9 +377,7 @@
     Attribute modAttr = m.getAttribute();
     if (modAttr.isEmpty())
     {
-      /*
-       * We are processing a DELETE attribute modification
-       */
+      // We are processing a DELETE attribute modification
       m.setModificationType(ModificationType.REPLACE);
       AttributeBuilder builder = new AttributeBuilder(modAttr, true);
 
@@ -396,10 +388,8 @@
 
         if (csn.isOlderThan(valInfo.getValueUpdateTime()))
         {
-          /*
-           * this value has been updated after this delete, therefore
-           * this value must be kept
-           */
+          // this value has been updated after this delete,
+          // therefore this value must be kept
           builder.add(valInfo.getAttributeValue());
         }
         else if (csn.isNewerThanOrEqualTo(valInfo.getValueDeleteTime()))
@@ -434,12 +424,12 @@
         boolean deleteIt = true;  // true if the delete must be done
         boolean addedInCurrentOp = false;
 
-        /* update historical information */
+        // update historical information
         AttrValueHistorical valInfo = new AttrValueHistorical(val, null, csn);
         AttrValueHistorical oldValInfo = valuesHist.get(valInfo);
         if (oldValInfo != null)
         {
-          /* this value already exist in the historical information */
+          // this value already exist in the historical information
           if (csn.equals(oldValInfo.getValueUpdateTime()))
           {
             // This value was added earlier in the same operation
@@ -646,7 +636,8 @@
       }
       sb.append("lastUpdateTime=").append(lastUpdateTime);
     }
-    sb.append(", valuesHist=").append(valuesHist);
+    sb.append(", valuesHist=").append(valuesHist.keySet());
+    sb.append(")");
     return sb.toString();
   }
 }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrValueHistorical.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrValueHistorical.java
index aaf7c8d..3e54e32 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrValueHistorical.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrValueHistorical.java
@@ -26,12 +26,10 @@
  */
 package org.opends.server.replication.plugin;
 
-import org.opends.server.replication.common.CSN;
 import org.forgerock.opendj.ldap.ByteString;
+import org.opends.server.replication.common.CSN;
 
-/**
- * Store historical information for an attribute value.
- */
+/** Store historical information for an attribute value. */
 public class AttrValueHistorical
 {
   private ByteString value;
@@ -115,4 +113,22 @@
   {
     return valueUpdateTime != null;
   }
+
+  @Override
+  public String toString()
+  {
+    if (valueUpdateTime != null)
+    {
+      return valueDeleteTime != null
+          // valueUpdateTime and valueDeleteTime should have the same value
+          ? valueUpdateTime + ":replace:" + value
+          : valueUpdateTime + ":add:" + value;
+    }
+    else
+    {
+      return valueDeleteTime != null
+          ? valueDeleteTime + ":delete:" + value
+          : "????:" + value;
+    }
+  }
 }

--
Gitblit v1.10.0