From f41aab0eb9b8fc42c1caea3a15434c000234c26a Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Wed, 01 May 2013 08:19:06 +0000
Subject: [PATCH] Back out commits 8812-8814
---
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ModifyConflictTest.java | 9 +-
opends/src/server/org/opends/server/replication/plugin/AttrHistorical.java | 7 +-
opends/src/server/org/opends/server/replication/plugin/AttrHistoricalMultiple.java | 77 ++++++++++++++-----------
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/AttrInfoTest.java | 18 ++---
opends/src/server/org/opends/server/replication/plugin/EntryHistorical.java | 5 -
opends/src/server/org/opends/server/replication/plugin/AttrHistoricalSingle.java | 30 ++++------
6 files changed, 72 insertions(+), 74 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/plugin/AttrHistorical.java b/opends/src/server/org/opends/server/replication/plugin/AttrHistorical.java
index af74a85..29cb91c 100644
--- a/opends/src/server/org/opends/server/replication/plugin/AttrHistorical.java
+++ b/opends/src/server/org/opends/server/replication/plugin/AttrHistorical.java
@@ -23,12 +23,11 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013 ForgeRock, AS.
*/
package org.opends.server.replication.plugin;
+import java.util.ArrayList;
import java.util.Iterator;
-import java.util.Map;
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.types.AttributeType;
@@ -94,8 +93,8 @@
*
* @return the List of ValueInfo
*/
- public abstract Map<AttrValueHistorical,AttrValueHistorical>
- getValuesHistorical();
+ public abstract ArrayList<AttrValueHistorical> getValuesHistorical();
+
/**
* Returns the last time when this attribute was deleted.
diff --git a/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalMultiple.java b/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
index cd0492f..43e9e37 100644
--- a/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
+++ b/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalMultiple.java
@@ -27,9 +27,8 @@
*/
package org.opends.server.replication.plugin;
-import java.util.HashMap;
+import java.util.ArrayList;
import java.util.Iterator;
-import java.util.Map;
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.types.Attribute;
@@ -40,6 +39,7 @@
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
+
/**
* This classes is used to store historical information for multiple valued
* attributes.
@@ -51,11 +51,9 @@
*/
public class AttrHistoricalMultiple extends AttrHistorical
{
- /** Last time when the attribute was deleted. */
- private ChangeNumber deleteTime;
- /** Last time the attribute was modified. */
- private ChangeNumber lastUpdateTime;
- private final Map<AttrValueHistorical, AttrValueHistorical> valuesHist;
+ private ChangeNumber deleteTime, // last time when the attribute was deleted
+ lastUpdateTime; // last time the attribute was modified
+ private ArrayList<AttrValueHistorical> valuesHist;
/**
* Create a new object from the provided informations.
@@ -65,12 +63,12 @@
*/
public AttrHistoricalMultiple(ChangeNumber deleteTime,
ChangeNumber updateTime,
- Map<AttrValueHistorical, AttrValueHistorical> valuesHist)
+ ArrayList<AttrValueHistorical> valuesHist)
{
this.deleteTime = deleteTime;
this.lastUpdateTime = updateTime;
if (valuesHist == null)
- this.valuesHist = new HashMap<AttrValueHistorical,AttrValueHistorical>();
+ this.valuesHist = new ArrayList<AttrValueHistorical>();
else
this.valuesHist = valuesHist;
}
@@ -82,7 +80,7 @@
{
this.deleteTime = null;
this.lastUpdateTime = null;
- this.valuesHist = new HashMap<AttrValueHistorical,AttrValueHistorical>();
+ this.valuesHist = new ArrayList<AttrValueHistorical>();
}
/**
@@ -98,7 +96,6 @@
* Returns the last time when the attribute was deleted.
* @return the last time when the attribute was deleted
*/
- @Override
public ChangeNumber getDeleteTime()
{
return deleteTime;
@@ -128,7 +125,7 @@
// iterate through the values in the valuesInfo
// and suppress all the values that have not been added
// after the date of this delete.
- Iterator<AttrValueHistorical> it = this.valuesHist.keySet().iterator();
+ Iterator<AttrValueHistorical> it = this.valuesHist.iterator();
while (it.hasNext())
{
AttrValueHistorical info = it.next();
@@ -157,7 +154,8 @@
protected void delete(AttributeValue val, ChangeNumber CN)
{
AttrValueHistorical info = new AttrValueHistorical(val, null, CN);
- this.valuesHist.put(info, info);
+ this.valuesHist.remove(info);
+ this.valuesHist.add(info);
if (CN.newer(lastUpdateTime))
{
lastUpdateTime = CN;
@@ -178,7 +176,8 @@
for (AttributeValue val : attr)
{
AttrValueHistorical info = new AttrValueHistorical(val, null, CN);
- this.valuesHist.put(info, info);
+ this.valuesHist.remove(info);
+ this.valuesHist.add(info);
if (CN.newer(lastUpdateTime))
{
lastUpdateTime = CN;
@@ -197,7 +196,8 @@
protected void add(AttributeValue addedValue, ChangeNumber CN)
{
AttrValueHistorical info = new AttrValueHistorical(addedValue, CN, null);
- this.valuesHist.put(info, info);
+ this.valuesHist.remove(info);
+ valuesHist.add(info);
if (CN.newer(lastUpdateTime))
{
lastUpdateTime = CN;
@@ -217,7 +217,8 @@
for (AttributeValue val : attr)
{
AttrValueHistorical info = new AttrValueHistorical(val, CN, null);
- this.valuesHist.put(info, info);
+ this.valuesHist.remove(info);
+ valuesHist.add(info);
if (CN.newer(lastUpdateTime))
{
lastUpdateTime = CN;
@@ -230,8 +231,7 @@
*
* @return the list of historical informations for the values.
*/
- @Override
- public Map<AttrValueHistorical, AttrValueHistorical> getValuesHistorical()
+ public ArrayList<AttrValueHistorical> getValuesHistorical()
{
return valuesHist;
}
@@ -239,7 +239,6 @@
/**
* {@inheritDoc}
*/
- @Override
public boolean replayOperation(
Iterator<Modification> modsIterator, ChangeNumber changeNumber,
Entry modifiedEntry, Modification m)
@@ -332,7 +331,6 @@
* @param changeNumber The changeNumber of the operation to process
* @param mod The modify operation to process.
*/
- @Override
public void processLocalOrNonConflictModification(ChangeNumber changeNumber,
Modification mod)
{
@@ -419,10 +417,10 @@
m.setModificationType(ModificationType.REPLACE);
AttributeBuilder builder = new AttributeBuilder(modAttr, true);
- Iterator<AttrValueHistorical> it = this.valuesHist.keySet().iterator();
- while (it.hasNext())
+ for (Iterator<AttrValueHistorical> it = getValuesHistorical().iterator();
+ it.hasNext();)
{
- AttrValueHistorical valInfo = it.next();
+ AttrValueHistorical valInfo; valInfo = it.next();
if (changeNumber.older(valInfo.getValueUpdateTime()))
{
@@ -459,21 +457,25 @@
}
else
{
- // we are processing DELETE of some attribute values
+ /*
+ * we are processing DELETE of some attribute values
+ */
+ ArrayList<AttrValueHistorical> valuesInfo = getValuesHistorical();
AttributeBuilder builder = new AttributeBuilder(modAttr);
for (AttributeValue val : modAttr)
{
- boolean deleteIt = true; // true if the delete must be done
- boolean addedInCurrentOp = false;
+ Boolean deleteIt = true; // true if the delete must be done
+ Boolean addedInCurrentOp = false;
/* update historical information */
AttrValueHistorical valInfo =
new AttrValueHistorical(val, null, changeNumber);
- AttrValueHistorical oldValInfo = valuesHist.get(valInfo);
- if (oldValInfo != null)
+ int index = valuesInfo.indexOf(valInfo);
+ if (index != -1)
{
/* this value already exist in the historical information */
+ AttrValueHistorical oldValInfo = valuesInfo.get(index);
if (changeNumber.equals(oldValInfo.getValueUpdateTime()))
{
// This value was added earlier in the same operation
@@ -483,7 +485,8 @@
if (changeNumber.newerOrEquals(oldValInfo.getValueDeleteTime()) &&
changeNumber.newerOrEquals(oldValInfo.getValueUpdateTime()))
{
- valuesHist.put(valInfo, valInfo);
+ valuesInfo.remove(index);
+ valuesInfo.add(valInfo);
}
else if (oldValInfo.isUpdate())
{
@@ -492,7 +495,7 @@
}
else
{
- valuesHist.put(valInfo, valInfo);
+ valuesInfo.add(valInfo);
}
/* if the attribute value is not to be deleted
@@ -560,19 +563,21 @@
AttributeBuilder builder = new AttributeBuilder(m.getAttribute());
for (AttributeValue addVal : m.getAttribute())
{
+ ArrayList<AttrValueHistorical> valuesInfo = getValuesHistorical();
AttrValueHistorical valInfo =
new AttrValueHistorical(addVal, changeNumber, null);
- if (!valuesHist.containsKey(valInfo))
+ int index = valuesInfo.indexOf(valInfo);
+ if (index == -1)
{
/* this values does not exist yet
* add it in the historical information
* let the operation process normally
*/
- valuesHist.put(valInfo, valInfo);
+ valuesInfo.add(valInfo);
}
else
{
- AttrValueHistorical oldValueInfo = valuesHist.get(valInfo);
+ AttrValueHistorical oldValueInfo = valuesInfo.get(index);
if (oldValueInfo.isUpdate())
{
/* if the value is already present
@@ -582,7 +587,8 @@
*/
if (changeNumber.newer(oldValueInfo.getValueUpdateTime()))
{
- valuesHist.put(valInfo, valInfo);
+ valuesInfo.remove(index);
+ valuesInfo.add(valInfo);
}
builder.remove(addVal);
}
@@ -598,7 +604,8 @@
* and add our more recent one
* let the operation process
*/
- valuesHist.put(valInfo, valInfo);
+ valuesInfo.remove(index);
+ valuesInfo.add(valInfo);
}
else
{
diff --git a/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalSingle.java b/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalSingle.java
index 791c6ab..8cc59ea 100644
--- a/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalSingle.java
+++ b/opends/src/server/org/opends/server/replication/plugin/AttrHistoricalSingle.java
@@ -27,9 +27,8 @@
*/
package org.opends.server.replication.plugin;
-import java.util.HashMap;
+import java.util.ArrayList;
import java.util.Iterator;
-import java.util.Map;
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.types.Attribute;
@@ -49,17 +48,13 @@
*/
public class AttrHistoricalSingle extends AttrHistorical
{
- /** Last time when the attribute was deleted. */
- private ChangeNumber deleteTime = null;
- /** Last time when a value was added. */
- private ChangeNumber addTime = null;
- /** Last added value. */
- private AttributeValue value = null;
+ private ChangeNumber deleteTime = null; // last time when the attribute was
+ // deleted
+ private ChangeNumber addTime = null; // last time when a value was added
+ private AttributeValue value = null; // last added value
- /**
- * last operation applied. This is only used for multiple mods on the same
- * single valued attribute in the same modification.
- */
+ // last operation applied. This is only used for multiple mods on the same
+ // single valued attribute in the same modification.
private HistAttrModificationKey lastMod = null;
/**
@@ -75,18 +70,17 @@
* {@inheritDoc}
*/
@Override
- public Map<AttrValueHistorical, AttrValueHistorical> getValuesHistorical()
+ public ArrayList<AttrValueHistorical> getValuesHistorical()
{
if (addTime == null)
{
- return new HashMap<AttrValueHistorical,AttrValueHistorical>(0);
+ return new ArrayList<AttrValueHistorical>();
}
else
{
- HashMap<AttrValueHistorical,AttrValueHistorical> values =
- new HashMap<AttrValueHistorical,AttrValueHistorical>(1);
- AttrValueHistorical val = new AttrValueHistorical(value, addTime, null);
- values.put(val, val);
+ ArrayList<AttrValueHistorical> values =
+ new ArrayList<AttrValueHistorical>();
+ values.add(new AttrValueHistorical(value, addTime, null));
return values;
}
}
diff --git a/opends/src/server/org/opends/server/replication/plugin/EntryHistorical.java b/opends/src/server/org/opends/server/replication/plugin/EntryHistorical.java
index 1561d53..5ff0c41 100644
--- a/opends/src/server/org/opends/server/replication/plugin/EntryHistorical.java
+++ b/opends/src/server/org/opends/server/replication/plugin/EntryHistorical.java
@@ -23,7 +23,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2012 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -493,8 +493,7 @@
delAttr = true;
}
- for (AttrValueHistorical attrValHist : attrHist.getValuesHistorical()
- .keySet())
+ for (AttrValueHistorical attrValHist : attrHist.getValuesHistorical())
{
// Encode an attribute value
String strValue;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/AttrInfoTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/AttrInfoTest.java
index 9a79ee5..da52880 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/AttrInfoTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/AttrInfoTest.java
@@ -23,12 +23,10 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013 ForgeRock, AS.
*/
package org.opends.server.replication.plugin;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
import org.opends.server.core.DirectoryServer;
import org.opends.server.replication.ReplicationTestCase;
@@ -91,15 +89,15 @@
// Check add(AttributeValue val, ChangeNumber CN)
attrInfo1.add(att, updateTime);
- Map<AttrValueHistorical,AttrValueHistorical> values1 = attrInfo1.getValuesHistorical();
+ ArrayList<AttrValueHistorical> values1 = attrInfo1.getValuesHistorical();
assertTrue(values1.size() == 1);
AttrValueHistorical valueInfo1 = new AttrValueHistorical(att, updateTime, null);
- assertTrue(values1.containsKey(valueInfo1));
+ assertTrue(values1.get(0).equals(valueInfo1));
// Check constructor with parameter
AttrValueHistorical valueInfo2 = new AttrValueHistorical(att, updateTime, deleteTime);
- HashMap<AttrValueHistorical,AttrValueHistorical> values = new HashMap<AttrValueHistorical,AttrValueHistorical>();
- values.put(valueInfo2, valueInfo2);
+ ArrayList<AttrValueHistorical> values = new ArrayList<AttrValueHistorical>();
+ values.add(valueInfo2);
AttrHistoricalMultiple attrInfo2 = new AttrHistoricalMultiple(deleteTime, updateTime, values);
// Check equality
@@ -108,14 +106,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();
+ ArrayList<AttrValueHistorical> values3 = attrInfo3.getValuesHistorical();
assertTrue(values3.size() == 1);
valueInfo1 = new AttrValueHistorical(att, updateTime, null);
- assertTrue(values3.containsKey(valueInfo1));
+ assertTrue(values3.get(0).equals(valueInfo1));
// Check duplicate
AttrHistoricalMultiple attrInfo4 = attrInfo3.duplicate();
- Map<AttrValueHistorical,AttrValueHistorical> values4 = attrInfo4.getValuesHistorical();
+ ArrayList<AttrValueHistorical> values4 = attrInfo4.getValuesHistorical();
assertTrue(attrInfo4.getDeleteTime().compareTo(attrInfo3.getDeleteTime())==0);
assertEquals(values4.size(), values3.size());
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ModifyConflictTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ModifyConflictTest.java
index 0640508..2c5e1bd 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ModifyConflictTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ModifyConflictTest.java
@@ -23,7 +23,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2013 ForgeRock AS
+ * Portions Copyright 2011-2012 ForgeRock AS
*/
package org.opends.server.replication.plugin;
@@ -1395,13 +1395,14 @@
}
/*
- * Check that the historical information attributes produced are
- * equivalent. (The attribute values may be in a different order.)
+ * Check that the encoding decoding of historical information
+ * works by encoding decoding and checking that the result is the same
+ * as the initial value.
*/
entry.removeAttribute(historicalAttrType);
entry.addAttribute(hist.encodeAndPurge(), null);
EntryHistorical hist2 = EntryHistorical.newInstanceFromEntry(entry);
- assertEquals(hist2.encodeAndPurge(), hist.encodeAndPurge());
+ assertEquals(hist2.encodeAndPurge().toString(), hist.encodeAndPurge().toString());
return mods;
}
--
Gitblit v1.10.0