From eaee3f6a42c1a129f07e2364a4c32c59b9e03e19 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 09 Feb 2016 15:22:22 +0000
Subject: [PATCH] Prep work for OPENDJ-1342: align APIs for RDNs

---
 opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java |   53 +++++++++++++++++++++--------------------------------
 1 files changed, 21 insertions(+), 32 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java b/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java
index 825b916..acd07bc 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/plugins/UniqueAttributePlugin.java
@@ -39,6 +39,7 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.AVA;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
@@ -65,7 +66,6 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.IndexType;
 import org.opends.server.types.Modification;
-import org.opends.server.types.RDN;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.operation.PluginOperation;
@@ -253,9 +253,8 @@
     {
       Attribute a = m.getAttribute();
       AttributeType t = a.getAttributeDescription().getAttributeType();
-      if (! config.getType().contains(t))
+      if (!isModifyingUniqueAttribute(t, config))
       {
-        // This modification isn't for a unique attribute.
         continue;
       }
 
@@ -368,17 +367,15 @@
     }
 
     List<ByteString> recordedValues = new LinkedList<>();
-    RDN newRDN = modifyDNOperation.getNewRDN();
-    for (int i=0; i < newRDN.getNumValues(); i++)
+    for (AVA ava : modifyDNOperation.getNewRDN())
     {
-      AttributeType t = newRDN.getAttributeType(i);
-      if (! config.getType().contains(t))
+      AttributeType t = ava.getAttributeType();
+      if (!isModifyingUniqueAttribute(t, config))
       {
-        // We aren't interested in this attribute type.
         continue;
       }
 
-      ByteString v = newRDN.getAttributeValue(i);
+      ByteString v = ava.getAttributeValue();
       DN entryDN = modifyDNOperation.getEntryDN();
       PreOperation stop =
           checkUniqueness(entryDN, t, v, baseDNs, recordedValues, config);
@@ -391,9 +388,11 @@
     return PluginResult.PreOperation.continueOperationProcessing();
   }
 
+  private boolean isModifyingUniqueAttribute(AttributeType t, UniqueAttributePluginCfg config)
+  {
+    return config.getType().contains(t);
+  }
 
-
-  /** {@inheritDoc} */
   @Override
   public final void doPostSynchronization(
                          PostSynchronizationAddOperation addOperation)
@@ -442,9 +441,8 @@
     {
       Attribute a = m.getAttribute();
       AttributeType t = a.getAttributeDescription().getAttributeType();
-      if (! config.getType().contains(t))
+      if (!isModifyingUniqueAttribute(t, config))
       {
-        // This modification isn't for a unique attribute.
         continue;
       }
 
@@ -499,19 +497,14 @@
 
     DN entryDN = modifyDNOperation.getEntryDN();
     DN updatedEntryDN = modifyDNOperation.getUpdatedEntry().getName();
-    RDN newRDN = modifyDNOperation.getNewRDN();
-    for (int i=0; i < newRDN.getNumValues(); i++)
+    for (AVA ava : modifyDNOperation.getNewRDN())
     {
-      AttributeType t = newRDN.getAttributeType(i);
-      if (! config.getType().contains(t))
+      AttributeType t = ava.getAttributeType();
+      if (isModifyingUniqueAttribute(t, config))
       {
-        // We aren't interested in this attribute type.
-        continue;
+        ByteString v = ava.getAttributeValue();
+        sendAlertForUnresolvedConflict(modifyDNOperation, entryDN, updatedEntryDN, t, v, baseDNs, config);
       }
-
-      ByteString v = newRDN.getAttributeValue(i);
-      sendAlertForUnresolvedConflict(modifyDNOperation, entryDN,
-          updatedEntryDN, t, v, baseDNs, config);
     }
   }
 
@@ -830,9 +823,8 @@
     {
       Attribute a = m.getAttribute();
       AttributeType t = a.getAttributeDescription().getAttributeType();
-      if (! config.getType().contains(t))
+      if (!isModifyingUniqueAttribute(t, config))
       {
-        // This modification isn't for a unique attribute.
         continue;
       }
 
@@ -884,16 +876,13 @@
       return PostOperation.continueOperationProcessing();
     }
 
-    RDN newRDN = modifyDNOperation.getNewRDN();
-    for (int i=0; i < newRDN.getNumValues(); i++)
+    for (AVA ava : modifyDNOperation.getNewRDN())
     {
-      AttributeType t = newRDN.getAttributeType(i);
-      if (! config.getType().contains(t))
+      AttributeType t = ava.getAttributeType();
+      if (isModifyingUniqueAttribute(t, config))
       {
-        // We aren't interested in this attribute type.
-        continue;
+        uniqueAttrValue2Dn.remove(ava.getAttributeValue());
       }
-      uniqueAttrValue2Dn.remove(newRDN.getAttributeValue(i));
     }
     return PostOperation.continueOperationProcessing();
   }

--
Gitblit v1.10.0