From 352227d9327a40607111ed43bee145a743b812d3 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 10 Feb 2016 13:41:18 +0000
Subject: [PATCH] Prep work for OPENDJ-1342: align APIs for RDNs

---
 opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java                |  130 +------------------------
 opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java                    |  135 +-------------------------
 opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java |   31 +-----
 3 files changed, 19 insertions(+), 277 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java
index 6d1b930..9bbb015 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/TemplateEntry.java
@@ -35,6 +35,7 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 
+import org.forgerock.opendj.ldap.AVA;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.opends.server.core.DirectoryServer;
@@ -148,40 +149,20 @@
   {
     if (dn == null)
     {
-      RDN rdn;
       AttributeType[] rdnAttrs = template.getRDNAttributes();
-      if (rdnAttrs.length == 1)
+      AVA[] avas = new AVA[rdnAttrs.length];
+      for (int i = 0; i < rdnAttrs.length; i++)
       {
-        AttributeType t = rdnAttrs[0];
+        AttributeType t = rdnAttrs[i];
         TemplateValue v = getValue(t);
         if (v == null)
         {
           return null;
         }
-
-        rdn = new RDN(t, ByteString.valueOfUtf8(v.getValue().toString()));
-      }
-      else
-      {
-        String[]         names  = new String[rdnAttrs.length];
-        ByteString[] values = new ByteString[rdnAttrs.length];
-        for (int i=0; i < rdnAttrs.length; i++)
-        {
-          AttributeType t = rdnAttrs[i];
-          TemplateValue v = getValue(t);
-          if (v == null)
-          {
-            return null;
-          }
-
-          names[i]  = t.getNameOrOID();
-          values[i] = ByteString.valueOfUtf8(v.getValue().toString());
-        }
-
-        rdn = new RDN(rdnAttrs, names, values);
+        avas[i] = new AVA(t, v.getValue());
       }
 
-      dn = parentDN.child(rdn);
+      dn = parentDN.child(new RDN(avas));
     }
 
     return dn;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java b/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
index 90e720f..f5b4e70 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/types/RDN.java
@@ -33,6 +33,7 @@
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CodingErrorAction;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -106,70 +107,15 @@
     avas.add(new AVA(attributeType, attributeName, attributeValue));
   }
 
-
-
   /**
-   * Creates a new RDN with the provided information.  The number of
-   * type, name, and value elements must be nonzero and equal.
+   * Creates a new RDN with the provided {@link AVA}s.
    *
-   * @param  attributeTypes   The set of attribute types for this RDN.
-   *                          It must not be empty or {@code null}.
-   * @param  attributeNames   The set of user-provided names for this
-   *                          RDN.  It must have the same number of
-   *                          elements as the {@code attributeTypes}
-   *                          argument.
-   * @param  attributeValues  The set of values for this RDN.  It must
-   *                          have the same number of elements as the
-   *                          {@code attributeTypes} argument.
+   * @param avas
+   *          The AVAs that will define the new RDN
    */
