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

Jean-Noël Rouvignac
07.55.2016 d366a5db9c1477c823758862268dd493dbbcc936
OPENDJ-3037 inlined DirectoryServer.getTopObjectClass() and getObjectClassAttributeType()
26 files modified
533 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java 4 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/components/SuperiorObjectClassesEditor.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEffectiveRights.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java 8 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java 4 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java 23 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/core/SearchOperationBasis.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerImpl.java 9 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/protocols/internal/InternalClientConnection.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/AddMsg.java 18 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java 85 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Branch.java 10 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/types/LDAPURL.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java 4 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/core/AddOperationTestCase.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/core/ModifyOperationTestCase.java 33 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/core/SubtreeSpecificationTestCase.java 31 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/ProtocolCompatibilityTest.java 40 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/SynchronizationMsgTest.java 41 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java 82 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/util/TestLDIFReader.java 95 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/NewObjectClassPanel.java
@@ -50,6 +50,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
@@ -324,8 +325,7 @@
      oid.setText("");
      description.setText("");
      aliases.setText("");
      superiors.setSelectedSuperiors(
          Collections.singleton(schema.getObjectClass("top")));
      superiors.setSelectedSuperiors(Collections.singleton(CoreSchema.getTopObjectClass()));
      attributes.getAvailableListModel().addAll(
          attributes.getSelectedListModel1().getData());
      attributes.getAvailableListModel().addAll(
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/components/SuperiorObjectClassesEditor.java
@@ -40,6 +40,7 @@
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.guitools.controlpanel.event.SuperiorObjectClassesChangedEvent;
import org.opends.guitools.controlpanel.event.SuperiorObjectClassesChangedListener;
@@ -275,7 +276,7 @@
    if (this.schema == null)
    {
      singleSuperior.setSelectedItem(schema.getObjectClass("top"));
      singleSuperior.setSelectedItem(CoreSchema.getTopObjectClass());
    }
    this.schema = schema;
  }
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciEffectiveRights.java
@@ -24,6 +24,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.Attributes;
@@ -234,9 +235,7 @@
        // Check for shorthands for user attributes "*" or operational "+".
        if ("*".equals(a))
        {
          // Add objectclass.
          AttributeType ocType = DirectoryServer.getObjectClassAttributeType();
          nonRightsAttrs.add(ocType);
          nonRightsAttrs.add(CoreSchema.getObjectClassAttributeType());
          nonRightsAttrs.addAll(e.getUserAttributes().keySet());
        }
        else if ("+".equals(a))
opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java
@@ -46,6 +46,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.server.config.server.BackupBackendCfg;
import org.opends.server.api.Backend;
import org.opends.server.core.AddOperation;
@@ -211,7 +212,7 @@
    // Construct the backup base entry.
    LinkedHashMap<ObjectClass,String> objectClasses = new LinkedHashMap<>(2);
    objectClasses.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    objectClasses.put(CoreSchema.getTopObjectClass(), OC_TOP);
    objectClasses.put(DirectoryServer.getObjectClass(OC_UNTYPED_OBJECT_LC), OC_UNTYPED_OBJECT);
    LinkedHashMap<AttributeType,List<Attribute>> opAttrs = new LinkedHashMap<>(0);
@@ -501,8 +502,7 @@
    // Construct the backup directory entry to return.
    LinkedHashMap<ObjectClass,String> ocMap = new LinkedHashMap<>(2);
    ocMap.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    ocMap.put(CoreSchema.getTopObjectClass(), OC_TOP);
    ocMap.put(DirectoryServer.getObjectClass(OC_BACKUP_DIRECTORY), OC_BACKUP_DIRECTORY);
    LinkedHashMap<AttributeType,List<Attribute>> opAttrs = new LinkedHashMap<>(0);
@@ -578,7 +578,7 @@
    // Construct the backup entry to return.
    LinkedHashMap<ObjectClass, String> ocMap = new LinkedHashMap<>(3);
    ocMap.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    ocMap.put(CoreSchema.getTopObjectClass(), OC_TOP);
    ocMap.put(DirectoryServer.getObjectClass(OC_BACKUP_INFO), OC_BACKUP_INFO);
    ocMap.put(DirectoryServer.getObjectClass(OC_EXTENSIBLE_OBJECT_LC), OC_EXTENSIBLE_OBJECT);
opendj-server-legacy/src/main/java/org/opends/server/backends/NullBackend.java
@@ -33,6 +33,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.server.api.Backend;
@@ -143,8 +144,7 @@
    // Initialize null entry object classes.
    objectClasses = new HashMap<>();
    objectClasses.put(DirectoryServer.getTopObjectClass(), "top");
    objectClasses.put(CoreSchema.getTopObjectClass(), OC_TOP);
    String nulOCName = "nullbackendobject";
    ObjectClass nulOC = DirectoryServer.getObjectClass(nulOCName);
opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -62,6 +62,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.DITContentRule;
import org.forgerock.opendj.ldap.schema.DITStructureRule;
import org.forgerock.opendj.ldap.schema.MatchingRule;
@@ -239,7 +240,7 @@
    // Construct the set of objectclasses to include in the schema entry.
    schemaObjectClasses = new LinkedHashMap<>(3);
    schemaObjectClasses.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    schemaObjectClasses.put(CoreSchema.getTopObjectClass(), OC_TOP);
    schemaObjectClasses.put(DirectoryServer.getObjectClass(OC_LDAP_SUBENTRY_LC), OC_LDAP_SUBENTRY);
    schemaObjectClasses.put(DirectoryServer.getObjectClass(OC_SUBSCHEMA), OC_SUBSCHEMA);
