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

Jean-Noel Rouvignac
26.49.2013 582344d280d24dfec999b862d8255eb077995b99
opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -110,13 +110,6 @@
   */
  private static final DebugTracer TRACER = getTracer();
    /**
    * The fully-qualified name of this class.
    */
    private static final String CLASS_NAME =
       "org.opends.server.core.DirectoryServer";
  /**
   * The singleton Directory Server instance.
   */
@@ -184,462 +177,549 @@
   */
  private static int START_AS_NON_DETACH_QUIET = 104;
  // The policy to use regarding single structural objectclass enforcement.
  /** The policy to use regarding single structural objectclass enforcement. */
  private AcceptRejectWarn singleStructuralClassPolicy;
  // The policy to use regarding syntax enforcement.
  /** The policy to use regarding syntax enforcement. */
  private AcceptRejectWarn syntaxEnforcementPolicy;
  // The account status notification handler config manager for the server.
  /** The account status notification handler config manager for the server. */
  private AccountStatusNotificationHandlerConfigManager
       accountStatusNotificationHandlerConfigManager;
  // The default syntax to use for binary attributes.
  /** The default syntax to use for binary attributes. */
  private AttributeSyntax<AttributeSyntaxCfg> defaultBinarySyntax;
  // The default syntax to use for Boolean attributes.
  /** The default syntax to use for Boolean attributes. */
  private AttributeSyntax<AttributeSyntaxCfg> defaultBooleanSyntax;
  // The default syntax to use for DN attributes.
  /** The default syntax to use for DN attributes. */
  private AttributeSyntax<AttributeSyntaxCfg> defaultDNSyntax;
  // The default syntax to use for integer attributes.
  /** The default syntax to use for integer attributes. */
  private AttributeSyntax<AttributeSyntaxCfg> defaultIntegerSyntax;
  // The default syntax to use for string attributes.
  /** The default syntax to use for string attributes. */
  private AttributeSyntax<DirectoryStringAttributeSyntaxCfg>
               defaultStringSyntax;
  // The default attribute syntax to use for attributes with no defined syntax.
  /**
   * The default attribute syntax to use for attributes with no defined syntax.
   */
  private AttributeSyntax<DirectoryStringAttributeSyntaxCfg> defaultSyntax;
  // The attribute type used to reference the "objectclass" attribute.
  /** The attribute type used to reference the "objectclass" attribute. */
  private AttributeType objectClassAttributeType;
  // The authenticated users manager for the server.
  /** The authenticated users manager for the server. */
  private AuthenticatedUsers authenticatedUsers;
  // The configuration manager that will handle the server backends.
  /** The configuration manager that will handle the server backends. */
  private BackendConfigManager backendConfigManager;
  // Indicates whether to automatically add missing RDN attributes to entries
  // during an add request.
  /**
   * Indicates whether to automatically add missing RDN attributes to entries
   * during an add request.
   */
  private boolean addMissingRDNAttributes;
  // Indicates whether to allow attribute name exceptions (i.e., attribute names
  // can contain underscores and may start with a digit).
  /**
   * Indicates whether to allow attribute name exceptions (i.e., attribute names
   * can contain underscores and may start with a digit).
   */
  private boolean allowAttributeNameExceptions;
  // Indicates whether a simple bind request containing a DN must also provide a
  // password.
  /**
   * Indicates whether a simple bind request containing a DN must also provide a
   * password.
   */
  private boolean bindWithDNRequiresPassword;
  // Indicates whether the Directory Server should perform schema checking for
  // update operations.
  /**
   * Indicates whether the Directory Server should perform schema checking for
   * update operations.
   */
  private boolean checkSchema;
  // Indicates whether the server has been bootstrapped.
  /** Indicates whether the server has been bootstrapped. */
  private boolean isBootstrapped;
  // Indicates whether the server is currently online.
  /** Indicates whether the server is currently online. */
  private boolean isRunning;
  // Indicates whether the server is currently in "lockdown mode".
  /** Indicates whether the server is currently in "lockdown mode". */
  private boolean lockdownMode;
  // Indicates whether the server should send a response to operations that have
  // been abandoned.
  /**
   * Indicates whether the server should send a response to operations that have
   * been abandoned.
   */
  private boolean notifyAbandonedOperations;
  // Indicates whether to save a copy of the configuration on successful
  // startup.
  /**
   * Indicates whether to save a copy of the configuration on successful
   * startup.
   */
  private boolean saveConfigOnSuccessfulStartup;
  // Indicates whether the server is currently in the process of shutting down.
  /**
   * Indicates whether the server is currently in the process of shutting down.
   */
  private boolean shuttingDown;
  // Indicates whether the server should reject unauthenticated requests.
  /** Indicates whether the server should reject unauthenticated requests. */
  private boolean rejectUnauthenticatedRequests;
  // Indicates whether bind responses should include failure reason messages.
  /**
   * Indicates whether bind responses should include failure reason messages.
   */
  private boolean returnBindErrorMessages;
  // The configuration manager that will handle the certificate mapper.
  /** The configuration manager that will handle the certificate mapper. */
  private CertificateMapperConfigManager certificateMapperConfigManager;
  // The class used to provide the config handler implementation.
  /** The class used to provide the config handler implementation. */
  private Class configClass;
  // The configuration handler for the Directory Server.
  /** The configuration handler for the Directory Server. */
  private ConfigHandler configHandler;
  // The set of account status notification handlers defined in the server.
  /** The set of account status notification handlers defined in the server. */
  private ConcurrentHashMap<DN,AccountStatusNotificationHandler>
               accountStatusNotificationHandlers;
  // The set of certificate mappers registered with the server.
  /** The set of certificate mappers registered with the server. */
  private ConcurrentHashMap<DN,CertificateMapper> certificateMappers;
  // The set of alternate bind DNs for the root users.
  /** The set of alternate bind DNs for the root users. */
  private ConcurrentHashMap<DN,DN> alternateRootBindDNs;
  // The set of identity mappers registered with the server (mapped between
  // the configuration entry Dn and the mapper).
  /**
   * The set of identity mappers registered with the server (mapped between the
   * configuration entry Dn and the mapper).
   */
  private ConcurrentHashMap<DN,IdentityMapper> identityMappers;
  // The set of JMX MBeans that have been registered with the server (mapped
  // between the associated configuration entry DN and the MBean).
  /**
   * The set of JMX MBeans that have been registered with the server (mapped
   * between the associated configuration entry DN and the MBean).
   */
  private ConcurrentHashMap<DN,JMXMBean> mBeans;
  // The set of key manager providers registered with the server.
  /** The set of key manager providers registered with the server. */
  private ConcurrentHashMap<DN,KeyManagerProvider> keyManagerProviders;
  // The set of extensions registered with the server.
  /** The set of extensions registered with the server. */
  private ConcurrentHashMap<DN,Extension> extensions;
  // The set of password generators registered with the Directory Server, as a
  // mapping between the DN of the associated configuration entry and the
  // generator implementation.
  /**
   * The set of password generators registered with the Directory Server, as a
   * mapping between the DN of the associated configuration entry and the
   * generator implementation.
   */
  private ConcurrentHashMap<DN,PasswordGenerator> passwordGenerators;
  // The set of authentication policies registered with the Directory Server, as
  // a mapping between the DN of the associated configuration entry and the
  // policy implementation.
  /**
   * The set of authentication policies registered with the Directory Server, as
   * a mapping between the DN of the associated configuration entry and the
   * policy implementation.
   */
  private ConcurrentHashMap<DN,AuthenticationPolicy> authenticationPolicies;
  // The set of password validators registered with the Directory Server, as a
  // mapping between the DN of the associated configuration entry and the
  // validator implementation.
  /**
   * The set of password validators registered with the Directory Server, as a
   * mapping between the DN of the associated configuration entry and the
   * validator implementation.
   */
  private ConcurrentHashMap<DN,
               PasswordValidator<? extends PasswordValidatorCfg>>
               passwordValidators;
  // The set of trust manager providers registered with the server.
  /** The set of trust manager providers registered with the server. */
  private ConcurrentHashMap<DN,TrustManagerProvider> trustManagerProviders;
  // The set of log rotation policies registered with the Directory Server, as
  // a mapping between the DN of the associated configuration entry and the
  // policy implementation.
  /**
   * The set of log rotation policies registered with the Directory Server, as a
   * mapping between the DN of the associated configuration entry and the policy
   * implementation.
   */
  private ConcurrentHashMap<DN, RotationPolicy> rotationPolicies;
  // The set of log retention policies registered with the Directory Server, as
  // a mapping between the DN of the associated configuration entry and the
  // policy implementation.
  /**
   * The set of log retention policies registered with the Directory Server, as
   * a mapping between the DN of the associated configuration entry and the
   * policy implementation.
   */
  private ConcurrentHashMap<DN, RetentionPolicy> retentionPolicies;
  // The set supported LDAP protocol versions.
  /** The set supported LDAP protocol versions. */
  private ConcurrentHashMap<Integer,List<ConnectionHandler>>
               supportedLDAPVersions;
  // The set of extended operation handlers registered with the server (mapped
  // between the OID of the extended operation and the handler).
  /**
   * The set of extended operation handlers registered with the server (mapped
   * between the OID of the extended operation and the handler).
   */
  private ConcurrentHashMap<String,ExtendedOperationHandler>
               extendedOperationHandlers;
  // The set of monitor providers registered with the Directory Server, as a
  // mapping between the monitor name and the corresponding implementation.
  /**
   * The set of monitor providers registered with the Directory Server, as a
   * mapping between the monitor name and the corresponding implementation.
   */
  private ConcurrentHashMap<String,
                            MonitorProvider<? extends MonitorProviderCfg>>
               monitorProviders;
  // The set of password storage schemes defined in the server (mapped between
  // the lowercase scheme name and the storage scheme) that support the
  // authentication password syntax.
  /**
   * The set of password storage schemes defined in the server (mapped between
   * the lowercase scheme name and the storage scheme) that support the
   * authentication password syntax.
   */
  private ConcurrentHashMap<String,PasswordStorageScheme>
               authPasswordStorageSchemes;
  // The set of password storage schemes defined in the server (mapped between
  // the lowercase scheme name and the storage scheme).
  /**
   * The set of password storage schemes defined in the server (mapped between
   * the lowercase scheme name and the storage scheme).
   */
  private ConcurrentHashMap<String,PasswordStorageScheme>
               passwordStorageSchemes;
  // The set of password storage schemes defined in the server (mapped between
  // the DN of the configuration entry and the storage scheme).
  /**
   * The set of password storage schemes defined in the server (mapped between
   * the DN of the configuration entry and the storage scheme).
   */
  private ConcurrentHashMap<DN,PasswordStorageScheme>
               passwordStorageSchemesByDN;
  // The set of SASL mechanism handlers registered with the server (mapped
  // between the mechanism name and the handler).
  /**
   * The set of SASL mechanism handlers registered with the server (mapped
   * between the mechanism name and the handler).
   */
  private ConcurrentHashMap<String,SASLMechanismHandler> saslMechanismHandlers;
  // The connection handler configuration manager for the Directory Server.
  /** The connection handler configuration manager for the Directory Server. */
  private ConnectionHandlerConfigManager connectionHandlerConfigManager = null;
  // The set of alert handlers registered with the Directory Server.
  /** The set of alert handlers registered with the Directory Server. */
  private CopyOnWriteArrayList<AlertHandler> alertHandlers;
  // The set of backup task listeners registered with the Directory Server.
  /** The set of backup task listeners registered with the Directory Server. */
  private CopyOnWriteArrayList<BackupTaskListener> backupTaskListeners;
  // The set of change notification listeners registered with the Directory
  // Server.
  /**
   * The set of change notification listeners registered with the Directory
   * Server.
   */
  private CopyOnWriteArrayList<ChangeNotificationListener>
               changeNotificationListeners;
  // The set of connection handlers registered with the Directory Server.
  /** The set of connection handlers registered with the Directory Server. */
  private CopyOnWriteArrayList<ConnectionHandler> connectionHandlers;
  // The set of export task listeners registered with the Directory Server.
  /** The set of export task listeners registered with the Directory Server. */
  private CopyOnWriteArrayList<ExportTaskListener> exportTaskListeners;
  // The set of import task listeners registered with the Directory Server.
  /** The set of import task listeners registered with the Directory Server. */
  private CopyOnWriteArrayList<ImportTaskListener> importTaskListeners;
  // The set of restore task listeners registered with the Directory Server.
  /** The set of restore task listeners registered with the Directory Server. */
  private CopyOnWriteArrayList<RestoreTaskListener> restoreTaskListeners;
  // The set of initialization completed listeners that have been registered
  // with the Directory Server.
  /**
   * The set of initialization completed listeners that have been registered
   * with the Directory Server.
   */
  private CopyOnWriteArrayList<InitializationCompletedListener>
          initializationCompletedListeners;
  // The set of shutdown listeners that have been registered with the Directory
  // Server.
  /**
   * The set of shutdown listeners that have been registered with the Directory
   * Server.
   */
  private CopyOnWriteArrayList<ServerShutdownListener> shutdownListeners;
  // The set of synchronization providers that have been registered with the
  // Directory Server.
  /**
   * The set of synchronization providers that have been registered with the
   * Directory Server.
   */
  private
    CopyOnWriteArrayList<SynchronizationProvider<SynchronizationProviderCfg>>
               synchronizationProviders;
  // The set of virtual attributes defined in the server.
  /** The set of virtual attributes defined in the server. */
  private CopyOnWriteArrayList<VirtualAttributeRule> virtualAttributes;
  // The set of backend initialization listeners registered with the Directory
  // Server.
  /**
   * The set of backend initialization listeners registered with the Directory
   * Server.
   */
  private CopyOnWriteArraySet<BackendInitializationListener>
               backendInitializationListeners;
  // The set of root DNs registered with the Directory Server.
  /** The set of root DNs registered with the Directory Server. */
  private CopyOnWriteArraySet<DN> rootDNs;
  // The core configuration manager for the Directory Server.
  /** The core configuration manager for the Directory Server. */
  private CoreConfigManager coreConfigManager;
  // The crypto manager for the Directory Server.
  /** The crypto manager for the Directory Server. */
  private CryptoManagerImpl cryptoManager;
  // The default compressed schema manager.
  /** The default compressed schema manager. */
  private DefaultCompressedSchema compressedSchema;
  // The environment configuration for the Directory Server.
  /** The environment configuration for the Directory Server. */
  private DirectoryEnvironmentConfig environmentConfig;
  // The shutdown hook that has been registered with the server.
  /** The shutdown hook that has been registered with the server. */
  private DirectoryServerShutdownHook shutdownHook;
  // The DN of the default password policy configuration entry.
  /** The DN of the default password policy configuration entry. */
  private DN defaultPasswordPolicyDN;
  // The DN of the identity mapper that will be used to resolve authorization
  // IDs contained in the proxied authorization V2 control.
  /**
   * The DN of the identity mapper that will be used to resolve authorization
   * IDs contained in the proxied authorization V2 control.
   */
  private DN proxiedAuthorizationIdentityMapperDN;
  // The DN of the entry containing the server schema definitions.
  /** The DN of the entry containing the server schema definitions. */
  private DN schemaDN;
  // The Directory Server entry cache.
  /** The Directory Server entry cache. */
  private EntryCache entryCache;
  // The configuration manager for the entry cache.
  /** The configuration manager for the entry cache. */
  private EntryCacheConfigManager entryCacheConfigManager;
  // The configuration manager for extended operation handlers.
  /** The configuration manager for extended operation handlers. */
  private ExtendedOperationConfigManager extendedOperationConfigManager;
  // The path to the file containing the Directory Server configuration, or the
  // information needed to bootstrap the configuration handler.
  /**
   * The path to the file containing the Directory Server configuration, or the
   * information needed to bootstrap the configuration handler.
   */
  private File configFile;
  // The group manager for the Directory Server.
  /** The group manager for the Directory Server. */
  private GroupManager groupManager;
  // The subentry manager for the Directory Server.
  /** The subentry manager for the Directory Server. */
  private SubentryManager subentryManager;
  // The configuration manager for identity mappers.
  /** The configuration manager for identity mappers. */
  private IdentityMapperConfigManager identityMapperConfigManager;
  // The maximum number of entries that should be returned for a search unless
  // overridden on a per-user basis.
  /**
   * The maximum number of entries that should be returned for a search unless
   * overridden on a per-user basis.
   */
  private int sizeLimit;
  // The maximum length of time in seconds that should be allowed for a search
  // unless overridden on a per-user basis.
  /**
   * The maximum length of time in seconds that should be allowed for a search
   * unless overridden on a per-user basis.
   */
  private int timeLimit;
  // The maxiumum number of candidates that should be check for matches during
  // a search.
  /**
   * The maximum number of candidates that should be check for matches during a
   * search.
   */
  private int lookthroughLimit;
  // The current active persistent searches.
  /** The current active persistent searches. */
  private AtomicInteger activePSearches = new AtomicInteger(0);
  //The maximum number of concurrent persistent searches.
  /** The maximum number of concurrent persistent searches. */
  private int maxPSearches;
  // Whether to use collect operation processing times in nanosecond resolution
  /**
   * Whether to use collect operation processing times in nanosecond resolution.
   */
  private boolean useNanoTime;
  // The key manager provider configuration manager for the Directory Server.
  /**
   * The key manager provider configuration manager for the Directory Server.
   */
  private KeyManagerProviderConfigManager keyManagerProviderConfigManager;
  // The extension configuration manager for the Directory Server.
  /** The extension configuration manager for the Directory Server. */
  private ExtensionConfigManager extensionConfigManager;
  // The set of connections that are currently established.
  /** The set of connections that are currently established. */
  private LinkedHashSet<ClientConnection> establishedConnections;
  // The sets of mail server properties
  /** The sets of mail server properties. */
  private List<Properties> mailServerPropertySets;
  // The set of schema changes made by editing the schema configuration files
  // with the server offline.
  /**
   * The set of schema changes made by editing the schema configuration files
   * with the server offline.
   */
  private List<Modification> offlineSchemaChanges;
  // The log rotation policy config manager for the Directory Server.
  /** The log rotation policy config manager for the Directory Server. */
  private LogRotationPolicyConfigManager rotationPolicyConfigManager;
  // The log retention policy config manager for the Directory Server.
  /** The log retention policy config manager for the Directory Server. */
  private LogRetentionPolicyConfigManager retentionPolicyConfigManager;
  // The logger configuration manager for the Directory Server.
  /** The logger configuration manager for the Directory Server. */
  private LoggerConfigManager loggerConfigManager;
  // The number of connections currently established to the server.
  /** The number of connections currently established to the server. */
  private long currentConnections;
  // The idle time limit for the server.
  /** The idle time limit for the server. */
  private long idleTimeLimit;
  // The maximum number of connections that will be allowed at any given time.
  /**
   * The maximum number of connections that will be allowed at any given time.
   */
  private long maxAllowedConnections;
  // The maximum number of connections established at one time.
  /** The maximum number of connections established at one time. */
  private long maxConnections;
  // The time that this Directory Server instance was started.
  /** The time that this Directory Server instance was started. */
  private long startUpTime;
  // The total number of connections established since startup.
  /** The total number of connections established since startup. */
  private long totalConnections;
  // The MBean server used to handle JMX interaction.
  /** The MBean server used to handle JMX interaction. */
  private MBeanServer mBeanServer;
  // The monitor config manager for the Directory Server.
  /** The monitor config manager for the Directory Server. */
  private MonitorConfigManager monitorConfigManager;
  // The operating system on which the server is running.
  /** The operating system on which the server is running. */
  private final OperatingSystem operatingSystem;
  // The configuration handler used to manage the password generators.
  /** The configuration handler used to manage the password generators. */
  private PasswordGeneratorConfigManager passwordGeneratorConfigManager;
  // The default password policy for the Directory Server.
  /** The default password policy for the Directory Server. */
  private PasswordPolicy defaultPasswordPolicy;
  // The configuration handler used to manage the authentication policies.
  /** The configuration handler used to manage the authentication policies. */
  private PasswordPolicyConfigManager authenticationPolicyConfigManager;
  // The configuration handler used to manage the password storage schemes.
  /** The configuration handler used to manage the password storage schemes. */
  private PasswordStorageSchemeConfigManager storageSchemeConfigManager;
  // The configuration handler used to manage the password validators.
  /** The configuration handler used to manage the password validators. */
  private PasswordValidatorConfigManager passwordValidatorConfigManager;
  // The plugin config manager for the Directory Server.
  /** The plugin config manager for the Directory Server. */
  private PluginConfigManager pluginConfigManager;
  // The result code that should be used for internal "server" errors.
  /** The result code that should be used for internal "server" errors. */
  private ResultCode serverErrorResultCode;
  // The special backend used for the Directory Server root DSE.
  /** The special backend used for the Directory Server root DSE. */
  private RootDSEBackend rootDSEBackend;
  // The root DN config manager for the server.
  /** The root DN config manager for the server. */
  private RootDNConfigManager rootDNConfigManager;
  // The SASL mechanism config manager for the Directory Server.
  /** The SASL mechanism config manager for the Directory Server. */
  private SASLConfigManager saslConfigManager;
  // The schema for the Directory Server.
  /** The schema for the Directory Server. */
  private Schema schema;
  // The schema configuration manager for the Directory Server.
  /** The schema configuration manager for the Directory Server. */
  private SchemaConfigManager schemaConfigManager;
  // The set of disabled privileges.
  /** The set of disabled privileges. */
  private Set<Privilege> disabledPrivileges;
  // The set of allowed task classes.
  /** The set of allowed task classes. */
  private Set<String> allowedTasks;
  // The time that the server was started, formatted in UTC time.
  /** The time that the server was started, formatted in UTC time. */
  private String startTimeUTC;
  // The synchronization provider configuration manager for the Directory
  // Server.
  /**
   * The synchronization provider configuration manager for the Directory
   * Server.
   */
  private SynchronizationProviderConfigManager
               synchronizationProviderConfigManager;
  // Registry for base DN and naming context information.
  /** Registry for base DN and naming context information. */
  private BaseDnRegistry baseDnRegistry;
  // The set of backends registered with the server.
  /** The set of backends registered with the server. */
  private TreeMap<String,Backend> backends;
  // The mapping between backends and their unique indentifiers for their
  // offline state, representing either checksum or other unique value to
  // be used for detecting any offline modifications to a given backend.
  /**
   * The mapping between backends and their unique identifiers for their offline
   * state, representing either checksum or other unique value to be used for
   * detecting any offline modifications to a given backend.
   */
  private ConcurrentHashMap<String,Long> offlineBackendsStateIDs;
  // The set of supported controls registered with the Directory Server.
  /** The set of supported controls registered with the Directory Server. */
  private TreeSet<String> supportedControls;
  // The set of supported feature OIDs registered with the Directory Server.
  /** The set of supported feature OIDs registered with the Directory Server. */
  private TreeSet<String> supportedFeatures;
  // The trust manager provider configuration manager for the Directory Server.
  /**
   * The trust manager provider configuration manager for the Directory Server.
   */
  private TrustManagerProviderConfigManager trustManagerProviderConfigManager;
  // The virtual attribute provider configuration manager for the Directory
  // Server.
  /**
   * The virtual attribute provider configuration manager for the Directory
   * Server.
   */
  private VirtualAttributeConfigManager virtualAttributeConfigManager;
  // The work queue that will be used to service client requests.
  /** The work queue that will be used to service client requests. */
  private WorkQueue workQueue;
  // The writability mode for the Directory Server.
  /** The writability mode for the Directory Server. */
  private WritabilityMode writabilityMode;
  // The mappings between the names and WorkflowElements
  // registered with the Directory Server
  /**
   * The mappings between the names and WorkflowElements registered with the
   * Directory Server.
   */
  private final ConcurrentHashMap<String, WorkflowElement> workflowElements =
          new ConcurrentHashMap<String, WorkflowElement>();
  // The workflow configuration mode (auto or manual).
  /** The workflow configuration mode (auto or manual). */
  private WorkflowConfigurationMode workflowConfigurationMode;
  // The network group config manager for the Directory Server.
  // This config manager is used when the workflow configuration
  // mode is 'manual'.
  /**
   * The network group config manager for the Directory Server. This config
   * manager is used when the workflow configuration mode is 'manual'.
   */
  private NetworkGroupConfigManager networkGroupConfigManager;
  // The workflow config manager for the Directory Server.
  // This config manager is used when the workflow configuration
  // mode is 'manual'.
  /**
   * The workflow config manager for the Directory Server. This config manager
   * is used when the workflow configuration mode is 'manual'.
   */
  private WorkflowConfigManager workflowConfigManager;
  // The workflow element config manager for the Directory Server.
  // This config manager is used when the workflow configuration
  // mode is 'manual'.
  /**
   * The workflow element config manager for the Directory Server. This config
   * manager is used when the workflow configuration mode is 'manual'.
   */
  private WorkflowElementConfigManager workflowElementConfigManager;
  // The maximum size that internal buffers will be allowed to grow to until
  // they are trimmed.
  /**
   * The maximum size that internal buffers will be allowed to grow to until
   * they are trimmed.
   */
  private int maxInternalBufferSize = DEFAULT_MAX_INTERNAL_BUFFER_SIZE;
  /**
@@ -7215,7 +7295,7 @@
   * @throws  DirectoryException  If a problem prevents the operation from being
   *                              added to the queue (e.g., the queue is full).
   */
  public static void enqueueRequest(AbstractOperation operation)
  public static void enqueueRequest(Operation operation)
         throws DirectoryException
  {
    ClientConnection clientConnection = operation.getClientConnection();
@@ -9067,7 +9147,7 @@
  @Override
  public String getClassName()
  {
    return CLASS_NAME;
    return DirectoryServer.class.getName();
  }