-  public RDN(List<AttributeType> attributeTypes,
-             List<String> attributeNames,
-             List<ByteString> attributeValues)
+  public RDN(AVA... avas)
   {
-    Reject.ifNull(attributeTypes, attributeNames, attributeValues);
-    Reject.ifTrue(attributeTypes.isEmpty(), "attributeTypes must not be empty");
-    Reject.ifFalse(attributeNames.size() == attributeTypes.size(),
-            "attributeNames must have the same number of elements than attributeTypes");
-    Reject.ifFalse(attributeValues.size() == attributeTypes.size(),
-            "attributeValues must have the same number of elements than attributeTypes");
-
-    avas = new ArrayList<>(attributeTypes.size());
-    for (int i = 0; i < attributeTypes.size(); i++)
-    {
-      avas.add(new AVA(attributeTypes.get(i), attributeNames.get(i), attributeValues.get(i)));
-    }
-  }
-
-
-
-  /**
-   * Creates a new RDN with the provided information.  The number of
-   * type, name, and value elements must be nonzero and equal.
-   *
-   * @param  attributeTypes   The set of attribute types for this RDN.
-   *                          It must not be empty or {@code null}.
-   * @param  attributeNames   The set of user-provided names for this
-   *                          RDN.  It must have the same number of
-   *                          elements as the {@code attributeTypes}
-   *                          argument.
-   * @param  attributeValues  The set of values for this RDN.  It must
-   *                          have the same number of elements as the
-   *                          {@code attributeTypes} argument.
-   */
-  public RDN(AttributeType[] attributeTypes, String[] attributeNames, ByteString[] attributeValues)
-  {
-    Reject.ifNull(attributeTypes, attributeNames, attributeValues);
-    Reject.ifFalse(attributeTypes.length > 0, "attributeTypes must not be empty");
-    Reject.ifFalse(attributeNames.length == attributeTypes.length,
-        "attributeNames must have the same number of elements than attributeTypes");
-    Reject.ifFalse(attributeValues.length == attributeTypes.length,
-        "attributeValues must have the same number of elements than attributeTypes");
-
-    avas = new ArrayList<>(attributeTypes.length);
-    for (int i = 0; i < attributeTypes.length; i++)
-    {
-      avas.add(new AVA(attributeTypes[i], attributeNames[i], attributeValues[i]));
-    }
+    this(Arrays.asList(Reject.checkNotNull(avas, "avas must not be null")));
   }
 
   /**
@@ -185,8 +131,6 @@
     this.avas = new ArrayList<>(avas);
   }
 
-
-
   /**
    * Creates a new RDN with the provided information.
    *
@@ -233,30 +177,6 @@
     return false;
   }
 
-
-
-  /**
-   * Indicates whether this RDN includes the specified attribute type.
-   *
-   * @param  lowerName  The name or OID for the attribute type for
-   *                    which to make the determination, formatted in
-   *                    all lowercase characters.
-   *
-   * @return  <CODE>true</CODE> if the RDN includes the specified
-   *          attribute type, or <CODE>false</CODE> if not.
-   */
-  public boolean hasAttributeType(String lowerName)
-  {
-    for (AVA ava : avas)
-    {
-      if (ava.getAttributeType().hasNameOrOID(lowerName))
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
   /**
    * Retrieves the attribute value that is associated with the
    * specified attribute type.
@@ -291,33 +211,6 @@
     return avas.size() > 1;
   }
 
-
-
-  /**
-   * Indicates whether this RDN contains the specified type-value
-   * pair.
-   *
-   * @param  type   The attribute type for which to make the
-   *                determination.
-   * @param  value  The value for which to make the determination.
-   *
-   * @return  <CODE>true</CODE> if this RDN contains the specified
-   *          attribute value, or <CODE>false</CODE> if not.
-   */
-  public boolean hasValue(AttributeType type, ByteString value)
-  {
-    for (AVA ava : avas)
-    {
-      if (ava.getAttributeType().equals(type) && ava.getAttributeValue().equals(value))
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
-
-
   /**
    * Adds the provided type-value pair from this RDN.  Note that this
    * is intended only for internal use when constructing DN values.
@@ -634,22 +527,6 @@
     }
   }
 
-
-
-  /**
-   * Creates a duplicate of this RDN that can be modified without
-   * impacting this RDN.
-   *
-   * @return  A duplicate of this RDN that can be modified without
-   *          impacting this RDN.
-   */
-  public RDN duplicate()
-  {
-    return new RDN(avas);
-  }
-
-
-
   /**
    * Indicates whether the provided object is equal to this RDN.  It
    * will only be considered equal if it is an RDN object that
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java b/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
index 5cdfa3e..aab6947 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/types/TestRDN.java
@@ -30,7 +30,7 @@
 import static org.opends.server.core.DirectoryServer.*;
 import static org.testng.Assert.*;
 
-import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
 
 import org.forgerock.opendj.ldap.AVA;
@@ -130,13 +130,7 @@
    */
   @Test
   public void testConstructorMultiAVA() throws Exception {
-    AttributeType[]  attrTypes  = { AT_DC, AT_CN };
-    String[]         attrNames  = { AT_DC.getNameOrOID(),
-                                    AT_CN.getNameOrOID() };
-    ByteString[]     attrValues = { AV_DC_ORG, AV_CN };
-
-    RDN rdn = new RDN(attrTypes, attrNames, attrValues);
-
+    RDN rdn = new RDN(new AVA(AT_DC, AV_DC_ORG), new AVA(AT_CN, AV_CN));
     assertEquals(rdn.size(), 2);
 
     Iterator<AVA> it = rdn.iterator();
@@ -162,19 +156,7 @@
    */
   @Test
   public void testConstructorMultiAVAList() throws Exception {
-    ArrayList<AttributeType>  typeList  = new ArrayList<>();
-    ArrayList<String>         nameList  = new ArrayList<>();
-    ArrayList<ByteString>     valueList = new ArrayList<>();
-
-    typeList.add(AT_DC);
-    nameList.add(AT_DC.getNameOrOID());
-    valueList.add(AV_DC_ORG);
-
-    typeList.add(AT_CN);
-    nameList.add(AT_CN.getNameOrOID());
-    valueList.add(AV_CN);
-
-    RDN rdn = new RDN(typeList, nameList, valueList);
+    RDN rdn = new RDN(Arrays.asList(new AVA(AT_DC, AV_DC_ORG), new AVA(AT_CN, AV_CN)));
 
     assertEquals(rdn.size(), 2);
 
@@ -313,13 +295,7 @@
    */
   @Test
   public void testGetAttributeName() throws Exception {
-    AttributeType[]  attrTypes  = { AT_DC, AT_CN };
-    String[]         attrNames  = { AT_DC.getNameOrOID(),
-                                    AT_CN.getNameOrOID() };
-    ByteString[]     attrValues = { AV_DC_ORG, AV_CN };
-
-    RDN rdn = new RDN(attrTypes, attrNames, attrValues);
-
+    RDN rdn = new RDN(new AVA(AT_DC, AV_DC_ORG), new AVA(AT_CN, AV_CN));
     Iterator<AVA> it = rdn.iterator();
     AVA ava1 = it.next();
     AVA ava2 = it.next();
@@ -331,7 +307,7 @@
   @SuppressWarnings("javadoc")
   @Test(expectedExceptions = IllegalArgumentException.class)
   public void ensureRDNIsCreatedWithNonEmptyArguments() throws Exception {
-      new RDN(new AttributeType[0], new String[0], new ByteString[0]);
+      new RDN(new AVA[0]);
   }
 
   /**
@@ -342,12 +318,7 @@
    */
   @Test
   public void testGetAttributeType() throws Exception {
-    AttributeType[]  attrTypes  = { AT_DC, AT_CN };
-    String[]         attrNames  = { AT_DC.getNameOrOID(),
-                                    AT_CN.getNameOrOID() };
-    ByteString[]     attrValues = { AV_DC_ORG, AV_CN };
-
-    RDN rdn = new RDN(attrTypes, attrNames, attrValues);
+    RDN rdn = new RDN(new AVA(AT_DC, AV_DC_ORG), new AVA(AT_CN, AV_CN));
     Iterator<AVA> it = rdn.iterator();
     assertEquals(it.next().getAttributeType(), AT_DC);
     assertEquals(it.next().getAttributeType(), AT_CN);
@@ -361,12 +332,7 @@
    */
   @Test
   public void testGetAttributeValue() throws Exception {
-    AttributeType[]  attrTypes  = { AT_DC, AT_CN };
-    String[]         attrNames  = { AT_DC.getNameOrOID(),
-                                    AT_CN.getNameOrOID() };
-    ByteString[]     attrValues = { AV_DC_ORG, AV_CN };
-
-    RDN rdn = new RDN(attrTypes, attrNames, attrValues);
+    RDN rdn = new RDN(new AVA(AT_DC, AV_DC_ORG), new AVA(AT_CN, AV_CN));
     Iterator<AVA> it = rdn.iterator();
     assertEquals(it.next().getAttributeValue(), AV_DC_ORG);
     assertEquals(it.next().getAttributeValue(), AV_CN);
@@ -403,27 +369,6 @@
     assertEquals(rdn.size(), 2);
   }
 
-
-
-  /**
-   * Test hasAttributeType.
-   *
-   * @throws Exception
-   *           If the test failed unexpectedly.
-   */
-  @Test
-  public void testHasAttributeType1() throws Exception {
-    RDN rdn = new RDN(AT_DC, AV_DC_ORG);
-
-    assertTrue(rdn.hasAttributeType(AT_DC));
-    assertTrue(rdn.hasAttributeType("dc"));
-    assertTrue(rdn.hasAttributeType(AT_DC.getOID()));
-    assertFalse(rdn.hasAttributeType(AT_CN));
-    assertFalse(rdn.hasAttributeType("cn"));
-  }
-
-
-
   /**
    * Test isMultiValued.
    *
@@ -440,27 +385,6 @@
     assertTrue(rdn.isMultiValued());
   }
 
-
-
-  /**
-   * Tests hasValue.
-   *
-   * @throws Exception
-   *           If the test failed unexpectedly.
-   */
-  @Test
-  public void testHasValue() throws Exception {
-    RDN rdn = new RDN(AT_DC, AV_DC_ORG);
-    assertTrue(rdn.hasValue(AT_DC, AV_DC_ORG));
-    assertFalse(rdn.hasValue(AT_CN, AV_CN));
-
-    rdn.addValue(AT_CN, AT_CN.getNameOrOID(), AV_CN);
-    assertTrue(rdn.hasValue(AT_DC, AV_DC_ORG));
-    assertTrue(rdn.hasValue(AT_CN, AV_CN));
-  }
-
-
-
   /**
    * Tests addValue with a duplicate value.
    *
@@ -494,46 +418,6 @@
     assertEquals(rdn.toString(), stringRDN);
   }
 
-
-
-  /**
-   * Tests the duplicate method with a single-valued RDN.
-   *
-   * @throws Exception
-   *           If the test failed unexpectedly.
-   */
-  @Test
-  public void testDuplicateSingle() {
-    RDN rdn1 = new RDN(AT_DC, AV_DC_ORG);
-    RDN rdn2 = rdn1.duplicate();
-
-    assertNotSame(rdn1, rdn2);
-    assertEquals(rdn1, rdn2);
-  }
-
-
-
-  /**
-   * Tests the duplicate method with a multivalued RDN.
-   *
-   * @throws Exception
-   *           If the test failed unexpectedly.
-   */
-  @Test
-  public void testDuplicateMultiValued() {
-    AttributeType[]  types  = new AttributeType[] { AT_DC, AT_CN };
-    String[]         names  = new String[] { "dc", "cn" };
-    ByteString[]     values = new ByteString[] { AV_DC_ORG, AV_CN };
-
-    RDN rdn1 = new RDN(types, names, values);
-    RDN rdn2 = rdn1.duplicate();
-
-    assertNotSame(rdn1, rdn2);
-    assertEquals(rdn1, rdn2);
-  }
-
-
-
   /**
    * RDN equality test data provider.
    *

--
Gitblit v1.10.0