From f61444ce38af62d66efd549a90c9a958bde95691 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 18 Aug 2015 12:56:09 +0000
Subject: [PATCH] Changed AttrHistorical.getValuesHistorical() return type to match usage

---
 opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrInfoTest.java           |   29 +---
 opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java         |   33 ++---
 opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java   |   74 +++++-------
 opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalMultiple.java |  142 ++++++++---------------
 opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java        |   63 ++++-----
 5 files changed, 134 insertions(+), 207 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java
index b01f014..4711415 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistorical.java
@@ -28,17 +28,15 @@
 package org.opends.server.replication.plugin;
 
 import java.util.Iterator;
-import java.util.Map;
+import java.util.Set;
 
+import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.replication.common.CSN;
 import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
 
-/**
- * This class store historical information for a provided attribute.
- */
+/** This class store historical information for a provided attribute. */
 public abstract class AttrHistorical
 {
   /**
@@ -55,23 +53,21 @@
    * @return a boolean indicating if a conflict was detected.
    */
   public abstract boolean replayOperation(
-      Iterator<Modification> modsIterator, CSN csn,
-      Entry modifiedEntry, Modification mod);
+      Iterator<Modification> modsIterator, CSN csn, Entry modifiedEntry, Modification mod);
 
   /**
-   * This method calculate the historical information and update the hist
+   * This method calculates the historical information and update the hist
    * attribute to store the historical information for modify operation that
    * does not conflict with previous operation.
    * This is the usual path and should therefore be optimized.
-   *
+   * <p>
    * It does not check if the operation to process is conflicting or not with
    * previous operations. The caller is responsible for this.
    *
    * @param csn The CSN of the operation to process
    * @param mod The modify operation to process.
    */
-  public abstract void processLocalOrNonConflictModification(
-      CSN csn, Modification mod);
+  public abstract void processLocalOrNonConflictModification(CSN csn, Modification mod);
 
   /**
    * Create a new object from a provided attribute type. Historical is empty.
@@ -79,19 +75,17 @@
    * @param type the provided attribute type.
    * @return a new AttributeInfo object.
    */
-  public static AttrHistorical createAttributeHistorical(
-      AttributeType type)
+  public static AttrHistorical createAttributeHistorical(AttributeType type)
   {
     return type.isSingleValue() ? new AttrHistoricalSingle() : new AttrHistoricalMultiple();
   }
 
   /**
-   * Get the List of ValueInfo for this attribute Info.
+   * Get the historical informations for this attribute Info.
    *
-   * @return the List of ValueInfo
+   * @return the historical informations
    */
-  public abstract Map<AttrValueHistorical, AttrValueHistorical> getValuesHistorical();
-
+  public abstract Set<AttrValueHistorical> getValuesHistorical();
 
   /**
    * Returns the last time when this attribute was deleted.
@@ -107,8 +101,5 @@
    * @param value   the associated value or null if there is no value;
    * @param csn     the associated CSN.
    */
-  public abstract void assign(
-      HistAttrModificationKey histKey, ByteString value, CSN csn);
-
+  public abstract void assign(HistAttrModificationKey histKey, ByteString value, CSN csn);
 }
-
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 fe6b06c..eb4e442 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
@@ -29,11 +29,16 @@
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.Set;
 
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ModificationType;
 import org.opends.server.replication.common.CSN;
-import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.AttributeBuilder;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.Entry;
+import org.opends.server.types.Modification;
 
 /**
  * This class is used to store historical information for multiple valued
@@ -98,10 +103,6 @@
      return lastUpdateTime;
    }
 
-   /**
-    * Returns the last time when the attribute was deleted.
-    * @return the last time when the attribute was deleted
-    */
    @Override
    public CSN getDeleteTime()
    {
@@ -117,8 +118,7 @@
     */
    AttrHistoricalMultiple duplicate()
    {
-     return new AttrHistoricalMultiple(this.deleteTime, this.lastUpdateTime,
-         this.valuesHist);
+     return new AttrHistoricalMultiple(this.deleteTime, this.lastUpdateTime, this.valuesHist);
    }
 
    /**
@@ -127,7 +127,7 @@
     * Add the delete attribute state information
     * @param csn time when the delete was done
     */
-   protected void delete(CSN csn)
+   void delete(CSN csn)
    {
      // iterate through the values in the valuesInfo and suppress all the values
      // that have not been added after the date of this delete.
@@ -153,43 +153,46 @@
      }
    }
 