@@ -2201,7 +2202,7 @@
  private Entry createEmptySchemaEntry()
  {
    Map<ObjectClass,String> objectClasses = new LinkedHashMap<>();
    objectClasses.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    objectClasses.put(CoreSchema.getTopObjectClass(), OC_TOP);
    objectClasses.put(DirectoryServer.getObjectClass(OC_LDAP_SUBENTRY_LC), OC_LDAP_SUBENTRY);
    objectClasses.put(DirectoryServer.getObjectClass(OC_SUBSCHEMA), OC_SUBSCHEMA);
opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
@@ -62,6 +62,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.server.config.server.TrustStoreBackendCfg;
import org.forgerock.util.Reject;
import org.opends.server.api.Backend;
@@ -189,7 +190,7 @@
    // Construct the trust store base entry.
    LinkedHashMap<ObjectClass,String> objectClasses = new LinkedHashMap<>(2);
    objectClasses.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    objectClasses.put(CoreSchema.getTopObjectClass(), OC_TOP);
    objectClasses.put(DirectoryServer.getObjectClass("ds-cfg-branch"), "ds-cfg-branch");
    LinkedHashMap<AttributeType,List<Attribute>> userAttrs = new LinkedHashMap<>(1);
@@ -413,7 +414,7 @@
    // Construct the certificate entry to return.
    LinkedHashMap<ObjectClass,String> ocMap = new LinkedHashMap<>(2);
    ocMap.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    ocMap.put(CoreSchema.getTopObjectClass(), OC_TOP);
    ocMap.put(DirectoryServer.getObjectClass(OC_CRYPTO_INSTANCE_KEY), OC_CRYPTO_INSTANCE_KEY);
    LinkedHashMap<AttributeType,List<Attribute>> opAttrs = new LinkedHashMap<>(0);
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
@@ -22,7 +22,6 @@
import static org.opends.messages.CoreMessages.*;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.config.ConfigConstants.*;
import static org.opends.server.schema.SchemaConstants.*;
import static org.opends.server.tools.ConfigureWindowsService.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.DynamicConstants.*;
@@ -2292,18 +2291,6 @@
  }
  /**
   * Retrieves the "top" objectClass, which should be the topmost objectclass in
   * the inheritance chain for most other objectclasses.  If no such objectclass
   * could be found, then one will be constructed.
   *
   * @return  The "top" objectClass.
   */
  public static ObjectClass getTopObjectClass()
  {
    return directoryServer.schema.getObjectClass(TOP_OBJECTCLASS_NAME);
  }
  /**
   * Retrieves the attribute type for the provided name or OID. It can optionally return a generated
   * placeholder version if the requested attribute type is not defined in the schema.
   *
@@ -2335,16 +2322,6 @@
  }
  /**
   * Retrieves the attribute type for the "objectClass" attribute.
   *
   * @return  The attribute type for the "objectClass" attribute.
   */
  public static AttributeType getObjectClassAttributeType()
  {
    return directoryServer.schema.getAttributeType(OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
  }
  /**
   * Retrieves the set of virtual attribute rules registered with the Directory
   * Server.
   *
opendj-server-legacy/src/main/java/org/opends/server/core/SearchOperationBasis.java
@@ -32,6 +32,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.opends.server.api.AccessControlHandler;
import org.opends.server.api.AuthenticationPolicyState;
import org.opends.server.api.ClientConnection;
@@ -583,9 +584,8 @@
      // NOTE: the objectClass attribute is also present and must be
      // dealt with later.
      AttributeType attrType = DirectoryServer.getObjectClassAttributeType();
      Iterator<String> ocIterator =
           filteredEntry.getObjectClasses().values().iterator();
      AttributeType attrType = CoreSchema.getObjectClassAttributeType();
      Iterator<String> ocIterator = filteredEntry.getObjectClasses().values().iterator();
      while (ocIterator.hasNext())
      {
        ByteString ocName = ByteString.valueOfUtf8(ocIterator.next());
opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerImpl.java
@@ -73,6 +73,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.util.Reject;
import org.opends.admin.ads.ADSContext;
import org.forgerock.opendj.config.server.ConfigurationChangeListener;
@@ -538,7 +539,7 @@
          }
          final Entry entry = new Entry(entryDN, null, null, null);
          entry.addObjectClass(DirectoryServer.getTopObjectClass());
          entry.addObjectClass(CoreSchema.getTopObjectClass());
          entry.addObjectClass(ocCertRequest);
          AddOperation addOperation = icc.processAdd(entry);
          if (ResultCode.SUCCESS != addOperation.getResultCode()) {
@@ -637,7 +638,7 @@
      final InternalSearchOperation searchOp = icc.processSearch(request);
      if (searchOp.getSearchEntries().isEmpty()) {
        final Entry entry = new Entry(entryDN, null, null, null);
        entry.addObjectClass(DirectoryServer.getTopObjectClass());
        entry.addObjectClass(CoreSchema.getTopObjectClass());
        entry.addObjectClass(ocInstanceKey);
        // Add the key ID attribute.
@@ -1581,7 +1582,7 @@
      // Set the entry object classes.
      LinkedHashMap<ObjectClass,String> ocMap = new LinkedHashMap<>(2);
      ocMap.put(DirectoryServer.getTopObjectClass(), OC_TOP);
      ocMap.put(CoreSchema.getTopObjectClass(), OC_TOP);
      ocMap.put(ocCipherKey, OC_CRYPTO_CIPHER_KEY);
      // Create the user attributes.
@@ -2051,7 +2052,7 @@
      // Set the entry object classes.
      LinkedHashMap<ObjectClass,String> ocMap = new LinkedHashMap<>(2);
      ocMap.put(DirectoryServer.getTopObjectClass(), OC_TOP);
      ocMap.put(CoreSchema.getTopObjectClass(), OC_TOP);
      ocMap.put(ocMacKey, OC_CRYPTO_MAC_KEY);
      // Create the user attributes.
opendj-server-legacy/src/main/java/org/opends/server/crypto/CryptoManagerSync.java
@@ -39,6 +39,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.opends.admin.ads.ADSContext;
import org.opends.server.api.Backend;
import org.opends.server.api.BackendInitializationListener;
@@ -373,7 +374,7 @@
  private void addEntry(Entry srcEntry, DN dstDN)
  {
    Map<ObjectClass, String> ocMap = new LinkedHashMap<>(2);
    ocMap.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    ocMap.put(CoreSchema.getTopObjectClass(), OC_TOP);
    ocMap.put(ocInstanceKey, OC_CRYPTO_INSTANCE_KEY);
    Map<AttributeType, List<Attribute>> userAttrs = new HashMap<>();
opendj-server-legacy/src/main/java/org/opends/server/protocols/internal/InternalClientConnection.java
@@ -44,6 +44,7 @@
import org.forgerock.opendj.ldap.requests.ModifyDNRequest;
import org.forgerock.opendj.ldap.requests.ModifyRequest;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.opends.server.api.ClientConnection;
import org.opends.server.api.ConnectionHandler;
import org.opends.server.core.AddOperation;
@@ -152,7 +153,7 @@
    try
    {
      LinkedHashMap<ObjectClass,String> objectClasses = new LinkedHashMap<>();
      put(objectClasses, DirectoryServer.getTopObjectClass());
      put(objectClasses, CoreSchema.getTopObjectClass());
      put(objectClasses, DirectoryServer.getObjectClass(OC_PERSON));
      put(objectClasses, DirectoryServer.getObjectClass(OC_ROOT_DN));
opendj-server-legacy/src/main/java/org/opends/server/replication/protocol/AddMsg.java
@@ -16,6 +16,9 @@
 */
package org.opends.server.replication.protocol;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.opends.server.replication.protocol.OperationContext.*;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -27,20 +30,20 @@
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.DecodeException;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.core.AddOperation;
import org.opends.server.core.AddOperationBasis;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.replication.common.CSN;
import org.opends.server.replication.plugin.EntryHistorical;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.types.*;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
import org.opends.server.types.LDAPException;
import org.opends.server.types.RawAttribute;
import org.opends.server.types.operation.PostOperationAddOperation;
import static org.opends.server.replication.protocol.OperationContext.*;
/**
 * This class is used to exchange Add operation between LDAP servers
 * and replication servers.
@@ -223,8 +226,7 @@
    try
    {
      //  Encode the object classes (SET OF LDAPString).
      AttributeBuilder builder = new AttributeBuilder(
          DirectoryServer.getObjectClassAttributeType());
      AttributeBuilder builder = new AttributeBuilder(getObjectClassAttributeType());
      builder.addAllStrings(objectClasses.values());
      new LDAPAttribute(builder.toAttribute()).write(writer);
opendj-server-legacy/src/main/java/org/opends/server/tools/LDIFDiff.java
@@ -16,6 +16,16 @@
 */
package org.opends.server.tools;
import static com.forgerock.opendj.cli.CommonArguments.*;
import static com.forgerock.opendj.cli.Utils.*;
import static org.forgerock.opendj.ldap.ModificationType.*;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.protocols.ldap.LDAPResultCode.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.ServerConstants.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
@@ -34,8 +44,8 @@
import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler;
import org.opends.server.loggers.JDKLogging;
@@ -47,7 +57,6 @@
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.Modification;
import org.opends.server.types.NullOutputStream;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.LDIFWriter;
import org.opends.server.util.StaticUtils;
@@ -57,14 +66,6 @@
import com.forgerock.opendj.cli.BooleanArgument;
import com.forgerock.opendj.cli.StringArgument;
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.cli.CommonArguments.*;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.protocols.ldap.LDAPResultCode.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.ServerConstants.*;
/**
 * This class provides a program that may be used to determine the differences
 * between two LDIF files, generating the output in LDIF change format.  There
@@ -755,29 +756,13 @@
    if (!sourceClasses.isEmpty())
    {
      // Whatever is left must have been deleted.
      AttributeType attrType = DirectoryServer.getObjectClassAttributeType();
      AttributeBuilder builder = new AttributeBuilder(attrType);
      for (ObjectClass oc : sourceClasses)
      {
        builder.add(oc.getNameOrOID());
      }
      modifications.add(new Modification(ModificationType.DELETE, builder
          .toAttribute()));
      modifications.add(new Modification(DELETE, toObjectClassAttribute(sourceClasses)));
    }
    if (! targetClasses.isEmpty())
    {
      // Whatever is left must have been added.
      AttributeType attrType = DirectoryServer.getObjectClassAttributeType();
      AttributeBuilder builder = new AttributeBuilder(attrType);
      for (ObjectClass oc : targetClasses)
      {
        builder.add(oc.getNameOrOID());
      }
      modifications.add(new Modification(ModificationType.ADD, builder
          .toAttribute()));
      modifications.add(new Modification(ADD, toObjectClassAttribute(targetClasses)));
    }
@@ -798,7 +783,7 @@
        // value individually.
        for (Attribute a : sourceAttrs)
        {
          modifications.add(new Modification(ModificationType.DELETE, a));
          modifications.add(new Modification(DELETE, a));
        }
      }
      else
@@ -824,28 +809,22 @@
          if (targetAttr == null)
          {
            // The attribute doesn't exist in the target list, so it has been
            // deleted.
            modifications.add(new Modification(ModificationType.DELETE,
                                               sourceAttr));
            // The attribute doesn't exist in the target list, so it has been deleted.
            modifications.add(new Modification(DELETE, sourceAttr));
          }
          else
          {
            // Compare the values.
            AttributeBuilder addedValuesBuilder = new AttributeBuilder(targetAttr);
            addedValuesBuilder.removeAll(sourceAttr);
            Attribute addedValues = addedValuesBuilder.toAttribute();
            Attribute addedValues = minusAttribute(targetAttr, sourceAttr);
            if (!addedValues.isEmpty())
            {
              modifications.add(new Modification(ModificationType.ADD, addedValues));
              modifications.add(new Modification(ADD, addedValues));
            }
            AttributeBuilder deletedValuesBuilder = new AttributeBuilder(sourceAttr);
            deletedValuesBuilder.removeAll(targetAttr);
            Attribute deletedValues = deletedValuesBuilder.toAttribute();
            Attribute deletedValues = minusAttribute(sourceAttr, targetAttr);
            if (!deletedValues.isEmpty())
            {
              modifications.add(new Modification(ModificationType.DELETE, deletedValues));
              modifications.add(new Modification(DELETE, deletedValues));
            }
          }
        }
@@ -854,7 +833,7 @@
        // Any remaining target attributes have been added.
        for (Attribute targetAttr: targetAttrs)
        {
          modifications.add(new Modification(ModificationType.ADD, targetAttr));
          modifications.add(new Modification(ADD, targetAttr));
        }
      }
    }
@@ -862,10 +841,9 @@
    // Any remaining target attribute types have been added.
    for (AttributeType type : targetEntry.getUserAttributes().keySet())
    {
      List<Attribute> targetAttrs = targetEntry.getUserAttribute(type);
      for (Attribute a : targetAttrs)
      for (Attribute a : targetEntry.getUserAttribute(type))
      {
        modifications.add(new Modification(ModificationType.ADD, a));
        modifications.add(new Modification(ADD, a));
      }
    }
@@ -921,4 +899,21 @@
    return true;
  }
  private static Attribute toObjectClassAttribute(Collection<ObjectClass> objectClasses)
  {
    AttributeBuilder builder = new AttributeBuilder(getObjectClassAttributeType());
    for (ObjectClass oc : objectClasses)
    {
      builder.add(oc.getNameOrOID());
    }
    return builder.toAttribute();
  }
  private static Attribute minusAttribute(Attribute sourceAttr, Attribute removeAttr)
  {
    AttributeBuilder builder = new AttributeBuilder(sourceAttr);
    builder.removeAll(removeAttr);
    return builder.toAttribute();
  }
}
opendj-server-legacy/src/main/java/org/opends/server/tools/makeldif/Branch.java
@@ -28,7 +28,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.opends.server.core.DirectoryServer;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.opends.server.types.Attribute;
import org.opends.server.types.Entry;
@@ -110,13 +110,9 @@
        String[] valueStrings = new String[] { ocName };
        Tag[] tags = new Tag[1];
        tags[0] = new StaticTextTag();
        tags[0].initializeForBranch(templateFile, this, valueStrings, 0,
                                    warnings);
        tags[0].initializeForBranch(templateFile, this, valueStrings, 0, warnings);
        TemplateLine l =
             new TemplateLine(DirectoryServer.getObjectClassAttributeType(), 0,
                              tags);
        lineList.add(l);
        lineList.add(new TemplateLine(CoreSchema.getObjectClassAttributeType(), 0, tags));
      }
      catch (Exception e)
      {
opendj-server-legacy/src/main/java/org/opends/server/types/Entry.java
@@ -46,6 +46,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.DITContentRule;
import org.forgerock.opendj.ldap.schema.DITStructureRule;
import org.forgerock.opendj.ldap.schema.MatchingRule;
@@ -370,7 +371,7 @@
    if(objectClassAttribute == null)
    {
      AttributeBuilder builder = new AttributeBuilder(DirectoryServer.getObjectClassAttributeType());
      AttributeBuilder builder = new AttributeBuilder(CoreSchema.getObjectClassAttributeType());
      builder.addAllStrings(objectClasses.values());
      objectClassAttribute = builder.toAttribute();
    }
@@ -4261,7 +4262,7 @@
  public Entry filterEntry(Set<String> attrNameList,
      boolean omitValues, boolean omitReal, boolean omitVirtual)
  {
    final AttributeType ocType = DirectoryServer.getObjectClassAttributeType();
    final AttributeType ocType = CoreSchema.getObjectClassAttributeType();
    Map<ObjectClass, String> objectClassesCopy;
    Map<AttributeType, List<Attribute>> userAttrsCopy;
opendj-server-legacy/src/main/java/org/opends/server/types/LDAPURL.java
@@ -29,7 +29,7 @@
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.opends.server.core.DirectoryServer;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import static org.forgerock.opendj.ldap.ResultCode.*;
import static org.opends.messages.UtilityMessages.*;
@@ -62,8 +62,7 @@
       SearchScope.BASE_OBJECT;
  /** The default search filter that will be used if none is provided. */
  public static final SearchFilter DEFAULT_SEARCH_FILTER =
       SearchFilter.createPresenceFilter(
            DirectoryServer.getObjectClassAttributeType());
       SearchFilter.createPresenceFilter(CoreSchema.getObjectClassAttributeType());
  /** The host for this LDAP URL. */
opendj-server-legacy/src/main/java/org/opends/server/util/LDIFReader.java
@@ -45,6 +45,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.RDN;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.opends.server.api.plugin.PluginResult;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.PluginConfigManager;
@@ -1313,7 +1314,7 @@
    }
    // Reconstruct the object class attribute.
    AttributeType ocType = DirectoryServer.getObjectClassAttributeType();
    AttributeType ocType = CoreSchema.getObjectClassAttributeType();
    AttributeBuilder builder = new AttributeBuilder(ocType);
    builder.addAllStrings(objectClasses.values());
    Map<AttributeType, List<Attribute>> attributes = toAttributesMap(attrBuilders);
opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
@@ -57,6 +57,7 @@
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.RDN;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.util.Reject;
import org.opends.messages.ToolMessages;
import org.opends.server.core.DirectoryServer;
@@ -1952,8 +1953,7 @@
    // Get the top and untypedObject classes to include in the entry.
    LinkedHashMap<ObjectClass,String> objectClasses = new LinkedHashMap<>(3);
    objectClasses.put(DirectoryServer.getTopObjectClass(), OC_TOP);
    objectClasses.put(CoreSchema.getTopObjectClass(), OC_TOP);
    objectClasses.put(structuralClass, structuralClass.getNameOrOID());
opendj-server-legacy/src/test/java/org/opends/server/core/AddOperationTestCase.java
@@ -35,6 +35,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.requests.AddRequest;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.TestCaseUtils;
import org.opends.server.api.Backend;
@@ -845,7 +846,7 @@
    retrieveCompletedOperationElements(addOperation);
    Entry e = DirectoryServer.getEntry(DN.valueOf("uid=test.user,o=test"));
    List<Attribute> attrList = e.getAttribute(DirectoryServer.getObjectClassAttributeType());
    List<Attribute> attrList = e.getAttribute(CoreSchema.getObjectClassAttributeType());
    assertTrue(findAttributeValueIgnoreCase(attrList, "top"));
  }
