From 36ad5988b43dba78b8e2efa3aca5cff9443a93f0 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 24 Jun 2016 09:50:01 +0000
Subject: [PATCH] GenericSchemaTestCase.java: code cleanup

---
 opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java |  274 +++++++++++++++---------------------------------------
 1 files changed, 75 insertions(+), 199 deletions(-)

diff --git a/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
index cefa1b5..9a30f66 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/schema/GenericSchemaTestCase.java
@@ -20,7 +20,9 @@
 import static org.opends.server.util.ServerConstants.*;
 
 import java.io.File;
+import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.TreeSet;
 
@@ -51,18 +53,12 @@
    */
   @Override
   @BeforeClass
-  public void setUp()
-         throws Exception
+  public void setUp() throws Exception
   {
     TestCaseUtils.startServer();
   }
 
-
-
-  /**
-   * Tests to ensure that all attribute syntaxes defined in the schema have
-   * valid OIDs.
-   */
+  /** Tests to ensure that all attribute syntaxes defined in the schema have valid OIDs. */
   @Test
   public void testEnsureValidSyntaxOIDs()
   {
@@ -77,26 +73,10 @@
       }
     }
 
-    if (! invalidOIDs.isEmpty())
-    {
-      StringBuilder message = new StringBuilder();
-      message.append("All attribute syntaxes defined in OpenDS must have valid OIDs assigned.").append(EOL);
-      message.append("Attribute syntaxes without valid OIDs:").append(EOL);
-      for (String s : invalidOIDs)
-      {
-        message.append("- ").append(s).append(EOL);
-      }
-
-      throw new AssertionError(message.toString());
-    }
+    throwIfInvalidOidsExist("attribute syntaxes", invalidOIDs);
   }
 
-
-
-  /**
-   * Tests to ensure that all matching rules defined in the schema have valid
-   * OIDs.
-   */
+  /** Tests to ensure that all matching rules defined in the schema have valid OIDs. */
   @Test
   public void testEnsureValidMatchingRuleOIDs()
   {
@@ -111,28 +91,11 @@
       }
     }
 
-    if (! invalidOIDs.isEmpty())
-    {
-      StringBuilder message = new StringBuilder();
-      message.append("All matching rules defined in OpenDS must have valid ").append("OIDs assigned.");
-      message.append(EOL);
-      message.append("Matching rules without valid OIDs:");
-      message.append(EOL);
-      for (String s : invalidOIDs)
-      {
-        message.append("- ").append(s);
-        message.append(EOL);
-      }
-
-      throw new AssertionError(message.toString());
-    }
+    throwIfInvalidOidsExist("matching rules", invalidOIDs);
   }
 
-
-
   /**
-   * Tests to ensure that all attribute types defined in the schema have valid
-   * OIDs.
+   * Tests to ensure that all attribute types defined in the schema have valid OIDs.
    *
    * @throws  Exception  If an unexpected problem occurs.
    */