+  /**
+   * Update the historical of this attribute after deleting a set of values.
+   *
+   * @param attr
+   *          the attribute containing the set of values that were deleted
+   * @param csn
+   *          time when the delete was done
+   */
+  void delete(Attribute attr, CSN csn)
+  {
+    for (ByteString val : attr)
+    {
+      delete(val, csn);
+    }
+  }
+
    /**
     * Update the historical of this attribute after a delete value.
     *
     * @param val value that was deleted
     * @param csn time when the delete was done
     */
-   protected void delete(ByteString val, CSN csn)
+   void delete(ByteString val, CSN csn)
    {
-     AttrValueHistorical info = new AttrValueHistorical(val, null, csn);
-     valuesHist.remove(info);
-     valuesHist.put(info, info);
-     if (csn.isNewerThan(lastUpdateTime))
-     {
-       lastUpdateTime = csn;
-     }
+     update(csn, new AttrValueHistorical(val, null, csn));
    }
 
-   /**
-     * Update the historical of this attribute after deleting a set of values.
-     *
-     * @param attr
-     *          the attribute containing the set of values that were
-     *          deleted
-     * @param csn
-     *          time when the delete was done
-     */
-  protected void delete(Attribute attr, CSN csn)
+  /**
+   * Update the historical information when values are added.
+   *
+   * @param attr
+   *          the attribute containing the set of added values
+   * @param csn
+   *          time when the add is done
+   */
+  private void add(Attribute attr, CSN csn)
   {
     for (ByteString val : attr)
     {
-      AttrValueHistorical info = new AttrValueHistorical(val, null, csn);
-      valuesHist.remove(info);
-      valuesHist.put(info, info);
-      if (csn.isNewerThan(lastUpdateTime))
-      {
-        lastUpdateTime = csn;
-      }
+      add(val, csn);
     }
   }
 
@@ -201,51 +204,27 @@
      * @param csn
      *          time when the value was added
      */
-   protected void add(ByteString addedValue, CSN csn)
+   void add(ByteString addedValue, CSN csn)
    {
-     AttrValueHistorical info = new AttrValueHistorical(addedValue, csn, null);
-     valuesHist.remove(info);
-     valuesHist.put(info, info);
-     if (csn.isNewerThan(lastUpdateTime))
-     {
-       lastUpdateTime = csn;
-     }
+     update(csn, new AttrValueHistorical(addedValue, csn, null));
    }
 
-   /**
-     * Update the historical information when values are added.
-     *
-     * @param attr
-     *          the attribute containing the set of added values
-     * @param csn
-     *          time when the add is done
-     */
-  private void add(Attribute attr, CSN csn)
+  private void update(CSN csn, AttrValueHistorical info)
   {
-    for (ByteString val : attr)
+    valuesHist.remove(info);
+    valuesHist.put(info, info);
+    if (csn.isNewerThan(lastUpdateTime))
     {
-      AttrValueHistorical info = new AttrValueHistorical(val, csn, null);
-      valuesHist.remove(info);
-      valuesHist.put(info, info);
-      if (csn.isNewerThan(lastUpdateTime))
-      {
-        lastUpdateTime = csn;
-      }
+      lastUpdateTime = csn;
     }
   }
 
-  /**
-   * Get the list of historical information for the values.
-   *
-   * @return the list of historical information for the values.
-   */
   @Override
-  public Map<AttrValueHistorical,AttrValueHistorical> getValuesHistorical()
+  public Set<AttrValueHistorical> getValuesHistorical()
   {
-    return valuesHist;
+    return valuesHist.keySet();
   }
 
-  /** {@inheritDoc} */
   @Override
   public boolean replayOperation(Iterator<Modification> modsIterator, CSN csn,
       Entry modifiedEntry, Modification m)
@@ -326,25 +305,12 @@
     }
   }
 
