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

Jean-Noël Rouvignac
20.49.2016 6d2dab657d824fb82d6c58a17517cd8f1c47c70f
Remove warning during build: Added generic type arguments
8 files modified
617 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/core/BaseDnRegistry.java 52 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java 357 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/EncodePassword.java 29 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java 124 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/backends/GenericBackendTestCase.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/extensions/DefaultEntryCacheTestCase.java 39 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxTestCase.java 6 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/AciListenerManager.java
@@ -309,9 +309,10 @@
    this.plugin = new AciChangeListenerPlugin();
    // Process ACI from already registered backends.
    Map<String, Backend> backendMap = DirectoryServer.getBackends();
    Map<String, Backend<?>> backendMap = DirectoryServer.getBackends();
    if (backendMap != null) {
      for (Backend backend : backendMap.values()) {
      for (Backend<?> backend : backendMap.values())
      {
        performBackendPreInitializationProcessing(backend);
      }
    }
opendj-server-legacy/src/main/java/org/opends/server/core/BaseDnRegistry.java
@@ -16,32 +16,31 @@
 */
package org.opends.server.core;
import static org.forgerock.util.Reject.*;
import static org.opends.messages.CoreMessages.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.api.Backend;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.DirectoryException;
import static org.forgerock.util.Reject.*;
import static org.opends.messages.CoreMessages.*;
/**
 * Registry for maintaining the set of registered base DN's, associated backends
 * and naming context information.
 */
public class BaseDnRegistry {
  /** The set of base DNs registered with the server. */
  private final TreeMap<DN, Backend> baseDNs = new TreeMap<>();
  private final TreeMap<DN, Backend<?>> baseDNs = new TreeMap<>();
  /** The set of private naming contexts registered with the server. */
  private final TreeMap<DN, Backend> privateNamingContexts = new TreeMap<>();
  private final TreeMap<DN, Backend<?>> privateNamingContexts = new TreeMap<>();
  /** The set of public naming contexts registered with the server. */
  private final TreeMap<DN, Backend> publicNamingContexts = new TreeMap<>();
  private final TreeMap<DN, Backend<?>> publicNamingContexts = new TreeMap<>();
  /**
   * Indicates whether or not this base DN registry is in test mode.
@@ -73,7 +72,6 @@
      throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    }
    // Check to see if the backend is already registered with the server for
    // any other base DN(s).  The new base DN must not have any hierarchical
    // relationship with any other base Dns for the same backend.
@@ -94,7 +92,6 @@
      }
    }
    // Check to see if the new base DN is subordinate to any other base DN
    // already defined.  If it is, then any other base DN(s) for the same
    // backend must also be subordinate to the same base DN.
@@ -106,7 +103,6 @@
      throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    }
    // Check to see if the new base DN should be the superior base DN for any
    // other base DN(s) already defined.
    LinkedList<Backend<?>> subordinateBackends = new LinkedList<>();
@@ -132,7 +128,6 @@
      }
    }
    // If we've gotten here, then the new base DN is acceptable.  If we should
    // actually apply the changes then do so now.
    final List<LocalizableMessage> errors = new LinkedList<>();
@@ -152,7 +147,6 @@
          get(superiorBackend.getBackendID(), baseDN, backend.getBackendID()));
    }
    baseDNs.put(baseDN, backend);
    if (superiorBackend == null)
@@ -228,7 +222,6 @@
    return superiorBackend;
  }
  /**
   * Deregisters a base DN with this registry.
   *
@@ -253,7 +246,6 @@
      throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    }
    // Check to see if the backend has a parent backend, and whether it has
    // any subordinates with base DNs that are below the base DN to remove.
    Backend<?>             superiorBackend     = backend.getParentBackend();
@@ -273,7 +265,6 @@
      }
    }
    // See if there are any other base DNs registered within the same backend.
    LinkedList<DN> otherBaseDNs = new LinkedList<>();
    for (DN dn : baseDNs.keySet())
@@ -290,7 +281,6 @@
      }
    }
    // If we've gotten here, then it's OK to make the changes.
    // Get rid of the references to this base DN in the mapping tree
@@ -334,7 +324,6 @@
        superiorBackend.removeSubordinateBackend(backend);
      }
      // If there are any subordinate backends, then they need to be made
      // subordinate to the parent backend.  Also, we should log a warning
      // message indicating that there may be inconsistent search results
@@ -361,10 +350,7 @@
    return errors;
  }
  /**
   * Creates a default instance.
   */
  /** Creates a default instance. */
  BaseDnRegistry()
  {
    this(false);
@@ -384,7 +370,6 @@
    return registry;
  }
  /**
   * Creates a parameterized instance.
   *
@@ -396,41 +381,38 @@
    this.testOnly = testOnly;
  }
  /**
   * Gets the mapping of registered base DNs to their associated backend.
   *
   * @return mapping from base DN to backend
   */
  Map<DN,Backend> getBaseDnMap() {
  Map<DN, Backend<?>> getBaseDnMap()
  {
    return this.baseDNs;
  }
  /**
   * Gets the mapping of registered public naming contexts to their
   * associated backend.
   *
   * @return mapping from naming context to backend
   */
  Map<DN,Backend> getPublicNamingContextsMap() {
  Map<DN, Backend<?>> getPublicNamingContextsMap()
  {
    return this.publicNamingContexts;
  }
  /**
   * Gets the mapping of registered private naming contexts to their
   * associated backend.
   *
   * @return mapping from naming context to backend
   */
  Map<DN,Backend> getPrivateNamingContextsMap() {
  Map<DN, Backend<?>> getPrivateNamingContextsMap()
  {
    return this.privateNamingContexts;
  }
  /**
   * Indicates whether the specified DN is contained in this registry as
   * a naming contexts.
@@ -445,14 +427,10 @@
    return privateNamingContexts.containsKey(dn) || publicNamingContexts.containsKey(dn);
  }
  /**
   * Clear and nullify this registry's internal state.
   */
  /** Clear and nullify this registry's internal state. */
  void clear() {
    baseDNs.clear();
    privateNamingContexts.clear();
    publicNamingContexts.clear();
  }
}
opendj-server-legacy/src/main/java/org/opends/server/core/DirectoryServer.java
@@ -293,11 +293,11 @@
  private ConfigurationHandler configurationHandler;
  /** The set of account status notification handlers defined in the server. */
  private ConcurrentMap<DN, AccountStatusNotificationHandler>
  private ConcurrentMap<DN, AccountStatusNotificationHandler<?>>
               accountStatusNotificationHandlers;
  /** The set of certificate mappers registered with the server. */
  private ConcurrentMap<DN, CertificateMapper> certificateMappers;
  private ConcurrentMap<DN, CertificateMapper<?>> certificateMappers;
  /** The set of alternate bind DNs for the root users. */
  private ConcurrentMap<DN, DN> alternateRootBindDNs;
@@ -306,7 +306,7 @@
   * The set of identity mappers registered with the server (mapped between the
   * configuration entry Dn and the mapper).
   */
  private ConcurrentMap<DN, IdentityMapper> identityMappers;
  private ConcurrentMap<DN, IdentityMapper<?>> identityMappers;
  /**
   * The set of JMX MBeans that have been registered with the server (mapped
@@ -315,14 +315,14 @@
  private ConcurrentHashMap<DN,JMXMBean> mBeans;
  /** The set of key manager providers registered with the server. */
  private ConcurrentMap<DN, KeyManagerProvider> keyManagerProviders;
  private ConcurrentMap<DN, KeyManagerProvider<?>> keyManagerProviders;
  /**
   * 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 ConcurrentMap<DN, PasswordGenerator> passwordGenerators;
  private ConcurrentMap<DN, PasswordGenerator<?>> passwordGenerators;
  /**
   * The set of authentication policies registered with the Directory Server, as
@@ -336,90 +336,79 @@
   * mapping between the DN of the associated configuration entry and the
   * validator implementation.
   */
  private ConcurrentMap<DN, PasswordValidator<? extends PasswordValidatorCfg>>
               passwordValidators;
  private ConcurrentMap<DN, PasswordValidator<? extends PasswordValidatorCfg>> passwordValidators;
  /** The set of trust manager providers registered with the server. */
  private ConcurrentMap<DN, TrustManagerProvider> trustManagerProviders;
  private ConcurrentMap<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.
   */
  private ConcurrentMap<DN, RotationPolicy> rotationPolicies;
  private ConcurrentMap<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.
   */
  private ConcurrentMap<DN, RetentionPolicy> retentionPolicies;
  private ConcurrentMap<DN, RetentionPolicy<?>> retentionPolicies;
  /** The set supported LDAP protocol versions. */
  private ConcurrentMap<Integer, List<ConnectionHandler>>
               supportedLDAPVersions;
  private ConcurrentMap<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).
   */
  private ConcurrentMap<String, ExtendedOperationHandler>
               extendedOperationHandlers;
  private ConcurrentMap<String, ExtendedOperationHandler<?>> extendedOperationHandlers;
  /**
   * The set of monitor providers registered with the Directory Server, as a
   * mapping between the monitor name and the corresponding implementation.
   */
  private ConcurrentMap<String, MonitorProvider<? extends MonitorProviderCfg>>
               monitorProviders;
  private ConcurrentMap<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.
   */
  private ConcurrentHashMap<String,PasswordStorageScheme>
               authPasswordStorageSchemes;
  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).
   */
  private ConcurrentHashMap<String,PasswordStorageScheme>
               passwordStorageSchemes;
  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).
   */
  private ConcurrentMap<DN, PasswordStorageScheme>
               passwordStorageSchemesByDN;
  private ConcurrentMap<DN, PasswordStorageScheme<?>> passwordStorageSchemesByDN;
  /**
   * The set of SASL mechanism handlers registered with the server (mapped
   * between the mechanism name and the handler).
   */
  private ConcurrentMap<String, SASLMechanismHandler> saslMechanismHandlers;
  private ConcurrentMap<String, SASLMechanismHandler<?>> saslMechanismHandlers;
  /** The connection handler configuration manager for the Directory Server. */
  private ConnectionHandlerConfigManager connectionHandlerConfigManager;
  /** The set of alert handlers registered with the Directory Server. */
  private List<AlertHandler> alertHandlers;
  private List<AlertHandler<?>> alertHandlers;
  /** The set of connection handlers registered with the Directory Server. */
  private List<ConnectionHandler<?>> connectionHandlers;
  /** The set of backup task listeners registered with the Directory Server. */
  private CopyOnWriteArrayList<BackupTaskListener> backupTaskListeners;
  /** The set of connection handlers registered with the Directory Server. */
  private List<ConnectionHandler> connectionHandlers;
  /** 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. */
  private CopyOnWriteArrayList<ImportTaskListener> importTaskListeners;
  /** The set of restore task listeners registered with the Directory Server. */
  private CopyOnWriteArrayList<RestoreTaskListener> restoreTaskListeners;
@@ -427,8 +416,7 @@
   * The set of initialization completed listeners that have been registered
   * with the Directory Server.
   */
  private List<InitializationCompletedListener>
          initializationCompletedListeners;
  private List<InitializationCompletedListener> initializationCompletedListeners;
  /** The set of shutdown listeners that have been registered with the Directory Server. */
  private List<ServerShutdownListener> shutdownListeners;
@@ -468,7 +456,7 @@
  private DN schemaDN;
  /** The Directory Server entry cache. */
  private EntryCache entryCache;
  private EntryCache<?> entryCache;
  /** The configuration manager for the entry cache. */
  private EntryCacheConfigManager entryCacheConfigManager;
@@ -646,7 +634,7 @@
  private final VirtualAttributeConfigManager virtualAttributeConfigManager;
  /** The work queue that will be used to service client requests. */
  private WorkQueue workQueue;
  private WorkQueue<?> workQueue;
  /** The writability mode for the Directory Server. */
  private WritabilityMode writabilityMode;
@@ -1170,7 +1158,7 @@
      // matching rules and attribute syntaxes.
      try
      {
        directoryServer.setSchema(new Schema(org.forgerock.opendj.ldap.schema.Schema.getCoreSchema()));
        setSchema(new Schema(org.forgerock.opendj.ldap.schema.Schema.getCoreSchema()));
      }
      catch (DirectoryException unexpected)
      {
@@ -2325,7 +2313,7 @@
   * @param  lowerName  The lowercase name or OID for the matching rule to
   *                    retrieve.
   *
   * @return  The requested matching rule, or <CODE>null</CODE> if no such
   * @return  The requested matching rule, or {@code null} if no such
   *          matching rule has been defined in the server.
   */
  public static MatchingRule getMatchingRule(String lowerName)
@@ -2382,7 +2370,7 @@
   * @param  lowerName  The lowercase name or OID for the objectclass to
   *                    retrieve.
   *
   * @return  The requested objectclass, or <CODE>null</CODE> if there is no
   * @return  The requested objectclass, or {@code null} if there is no
   *          such objectclass defined in the server schema.
   */
  public static ObjectClass getObjectClass(String lowerName)
@@ -2401,7 +2389,7 @@
   *                        the requested objectclass is not defined in the
   *                        server schema.
   *
   * @return  The objectclass type, or <CODE>null</CODE> if there is no
   * @return  The objectclass type, or {@code null} if there is no
   *          objectclass with the specified name or OID defined in the server
   *          schema and a default class should not be returned.
   */
@@ -2734,7 +2722,7 @@
   *                       rule use.
   *
   * @return  The matching rule use for the provided matching rule, or
   *          <CODE>null</CODE> if none is defined.
   *          {@code null} if none is defined.
   */
  public static MatchingRuleUse getMatchingRuleUse(MatchingRule matchingRule)
  {
@@ -2791,7 +2779,7 @@
   * @param  objectClass  The objectclass for which to retrieve the associated
   *                      DIT content rule.
   *
   * @return  The requested DIT content rule, or <CODE>null</CODE> if no such
   * @return  The requested DIT content rule, or {@code null} if no such
   *          rule is defined in the schema.
   */
  public static DITContentRule getDITContentRule(ObjectClass objectClass)
@@ -2848,7 +2836,7 @@
   * @param  ruleID  The rule ID for which to retrieve the associated DIT
   *                 structure rule.
   *
   * @return  The requested DIT structure rule, or <CODE>null</CODE> if no such
   * @return  The requested DIT structure rule, or {@code null} if no such
   *          rule is defined.
   */
  public static DITStructureRule getDITStructureRule(int ruleID)
@@ -2862,7 +2850,7 @@
   * @param  nameForm  The name form for which to retrieve the associated DIT
   *                   structure rule.
   *
   * @return  The requested DIT structure rule, or <CODE>null</CODE> if no such
   * @return  The requested DIT structure rule, or {@code null} if no such
   *          rule is defined.
   */
  public static DITStructureRule getDITStructureRule(NameForm nameForm)
@@ -2920,7 +2908,7 @@
   * @param  objectClass  The objectclass for which to retrieve the associated
   *                      name form.
   *
   * @return  The requested name forms, or <CODE>null</CODE> if no such name
   * @return  The requested name forms, or {@code null} if no such name
   *           form is defined in the schema.
   */
  public static List<NameForm> getNameForm(ObjectClass objectClass)
@@ -2934,7 +2922,7 @@
   * @param  lowerName  The name or OID of the name form to retrieve, formatted
   *                    in all lowercase characters.
   *
   * @return  The requested name form, or <CODE>null</CODE> if no such name form
   * @return  The requested name form, or {@code null} if no such name form
   *          is defined in the schema.
   */
  public static NameForm getNameForm(String lowerName)
@@ -3057,7 +3045,7 @@
   *                        retrieve the associated JMX MBean.
   *
   * @return  The JMX MBean associated with the specified entry in the Directory
   *          Server configuration, or <CODE>null</CODE> if there is no MBean
   *          Server configuration, or {@code null} if there is no MBean
   *          for the specified entry.
   */
  public static JMXMBean getJMXMBean(DN configEntryDN)
@@ -3108,7 +3096,7 @@
   * @return  The set of alert handlers that have been registered with the
   *          Directory Server.
   */
  public static List<AlertHandler> getAlertHandlers()
  public static List<AlertHandler<?>> getAlertHandlers()
  {
    return directoryServer.alertHandlers;
  }
@@ -3118,7 +3106,7 @@
   *
   * @param  alertHandler  The alert handler to register.
   */
  public static void registerAlertHandler(AlertHandler alertHandler)
  public static void registerAlertHandler(AlertHandler<?> alertHandler)
  {
    directoryServer.alertHandlers.add(alertHandler);
  }
@@ -3128,7 +3116,7 @@
   *
   * @param  alertHandler  The alert handler to deregister.
   */
  public static void deregisterAlertHandler(AlertHandler alertHandler)
  public static void deregisterAlertHandler(AlertHandler<?> alertHandler)
  {
    directoryServer.alertHandlers.remove(alertHandler);
  }
@@ -3138,7 +3126,7 @@
   *
   * @param  generator     The alert generator that created the alert.
   * @param  alertType     The alert type name for this alert.
   * @param  alertMessage  A message (possibly <CODE>null</CODE>) that can
   * @param  alertMessage  A message (possibly {@code null}) that can
   */
  public static void sendAlertNotification(AlertGenerator generator,
                                           String alertType,
@@ -3171,16 +3159,9 @@
        AlertHandlerCfg config = alertHandler.getAlertHandlerConfiguration();
        Set<String> enabledAlerts = config.getEnabledAlertType();
        Set<String> disabledAlerts = config.getDisabledAlertType();
        if (enabledAlerts == null || enabledAlerts.isEmpty())
        {
          if (disabledAlerts != null && disabledAlerts.contains(alertType))
          {
            continue;
          }
        }
        else
        {
          if (enabledAlerts.contains(alertType))
        if (enabledAlerts == null
            || enabledAlerts.isEmpty()
            || enabledAlerts.contains(alertType))
          {
            if (disabledAlerts != null && disabledAlerts.contains(alertType))
            {
@@ -3191,7 +3172,6 @@
          {
            continue;
          }
        }
        alertHandler.sendAlertNotification(generator, alertType, alertMessage);
      }
@@ -3224,8 +3204,7 @@
   * @return  The set of password storage schemes defined in the Directory
   *          Server.
   */
  public static ConcurrentHashMap<String,PasswordStorageScheme>
                     getPasswordStorageSchemes()
  public static ConcurrentHashMap<String, PasswordStorageScheme<?>> getPasswordStorageSchemes()
  {
    return directoryServer.passwordStorageSchemes;
  }
@@ -3236,10 +3215,10 @@
   * @param  lowerName  The name of the password storage scheme to retrieve,
   *                    formatted in all lowercase characters.
   *
   * @return  The requested password storage scheme, or <CODE>null</CODE> if no
   * @return  The requested password storage scheme, or {@code null} if no
   *          such scheme is defined.
   */
  public static PasswordStorageScheme getPasswordStorageScheme(String lowerName)
  public static PasswordStorageScheme<?> getPasswordStorageScheme(String lowerName)
  {
    return directoryServer.passwordStorageSchemes.get(lowerName);
  }
@@ -3252,8 +3231,7 @@
   * @return  The set of authentication password storage schemes defined in the
   *          Directory Server.
   */
  public static ConcurrentHashMap<String,PasswordStorageScheme>
                     getAuthPasswordStorageSchemes()
  public static ConcurrentHashMap<String, PasswordStorageScheme<?>> getAuthPasswordStorageSchemes()
  {
    return directoryServer.authPasswordStorageSchemes;
  }
@@ -3265,9 +3243,9 @@
   *               storage scheme to retrieve.
   *
   * @return  The requested authentication password storage scheme, or
   *          <CODE>null</CODE> if no such scheme is defined.
   *          {@code null} if no such scheme is defined.
   */
  public static PasswordStorageScheme getAuthPasswordStorageScheme(String name)
  public static PasswordStorageScheme<?> getAuthPasswordStorageScheme(String name)
  {
    return directoryServer.authPasswordStorageSchemes.get(name);
  }
@@ -3282,8 +3260,7 @@
   * @param  scheme         The password storage scheme to register with the
   *                        Directory Server.
   */
  public static void registerPasswordStorageScheme(DN configEntryDN,
                                                   PasswordStorageScheme scheme)
  public static void registerPasswordStorageScheme(DN configEntryDN, PasswordStorageScheme<?> scheme)
  {
    directoryServer.passwordStorageSchemesByDN.put(configEntryDN, scheme);
@@ -3307,8 +3284,7 @@
   */
  public static void deregisterPasswordStorageScheme(DN configEntryDN)
  {
    PasswordStorageScheme scheme =
         directoryServer.passwordStorageSchemesByDN.remove(configEntryDN);
    PasswordStorageScheme<?> scheme = directoryServer.passwordStorageSchemesByDN.remove(configEntryDN);
    if (scheme != null)
    {
@@ -3345,7 +3321,7 @@
   * @param  configEntryDN  The DN of the configuration entry for which to
   *                        retrieve the associated password validator.
   *
   * @return  The requested password validator, or <CODE>null</CODE> if no such
   * @return  The requested password validator, or {@code null} if no such
   *          validator is defined.
   */
  public static PasswordValidator<? extends PasswordValidatorCfg>
@@ -3391,7 +3367,7 @@
   * @return  The set of account status notification handlers defined in the
   *          Directory Server.
   */
  public static ConcurrentMap<DN, AccountStatusNotificationHandler>
  public static ConcurrentMap<DN, AccountStatusNotificationHandler<?>>
                     getAccountStatusNotificationHandlers()
  {
    return directoryServer.accountStatusNotificationHandlers;
@@ -3405,9 +3381,9 @@
   *                    account status notification handler to retrieve.
   *
   * @return  The requested account status notification handler, or
   *          <CODE>null</CODE> if no such handler is defined in the server.
   *          {@code null} if no such handler is defined in the server.
   */
  public static AccountStatusNotificationHandler
  public static AccountStatusNotificationHandler<?>
                     getAccountStatusNotificationHandler(DN handlerDN)
  {
    return directoryServer.accountStatusNotificationHandlers.get(handlerDN);
@@ -3423,7 +3399,7 @@
   *                    the Directory Server.
   */
  public static void registerAccountStatusNotificationHandler(DN handlerDN,
                          AccountStatusNotificationHandler handler)
      AccountStatusNotificationHandler<?> handler)
  {
    directoryServer.accountStatusNotificationHandlers.put(handlerDN, handler);
  }
@@ -3448,7 +3424,7 @@
   * @return  The set of password generators that have been registered for use
   *          with the Directory Server.
   */
  public static ConcurrentMap<DN, PasswordGenerator> getPasswordGenerators()
  public static ConcurrentMap<DN, PasswordGenerator<?>> getPasswordGenerators()
  {
    return directoryServer.passwordGenerators;
  }
@@ -3460,10 +3436,10 @@
   * @param  configEntryDN  The DN of the configuration entry for which to
   *                        retrieve the associated password generator.
   *
   * @return  The requested password generator, or <CODE>null</CODE> if no such
   * @return  The requested password generator, or {@code null} if no such
   *          generator is defined.
   */
  public static PasswordGenerator getPasswordGenerator(DN configEntryDN)
  public static PasswordGenerator<?> getPasswordGenerator(DN configEntryDN)
  {
    return directoryServer.passwordGenerators.get(configEntryDN);
  }
@@ -3477,8 +3453,7 @@
   * @param  generator      The password generator to register with the
   *                        Directory Server.
   */
  public static void registerPasswordGenerator(DN configEntryDN,
                                               PasswordGenerator generator)
  public static void registerPasswordGenerator(DN configEntryDN, PasswordGenerator<?> generator)
  {
    directoryServer.passwordGenerators.put(configEntryDN, generator);
  }
@@ -3518,7 +3493,7 @@
   *          The DN of the configuration entry for which to retrieve the
   *          associated authentication policy.
   * @return The authentication policy registered for the provided configuration
   *         entry, or <CODE>null</CODE> if there is no such policy.
   *         entry, or {@code null} if there is no such policy.
   */
  public static AuthenticationPolicy getAuthenticationPolicy(DN configEntryDN)
  {
@@ -3668,9 +3643,9 @@
   *                        retrieve the associated rotation policy.
   *
   * @return  The rotation policy registered for the provided configuration
   *          entry, or <CODE>null</CODE> if there is no such policy.
   *          entry, or {@code null} if there is no such policy.
   */
  public static RotationPolicy getRotationPolicy(DN configEntryDN)
  public static RotationPolicy<?> getRotationPolicy(DN configEntryDN)
  {
    Reject.ifNull(configEntryDN);
@@ -3686,8 +3661,7 @@
   *                        password policy.
   * @param  policy         The rotation policy to register with the server.
   */
  public static void registerRotationPolicy(DN configEntryDN,
                                            RotationPolicy policy)
  public static void registerRotationPolicy(DN configEntryDN, RotationPolicy<?> policy)
  {
    Reject.ifNull(configEntryDN, policy);
@@ -3716,9 +3690,9 @@
   *                        retrieve the associated retention policy.
   *
   * @return  The retention policy registered for the provided configuration
   *          entry, or <CODE>null</CODE> if there is no such policy.
   *          entry, or {@code null} if there is no such policy.
   */
  public static RetentionPolicy getRetentionPolicy(DN configEntryDN)
  public static RetentionPolicy<?> getRetentionPolicy(DN configEntryDN)
  {
    Reject.ifNull(configEntryDN);
@@ -3734,8 +3708,7 @@
   *                        password policy.
   * @param  policy         The retention policy to register with the server.
   */
  public static void registerRetentionPolicy(DN configEntryDN,
                                            RetentionPolicy policy)
  public static void registerRetentionPolicy(DN configEntryDN, RetentionPolicy<?> policy)
  {
    Reject.ifNull(configEntryDN, policy);
@@ -3777,7 +3750,7 @@
   * @param  lowerName  The name of the monitor provider to retrieve, in all
   *                    lowercase characters.
   *
   * @return  The requested resource monitor, or <CODE>null</CODE> if none
   * @return  The requested resource monitor, or {@code null} if none
   *          exists with the specified name.
   */
  public static MonitorProvider<? extends MonitorProviderCfg>
@@ -3861,7 +3834,7 @@
   *
   * @return  The entry cache for the Directory Server.
   */
  public static EntryCache getEntryCache()
  public static EntryCache<?> getEntryCache()
  {
    return directoryServer.entryCache;
  }
@@ -3872,7 +3845,7 @@
   *
   * @param  entryCache  The entry cache for the Directory Server.
   */
  public static void setEntryCache(EntryCache entryCache)
  public static void setEntryCache(EntryCache<?> entryCache)
  {
    synchronized (directoryServer)
    {
@@ -3887,7 +3860,7 @@
   * @return  The set of key manager providers registered with the Directory
   *          Server.
   */
  public static Map<DN,KeyManagerProvider> getKeyManagerProviders()
  public static Map<DN, KeyManagerProvider<?>> getKeyManagerProviders()
  {
    return directoryServer.keyManagerProviders;
  }
@@ -3902,7 +3875,7 @@
   *          {@code null} if there is no such key manager provider registered
   *          with the server.
   */
  public static KeyManagerProvider getKeyManagerProvider(DN providerDN)
  public static KeyManagerProvider<?> getKeyManagerProvider(DN providerDN)
  {
    return directoryServer.keyManagerProviders.get(providerDN);
  }
@@ -3914,7 +3887,7 @@
   * @param  provider    The key manager provider to register with the server.
   */
  public static void registerKeyManagerProvider(DN providerDN,
                                                KeyManagerProvider provider)
      KeyManagerProvider<?> provider)
  {
    directoryServer.keyManagerProviders.put(providerDN, provider);
  }
@@ -3937,7 +3910,7 @@
   * @return  The set of trust manager providers registered with the Directory
   *          Server.
   */
  public static Map<DN,TrustManagerProvider> getTrustManagerProviders()
  public static Map<DN, TrustManagerProvider<?>> getTrustManagerProviders()
  {
    return directoryServer.trustManagerProviders;
  }
@@ -3952,7 +3925,7 @@
   *          or {@code null} if there is no such trust manager provider
   *          registered with the server.
   */
  public static TrustManagerProvider getTrustManagerProvider(DN providerDN)
  public static TrustManagerProvider<?> getTrustManagerProvider(DN providerDN)
  {
    return directoryServer.trustManagerProviders.get(providerDN);
  }
@@ -3964,8 +3937,7 @@
   *                     provider.
   * @param  provider    The trust manager provider to register with the server.
   */
  public static void registerTrustManagerProvider(DN providerDN,
                                                  TrustManagerProvider provider)
  public static void registerTrustManagerProvider(DN providerDN, TrustManagerProvider<?> provider)
  {
    directoryServer.trustManagerProviders.put(providerDN, provider);
  }
@@ -3988,7 +3960,7 @@
   * @return  The set of certificate mappers registered with the Directory
   *          Server.
   */
  public static Map<DN,CertificateMapper> getCertificateMappers()
  public static Map<DN, CertificateMapper<?>> getCertificateMappers()
  {
    return directoryServer.certificateMappers;
  }
@@ -4002,7 +3974,7 @@
   *          {@code null} if there is no such certificate mapper registered
   *          with the server.
   */
  public static CertificateMapper getCertificateMapper(DN mapperDN)
  public static CertificateMapper<?> getCertificateMapper(DN mapperDN)
  {
    return directoryServer.certificateMappers.get(mapperDN);
  }
@@ -4013,8 +3985,7 @@
   * @param  mapperDN  The DN with which to register the certificate mapper.
   * @param  mapper    The certificate mapper to register with the server.
   */
  public static void registerCertificateMapper(DN mapperDN,
                                               CertificateMapper mapper)
  public static void registerCertificateMapper(DN mapperDN, CertificateMapper<?> mapper)
  {
    directoryServer.certificateMappers.put(mapperDN, mapper);
  }
@@ -4110,7 +4081,7 @@
   *                              retrieve the real entry DN.
   *
   * @return  The real entry DN for the root user with the provided alternate
   *          bind DN, or <CODE>null</CODE> if no such mapping has been defined.
   *          bind DN, or {@code null} if no such mapping has been defined.
   */
  public static DN getActualRootBindDN(DN alternateRootBindDN)
  {
@@ -4151,7 +4122,7 @@
   * @param  alternateRootBindDN  The alternate root bind DN to be deregistered.
   *
   * @return  The actual root entry DN to which the provided alternate bind DN
   *          was mapped, or <CODE>null</CODE> if there was no mapping for the
   *          was mapped, or {@code null} if there was no mapping for the
   *          provided DN.
   */
  public static DN deregisterAlternateRootBindDN(DN alternateRootBindDN)
@@ -4355,9 +4326,9 @@
   * @return  The set of backends that have been registered with the Directory
   *          Server.
   */
  public static Map<String, Backend> getBackends()
  public static Map<String, Backend<?>> getBackends()
  {
    return new TreeMap<String, Backend>(directoryServer.backends);
    return new TreeMap<>(directoryServer.backends);
  }
  /**
@@ -4414,8 +4385,7 @@
        LocalizableMessage message = ERR_REGISTER_BACKEND_ALREADY_EXISTS.get(backendID);
        throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
      }
      else
      {
        newBackends.put(backendID, backend);
        directoryServer.backends = newBackends;
@@ -4435,7 +4405,6 @@
        registerMonitorProvider(monitor);
      }
    }
  }
  /**
   * Deregisters the provided backend with the Directory Server.  Note that this
@@ -4479,7 +4448,7 @@
   *
   * @return  The entire set of base DNs registered with the Directory Server.
   */
  public static Map<DN,Backend> getBaseDNs()
  public static Map<DN, Backend<?>> getBaseDNs()
  {
    return directoryServer.baseDnRegistry.getBaseDnMap();
  }
@@ -4516,7 +4485,7 @@
      return directoryServer.rootDSEBackend;
    }
    Map<DN,Backend> baseDNs = directoryServer.baseDnRegistry.getBaseDnMap();
    Map<DN, Backend<?>> baseDNs = directoryServer.baseDnRegistry.getBaseDnMap();
    Backend<?> b = baseDNs.get(entryDN);
    while (b == null)
    {
@@ -4606,7 +4575,6 @@
    ifNull(baseDN);
    synchronized(directoryServer) {
      List<LocalizableMessage> warnings =
              directoryServer.baseDnRegistry.deregisterBaseDN(baseDN);
@@ -4630,7 +4598,7 @@
   *
   * @return  The set of public naming contexts defined in the Directory Server.
   */
  public static Map<DN,Backend> getPublicNamingContexts()
  public static Map<DN, Backend<?>> getPublicNamingContexts()
  {
    return directoryServer.baseDnRegistry.getPublicNamingContextsMap();
  }
@@ -4642,7 +4610,7 @@
   * @return  The set of private naming contexts defined in the Directory
   *          Server.
   */
  public static Map<DN,Backend> getPrivateNamingContexts()
  public static Map<DN, Backend<?>> getPrivateNamingContexts()
  {
    return directoryServer.baseDnRegistry.getPrivateNamingContextsMap();
  }
@@ -4705,7 +4673,7 @@
   * Retrieves the DN of the entry containing the server schema definitions.
   *
   * @return  The DN of the entry containing the server schema definitions, or
   *          <CODE>null</CODE> if none has been defined (e.g., if no schema
   *          {@code null} if none has been defined (e.g., if no schema
   *          backend has been configured).
   */
  public static DN getSchemaDN()
@@ -4731,7 +4699,7 @@
   *
   * @param entryDN
   *          The DN of the entry to retrieve.
   * @return The requested entry, or <CODE>null</CODE> if it does not exist.
   * @return The requested entry, or {@code null} if it does not exist.
   * @throws DirectoryException
   *           If a problem occurs while attempting to retrieve the entry.
   */
@@ -4897,8 +4865,7 @@
   * @return  The set of extended operations that may be processed by the
   *         Directory Server.
   */
  public static ConcurrentMap<String, ExtendedOperationHandler>
                     getSupportedExtensions()
  public static ConcurrentMap<String, ExtendedOperationHandler<?>> getSupportedExtensions()
  {
    return directoryServer.extendedOperationHandlers;
  }
@@ -4909,9 +4876,9 @@
   * @param  oid  The OID of the extended operation to retrieve.
   *
   * @return  The handler for the specified extended operation, or
   *          <CODE>null</CODE> if there is none.
   *          {@code null} if there is none.
   */
  public static ExtendedOperationHandler getExtendedOperationHandler(String oid)
  public static ExtendedOperationHandler<?> getExtendedOperationHandler(String oid)
  {
    return directoryServer.extendedOperationHandlers.get(oid);
  }
@@ -4924,8 +4891,7 @@
   * @param  handler  The extended operation handler to register with the
   *                  Directory Server.
   */
  public static void registerSupportedExtension(String oid,
                          ExtendedOperationHandler handler)
  public static void registerSupportedExtension(String oid, ExtendedOperationHandler<?> handler)
  {
    directoryServer.extendedOperationHandlers.put(toLowerCase(oid), handler);
  }
@@ -4948,8 +4914,7 @@
   * @return  The set of SASL mechanisms that are supported by the Directory
   *          Server.
   */
  public static ConcurrentMap<String, SASLMechanismHandler>
                     getSupportedSASLMechanisms()
  public static ConcurrentMap<String, SASLMechanismHandler<?>> getSupportedSASLMechanisms()
  {
    return directoryServer.saslMechanismHandlers;
  }
@@ -4959,10 +4924,10 @@
   *
   * @param  name  The name of the SASL mechanism to retrieve.
   *
   * @return  The handler for the specified SASL mechanism, or <CODE>null</CODE>
   * @return  The handler for the specified SASL mechanism, or {@code null}
   *          if there is none.
   */
  public static SASLMechanismHandler getSASLMechanismHandler(String name)
  public static SASLMechanismHandler<?> getSASLMechanismHandler(String name)
  {
    return directoryServer.saslMechanismHandlers.get(name);
  }
@@ -4974,8 +4939,7 @@
   * @param  handler  The SASL mechanism handler to register with the Directory
   *                  Server.
   */
  public static void registerSASLMechanismHandler(String name,
                                                  SASLMechanismHandler handler)
  public static void registerSASLMechanismHandler(String name, SASLMechanismHandler<?> handler)
  {
    // FIXME -- Should we force this name to be lowercase?  If so, then will
    // that cause the lower name to be used in the root DSE?
@@ -5016,12 +4980,14 @@
   */
  public static synchronized void registerSupportedLDAPVersion(
                                       int supportedLDAPVersion,
                                       ConnectionHandler connectionHandler)
                                       ConnectionHandler<?> connectionHandler)
  {
    List<ConnectionHandler> handlers = directoryServer.supportedLDAPVersions.get(supportedLDAPVersion);
    List<ConnectionHandler<?>> handlers = directoryServer.supportedLDAPVersions.get(supportedLDAPVersion);
    if (handlers == null)
    {
      directoryServer.supportedLDAPVersions.put(supportedLDAPVersion, newLinkedList(connectionHandler));
      handlers = new LinkedList<>();
      handlers.add(connectionHandler);
      directoryServer.supportedLDAPVersions.put(supportedLDAPVersion, handlers);
    }
    else if (!handlers.contains(connectionHandler))
    {
@@ -5039,10 +5005,9 @@
   */
  public static synchronized void deregisterSupportedLDAPVersion(
                                       int supportedLDAPVersion,
                                       ConnectionHandler connectionHandler)
      ConnectionHandler<?> connectionHandler)
  {
    List<ConnectionHandler> handlers =
         directoryServer.supportedLDAPVersions.get(supportedLDAPVersion);
    List<ConnectionHandler<?>> handlers = directoryServer.supportedLDAPVersions.get(supportedLDAPVersion);
    if (handlers != null)
    {
      handlers.remove(connectionHandler);
@@ -5061,7 +5026,7 @@
   * @return  The set of identity mappers defined in the Directory Server
   *          configuration.
   */
  public static ConcurrentMap<DN, IdentityMapper> getIdentityMappers()
  public static ConcurrentMap<DN, IdentityMapper<?>> getIdentityMappers()
  {
    return directoryServer.identityMappers;
  }
@@ -5073,11 +5038,11 @@
   * @param  configEntryDN  The DN of the configuration entry for the identity
   *                        mapper to retrieve.
   *
   * @return  The requested identity mapper, or <CODE>null</CODE> if the
   * @return  The requested identity mapper, or {@code null} if the
   *          provided entry DN is not associated with an active identity
   *          mapper.
   */
  public static IdentityMapper getIdentityMapper(DN configEntryDN)
  public static IdentityMapper<?> getIdentityMapper(DN configEntryDN)
  {
    return directoryServer.identityMappers.get(configEntryDN);
  }
@@ -5089,8 +5054,7 @@
   *                         identity mapper definition resides.
   * @param  identityMapper  The identity mapper to be registered.
   */
  public static void registerIdentityMapper(DN configEntryDN,
                                            IdentityMapper identityMapper)
  public static void registerIdentityMapper(DN configEntryDN, IdentityMapper<?> identityMapper)
  {
    directoryServer.identityMappers.put(configEntryDN, identityMapper);
  }
@@ -5112,7 +5076,7 @@
   *
   * @return  The DN of the configuration entry for the identity mapper that
   *          should be used in conjunction with proxied authorization V2
   *          controls, or <CODE>null</CODE> if none is defined.
   *          controls, or {@code null} if none is defined.
   */
  public static DN getProxiedAuthorizationIdentityMapperDN()
  {
@@ -5142,17 +5106,12 @@
   *
   * @return  The identity mapper that should be used to resolve authorization
   *          IDs contained in proxied authorization V2 controls, or
   *          <CODE>null</CODE> if none is defined.
   *          {@code null} if none is defined.
   */
  public static IdentityMapper getProxiedAuthorizationIdentityMapper()
  public static IdentityMapper<?> getProxiedAuthorizationIdentityMapper()
  {
    if (directoryServer.proxiedAuthorizationIdentityMapperDN == null)
    {
      return null;
    }
    return directoryServer.identityMappers.get(
                directoryServer.proxiedAuthorizationIdentityMapperDN);
    DN dnMapper = directoryServer.proxiedAuthorizationIdentityMapperDN;
    return dnMapper != null ? directoryServer.identityMappers.get(dnMapper) : null;
  }
  /**
@@ -5161,7 +5120,7 @@
   *
   * @return  The set of connection handlers configured in the Directory Server.
   */
  public static List<ConnectionHandler> getConnectionHandlers()
  public static List<ConnectionHandler<?>> getConnectionHandlers()
  {
    return directoryServer.connectionHandlers;
  }
@@ -5172,8 +5131,7 @@
   * @param  handler  The connection handler to register with the Directory
   *                  Server.
   */
  public static void registerConnectionHandler(ConnectionHandler<? extends ConnectionHandlerCfg>
                               handler)
  public static void registerConnectionHandler(ConnectionHandler<? extends ConnectionHandlerCfg> handler)
  {
    synchronized (directoryServer.connectionHandlers)
    {
@@ -5192,7 +5150,7 @@
   * @param  handler  The connection handler to deregister with the Directory
   *                  Server.
   */
  public static void deregisterConnectionHandler(ConnectionHandler handler)
  public static void deregisterConnectionHandler(ConnectionHandler<?> handler)
  {
    synchronized (directoryServer.connectionHandlers)
    {
@@ -5250,7 +5208,7 @@
    }
    // At this point, we should be ready to go.
    for (ConnectionHandler handler : connectionHandlers)
    for (ConnectionHandler<?> handler : connectionHandlers)
    {
      handler.start();
    }
@@ -5261,7 +5219,7 @@
   *
   * @return  A reference to the Directory Server work queue.
   */
  public static WorkQueue getWorkQueue()
  public static WorkQueue<?> getWorkQueue()
  {
    return directoryServer.workQueue;
  }
@@ -5367,12 +5325,9 @@
              }
            }
            user = clientConnection.getAuthenticationInfo()
                .getAuthorizationDN();
            message = ERR_ENQUEUE_MUST_CHANGE_PASSWORD
                .get(user != null ? user : "anonymous");
            throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
                                         message);
            user = clientConnection.getAuthenticationInfo().getAuthorizationDN();
            message = ERR_ENQUEUE_MUST_CHANGE_PASSWORD.get(user != null ? user : "anonymous");
            throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
          }
          break;
@@ -5446,13 +5401,11 @@
  }
  /**
   * Deregisters the provided synchronization provider with the Directory
   * Server.
   * Deregisters the provided synchronization provider with the Directory Server.
   *
   * @param  provider  The synchronization provider to deregister.
   */
  public static void deregisterSynchronizationProvider(SynchronizationProvider
                                                            provider)
  public static void deregisterSynchronizationProvider(SynchronizationProvider<?> provider)
  {
    directoryServer.synchronizationProviders.remove(provider);
  }
@@ -5942,12 +5895,11 @@
    shutdownMonitor.start();
    // Shut down the connection handlers.
    for (ConnectionHandler handler : directoryServer.connectionHandlers)
    for (ConnectionHandler<?> handler : directoryServer.connectionHandlers)
    {
      try
      {
        handler.finalizeConnectionHandler(
                INFO_CONNHANDLER_CLOSED_BY_SHUTDOWN.get());
        handler.finalizeConnectionHandler(INFO_CONNHANDLER_CLOSED_BY_SHUTDOWN.get());
      }
      catch (Exception e)
      {
@@ -5963,8 +5915,7 @@
    }
    // shutdown replication
    for (SynchronizationProvider provider :
         directoryServer.synchronizationProviders)
    for (SynchronizationProvider<?> provider : directoryServer.synchronizationProviders)
    {
      provider.finalizeSynchronizationProvider();
    }
@@ -6002,7 +5953,7 @@
    }
    // Shut down all of the alert handlers.
    for (AlertHandler alertHandler : directoryServer.alertHandlers)
    for (AlertHandler<?> alertHandler : directoryServer.alertHandlers)
    {
      alertHandler.finalizeAlertHandler();
    }
@@ -6010,7 +5961,7 @@
    // Deregister all of the JMX MBeans.
    if (directoryServer.mBeanServer != null)
    {
      Set mBeanSet = directoryServer.mBeanServer.queryMBeans(null, null);
      Set<?> mBeanSet = directoryServer.mBeanServer.queryMBeans(null, null);
      for (Object o : mBeanSet)
      {
        if (o instanceof DirectoryServerMBean)
@@ -6029,8 +5980,7 @@
    }
    // Finalize all of the SASL mechanism handlers.
    for (SASLMechanismHandler handler :
         directoryServer.saslMechanismHandlers.values())
    for (SASLMechanismHandler<?> handler : directoryServer.saslMechanismHandlers.values())
    {
      try
      {
@@ -6043,8 +5993,7 @@
    }
    // Finalize all of the extended operation handlers.
    for (ExtendedOperationHandler handler :
         directoryServer.extendedOperationHandlers.values())
    for (ExtendedOperationHandler<?> handler : directoryServer.extendedOperationHandlers.values())
    {
      try
      {
@@ -6070,7 +6019,7 @@
    }
    // Finalize the access control handler
    AccessControlHandler accessControlHandler =
    AccessControlHandler<?> accessControlHandler =
        AccessControlConfigManager.getInstance().getAccessControlHandler();
    if (accessControlHandler != null)
    {
@@ -6093,7 +6042,7 @@
    // NYI
    // Shut down the monitor providers.
    for (MonitorProvider monitor : directoryServer.monitorProviders.values())
    for (MonitorProvider<?> monitor : directoryServer.monitorProviders.values())
    {
      try
      {
@@ -7229,7 +7178,7 @@
   * @param provider The monitor provider for which a DN is desired.
   * @return The DN of the monitor provider entry.
   */
  public static DN getMonitorProviderDN(MonitorProvider provider)
  public static DN getMonitorProviderDN(MonitorProvider<?> provider)
  {
    // Get a complete DN which could be a tree naming schema
    return DN.valueOf("cn=" + provider.getMonitorInstanceName() + "," + DN_MONITOR_ROOT);
@@ -7291,7 +7240,6 @@
   */
  private static int checkStartability(ArgumentParser argParser)
  {
    int returnValue;
    boolean isServerRunning;
    BooleanArgument noDetach =
@@ -7335,71 +7283,58 @@
      isServerRunning = true;
    }
    boolean configuredAsService = isRunningAsWindowsService();
    final boolean configuredAsWindowsService = isRunningAsWindowsService();
    if (isServerRunning)
    {
      if (configuredAsService && !windowsNetStartPresent)
      if (configuredAsWindowsService && !windowsNetStartPresent)
      {
        returnValue = START_AS_WINDOWS_SERVICE;
        return START_AS_WINDOWS_SERVICE;
      }
      else
      {
        returnValue = SERVER_ALREADY_STARTED;
        return SERVER_ALREADY_STARTED;
      }
    }
    else
    {
      if (configuredAsService)
    else if (configuredAsWindowsService)
      {
        if (noDetachPresent)
        {
          // Conflicting arguments
          returnValue = CHECK_ERROR;
          LocalizableMessage message = ERR_DSCORE_ERROR_NODETACH_AND_WINDOW_SERVICE.get();
          System.err.println(message);
        System.err.println(ERR_DSCORE_ERROR_NODETACH_AND_WINDOW_SERVICE.get());
        return CHECK_ERROR;
        }
        else
        {
          if (windowsNetStartPresent)
      else if (windowsNetStartPresent)
          {
            // start-ds.bat is being called through net start, so return
            // START_AS_DETACH_CALLED_FROM_WINDOWS_SERVICE so that the batch
            // file actually starts the server.
            returnValue = START_AS_DETACH_CALLED_FROM_WINDOWS_SERVICE;
        return START_AS_DETACH_CALLED_FROM_WINDOWS_SERVICE;
          }
          else
          {
            returnValue = START_AS_WINDOWS_SERVICE;
        return START_AS_WINDOWS_SERVICE;
          }
        }
      }
      else
      {
        if (noDetachPresent)
    else if (noDetachPresent)
        {
          if (quietMode.isPresent())
          {
            returnValue = START_AS_NON_DETACH_QUIET;
        return START_AS_NON_DETACH_QUIET;
          }
          else
          {
            returnValue = START_AS_NON_DETACH;
        return START_AS_NON_DETACH;
          }
        }
        else if (quietMode.isPresent())
        {
          returnValue = START_AS_DETACH_QUIET;
      return START_AS_DETACH_QUIET;
        }
        else
        {
          returnValue = START_AS_DETACH;
      return START_AS_DETACH;
        }
      }
    }
    return returnValue;
  }
  /**
   * Returns true if this server is configured to run as a windows service.
opendj-server-legacy/src/main/java/org/opends/server/tools/EncodePassword.java
@@ -77,8 +77,6 @@
    }
  }
  /**
   * Processes the command-line arguments and performs the requested action.
   *
@@ -91,8 +89,6 @@
    return encodePassword(args, true, System.out, System.err);
  }
  /**
   * Processes the command-line arguments and performs the requested action.
   *
@@ -129,7 +125,6 @@
    StringArgument    configFile           = null;
    StringArgument    schemeName           = null;
    // Create the command-line argument parser for use with this program.
    LocalizableMessage toolDescription = INFO_ENCPW_TOOL_DESCRIPTION.get();
    ArgumentParser argParser =
@@ -210,7 +205,6 @@
      return OPERATIONS_ERROR;
    }
    // Parse the command-line arguments provided to this program.
    try
    {
@@ -222,7 +216,6 @@
      return OPERATIONS_ERROR;
    }
    // If we should just display usage or version information,
    // then we've already done it so just return without doing anything else.
    if (argParser.usageOrVersionDisplayed())
@@ -267,7 +260,6 @@
      return OPERATIONS_ERROR;
    }
    // Determine whether we're encoding the clear-text password or comparing it
    // against an already-encoded password.
    boolean compareMode;
@@ -287,7 +279,6 @@
      compareMode = false;
    }
    if (initializeServer)
    {
      try
@@ -303,7 +294,6 @@
      }
    }
    // If we are only trying to list the available schemes, then do so and exit.
    if (listSchemes.isPresent())
    {
@@ -318,7 +308,6 @@
      return SUCCESS;
    }
    // Either encode the clear-text password using the provided scheme, or
    // compare the clear-text password against the encoded password.
    ByteString clearPW = null;
@@ -531,7 +520,7 @@
  }
  private static void listPasswordStorageSchemes(PrintStream out, PrintStream err,
      ConcurrentHashMap<String, PasswordStorageScheme> storageSchemes, boolean authPasswordSchemeName)
      ConcurrentHashMap<String, PasswordStorageScheme<?>> storageSchemes, boolean authPasswordSchemeName)
  {
    if (storageSchemes.isEmpty())
    {
@@ -678,13 +667,9 @@
    return password;
  }
  /**
   * Thread that mask user input.
   */
  /** Thread that mask user input. */
  private class ErasingThread extends Thread
  {
    private boolean stop;
    private String prompt;
@@ -698,9 +683,7 @@
      this.prompt = prompt;
    }
    /**
     * Begin masking until asked to stop.
     */
    /** Begin masking until asked to stop. */
    @Override
    public void run()
    {
@@ -723,14 +706,10 @@
      }
    }
    /**
     * Instruct the thread to stop masking.
     */
    /** Instruct the thread to stop masking. */
    public void stopMasking()
    {
      this.stop = true;
    }
  }
}
opendj-server-legacy/src/main/java/org/opends/server/types/DirectoryConfig.java
@@ -62,8 +62,6 @@
    return DirectoryServer.getCryptoManager();
  }
  /**
   * Retrieves the operating system on which the Directory Server is
   * running.
@@ -88,8 +86,6 @@
    return DirectoryServer.getServerRoot();
  }
  /**
   * Retrieves the time that the Directory Server was started, in
   * milliseconds since the epoch.
@@ -102,8 +98,6 @@
    return DirectoryServer.getStartTime();
  }
  /**
   * Retrieves the time that the Directory Server was started,
   * formatted in UTC.
@@ -116,8 +110,6 @@
    return DirectoryServer.getStartTimeUTC();
  }
  /**
   * Retrieves a reference to the Directory Server schema.
   *
@@ -128,8 +120,6 @@
    return DirectoryServer.getSchema();
  }
  /**
   * Retrieves the set of matching rules registered with the Directory
   * Server.
@@ -142,8 +132,6 @@
    return DirectoryServer.getMatchingRules();
  }
  /**
   * Retrieves the matching rule with the specified name or OID.
   *
@@ -158,8 +146,6 @@
    return DirectoryServer.getMatchingRule(lowerName);
  }
  /**
   * Retrieves the approximate matching rule with the specified name
   * or OID.
@@ -177,8 +163,6 @@
    return DirectoryServer.getMatchingRule(lowerName);
  }
  /**
   * Retrieves the equality matching rule with the specified name or
   * OID.
@@ -196,8 +180,6 @@
    return DirectoryServer.getMatchingRule(lowerName);
  }
  /**
   * Retrieves the ordering matching rule with the specified name or
   * OID.
@@ -215,8 +197,6 @@
    return DirectoryServer.getMatchingRule(lowerName);
  }
  /**
   * Retrieves the substring matching rule with the specified name or
   * OID.
@@ -234,8 +214,6 @@
    return DirectoryServer.getMatchingRule(lowerName);
  }
  /**
   * Retrieves the set of objectclasses registered with the Directory
   * Server.  The mapping will be between the lowercase name or OID
@@ -252,8 +230,6 @@
    return DirectoryServer.getObjectClasses();
  }
  /**
   * Retrieves the objectclass for the provided lowercase name or OID.
   * It can optionally return a generated "default" version if the
@@ -276,8 +252,6 @@
    return DirectoryServer.getObjectClass(lowerName, returnDefault);
  }
  /**
   * Retrieves the "top" objectClass, which should be the topmost
   * objectclass in the inheritance chain for most other
@@ -290,8 +264,6 @@
    return DirectoryServer.getTopObjectClass();
  }
  /**
   * Retrieves the set of attribute type definitions that have been
   * defined in the Directory Server.  The mapping will be between the
@@ -318,8 +290,6 @@
    return DirectoryServer.getObjectClassAttributeType();
  }
  /**
   * Retrieves the set of attribute syntaxes defined in the Directory
   * Server.
@@ -346,8 +316,6 @@
    return DirectoryServer.getDefaultBinarySyntax();
  }
  /**
   * Retrieves the default attribute syntax that should be used for
   * attributes that are not defined in the server schema and are
@@ -362,8 +330,6 @@
    return DirectoryServer.getDefaultBooleanSyntax();
  }
  /**
   * Retrieves the default attribute syntax that should be used for
   * attributes that are not defined in the server schema and are
@@ -378,8 +344,6 @@
    return DirectoryServer.getDefaultDNSyntax();
  }
  /**
   * Retrieves the default attribute syntax that should be used for
   * attributes that are not defined in the server schema and are
@@ -394,8 +358,6 @@
    return DirectoryServer.getDefaultIntegerSyntax();
  }
  /**
   * Retrieves the default attribute syntax that should be used for
   * attributes that are not defined in the server schema and are
@@ -410,8 +372,6 @@
    return DirectoryServer.getDefaultStringSyntax();
  }
  /**
   * Retrieves the set of matching rule uses defined in the Directory
   * Server.  The mapping will be between the matching rule and its
@@ -427,8 +387,6 @@
    return DirectoryServer.getMatchingRuleUses();
  }
  /**
   * Retrieves the matching rule use associated with the provided
   * matching rule.
@@ -445,8 +403,6 @@
    return DirectoryServer.getMatchingRuleUse(matchingRule);
  }
  /**
   * Retrieves the set of DIT content rules defined in the Directory
   * Server.  The mapping will be between the structural objectclass
@@ -462,8 +418,6 @@
    return DirectoryServer.getDITContentRules();
  }
  /**
   * Retrieves the DIT content rule associated with the specified
   * objectclass.
@@ -480,8 +434,6 @@
    return DirectoryServer.getDITContentRule(objectClass);
  }
  /**
   * Retrieves the set of DIT structure rules defined in the Directory
   * Server.  The mapping will be between the name form and its
@@ -497,8 +449,6 @@
    return DirectoryServer.getDITStructureRules();
  }
  /**
   * Retrieves the DIT structure rule associated with the provided
   * rule ID.
@@ -514,8 +464,6 @@
    return DirectoryServer.getDITStructureRule(ruleID);
  }
  /**
   * Retrieves the DIT structure rule associated with the provided
   * name form.
@@ -532,8 +480,6 @@
    return DirectoryServer.getDITStructureRule(nameForm);
  }
  /**
   * Retrieves the set of name forms defined in the Directory Server.
   * The mapping will be between the structural objectclass and its
@@ -547,8 +493,6 @@
    return DirectoryServer.getNameForms();
  }
  /**
   * Retrieves the list of name forms associated with the specified
   * structural objectclass.
@@ -564,8 +508,6 @@
    return DirectoryServer.getNameForm(objectClass);
  }
  /**
   * Retrieves the name form associated with the specified name or
   * OID.
@@ -592,8 +534,6 @@
    DirectoryServer.registerAlertGenerator(alertGenerator);
  }
  /**
   * Deregisters the provided alert generator with the Directory
   * Server.
@@ -606,8 +546,6 @@
    DirectoryServer.deregisterAlertGenerator(alertGenerator);
  }
  /**
   * Sends an alert notification with the provided information.
   *
@@ -626,8 +564,6 @@
            alertMessage);
  }
  /**
   * Retrieves the result code that should be used when the Directory
   * Server encounters an internal server error.
@@ -640,8 +576,6 @@
    return DirectoryServer.getServerErrorResultCode();
  }
  /**
   * Retrieves the entry with the requested DN.  It will first
   * determine which backend should be used for this DN and will then
@@ -662,8 +596,6 @@
    return DirectoryServer.getEntry(entryDN);
  }
  /**
   * Indicates whether the specified entry exists in the Directory
   * Server.  The caller is not required to hold any locks when
@@ -684,8 +616,6 @@
    return DirectoryServer.entryExists(entryDN);
  }
  /**
   * Retrieves the set of OIDs for the supported controls registered
   * with the Directory Server.
@@ -698,8 +628,6 @@
    return DirectoryServer.getSupportedControls();
  }
  /**
   * Indicates whether the specified OID is registered with the
   * Directory Server as a supported control.
@@ -716,8 +644,6 @@
    return DirectoryServer.isSupportedControl(controlOID);
  }
  /**
   * Registers the provided OID as a supported control for the
   * Directory Server.  This will have no effect if the specified
@@ -731,8 +657,6 @@
    DirectoryServer.registerSupportedControl(controlOID);
  }
  /**
   * Deregisters the provided OID as a supported control for the
   * Directory Server.  This will have no effect if the specified
@@ -747,8 +671,6 @@
    DirectoryServer.deregisterSupportedControl(controlOID);
  }
  /**
   * Retrieves the set of OIDs for the supported features registered
   * with the Directory Server.
@@ -761,8 +683,6 @@
    return DirectoryServer.getSupportedFeatures();
  }
  /**
   * Indicates whether the specified OID is registered with the
   * Directory Server as a supported feature.
@@ -779,8 +699,6 @@
    return DirectoryServer.isSupportedFeature(featureOID);
  }
  /**
   * Registers the provided OID as a supported feature for the
   * Directory Server.  This will have no effect if the specified
@@ -794,8 +712,6 @@
    DirectoryServer.registerSupportedFeature(featureOID);
  }
  /**
   * Deregisters the provided OID as a supported feature for the
   * Directory Server.  This will have no effect if the specified
@@ -810,8 +726,6 @@
    DirectoryServer.deregisterSupportedFeature(featureOID);
  }
  /**
   * Retrieves the set of extended operations that may be processed by
   * the Directory Server.  The mapping will be between the OID and
@@ -822,14 +736,11 @@
   * @return  The set of extended operations that may be processed by
   *          the Directory Server.
   */
  public static Map<String,ExtendedOperationHandler>
                     getSupportedExtensions()
  public static Map<String, ExtendedOperationHandler<?>> getSupportedExtensions()
  {
    return DirectoryServer.getSupportedExtensions();
  }
  /**
   * Retrieves the handler for the extended operation for the provided
   * extended operation OID.
@@ -839,14 +750,11 @@
   * @return  The handler for the specified extended operation, or
   *          <CODE>null</CODE> if there is none.
   */
  public static ExtendedOperationHandler
       getExtendedOperationHandler(String oid)
  public static ExtendedOperationHandler<?> getExtendedOperationHandler(String oid)
  {
    return DirectoryServer.getExtendedOperationHandler(oid);
  }
  /**
   * Registers the provided extended operation handler with the
   * Directory Server.
@@ -855,14 +763,11 @@
   * @param  handler  The extended operation handler to register with
   *                  the Directory Server.
   */
  public static void registerSupportedExtension(String oid,
                          ExtendedOperationHandler handler)
  public static void registerSupportedExtension(String oid, ExtendedOperationHandler<?> handler)
  {
    DirectoryServer.registerSupportedExtension(oid, handler);
  }
  /**
   * Deregisters the provided extended operation handler with the
   * Directory Server.
@@ -874,8 +779,6 @@
    DirectoryServer.deregisterSupportedExtension(oid);
  }
  /**
   * Retrieves the set of SASL mechanisms that are supported by the
   * Directory Server.  The mapping will be between the mechanism name
@@ -885,14 +788,11 @@
   * @return  The set of SASL mechanisms that are supported by the
   *          Directory Server.
   */
  public static Map<String,SASLMechanismHandler>
                     getSupportedSASLMechanisms()
  public static Map<String, SASLMechanismHandler<?>> getSupportedSASLMechanisms()
  {
    return DirectoryServer.getSupportedSASLMechanisms();
  }
  /**
   * Retrieves the handler for the specified SASL mechanism.
   *
@@ -901,14 +801,11 @@
   * @return  The handler for the specified SASL mechanism, or
   *          <CODE>null</CODE> if there is none.
   */
  public static SASLMechanismHandler
       getSASLMechanismHandler(String name)
  public static SASLMechanismHandler<?> getSASLMechanismHandler(String name)
  {
    return DirectoryServer.getSASLMechanismHandler(name);
  }
  /**
   * Registers the provided SASL mechanism handler with the Directory
   * Server.
@@ -917,15 +814,11 @@
   * @param  handler  The SASL mechanism handler to register with the
   *                  Directory Server.
   */
  public static void
       registerSASLMechanismHandler(String name,
                                    SASLMechanismHandler handler)
  public static void registerSASLMechanismHandler(String name, SASLMechanismHandler<?> handler)
  {
    DirectoryServer.registerSASLMechanismHandler(name, handler);
  }
  /**
   * Deregisters the provided SASL mechanism handler with the
   * Directory Server.
@@ -950,8 +843,6 @@
    DirectoryServer.registerShutdownListener(listener);
  }
  /**
   * Deregisters the provided shutdown listener with the Directory
   * Server.
@@ -965,8 +856,6 @@
    DirectoryServer.deregisterShutdownListener(listener);
  }
  /**
   * Retrieves the full version string for the Directory Server.
   *
@@ -977,4 +866,3 @@
    return DirectoryServer.getVersionString();
  }
}
opendj-server-legacy/src/test/java/org/opends/server/backends/GenericBackendTestCase.java
@@ -20,13 +20,14 @@
import static org.testng.Assert.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.TestCaseUtils;
import org.opends.server.api.Backend;
import org.opends.server.api.Backend.BackendOperation;
import org.opends.server.core.DirectoryServer;
import org.forgerock.opendj.ldap.DN;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -51,7 +52,7 @@
  @DataProvider(name = "backends")
  public Object[][] getBackends()
  {
    ArrayList<Backend> backendList = new ArrayList<>(DirectoryServer.getBackends().values());
    List<Backend<?>> backendList = new ArrayList<>(DirectoryServer.getBackends().values());
    Object[][] objectArray = new Object[backendList.size()][1];
    for (int i=0; i < objectArray.length; i++)
    {
opendj-server-legacy/src/test/java/org/opends/server/extensions/DefaultEntryCacheTestCase.java
@@ -16,27 +16,28 @@
 */
package org.opends.server.extensions;
import static org.testng.Assert.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.SortedMap;
import java.util.TreeMap;
import org.opends.server.TestCaseUtils;
import org.testng.annotations.BeforeClass;
import org.forgerock.opendj.server.config.meta.*;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.server.config.meta.FIFOEntryCacheCfgDefn;
import org.forgerock.opendj.server.config.meta.SoftReferenceEntryCacheCfgDefn;
import org.forgerock.opendj.server.config.server.EntryCacheCfg;
import org.opends.server.TestCaseUtils;
import org.opends.server.api.EntryCache;
import org.opends.server.core.DirectoryServer;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.Entry;
import org.opends.server.util.ServerConstants;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterGroups;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
/**
 * A set of test cases for default entry cache implementation.
 */
@@ -73,7 +74,7 @@
    TestCaseUtils.startServer();
    // Get default cache.
    super.cache = DirectoryServer.getEntryCache();
    super.cache = (EntryCache<EntryCacheCfg>) DirectoryServer.getEntryCache();
    // Configure and initialize all entry cache implementations.
    softRefCache = new SoftReferenceEntryCache();
@@ -114,11 +115,12 @@
    // Plug all cache implementations into default entry cache.
    final Method[] defaultCacheMethods =
        super.cache.getClass().getDeclaredMethods();
    for (int i = 0; i < defaultCacheMethods.length; ++i) {
      if (defaultCacheMethods[i].getName().equals("setCacheOrder")) {
        defaultCacheMethods[i].setAccessible(true);
    for (Method defaultCacheMethod : defaultCacheMethods)
    {
      if (defaultCacheMethod.getName().equals("setCacheOrder")) {
        defaultCacheMethod.setAccessible(true);
        Object arglist[] = new Object[] { cacheOrderMap };
        defaultCacheMethods[i].invoke(cache, arglist);
        defaultCacheMethod.invoke(cache, arglist);
      }
    }
@@ -194,11 +196,12 @@
    SortedMap<Integer, EntryCache<? extends EntryCacheCfg>> emptyCacheOrderMap = new TreeMap<>();
    final Method[] defaultCacheMethods =
        super.cache.getClass().getDeclaredMethods();
    for (int i = 0; i < defaultCacheMethods.length; ++i) {
      if (defaultCacheMethods[i].getName().equals("setCacheOrder")) {
        defaultCacheMethods[i].setAccessible(true);
    for (Method defaultCacheMethod : defaultCacheMethods)
    {
      if (defaultCacheMethod.getName().equals("setCacheOrder")) {
        defaultCacheMethod.setAccessible(true);
        Object arglist[] = new Object[] { emptyCacheOrderMap };
        defaultCacheMethods[i].invoke(cache, arglist);
        defaultCacheMethod.invoke(cache, arglist);
      }
    }
@@ -405,8 +408,7 @@
  @BeforeGroups(groups = "testDefaultCacheConcurrency")
  public void cacheConcurrencySetup()
         throws Exception
  public void cacheConcurrencySetup() throws Exception
  {
    assertNull(cache.toVerboseString(),
      "Expected empty cache.  " + "Cache contents:" + ServerConstants.EOL +
@@ -416,8 +418,7 @@
  @AfterGroups(groups = "testDefaultCacheConcurrency")
  public void cacheConcurrencyCleanup()
         throws Exception
  public void cacheConcurrencyCleanup() throws Exception
  {
    // Clear the cache so that other tests can start from scratch.
    super.cache.clear();
opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxTestCase.java
@@ -27,13 +27,13 @@
import java.util.concurrent.Callable;
import org.assertj.core.api.Assertions;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.TestCaseUtils;
import org.opends.server.api.ConnectionHandler;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyOperationBasis;
import org.opends.server.types.Attributes;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.Modification;
import org.opends.server.util.TestTimer;
import org.testng.annotations.BeforeClass;
@@ -68,7 +68,7 @@
   */
  protected JmxConnectionHandler getJmxConnectionHandler() throws Exception
  {
    List<ConnectionHandler> handlers = DirectoryServer.getConnectionHandlers();
    List<ConnectionHandler<?>> handlers = DirectoryServer.getConnectionHandlers();
    assertNotNull(handlers);
    JmxConnectionHandler jmxConnectionHandler = getJmxConnectionHandler(handlers);
    if (jmxConnectionHandler == null)
@@ -96,7 +96,7 @@
    return jmxConnectionHandler;
  }
  private JmxConnectionHandler getJmxConnectionHandler(List<ConnectionHandler> handlers)
  private JmxConnectionHandler getJmxConnectionHandler(List<ConnectionHandler<?>> handlers)
  {
    for (ConnectionHandler<?> handler : handlers)
    {