mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Gaetan Boismal
02.38.2015 75b73b74de454814f71324cf7ea989beaa3d72ff
OPENDJ-1122 Code cleanup

* src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
* src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
** Autorefactor'ed file + Reformat
** Minor code simplification
2 files modified
155 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java 73 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java 82 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/RemoteSchemaLoader.java
@@ -22,13 +22,11 @@
 *
 *
 *      Copyright 2009-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2013-2014 ForgeRock AS
 *      Portions Copyright 2013-2015 ForgeRock AS
 */
package org.opends.guitools.controlpanel.util;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.naming.NamingEnumeration;
@@ -37,35 +35,23 @@
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.opends.guitools.controlpanel.browser.BrowserController;
import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
import org.opends.server.config.ConfigConstants;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.schema.AttributeTypeSyntax;
import org.opends.server.schema.ObjectClassSyntax;
import org.opends.server.types.AttributeType;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
/**
 * Class used to retrieve the schema from the schema files.
 */
/** Class used to retrieve the schema from the schema files. */
public class RemoteSchemaLoader extends SchemaLoader
{
  private Schema schema;
  /**
   * Constructor.
   */
  public RemoteSchemaLoader()
  {
    super();
  }
  /**
   * Reads the schema.
   *
   * @param ctx
@@ -80,21 +66,16 @@
   *           if an error occurs loading the configuration required to use the
   *           schema classes.
   */
  public void readSchema(InitialLdapContext ctx) throws NamingException,
      DirectoryException, InitializationException, ConfigException
  public void readSchema(InitialLdapContext ctx) throws NamingException, DirectoryException, InitializationException,
      ConfigException
  {
    final String[] schemaAttrs =
        { ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC,
          ConfigConstants.ATTR_OBJECTCLASSES_LC };
    final String[] schemaAttrs = { ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC, ConfigConstants.ATTR_OBJECTCLASSES_LC };
    final SearchControls searchControls = new SearchControls();
    searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
    searchControls.setReturningAttributes(schemaAttrs);
    final String filter = BrowserController.ALL_OBJECTS_FILTER;
    final NamingEnumeration<SearchResult> srs =
        ctx.search(ConfigConstants.DN_DEFAULT_SCHEMA_ROOT, filter,
            searchControls);
    final NamingEnumeration<SearchResult> srs = ctx.search(
        ConfigConstants.DN_DEFAULT_SCHEMA_ROOT, BrowserController.ALL_OBJECTS_FILTER, searchControls);
    SearchResult sr = null;
    try
    {
@@ -107,48 +88,38 @@
    {
      srs.close();
    }
    final CustomSearchResult csr =
        new CustomSearchResult(sr, ConfigConstants.DN_DEFAULT_SCHEMA_ROOT);
    final CustomSearchResult csr = new CustomSearchResult(sr, ConfigConstants.DN_DEFAULT_SCHEMA_ROOT);
    schema = getBaseSchema();
    for (final String str : schemaAttrs)
    {
      registerSchemaAttr(csr, str);
    }
  }
  private void registerSchemaAttr(final CustomSearchResult csr,
      final String schemaAttr) throws DirectoryException
  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));
    final Set<Object> remainingAttrs = new HashSet<>(csr.getAttributeValues(schemaAttr));
    while (!remainingAttrs.isEmpty())
    {
      DirectoryException lastException = null;
      boolean oneRegistered = false;
      Set<String> registered = new HashSet<String>();
      for (final String definition : remainingAttrs)
      final Set<Object> registered = new HashSet<>();
      for (final Object definition : remainingAttrs)
      {
        final ByteStringBuilder sb = new ByteStringBuilder();
        sb.append(definition);
        try
        {
          if (schemaAttr.equals(ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC))
          switch (schemaAttr)
          {
            final AttributeType attrType =
                AttributeTypeSyntax.decodeAttributeType(sb, schema, false);
            schema.registerAttributeType(attrType, true);
          case ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC:
            schema.registerAttributeType(AttributeTypeSyntax.decodeAttributeType(sb, schema, false), true);
            break;
          case ConfigConstants.ATTR_OBJECTCLASSES_LC:
            schema.registerObjectClass(ObjectClassSyntax.decodeObjectClass(sb, schema, false), true);
            break;
          }
          else if (schemaAttr.equals(ConfigConstants.ATTR_OBJECTCLASSES_LC))
          {
            final ObjectClass oc =
                ObjectClassSyntax.decodeObjectClass(sb, schema, false);
            schema.registerObjectClass(oc, true);
          }
          oneRegistered = true;
          registered.add(definition);
        }
        catch (DirectoryException de)
@@ -156,7 +127,7 @@
          lastException = de;
        }
      }
      if (!oneRegistered)
      if (registered.isEmpty())
      {
        throw lastException;
      }
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/SchemaLoader.java
@@ -24,7 +24,6 @@
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2013-2015 ForgeRock AS.
 */
package org.opends.guitools.controlpanel.util;
import static org.opends.messages.ConfigMessages.*;
@@ -33,6 +32,7 @@
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.schema.Syntax;
@@ -41,43 +41,38 @@
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.SchemaConfigManager;
import org.opends.server.schema.SchemaConstants;
import org.opends.server.types.AttributeType;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.Schema;
import com.forgerock.opendj.util.OperatingSystem;
/**
 * Class used to retrieve the schema from the schema files.
 */