-  /**
-   * This method calculates the historical information and update the hist
-   * attribute to store the historical information for a modify operation that
-   * does not conflict with previous operation.
-   * This is the usual path and should therefore be optimized.
-   *
-   * It does not check if the operation to process is conflicting or not with
-   * previous operations. The caller is responsible for this.
-   *
-   * @param csn The CSN of the operation to process
-   * @param mod The modify operation to process.
-   */
   @Override
   public void processLocalOrNonConflictModification(CSN csn, Modification mod)
   {
     /*
-     * The operation is either a non-conflicting operation or a local
-     * operation so there is no need to check the historical information
-     * for conflicts.
+     * The operation is either a non-conflicting operation or a local operation
+     * so there is no need to check the historical information for conflicts.
      * If this is a local operation, then this code is run after
      * the pre-operation phase.
      * If this is a non-conflicting replicated operation, this code is run
@@ -472,8 +438,7 @@
         boolean addedInCurrentOp = false;
 
         /* update historical information */
-        AttrValueHistorical valInfo =
-          new AttrValueHistorical(val, null, csn);
+        AttrValueHistorical valInfo = new AttrValueHistorical(val, null, csn);
         AttrValueHistorical oldValInfo = valuesHist.get(valInfo);
         if (oldValInfo != null)
         {
@@ -539,10 +504,8 @@
    * @param csn  the historical info associated to the entry
    * @param m the modification that is being processed
    * @param modsIterator iterator on the list of modification
-   * @return false if operation becomes empty and must not be processed
    */
-  private boolean conflictAdd(CSN csn, Modification m,
-      Iterator<Modification> modsIterator)
+  private void conflictAdd(CSN csn, Modification m, Iterator<Modification> modsIterator)
   {
     /*
      * if historicalattributedelete is newer forget this mod else find
@@ -560,7 +523,7 @@
        * forget this MOD ADD
        */
       modsIterator.remove();
-      return false;
+      return;
     }
 
     AttributeBuilder builder = new AttributeBuilder(m.getAttribute());
@@ -633,11 +596,8 @@
     {
       lastUpdateTime = csn;
     }
-
-    return true;
   }
 
-  /** {@inheritDoc} */
   @Override
   public void assign(HistAttrModificationKey histKey, ByteString value, CSN csn)
   {
@@ -671,5 +631,3 @@
     }
   }
 }
-
-
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java
index e8c2833..d4ee62f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/AttrHistoricalSingle.java
@@ -26,9 +26,11 @@
  */
 package org.opends.server.replication.plugin;
 
+import static org.opends.server.replication.plugin.HistAttrModificationKey.*;
+
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.Map;
+import java.util.Set;
 
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ModificationType;
@@ -54,45 +56,33 @@
   private CSN addTime;
   /** Last added value. */
   private ByteString value;
-
   /**
    * Last operation applied. This is only used for multiple mods on the same
    * single valued attribute in the same modification.
    */
   private HistAttrModificationKey lastMod;
 
-  /** {@inheritDoc} */
   @Override
   public CSN getDeleteTime()
   {
     return this.deleteTime;
   }
 
-  /** {@inheritDoc} */
   @Override
-  public Map<AttrValueHistorical,AttrValueHistorical> getValuesHistorical()
+  public Set<AttrValueHistorical> getValuesHistorical()
   {
-    if (addTime == null)
+    if (addTime != null)
     {
-      return Collections.emptyMap();
+      return Collections.singleton(new AttrValueHistorical(value, addTime, null));
     }
-    else
-    {
-      AttrValueHistorical val = new AttrValueHistorical(value, addTime, null);
-      return Collections.singletonMap(val, val);
-    }
+    return Collections.emptySet();
   }
 