@@ -142,35 +105,9 @@
   {
     TreeSet<String> invalidOIDs = new TreeSet<>();
 
-    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
-    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
-    for (File f : schemaDir.listFiles())
+    for (File f : getSchemaFiles())
     {
-      if (! f.getName().toLowerCase().endsWith(".ldif"))
-      {
-        // This could be some other kind of file, like ".svn".
-        continue;
-      }
-
-      LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
-      LDIFReader reader = new LDIFReader(importConfig);
-      Entry e = reader.readEntry();
-      reader.close();
-
-      if (e == null)
-      {
-        // An empty schema file.  This is OK.
-        continue;
-      }
-
-      List<Attribute> attrList = e.getAttribute(getAttributeTypesAttributeType());
-      if (attrList.isEmpty())
-      {
-        // No attribute types in the schema file.  This is OK.
-        continue;
-      }
-
-      for (Attribute a : attrList)
+      for (Attribute a : getAttributesFromSchemaFile(f, getAttributeTypesAttributeType()))
       {
         for (ByteString v : a)
         {
@@ -183,30 +120,14 @@
       }
     }
 
-    if (! invalidOIDs.isEmpty())
-    {
-      StringBuilder message = new StringBuilder();
-      message.append("All attribute types defined in OpenDS must have valid ").append("OIDs assigned.");
-      message.append(EOL);
-      message.append("Attribute types without valid OIDs:");
-      message.append(EOL);
-      for (String s : invalidOIDs)
-      {
-        message.append("- ").append(s);
-        message.append(EOL);
-      }
-
-      throw new AssertionError(message.toString());
-    }
+    throwIfInvalidOidsExist("attribute types", invalidOIDs);
   }
 
-
-
   /**
-   * Tests to ensure that all object classes defined in the schema have valid
-   * OIDs.
+   * Tests to ensure that all object classes defined in the schema have valid OIDs.
    *
-   * @throws  Exception  If an unexpected problem occurs.
+   * @throws Exception
+   *           If an unexpected problem occurs.
    */
   @Test
   public void testEnsureValidObjectClassOIDs()
@@ -214,36 +135,9 @@
   {
     TreeSet<String> invalidOIDs = new TreeSet<>();
 
-    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
-    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
-    for (File f : schemaDir.listFiles())
+    for (File f : getSchemaFiles())
     {
-      if (! f.getName().toLowerCase().endsWith(".ldif"))
-      {
-        // This could be some other kind of file, like ".svn".
-        continue;
-      }
-
-      LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
-      Entry e;
-      try (LDIFReader reader = new LDIFReader(importConfig))
-      {
-        e = reader.readEntry();
-        if (e == null)
-        {
-          // An empty schema file. This is OK.
-          continue;
-        }
-      }
-
-      List<Attribute> attrList = e.getAttribute("objectclasses");
-      if (attrList.isEmpty())
-      {
-        // No attribute types in the schema file.  This is OK.
-        continue;
-      }
-
-      for (Attribute a : attrList)
+      for (Attribute a : getAttributesFromSchemaFile(f, getObjectClassesAttributeType()))
       {
         for (ByteString v : a)
         {
@@ -256,21 +150,9 @@
       }
     }
 
-    if (! invalidOIDs.isEmpty())
-    {
-      StringBuilder message = new StringBuilder()
-          .append("All object classes defined in OpenDJ must have valid OIDs assigned.").append(EOL)
-          .append("Object classes without valid OIDs:").append(EOL);
-      for (String s : invalidOIDs)
-      {
-        message.append("- ").append(s).append(EOL);
-      }
-      throw new AssertionError(message.toString());
-    }
+    throwIfInvalidOidsExist("object classes", invalidOIDs);
   }
 
-
-
   /**
    * Tests to ensure that all name forms defined in the schema have valid OIDs.
    *
@@ -282,35 +164,9 @@
   {
     TreeSet<String> invalidOIDs = new TreeSet<>();
 
-    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
-    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
-    for (File f : schemaDir.listFiles())
+    for (File f : getSchemaFiles())
     {
-      if (! f.getName().toLowerCase().endsWith(".ldif"))
-      {
-        // This could be some other kind of file, like ".svn".
-        continue;
-      }
-
-      LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
-      LDIFReader reader = new LDIFReader(importConfig);
-      Entry e = reader.readEntry();
-      reader.close();
-
-      if (e == null)
-      {
-        // An empty schema file.  This is OK.
-        continue;
-      }
-
-      List<Attribute> attrList = e.getAttribute(getNameFormsAttributeType());
-      if (attrList.isEmpty())
-      {
-        // No attribute types in the schema file.  This is OK.
-        continue;
-      }
-
-      for (Attribute a : attrList)
+      for (Attribute a : getAttributesFromSchemaFile(f, getNameFormsAttributeType()))
       {
         for (ByteString v : a)
         {
@@ -323,24 +179,54 @@
       }
     }
 
-    if (! invalidOIDs.isEmpty())
-    {
-      StringBuilder message = new StringBuilder();
-      message.append("All name forms defined in OpenDS must have valid OIDs ").append("assigned.");
-      message.append(EOL);
-      message.append("Name forms without valid OIDs:");
-      message.append(EOL);
-      for (String s : invalidOIDs)
-      {
-        message.append("- ").append(s);
-        message.append(EOL);
-      }
+    throwIfInvalidOidsExist("name forms", invalidOIDs);
+  }
 
-      throw new AssertionError(message.toString());
+  private File[] getSchemaFiles()
+  {
+    String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
+    File schemaDir = new File(new File(buildRoot, "resource"), "schema");
+    return schemaDir.listFiles();
+  }
+
+  private List<Attribute> getAttributesFromSchemaFile(File f, AttributeType attributeType) throws Exception
+  {
+    Entry e = readSchemaEntry(f);
+    return e != null
+        ? e.getAttribute(attributeType)
+        // An empty schema file. This is OK.
+        : Collections.<Attribute> emptyList();
+  }
+
+  private Entry readSchemaEntry(File f) throws Exception
+  {
+    if (!f.getName().toLowerCase().endsWith(".ldif"))
+    {
+      // This could be some other kind of file, like ".svn".
+      return null;
+    }
+
+    LDIFImportConfig importConfig = new LDIFImportConfig(f.getAbsolutePath());
+    try (LDIFReader reader = new LDIFReader(importConfig))
+    {
+      return reader.readEntry();
     }
   }
 
-
+  private void throwIfInvalidOidsExist(String elementType, Set<String> invalidOIDs) throws AssertionError
+  {
+    if (! invalidOIDs.isEmpty())
+    {
+      StringBuilder message = new StringBuilder()
+          .append("All ").append(elementType).append(" defined in OpenDJ must have valid OIDs assigned." + EOL)
+          .append(elementType).append(" without valid OIDs:" + EOL);
+      for (String oid : invalidOIDs)
+      {
+        message.append("- ").append(oid).append(EOL);
+      }
+      throw new AssertionError(message.toString());
+    }
+  }
 
   /**
    * Indicates whether the string represents a valid numeric OID.
@@ -352,27 +238,13 @@
    */
   private boolean isNumericOID(String oid)
   {
-    // It must not be null, and it must not be empty.
-    if (oid == null || oid.length() == 0)
-    {
-      return false;
-    }
-
-    // It must start and end with numeric digits.
-    if (!Character.isDigit(oid.charAt(0)) ||
-        !Character.isDigit(oid.charAt(oid.length()-1)))
-    {
-      return false;
-    }
-
-    // It must contain at least one period.
-    if (!oid.contains("."))
-    {
-      return false;
-    }
-
-    // It must not contain any double periods.
-    if (oid.contains(".."))
+    if (oid == null
+        || oid.isEmpty()
+        || !startsAndEndsWithDigit(oid)
+        // It must contain at least one period.
+        || !oid.contains(".")
+        // It must not contain any double periods.
+        || oid.contains(".."))
     {
       return false;
     }
@@ -394,5 +266,9 @@
     // If we've gotten here, then it should be a valid numeric OID.
     return true;
   }
-}
 
+  private boolean startsAndEndsWithDigit(String oid)
+  {
+    return Character.isDigit(oid.charAt(0)) && Character.isDigit(oid.charAt(oid.length() - 1));
+  }
+}

--
Gitblit v1.10.0