opendj-server-legacy/src/test/java/org/opends/server/core/ModifyOperationTestCase.java
@@ -16,6 +16,19 @@
 */
package org.opends.server.core;
import static org.assertj.core.api.Assertions.*;
import static org.forgerock.opendj.ldap.ModificationType.*;
import static org.forgerock.opendj.ldap.controls.GenericControl.*;
import static org.forgerock.opendj.ldap.requests.Requests.*;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.protocols.internal.InternalClientConnection.*;
import static org.opends.server.protocols.internal.Requests.newSearchRequest;
import static org.opends.server.protocols.ldap.LDAPConstants.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.ServerConstants.*;
import static org.testng.Assert.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -62,18 +75,6 @@
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.*;
import static org.forgerock.opendj.ldap.ModificationType.*;
import static org.forgerock.opendj.ldap.controls.GenericControl.*;
import static org.forgerock.opendj.ldap.requests.Requests.*;
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.protocols.internal.InternalClientConnection.*;
import static org.opends.server.protocols.internal.Requests.*;
import static org.opends.server.protocols.ldap.LDAPConstants.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.ServerConstants.*;
import static org.testng.Assert.*;
/**
 * A set of test cases for modify operations.
 */
@@ -2159,11 +2160,11 @@
    retrieveSuccessfulOperationElements(modifyOperation);
    Entry e = DirectoryServer.getEntry(DN.valueOf("uid=test.user," + baseDN));
    assertTrue(e.hasObjectClass(DirectoryServer.getObjectClass("extensibleobject")));
    assertTrue(e.hasObjectClass(getExtensibleObjectObjectClass()));
    assertTrue(e.hasObjectClass(DirectoryServer.getObjectClass("inetOrgPerson")));
    assertTrue(e.hasObjectClass(DirectoryServer.getObjectClass("organizationalPerson")));
    assertTrue(e.hasObjectClass(DirectoryServer.getObjectClass("person")));
    assertTrue(e.hasObjectClass(DirectoryServer.getObjectClass("top")));
    assertTrue(e.hasObjectClass(getOrganizationalPersonObjectClass()));
    assertTrue(e.hasObjectClass(getPersonObjectClass()));
    assertTrue(e.hasObjectClass(getTopObjectClass()));
    assertEquals(e.getUserAttributes().size(), 8, "Incorrect number of user attributes");
  }