-  /** {@inheritDoc} */
   @Override
   public void processLocalOrNonConflictModification(CSN csn, Modification mod)
   {
-    ByteString newValue = null;
     Attribute modAttr = mod.getAttribute();
-    if (modAttr != null && !modAttr.isEmpty())
-    {
-      newValue = modAttr.iterator().next();
-    }
+    ByteString newValue = getSingleValue(modAttr);
 
     switch (mod.getModificationType().asEnum())
     {
@@ -100,13 +90,13 @@
       this.addTime = null;
       this.deleteTime = csn;
       this.value = newValue;
-      lastMod = HistAttrModificationKey.DEL;
+      lastMod = DEL;
       break;
 
     case ADD:
       this.addTime = csn;
       this.value = newValue;
-      lastMod = HistAttrModificationKey.ADD;
+      lastMod = ADD;
       break;
 
     case REPLACE:
@@ -116,12 +106,12 @@
         this.addTime = null;
         this.deleteTime = csn;
         this.value = null;
-        lastMod = HistAttrModificationKey.DEL;
+        lastMod = DEL;
       }
       else
       {
         this.deleteTime = addTime = csn;
-        lastMod = HistAttrModificationKey.REPL;
+        lastMod = REPL;
       }
       this.value = newValue;
       break;
@@ -132,20 +122,14 @@
     }
   }
 
-  /** {@inheritDoc} */
   @Override
   public boolean replayOperation(Iterator<Modification> modsIterator, CSN csn,
       Entry modifiedEntry, Modification mod)
   {
-    boolean conflict = false;
-
-    ByteString newValue = null;
     Attribute modAttr = mod.getAttribute();
-    if (modAttr != null && !modAttr.isEmpty())
-    {
-      newValue = modAttr.iterator().next();
-    }
+    ByteString newValue = getSingleValue(modAttr);
 
+    boolean conflict = false;
     switch (mod.getModificationType().asEnum())
     {
     case DELETE:
@@ -172,7 +156,7 @@
           else
           {
             addTime = null;
-            lastMod = HistAttrModificationKey.DEL;
+            lastMod = DEL;
             value = null;
           }
         }
@@ -184,15 +168,14 @@
       }
       else if (csn.equals(addTime))
       {
-        if (lastMod == HistAttrModificationKey.ADD
-            || lastMod == HistAttrModificationKey.REPL)
+        if (lastMod == ADD || lastMod == REPL)
         {
           if (csn.isNewerThan(deleteTime))
           {
             deleteTime = csn;
           }
           addTime = null;
-          lastMod = HistAttrModificationKey.DEL;
+          lastMod = DEL;
           value = null;
         }
         else
@@ -215,7 +198,7 @@
         mod.setModificationType(ModificationType.REPLACE);
         addTime = csn;
         value = newValue;
-        lastMod = HistAttrModificationKey.REPL;
+        lastMod = REPL;
       }
       else
       {
@@ -225,17 +208,17 @@
           // no conflict : don't do anything beside setting the addTime
           addTime = csn;
           value = newValue;
-          lastMod = HistAttrModificationKey.ADD;
+          lastMod = ADD;
         }
         else
         {
           // Case where CSN = addTime = deleteTime
           if (csn.equals(deleteTime) && csn.equals(addTime)
-              && lastMod == HistAttrModificationKey.DEL)
+              && lastMod == DEL)
           {
             // No conflict, record the new value.
             value = newValue;
-            lastMod = HistAttrModificationKey.ADD;
+            lastMod = ADD;
           }
           else
           {
@@ -260,14 +243,14 @@
           addTime = null;
           value = newValue;
           deleteTime = csn;
-          lastMod = HistAttrModificationKey.DEL;
+          lastMod = DEL;
         }
         else
         {
           addTime = csn;
           value = newValue;
           deleteTime = csn;
-          lastMod = HistAttrModificationKey.REPL;
+          lastMod = REPL;
         }
       }
       break;
@@ -279,7 +262,15 @@
     return conflict;
   }
 
-  /** {@inheritDoc} */
+  private ByteString getSingleValue(Attribute modAttr)
+  {
+    if (modAttr != null && !modAttr.isEmpty())
+    {
+      return modAttr.iterator().next();
+    }
+    return null;
+  }
+
   @Override
   public void assign(HistAttrModificationKey histKey, ByteString value, CSN csn)
   {
@@ -312,4 +303,3 @@
     }
   }
 }
-
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java
index 77e1a18..c4738f1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/EntryHistorical.java
@@ -433,30 +433,17 @@
       Map<Set<String>, AttrHistorical> attrWithOptions =
                                 entryWithOptions.getValue().getAttributesInfo();
 