/** Class used to retrieve the schema from the schema files. */
public class SchemaLoader
{
  private Schema schema;
  private final String[] attrsToKeep = {
  private static final String[] ATTRIBUTES_TO_KEEP = {
    ConfigConstants.ATTR_ATTRIBUTE_TYPES_LC,
    ConfigConstants.ATTR_OBJECTCLASSES_LC,
    ConfigConstants.ATTR_NAME_FORMS_LC,
    ConfigConstants.ATTR_DIT_CONTENT_RULES_LC,
    ConfigConstants.ATTR_DIT_STRUCTURE_RULES_LC,
    ConfigConstants.ATTR_MATCHING_RULE_USE_LC };
  private final String[] ocsToKeep = { "top" };
  private static final String[] OBJECTCLASS_TO_KEEP = { SchemaConstants.TOP_OBJECTCLASS_NAME };
  private final ArrayList<ObjectClass> objectclassesToKeep =
      new ArrayList<ObjectClass>();
  private final ArrayList<AttributeType> attributesToKeep =
      new ArrayList<AttributeType>();
  private final ArrayList<MatchingRule> matchingRulesToKeep =
      new ArrayList<MatchingRule>();
  private final ArrayList<Syntax> syntaxesToKeep = new ArrayList<>();
  private final List<ObjectClass> objectclassesToKeep = new ArrayList<>();
  private final List<AttributeType> attributesToKeep = new ArrayList<>();
  private final List<MatchingRule> matchingRulesToKeep = new ArrayList<>();
  private final List<Syntax> syntaxesToKeep = new ArrayList<>();
  /**
   * Constructor.
   */
  /** Constructor. */
  public SchemaLoader()
  {
    Schema sc = DirectoryServer.getSchema();
    for (String name : ocsToKeep)
    for (String name : OBJECTCLASS_TO_KEEP)
    {
      ObjectClass oc = sc.getObjectClass(name.toLowerCase());
      if (oc != null)
@@ -85,7 +80,7 @@
        objectclassesToKeep.add(oc);
      }
    }
    for (String name : attrsToKeep)
    for (String name : ATTRIBUTES_TO_KEEP)
    {
      AttributeType attr = sc.getAttributeType(name.toLowerCase());
      if (attr != null)
@@ -99,16 +94,8 @@
  private static String getSchemaDirectoryPath()
  {
    File schemaDir =
        DirectoryServer.getEnvironmentConfig().getSchemaDirectory();
    if (schemaDir != null)
    {
      return schemaDir.getAbsolutePath();
    }
    else
    {
      return null;
    }
    File schemaDir = DirectoryServer.getEnvironmentConfig().getSchemaDirectory();
    return schemaDir != null ? schemaDir.getAbsolutePath() : null;
  }
  /**
@@ -121,8 +108,7 @@
   * @throws DirectoryException
   *           if there is an error registering the minimal objectclasses.
   */
  public void readSchema() throws DirectoryException, ConfigException,
      InitializationException
  public void readSchema() throws DirectoryException, ConfigException, InitializationException
  {
    schema = getBaseSchema();
@@ -139,39 +125,28 @@
      }
      else if (!schemaDir.isDirectory())
      {
        LocalizableMessage message =
            ERR_CONFIG_SCHEMA_DIR_NOT_DIRECTORY.get(schemaDirPath);
        LocalizableMessage message = ERR_CONFIG_SCHEMA_DIR_NOT_DIRECTORY.get(schemaDirPath);
        throw new InitializationException(message);
      }
      FileFilter ldifFiles = new FileFilter()
      FileFilter ldifFilesFilter = new FileFilter()
      {
        /** {@inheritDoc} */
        @Override
        public boolean accept(File f)
        {
          boolean accept = false;
          if (f != null)
          {
            if (f.isDirectory())
            {
              accept = true;
              return true;
            }
            else if (OperatingSystem.isWindows())
            {
              accept = f.getName().toLowerCase().endsWith(".ldif");
            }
            else
            {
              accept = f.getName().endsWith(".ldif");
            }
            return OperatingSystem.isWindows() ? f.getName().toLowerCase().endsWith(".ldif")
                                               : f.getName().endsWith(".ldif");
          }
          return accept;
          return false;
        }
      };
      File[] schemaFiles = schemaDir.listFiles(ldifFiles);
      int size = schemaFiles.length;
      ArrayList<String> fileList = new ArrayList<String>(size);
      File[] schemaFiles = schemaDir.listFiles(ldifFilesFilter);
      List<String> fileList = new ArrayList<>(schemaFiles.length);
      for (File f : schemaFiles)
      {
        if (f.isFile())
@@ -184,16 +159,9 @@
      fileList.toArray(fileNames);
      Arrays.sort(fileNames);
    }
    catch (InitializationException ie)
    {
      throw ie;
    }
    catch (Exception e)
    {
      LocalizableMessage message =
          ERR_CONFIG_SCHEMA_CANNOT_LIST_FILES
              .get(schemaDirPath, e.getMessage());
      throw new InitializationException(message, e);
      throw new InitializationException(ERR_CONFIG_SCHEMA_CANNOT_LIST_FILES.get(schemaDirPath, e.getMessage()), e);
    }
    //  Iterate through the schema files and read them as an LDIF file