opendj-server-legacy/src/test/java/org/opends/server/core/SubtreeSpecificationTestCase.java
@@ -16,19 +16,19 @@
 */
package org.opends.server.core;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.opends.server.util.CollectionUtils.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import org.opends.server.TestCaseUtils;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.Entry;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.TestCaseUtils;
import org.opends.server.types.Entry;
import org.testng.annotations.BeforeClass;
/**
 * An abstract base class for all subtree specification tests.
 */
/** An abstract base class for all subtree specification tests. */
public abstract class SubtreeSpecificationTestCase extends CoreTestCase {
  /** Cached set of entry object classes. */
  private Set<ObjectClass> objectClasses;
@@ -43,8 +43,8 @@
   *          The entry's object classes.
   * @return The created entry.
   */
  protected final Entry createEntry(DN entryDN,
                                    Set<ObjectClass> objectClasses) {
  protected final Entry createEntry(DN entryDN, Set<ObjectClass> objectClasses)
  {
    HashMap<ObjectClass, String> map = new HashMap<>();
    for (ObjectClass oc : objectClasses) {
@@ -67,20 +67,7 @@
    // This test suite depends on having the schema available, so we'll start the server.
    TestCaseUtils.startServer();
    // Retrieve required object classes.
    objectClasses = new HashSet<>();
    ObjectClass oc = DirectoryServer.getObjectClass("top");
    if (oc.isPlaceHolder()) {
      throw new RuntimeException("Unable to resolve object class top");
    }
    objectClasses.add(oc);
    oc = DirectoryServer.getObjectClass("person");
    if (oc.isPlaceHolder()) {
      throw new RuntimeException("Unable to resolve object class person");
    }
    objectClasses.add(oc);
    objectClasses = newHashSet(getTopObjectClass(), getPersonObjectClass());
  }
  /**
opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/ProtocolCompatibilityTest.java
@@ -16,9 +16,18 @@
 */
package org.opends.server.replication.protocol;
import static org.assertj.core.api.Assertions.*;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.server.replication.common.AssuredMode.*;
import static org.opends.server.replication.protocol.OperationContext.*;
import static org.opends.server.replication.protocol.ProtocolVersion.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.StaticUtils.*;
import static org.testng.Assert.*;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -44,7 +53,6 @@
import org.opends.server.types.Attributes;
import org.opends.server.types.LDAPException;
import org.opends.server.types.Modification;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.types.Operation;
import org.opends.server.types.RawAttribute;
import org.opends.server.util.TimeThread;
@@ -53,15 +61,6 @@
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.*;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.server.replication.common.AssuredMode.*;
import static org.opends.server.replication.protocol.OperationContext.*;
import static org.opends.server.replication.protocol.ProtocolVersion.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.StaticUtils.*;
import static org.testng.Assert.*;
/**
 * Test the conversions between the various protocol versions.
 */
@@ -197,22 +196,9 @@
    final DN dn = DN.valueOf(rawDN);
    // Create VLAST message
    Attribute objectClass = Attributes.create(DirectoryServer
        .getObjectClassAttributeType(), "organization");
    HashMap<ObjectClass, String> objectClassList = new HashMap<>();
    objectClassList.put(DirectoryServer.getObjectClass("organization"),
        "organization");
    Attribute attr = Attributes.create("o", "com");
    List<Attribute> userAttributes = newArrayList(attr);
    HashMap<AttributeType, List<Attribute>> userAttList = new HashMap<>();
    userAttList.put(attr.getAttributeDescription().getAttributeType(), userAttributes);
    attr = Attributes.create("creatorsName", "dc=creator");
    List<Attribute> operationalAttributes = newArrayList(attr);
    HashMap<AttributeType, List<Attribute>> opList = new HashMap<>();
    opList.put(attr.getAttributeDescription().getAttributeType(), operationalAttributes);
    Attribute objectClass = Attributes.create(getObjectClassAttributeType(), "organization");
    List<Attribute> userAttributes = newArrayList(Attributes.create("o", "com"));
    List<Attribute> operationalAttributes = newArrayList(Attributes.create("creatorsName", "dc=creator"));
    CSN csn = new CSN(TimeThread.getTime(), 123, 45);
opendj-server-legacy/src/test/java/org/opends/server/replication/protocol/SynchronizationMsgTest.java
@@ -16,6 +16,17 @@
 */
package org.opends.server.replication.protocol;
import static org.forgerock.opendj.ldap.requests.Requests.*;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.protocols.internal.InternalClientConnection.*;
import static org.opends.server.replication.common.AssuredMode.*;
import static org.opends.server.replication.protocol.OperationContext.*;
import static org.opends.server.replication.protocol.ProtocolVersion.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.StaticUtils.*;
import static org.testng.Assert.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -30,6 +41,7 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.requests.ModifyDNRequest;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.controls.SubtreeDeleteControl;
import org.opends.server.core.AddOperation;
import org.opends.server.core.AddOperationBasis;
@@ -52,7 +64,6 @@
import org.opends.server.types.Attributes;
import org.opends.server.types.LDAPException;
import org.opends.server.types.Modification;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.types.RawAttribute;
import org.opends.server.util.TimeThread;
import org.opends.server.workflowelement.localbackend.LocalBackendAddOperation;
@@ -63,16 +74,6 @@
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.forgerock.opendj.ldap.requests.Requests.*;
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.protocols.internal.InternalClientConnection.*;
import static org.opends.server.replication.common.AssuredMode.*;
import static org.opends.server.replication.protocol.OperationContext.*;
import static org.opends.server.replication.protocol.ProtocolVersion.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.StaticUtils.*;
import static org.testng.Assert.*;
/**
 * Test the constructors, encoders and decoders of the replication protocol
 * PDUs classes (message classes).
@@ -454,21 +455,18 @@
  {
    final DN dn = DN.valueOf(rawDN);
    Attribute objectClass = Attributes.create(DirectoryServer
        .getObjectClassAttributeType(), "organization");
    Attribute objectClass = Attributes.create(getObjectClassAttributeType(), "organization");
    Map<ObjectClass, String> objectClassList = new HashMap<>();
    objectClassList.put(DirectoryServer.getObjectClass("organization"), "organization");
    objectClassList.put(getOrganizationObjectClass(), "organization");
    Attribute attr = Attributes.create("o", "com");
    List<Attribute> userAttributes = newArrayList(attr);
    Map<AttributeType, List<Attribute>> userAttList = new HashMap<>();
    userAttList.put(attr.getAttributeDescription().getAttributeType(), userAttributes);
    Map<AttributeType, List<Attribute>> userAttList = addAttribute(attr, userAttributes);
    attr = Attributes.create("creatorsname", "dc=creator");
    List<Attribute> operationalAttributes = newArrayList(attr);
    Map<AttributeType, List<Attribute>> opList = new HashMap<>();
    opList.put(attr.getAttributeDescription().getAttributeType(), operationalAttributes);
    Map<AttributeType, List<Attribute>> opList = addAttribute(attr, operationalAttributes);
    CSN csn = new CSN(TimeThread.getTime(), 123,  45);
@@ -541,6 +539,13 @@
    assertEquals(msg.getCSN(), updateMsg.getCSN());
  }
  private Map<AttributeType, List<Attribute>> addAttribute(Attribute attr, List<Attribute> userAttributes)
  {
    Map<AttributeType, List<Attribute>> userAttList = new HashMap<>();
    userAttList.put(attr.getAttributeDescription().getAttributeType(), userAttributes);
    return userAttList;
  }
  private void assertAttributesEqual(List<RawAttribute> actualAttrs,
      List<Attribute> expectedAttrs) throws LDAPException
  {
opendj-server-legacy/src/test/java/org/opends/server/types/TestEntry.java
@@ -17,6 +17,7 @@
package org.opends.server.types;
import static org.assertj.core.api.Assertions.*;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import static org.opends.server.util.CollectionUtils.*;
import static org.testng.Assert.*;
@@ -33,6 +34,7 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
@@ -75,13 +77,8 @@
    DN entryDN = DN.valueOf("dc=example, dc=com");
    // Get default object classes.
    ObjectClass top = DirectoryServer.getTopObjectClass();
    ObjectClass extensible = DirectoryServer.getObjectClass("extensibleobject");
    if (extensible.isPlaceHolder()) {
      throw new RuntimeException(
          "Unable to resolve object class extensibleObject");
    }
    ObjectClass top = CoreSchema.getTopObjectClass();
    ObjectClass extensible = CoreSchema.getExtensibleObjectObjectClass();
    HashMap<ObjectClass, String> objectClasses = new HashMap<>();
    objectClasses.put(top, top.getNameOrOID());
    objectClasses.put(extensible, extensible.getNameOrOID());
@@ -113,7 +110,7 @@
   */
  @Test
  public void testParseAttributeNotFound() throws Exception {
    AttributeType type1 = DirectoryServer.getAttributeType("description");
    AttributeType type1 = getDescriptionAttributeType();
    AttributeType type2 = DirectoryServer.getAttributeType("inheritable");
    Entry entry = createTestEntry(type1, "hello world");
@@ -169,17 +166,16 @@
  @Test
  public void testParseAttributesInteger() throws Exception
  {
    AttributeType type = DirectoryServer.getAttributeType("supportedldapversion");
    AttributeType type = getSupportedLDAPVersionAttributeType();
    String[] values = new String[] { "-4", "-2", "0", "1", "3" };
    HashSet<Integer> expected = new HashSet<>();
    HashSet<Integer> expected = newHashSet();
    for (String value : values) {
      expected.add(Integer.valueOf(value));
    }
    Entry entry = createTestEntry(type, values);
    Set<Integer> result =
        entry.parseAttribute("supportedldapversion").asSetOfInteger();
    Set<Integer> result = entry.parseAttribute("supportedldapversion").asSetOfInteger();
    Assertions.assertThat(result).isEqualTo(expected);
  }
@@ -192,7 +188,7 @@
  @Test(expectedExceptions = LocalizedIllegalArgumentException.class)
  public void testParseAttributeIntegerBad() throws Exception
  {
    AttributeType type = DirectoryServer.getAttributeType("supportedldapversion");
    AttributeType type = getSupportedLDAPVersionAttributeType();
    String[] values = new String[] { "-4", "-2", "xxx", "1", "3" };
    Entry entry = createTestEntry(type, values);
@@ -272,11 +268,11 @@
    assertTrue(e.conformsToSchema(null, false, false, false,
                                  new LocalizableMessageBuilder()));
    AttributeType ocType   = DirectoryServer.getAttributeType("objectclass");
    AttributeType cnType   = DirectoryServer.getAttributeType("cn");
    AttributeType nameType = DirectoryServer.getAttributeType("name");
    AttributeType uidType  = DirectoryServer.getAttributeType("uid");
    AttributeType mnType   = DirectoryServer.getAttributeType("modifiersname");
    AttributeType ocType = getObjectClassAttributeType();
    AttributeType cnType = getCNAttributeType();
    AttributeType nameType = getNameAttributeType();
    AttributeType uidType = getUIDAttributeType();
    AttributeType mnType = getModifiersNameAttributeType();
    assertTrue(e.hasAttribute(ocType));
    assertTrue(e.hasAttribute(cnType));
@@ -360,11 +356,11 @@
    assertTrue(e.conformsToSchema(null, false, false, false,
                                  new LocalizableMessageBuilder()));
    AttributeType ocType   = DirectoryServer.getAttributeType("objectclass");
    AttributeType cnType   = DirectoryServer.getAttributeType("cn");
    AttributeType nameType = DirectoryServer.getAttributeType("name");
    AttributeType uidType  = DirectoryServer.getAttributeType("uid");
    AttributeType mnType   = DirectoryServer.getAttributeType("modifiersname");
    AttributeType ocType = getObjectClassAttributeType();
    AttributeType cnType = getCNAttributeType();
    AttributeType nameType = getNameAttributeType();
    AttributeType uidType = getUIDAttributeType();
    AttributeType mnType = getModifiersNameAttributeType();
    assertFalse(e.hasUserAttribute(ocType));
    assertTrue(e.hasUserAttribute(cnType));
@@ -406,11 +402,11 @@
    assertTrue(e.conformsToSchema(null, false, false, false,
                                  new LocalizableMessageBuilder()));
    AttributeType ocType   = DirectoryServer.getAttributeType("objectclass");
    AttributeType cnType   = DirectoryServer.getAttributeType("cn");
    AttributeType nameType = DirectoryServer.getAttributeType("name");
    AttributeType uidType  = DirectoryServer.getAttributeType("uid");
    AttributeType mnType   = DirectoryServer.getAttributeType("modifiersname");
    AttributeType ocType = getObjectClassAttributeType();
    AttributeType cnType = getCNAttributeType();
    AttributeType nameType = getNameAttributeType();
    AttributeType uidType = getUIDAttributeType();
    AttributeType mnType = getModifiersNameAttributeType();
    assertFalse(e.hasOperationalAttribute(ocType));
    assertFalse(e.hasOperationalAttribute(cnType));
@@ -452,11 +448,11 @@
    assertTrue(e.conformsToSchema(null, false, false, false,
                                  new LocalizableMessageBuilder()));
    AttributeType ocType   = DirectoryServer.getAttributeType("objectclass");
    AttributeType cnType   = DirectoryServer.getAttributeType("cn");
    AttributeType nameType = DirectoryServer.getAttributeType("name");
    AttributeType uidType  = DirectoryServer.getAttributeType("uid");
    AttributeType mnType   = DirectoryServer.getAttributeType("modifiersname");
    AttributeType ocType = getObjectClassAttributeType();
    AttributeType cnType = getCNAttributeType();
    AttributeType nameType = getNameAttributeType();
    AttributeType uidType = getUIDAttributeType();
    AttributeType mnType = getModifiersNameAttributeType();
    assertThat(e.getAttribute(ocType)).hasSize(1);
    assertThat(e.getAttribute(cnType)).hasSize(2);
@@ -543,11 +539,11 @@
    assertTrue(e.conformsToSchema(null, false, false, false,
                                  new LocalizableMessageBuilder()));
    AttributeType ocType   = DirectoryServer.getAttributeType("objectclass");
    AttributeType cnType   = DirectoryServer.getAttributeType("cn");
    AttributeType nameType = DirectoryServer.getAttributeType("name");
    AttributeType uidType  = DirectoryServer.getAttributeType("uid");
    AttributeType mnType   = DirectoryServer.getAttributeType("modifiersname");
    AttributeType ocType = getObjectClassAttributeType();
    AttributeType cnType = getCNAttributeType();
    AttributeType nameType = getNameAttributeType();
    AttributeType uidType = getUIDAttributeType();
    AttributeType mnType = getModifiersNameAttributeType();
    assertThat(e.getUserAttribute(ocType)).isEmpty();
    assertThat(e.getUserAttribute(cnType)).hasSize(2);
@@ -589,11 +585,11 @@
    assertTrue(e.conformsToSchema(null, false, false, false,
                                  new LocalizableMessageBuilder()));
    AttributeType ocType   = DirectoryServer.getAttributeType("objectclass");
    AttributeType cnType   = DirectoryServer.getAttributeType("cn");
    AttributeType nameType = DirectoryServer.getAttributeType("name");
    AttributeType uidType  = DirectoryServer.getAttributeType("uid");
    AttributeType mnType   = DirectoryServer.getAttributeType("modifiersname");
    AttributeType ocType = getObjectClassAttributeType();
    AttributeType cnType = getCNAttributeType();
    AttributeType nameType = getNameAttributeType();
    AttributeType uidType = getUIDAttributeType();
    AttributeType mnType = getModifiersNameAttributeType();
    assertThat(e.getOperationalAttribute(ocType)).isEmpty();
    assertThat(e.getOperationalAttribute(cnType)).isEmpty();
opendj-server-legacy/src/test/java/org/opends/server/util/TestLDIFReader.java
@@ -16,6 +16,8 @@
 */
package org.opends.server.util;
import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
@@ -26,19 +28,17 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.RDN;
import org.opends.server.TestCaseUtils;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeBuilder;
import org.opends.server.types.Attributes;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.Modification;
import org.forgerock.opendj.ldap.schema.ObjectClass;
import org.forgerock.opendj.ldap.RDN;
import org.opends.server.types.RawModification;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
@@ -51,22 +51,6 @@
 * {@link org.opends.server.util.LDIFReader} class.
 */
public final class TestLDIFReader extends UtilTestCase {
  /** Top object class. */
  private ObjectClass OC_TOP;
  /** Person object class. */
  private ObjectClass OC_PERSON;
  /** Object class attribute type. */
  private AttributeType AT_OC;
  /** Common name attribute type. */
  private AttributeType AT_CN;
  /** Surname attribute type. */
  private AttributeType AT_SN;
  /** Description attribute type. */
  private AttributeType AT_DESCR;
  /** Telephone number attribute type. */
  private AttributeType AT_TELN;
  /** Temporary file containing an attribute value. */
  private File TEMP_FILE;
@@ -167,20 +151,8 @@
   */
  @BeforeClass
  public void setUp() throws Exception {
    // This test suite depends on having the schema available, so we'll
    // start the server.
    TestCaseUtils.startServer();
    // Initialize schema bits.
    OC_TOP = DirectoryServer.getTopObjectClass();
    OC_PERSON = DirectoryServer.getObjectClass("person");
    AT_OC = DirectoryServer.getObjectClassAttributeType();
    AT_CN = DirectoryServer.getAttributeType("cn");
    AT_SN = DirectoryServer.getAttributeType("sn");
    AT_DESCR = DirectoryServer.getAttributeType("description");
    AT_TELN = DirectoryServer.getAttributeType("telephonenumber");
    // Create a temporary file containing an attribute value.
    TEMP_FILE = File.createTempFile("tmp", "txt");
    try (OutputStream out = new FileOutputStream(TEMP_FILE)) {
@@ -283,19 +255,24 @@
   */
  @Test(dependsOnMethods = { "testReadEntryEmptyStream" })
  public void testReadEntrySingle() throws Exception {
    final String ldifString = "dn: cn=john, dc=foo, dc=com\n"
        + "objectClass: top\n" + "objectClass: person\n" + "cn: john\n"
    // @formatter:off
    final String ldifString =
        "dn: cn=john, dc=foo, dc=com\n"
        + "objectClass: top\n"
        + "objectClass: person\n"
        + "cn: john\n"
        + "sn: smith\n";
    // @formatter:on
    try (LDIFReader reader = createLDIFReader(ldifString)) {
      Entry entry = reader.readEntry();
      Assert.assertNotNull(entry);
      Assert.assertEquals(entry.getName(), DN.valueOf("cn=john, dc=foo, dc=com"));
      Assert.assertTrue(entry.hasObjectClass(OC_TOP));
      Assert.assertTrue(entry.hasObjectClass(OC_PERSON));
      Assert.assertTrue(entry.hasValue(AT_CN, ByteString.valueOfUtf8("john")));
      Assert.assertTrue(entry.hasValue(AT_SN, ByteString.valueOfUtf8("smith")));
      Assert.assertTrue(entry.hasObjectClass(getTopObjectClass()));
      Assert.assertTrue(entry.hasObjectClass(getPersonObjectClass()));
      Assert.assertTrue(entry.hasValue(getCNAttributeType(), ByteString.valueOfUtf8("john")));
      Assert.assertTrue(entry.hasValue(getSNAttributeType(), ByteString.valueOfUtf8("smith")));
      Assert.assertNull(reader.readEntry());
@@ -322,7 +299,7 @@
    try (LDIFReader reader = createLDIFReader(ldifString)) {
      Entry entry = reader.readEntry();
      Assert.assertNotNull(entry);
      Assert.assertTrue(entry.hasValue(AT_DESCR, ByteString.valueOfUtf8("once upon a time in the west")));
      Assert.assertTrue(entry.hasValue(getDescriptionAttributeType(), ByteString.valueOfUtf8("once upon a time in the west")));
    }
  }
@@ -342,7 +319,7 @@
    try (LDIFReader reader = createLDIFReader(ldifString)) {
      Entry entry = reader.readEntry();
      Assert.assertNotNull(entry);
      Assert.assertTrue(entry.hasValue(AT_DESCR, ByteString.valueOfUtf8("once upon a time in the west")));
      Assert.assertTrue(entry.hasValue(getDescriptionAttributeType(), ByteString.valueOfUtf8("once upon a time in the west")));
    }
  }
@@ -354,11 +331,21 @@
   */
  @Test(dependsOnMethods = { "testReadEntrySingle" })
  public void testReadEntryMultiple() throws Exception {
    final String ldifString = "dn: cn=john, dc=foo, dc=com\n"
        + "objectClass: top\n" + "objectClass: person\n" + "cn: john\n"
        + "sn: smith\n" + "\n" + "dn: cn=anne, dc=foo, dc=com\n"
        + "objectClass: top\n" + "objectClass: person\n" + "cn: anne\n"
        + "sn: other\n" + "\n";
    // @formatter:off
    final String ldifString =
        "dn: cn=john, dc=foo, dc=com\n"
        + "objectClass: top\n"
        + "objectClass: person\n"
        + "cn: john\n"
        + "sn: smith\n"
        + "\n"
        + "dn: cn=anne, dc=foo, dc=com\n"
        + "objectClass: top\n"
        + "objectClass: person\n"
        + "cn: anne\n"
        + "sn: other\n"
        + "\n";
    // @formatter:on
    try (LDIFReader reader = createLDIFReader(ldifString)) {
      reader.readEntry();
@@ -367,10 +354,10 @@
      Assert.assertNotNull(entry);
      Assert.assertEquals(entry.getName(), DN.valueOf("cn=anne, dc=foo, dc=com"));
      Assert.assertTrue(entry.hasObjectClass(OC_TOP));
      Assert.assertTrue(entry.hasObjectClass(OC_PERSON));
      Assert.assertTrue(entry.hasValue(AT_CN, ByteString.valueOfUtf8("anne")));
      Assert.assertTrue(entry.hasValue(AT_SN, ByteString.valueOfUtf8("other")));
      Assert.assertTrue(entry.hasObjectClass(getTopObjectClass()));
      Assert.assertTrue(entry.hasObjectClass(getPersonObjectClass()));
      Assert.assertTrue(entry.hasValue(getCNAttributeType(), ByteString.valueOfUtf8("anne")));
      Assert.assertTrue(entry.hasValue(getSNAttributeType(), ByteString.valueOfUtf8("other")));
      Assert.assertNull(reader.readEntry());
@@ -410,7 +397,7 @@
      Assert.assertEquals(add.getDN(), dn);
      List<Attribute> attrs = new ArrayList<>();
      AttributeBuilder builder = new AttributeBuilder(AT_OC);
      AttributeBuilder builder = new AttributeBuilder(getObjectClassAttributeType());
      builder.add("top");
      builder.add("person");
      builder.add("organizationalPerson");
@@ -481,14 +468,14 @@
      mod = i.next().toModification();
      Assert.assertEquals(mod.getModificationType(),
          ModificationType.DELETE);
      attr = Attributes.empty(AT_DESCR);
      attr = Attributes.empty(getDescriptionAttributeType());
      Assert.assertEquals(mod.getAttribute(), attr);
      Assert.assertTrue(i.hasNext());
      mod = i.next().toModification();
      Assert.assertEquals(mod.getModificationType(),
          ModificationType.REPLACE);
      builder = new AttributeBuilder(AT_TELN);
      builder = new AttributeBuilder(getTelephoneNumberAttributeType());
      builder.add("+1 408 555 1234");
      builder.add("+1 408 555 5678");
      Assert.assertEquals(mod.getAttribute(), builder.toAttribute());
@@ -531,7 +518,7 @@
      mod = i.next().toModification();
      Assert.assertEquals(mod.getModificationType(),
          ModificationType.DELETE);
      attr = Attributes.empty(AT_DESCR);
      attr = Attributes.empty(getDescriptionAttributeType());
      Assert.assertEquals(mod.getAttribute(), attr);
      // Change record #8.
@@ -548,7 +535,7 @@
      mod = i.next().toModification();
      Assert.assertEquals(mod.getModificationType(),
          ModificationType.DELETE);
      attr = Attributes.empty(AT_DESCR);
      attr = Attributes.empty(getDescriptionAttributeType());
      Assert.assertEquals(mod.getAttribute(), attr);
      Assert.assertFalse(i.hasNext());