-      for (Map.Entry<Set<String>, AttrHistorical> entry : attrWithOptions
-          .entrySet())
+      for (Map.Entry<Set<String>, AttrHistorical> entry : attrWithOptions.entrySet())
       {
         // Encode an (attribute type/option)
-        Set<String> options = entry.getKey();
+        String optionsString = toOptionsString(entry.getKey());
         AttrHistorical attrHist = entry.getValue();
 
-        String optionsString = "";
-        if (options != null)
-        {
-          StringBuilder optionsBuilder = new StringBuilder();
-          for (String s : options)
-          {
-            optionsBuilder.append(';').append(s);
-          }
-          optionsString = optionsBuilder.toString();
-        }
-
         CSN deleteTime = attrHist.getDeleteTime();
         /* generate the historical information for deleted attributes */
         boolean delAttr = deleteTime != null;
 
-        for (AttrValueHistorical attrValHist : attrHist.getValuesHistorical()
-            .keySet())
+        for (AttrValueHistorical attrValHist : attrHist.getValuesHistorical())
         {
           final ByteString value = attrValHist.getAttributeValue();
 
@@ -534,6 +521,20 @@
     return builder.toAttribute();
   }
 
+  private String toOptionsString(Set<String> options)
+  {
+    if (options != null)
+    {
+      StringBuilder optionsBuilder = new StringBuilder();
+      for (String s : options)
+      {
+        optionsBuilder.append(';').append(s);
+      }
+      return optionsBuilder.toString();
+    }
+    return "";
+  }
+
   private boolean needsPurge(CSN csn, long purgeDate)
   {
     boolean needsPurge = purgeDelayInMillisec > 0 && csn.getTime() <= purgeDate;
@@ -623,17 +624,11 @@
    */
   public static EntryHistorical newInstanceFromEntry(Entry entry)
   {
-    AttributeType lastAttrType = null;
-    Set<String> lastOptions = new HashSet<>();
-    AttrHistorical attrInfo = null;
-    AttrHistoricalWithOptions attrInfoWithOptions = null;
-
     // Read the DB historical attribute from the entry
     List<Attribute> histAttrWithOptionsFromEntry = getHistoricalAttr(entry);
 
     // Now we'll build the Historical object we want to construct
-    EntryHistorical newHistorical = new EntryHistorical();
-
+    final EntryHistorical newHistorical = new EntryHistorical();
     if (histAttrWithOptionsFromEntry == null)
     {
       // No historical attribute in the entry, return empty object
@@ -642,6 +637,11 @@
 
     try
     {
+      AttributeType lastAttrType = null;
+      Set<String> lastOptions = new HashSet<>();
+      AttrHistorical attrInfo = null;
+      AttrHistoricalWithOptions attrInfoWithOptions = null;
+
       // For each value of the historical attr read (mod. on a user attribute)
       //   build an AttrInfo sub-object
 
@@ -653,14 +653,8 @@
         for (ByteString histAttrValueFromEntry : histAttrFromEntry)
         {
           // From each value of the hist attr, create an object
-          HistoricalAttributeValue histVal = new HistoricalAttributeValue(
-              histAttrValueFromEntry.toString());
-
-          AttributeType attrType = histVal.getAttrType();
-          Set<String> options = histVal.getOptions();
-          CSN csn = histVal.getCSN();
-          ByteString value = histVal.getAttributeValue();
-          HistAttrModificationKey histKey = histVal.getHistKey();
+          final HistoricalAttributeValue histVal = new HistoricalAttributeValue(histAttrValueFromEntry.toString());
+          final CSN csn = histVal.getCSN();
 
           // update the oldest CSN stored in the new entry historical
           newHistorical.updateOldestCSN(csn);
@@ -675,6 +669,7 @@
           }
           else
           {
+            AttributeType attrType = histVal.getAttrType();
             if (attrType == null)
             {
               /*
@@ -694,6 +689,7 @@
              *   AttrInfo that we add to AttrInfoWithOptions
              * if both match we keep everything
              */
+            Set<String> options = histVal.getOptions();
             if (attrType != lastAttrType)
             {
               attrInfo = AttrHistorical.createAttributeHistorical(attrType);
@@ -703,8 +699,7 @@
               attrInfoWithOptions.put(options, attrInfo);
 
               // Store this attrInfoWithOptions in the newHistorical object
-              newHistorical.attributesHistorical.
-                put(attrType, attrInfoWithOptions);
+              newHistorical.attributesHistorical.put(attrType, attrInfoWithOptions);
 
               lastAttrType = attrType;
               lastOptions = options;
@@ -716,7 +711,7 @@
               lastOptions = options;
             }
 
-            attrInfo.assign(histKey, value, csn);
+            attrInfo.assign(histVal.getHistKey(), histVal.getAttributeValue(), csn);
           }
         }
       }
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrInfoTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrInfoTest.java
index d64e46c..98aae65 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrInfoTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/plugin/AttrInfoTest.java
@@ -27,13 +27,13 @@
 package org.opends.server.replication.plugin;
 
 import java.util.Collections;
-import java.util.Map;
+import java.util.Set;
 
+import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.common.CSN;
 import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.types.Attributes;
 import org.opends.server.util.TimeThread;
 import org.testng.annotations.DataProvider;
@@ -41,16 +41,11 @@
 
 import static org.testng.Assert.*;
 
-/**
- * Test AttrInfo and AttrInfoWithOptions.
- */
+/** Test AttrInfo and AttrInfoWithOptions. */
 @SuppressWarnings("javadoc")
 public class AttrInfoTest extends ReplicationTestCase
 {
-
-  /**
-   * Build some data for the AttrInfo test below.
-   */
+  /** Build some data for the AttrInfo test below. */
   @DataProvider(name = "attrInfo")
   public Object[][] createData()
   {
@@ -74,9 +69,7 @@
     { att3, upd3, upd3 } };
   }
 
-  /**
-   * Create a AttrInfo and check the methods.
-   */
+  /** Create a AttrInfo and check the methods. */
   @Test(dataProvider = "attrInfo")
   public void attrInfo(ByteString att, CSN deleteTime, CSN updateTime) throws Exception
   {
@@ -85,10 +78,10 @@
 
     // Check
     attrInfo1.add(att, updateTime);
-    Map<AttrValueHistorical,AttrValueHistorical> values1 = attrInfo1.getValuesHistorical();
+    Set<AttrValueHistorical> values1 = attrInfo1.getValuesHistorical();
     assertEquals(values1.size(), 1);
     AttrValueHistorical valueInfo1 = new AttrValueHistorical(att, updateTime, null);
-    assertTrue(values1.containsKey(valueInfo1));
+    assertTrue(values1.contains(valueInfo1));
 
     // Check constructor with parameter
     AttrValueHistorical valueInfo2 = new AttrValueHistorical(att, updateTime, deleteTime);
@@ -101,14 +94,14 @@
     //  Check constructor with time parameter and not Value
     AttrHistoricalMultiple attrInfo3 = new AttrHistoricalMultiple(deleteTime, updateTime, null);
     attrInfo3.add(att, updateTime);
-    Map<AttrValueHistorical,AttrValueHistorical> values3 = attrInfo3.getValuesHistorical();
+    Set<AttrValueHistorical> values3 = attrInfo3.getValuesHistorical();
     assertEquals(values3.size(), 1);
     valueInfo1 = new AttrValueHistorical(att, updateTime, null);
-    assertTrue(values3.containsKey(valueInfo1));
+    assertTrue(values3.contains(valueInfo1));
 
     // Check duplicate
     AttrHistoricalMultiple attrInfo4 = attrInfo3.duplicate();
-    Map<AttrValueHistorical,AttrValueHistorical> values4 = attrInfo4.getValuesHistorical();
+    Set<AttrValueHistorical> values4 = attrInfo4.getValuesHistorical();
     assertEquals(attrInfo4.getDeleteTime().compareTo(attrInfo3.getDeleteTime()), 0);
     assertEquals(values4.size(), values3.size());
 
@@ -122,7 +115,7 @@
     assertEquals(attrInfo3.getValuesHistorical().size(), 1);
 
     // Check
-    attrInfo2.delete(updateTime) ;
+    attrInfo2.delete(updateTime);
     assertEquals(attrInfo2.getValuesHistorical().size(), 0);
   }
 }

--
Gitblit v1.10.0