From 90895cfd33e7cb3912978f1b5a213ddaeadf873d Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Fri, 06 Sep 2013 09:10:22 +0000
Subject: [PATCH] Code refactoring for OPENDJ-1122

---
 opends/src/guitools/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java |   97 +++++++++++++++++++-----------------------------
 1 files changed, 38 insertions(+), 59 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java b/opends/src/guitools/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
index 13b38fa..cb92175 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
@@ -84,14 +84,16 @@
   public void readSchema(InitialLdapContext ctx) throws NamingException,
       DirectoryException, InitializationException, ConfigException
   {
-    SearchControls searchControls = new SearchControls();
+    final String[] schemaAttrs =
+        { ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC,
+          ConfigConstants.ATTR_OBJECTCLASSES_LC };
+
+    final SearchControls searchControls = new SearchControls();
     searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
-    String[] schemaAttrs =
-        { ConfigConstants.ATTR_OBJECTCLASSES_LC,
-          ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC };
     searchControls.setReturningAttributes(schemaAttrs);
-    String filter = BrowserController.ALL_OBJECTS_FILTER;
-    NamingEnumeration<SearchResult> srs =
+
+    final String filter = BrowserController.ALL_OBJECTS_FILTER;
+    final NamingEnumeration<SearchResult> srs =
         ctx.search(ConfigConstants.DN_DEFAULT_SCHEMA_ROOT, filter,
             searchControls);
     SearchResult sr = null;
@@ -106,38 +108,53 @@
     {
       srs.close();
     }
-    CustomSearchResult csr =
+    final CustomSearchResult csr =
         new CustomSearchResult(sr, ConfigConstants.DN_DEFAULT_SCHEMA_ROOT);
 
     schema = getBaseSchema();
 
-    List<Object> attrs =
-        csr.getAttributeValues(ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC);
-    Set<String> remainingAttrs = new HashSet<String>();
-    for (Object o : attrs)
+    for (final String str : schemaAttrs)
     {
-      remainingAttrs.add((String) o);
+      registerSchemaAttr(csr, str);
     }
+  }
+
+  private void registerSchemaAttr(final CustomSearchResult csr,
+      final String schemaAttr) throws DirectoryException
+  {
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    final Set<String> remainingAttrs =
+        new HashSet<String>((List) csr.getAttributeValues(schemaAttr));
 
     while (!remainingAttrs.isEmpty())
     {
       DirectoryException lastException = null;
       boolean oneRegistered = false;
-      Set<String> registeredAttrs = new HashSet<String>();
-      for (String attrDefinition : remainingAttrs)
+      Set<String> registered = new HashSet<String>();
+      for (final String definition : remainingAttrs)
       {
-        ByteStringBuilder sb = new ByteStringBuilder();
-        sb.append(attrDefinition);
+        final ByteStringBuilder sb = new ByteStringBuilder();
+        sb.append(definition);
         try
         {
-          AttributeType attrType =
-              AttributeTypeSyntax.decodeAttributeType(sb, schema, false);
-          schema.registerAttributeType(attrType, true);
+          if (schemaAttr.equals(ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC))
+          {
+            final AttributeType attrType =
+                AttributeTypeSyntax.decodeAttributeType(sb, schema, false);
+            schema.registerAttributeType(attrType, true);
+          }
+          else if (schemaAttr.equals(ConfigConstants.ATTR_OBJECTCLASSES_LC))
+          {
+            final ObjectClass oc =
+                ObjectClassSyntax.decodeObjectClass(sb, schema, false);
+            schema.registerObjectClass(oc, true);
+          }
           oneRegistered = true;
-          registeredAttrs.add(attrDefinition);
+          registered.add(definition);
         }
         catch (DirectoryException de)
         {
+          System.out.println(de.getMessage());
           lastException = de;
         }
       }
@@ -145,45 +162,7 @@
       {
         throw lastException;
       }
-      remainingAttrs.removeAll(registeredAttrs);
-    }
-
-    List<Object> objectClasses =
-        csr.getAttributeValues(ConfigConstants.ATTR_OBJECTCLASSES_LC);
-
-    Set<String> remainingOcs = new HashSet<String>();
-    for (Object o : objectClasses)
-    {
-      remainingOcs.add((String) o);
-    }
-
-    while (!remainingOcs.isEmpty())
-    {
-      DirectoryException lastException = null;
-      boolean oneRegistered = false;
-      Set<String> registeredOcs = new HashSet<String>();
-      for (String ocDefinition : remainingOcs)
-      {
-        ByteStringBuilder sb = new ByteStringBuilder();
-        sb.append(ocDefinition);
-        try
-        {
-          ObjectClass oc =
-              ObjectClassSyntax.decodeObjectClass(sb, schema, false);
-          schema.registerObjectClass(oc, true);
-          oneRegistered = true;
-          registeredOcs.add(ocDefinition);
-        }
-        catch (DirectoryException de)
-        {
-          lastException = de;
-        }
-      }
-      if (!oneRegistered)
-      {
-        throw lastException;
-      }
-      remainingOcs.removeAll(registeredOcs);
+      remainingAttrs.removeAll(registered);
     }
   }
 

--
Gitblit v1.10.0