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

Jean-Noël Rouvignac
18.52.2016 fa9c515bf663d5189abd094e68051f380205f24d
Replaced uses of ConnectionUtils.getHostPort() by ConnectionWrapper.getHostPort()
7 files modified
441 ■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java 19 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionWrapper.java 29 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ImportLDIFPanel.java 16 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java 53 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java 92 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java 67 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java 165 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/admin/ads/ADSContext.java
@@ -53,10 +53,10 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.opends.admin.ads.ADSContextException.ErrorType;
import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.quicksetup.Constants;
import org.opends.server.schema.SchemaConstants;
import org.opends.server.types.HostPort;
/** Class used to update and read the contents of the Administration Data. */
public class ADSContext
@@ -310,6 +310,16 @@
  }
  /**
   * Returns the host name and port number of this connection.
   *
   * @return the hostPort of this connection
   */
  public HostPort getHostPort()
  {
    return connectionWrapper.getHostPort();
  }
  /**
   * Method called to register a server in the ADS.
   *
   * @param serverProperties
@@ -2189,8 +2199,7 @@
    }
    catch (ADSContextException adce)
    {
      LocalizableMessage msg = ERR_ADS_MERGE.get(ConnectionUtils.getHostPort(getDirContext()),
          ConnectionUtils.getHostPort(adsCtx.getDirContext()), adce.getMessageObject());
      LocalizableMessage msg = ERR_ADS_MERGE.get(getHostPort(), adsCtx.getHostPort(), adce.getMessageObject());
      throw new ADSContextException(ErrorType.ERROR_MERGING, msg, adce);
    }
  }
@@ -2220,8 +2229,8 @@
    if (!notDefinedAdmins.isEmpty())
    {
      LocalizableMessage msg = ERR_ADS_ADMINISTRATOR_MERGE.get(
          ConnectionUtils.getHostPort(adsCtx.getDirContext()), ConnectionUtils.getHostPort(getDirContext()),
          joinAsString(Constants.LINE_SEPARATOR, notDefinedAdmins), ConnectionUtils.getHostPort(getDirContext()));
          adsCtx.getHostPort(), getHostPort(),
          joinAsString(Constants.LINE_SEPARATOR, notDefinedAdmins), getHostPort());
      throw new ADSContextException(ErrorType.ERROR_MERGING, msg, null);
    }
  }
opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionWrapper.java
@@ -62,6 +62,7 @@
  private final LDAPConnectionFactory connectionFactory;
  private final Connection connection;
  private final InitialLdapContext ldapContext;
  private final HostPort hostPort;
  private final int connectTimeout;
  private final TrustManager trustManager;
  private final KeyManager keyManager;
@@ -151,13 +152,14 @@
  public ConnectionWrapper(HostPort hostPort, PreferredConnection.Type connectionType, String bindDn, String bindPwd,
      int connectTimeout, TrustManager trustManager, KeyManager keyManager) throws NamingException
  {
    this.hostPort = hostPort;
    this.connectTimeout = connectTimeout;
    this.trustManager = trustManager;
    this.keyManager = keyManager;
    final Options options = toOptions(connectionType, bindDn, bindPwd, connectTimeout, trustManager, keyManager);
    ldapContext = createAdministrativeContext(hostPort, options);
    connectionFactory = buildConnectionFactory(options, hostPort);
    ldapContext = createAdministrativeContext(options);
    connectionFactory = new LDAPConnectionFactory(hostPort.getHost(), hostPort.getPort(), options);
    connection = buildConnection();
  }
@@ -191,9 +193,9 @@
    }
  }
  private InitialLdapContext createAdministrativeContext(HostPort hostPort, Options options) throws NamingException
  private InitialLdapContext createAdministrativeContext(Options options) throws NamingException
  {
    final InitialLdapContext ctx = createAdministrativeContext0(hostPort, options);
    final InitialLdapContext ctx = createAdministrativeContext0(options);
    if (!connectedAsAdministrativeUser(ctx))
    {
      throw new NoPermissionException(ERR_NOT_ADMINISTRATIVE_USER.get().toString());
@@ -201,7 +203,7 @@
    return ctx;
  }
  private InitialLdapContext createAdministrativeContext0(HostPort hostPort, Options options) throws NamingException
  private InitialLdapContext createAdministrativeContext0(Options options) throws NamingException
  {
    SSLContext sslContext = options.get(SSL_CONTEXT);
    boolean useSSL = sslContext != null;
@@ -209,7 +211,7 @@
    SimpleBindRequest bindRequest = (SimpleBindRequest) options.get(AUTHN_BIND_REQUEST);
    String bindDn = bindRequest.getName();
    String bindPwd = new String(bindRequest.getPassword());
    final String ldapUrl = getLDAPUrl(hostPort, useSSL);
    final String ldapUrl = getLDAPUrl(getHostPort(), useSSL);
    if (useSSL)
    {
      return createLdapsContext(ldapUrl, bindDn, bindPwd, connectTimeout, null, trustManager, keyManager);
@@ -224,11 +226,6 @@
    }
  }
  private LDAPConnectionFactory buildConnectionFactory(Options options, HostPort hostPort)
  {
    return new LDAPConnectionFactory(hostPort.getHost(), hostPort.getPort(), options);
  }
  private Connection buildConnection() throws NamingException
  {
    try
@@ -262,6 +259,16 @@
  }
  /**
   * Returns the host name and port number of this connection.
   *
   * @return the hostPort of this connection
   */
  public HostPort getHostPort()
  {
    return hostPort;
  }
  /**
   * Returns the root configuration client by using the inrnal Connection.
   *
   * @return the root configuration client
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ImportLDIFPanel.java
@@ -16,10 +16,10 @@
 */
package org.opends.guitools.controlpanel.ui;
import static org.opends.admin.ads.util.ConnectionUtils.getHostPort;
import static com.forgerock.opendj.cli.Utils.OBFUSCATED_VALUE;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
import static com.forgerock.opendj.cli.Utils.OBFUSCATED_VALUE;
import java.awt.Component;
import java.awt.GridBagConstraints;
@@ -31,7 +31,6 @@
import java.util.Set;
import java.util.TreeSet;
import javax.naming.ldap.InitialLdapContext;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
@@ -44,7 +43,10 @@
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.DN;
import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.datamodel.BackendDescriptor;
import org.opends.guitools.controlpanel.datamodel.BaseDNDescriptor;
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
@@ -53,14 +55,12 @@
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
import org.opends.guitools.controlpanel.task.Task;
import org.opends.guitools.controlpanel.util.Utilities;
import org.forgerock.i18n.LocalizableMessage;
import org.opends.quicksetup.ui.UIFactory;
import org.opends.quicksetup.util.Utils;
import org.opends.server.tools.ImportLDIF;
import org.opends.server.tools.dsreplication.ReplicationCliArgumentParser;
import org.opends.server.tools.dsreplication.ReplicationCliException;
import org.opends.server.tools.dsreplication.ReplicationCliMain;
import org.forgerock.opendj.ldap.DN;
/**
 * The panel where the user can import the contents of an LDIF file to the
@@ -818,12 +818,12 @@
          INFO_CTRL_PANEL_EQUIVALENT_CMD_TO_INITIALIZE_ALL.get()+ "<br><b>"+cmd+"</b><br><br>",
          ColorAndFontConstants.progressFont));
      InitialLdapContext ctx = getInfo().getConnection().getLdapContext();
      ConnectionWrapper conn = getInfo().getConnection();
      for (DN baseDN : replicatedBaseDNs)
      {
        LocalizableMessage msg = INFO_PROGRESS_INITIALIZING_SUFFIX.get(baseDN, getHostPort(ctx));
        LocalizableMessage msg = INFO_PROGRESS_INITIALIZING_SUFFIX.get(baseDN, conn.getHostPort());
        getProgressDialog().appendProgressHtml(Utilities.applyFont(msg + "<br>", ColorAndFontConstants.progressFont));
        repl.initializeAllSuffix(baseDN.toString(), ctx, true);
        repl.initializeAllSuffix(baseDN.toString(), conn.getLdapContext(), true);
      }
    }
opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
@@ -23,7 +23,15 @@
import java.net.InetAddress;
import java.net.URI;
import java.security.cert.X509Certificate;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.naming.Context;
import javax.naming.NamingException;
@@ -33,6 +41,12 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.ConfigurationFramework;
import org.forgerock.opendj.config.ManagedObjectNotFoundException;
import org.forgerock.opendj.server.config.client.ReplicationDomainCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationServerCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationSynchronizationProviderCfgClient;
import org.forgerock.opendj.server.config.client.RootCfgClient;
import org.opends.admin.ads.ADSContext;
import org.opends.admin.ads.ADSContextException;
import org.opends.admin.ads.ReplicaDescriptor;
@@ -40,23 +54,36 @@
import org.opends.admin.ads.TopologyCache;
import org.opends.admin.ads.TopologyCacheException;
import org.opends.admin.ads.util.ApplicationTrustManager;
import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.admin.ads.util.PreferredConnection;
import org.opends.guitools.uninstaller.ui.ConfirmUninstallPanel;
import org.opends.guitools.uninstaller.ui.LoginDialog;
import org.opends.quicksetup.*;
import org.opends.quicksetup.ui.*;
import org.opends.quicksetup.ApplicationException;
import org.opends.quicksetup.ButtonName;
import org.opends.quicksetup.CliApplication;
import org.opends.quicksetup.Installation;
import org.opends.quicksetup.Launcher;
import org.opends.quicksetup.ProgressStep;
import org.opends.quicksetup.ReturnCode;
import org.opends.quicksetup.Step;
import org.opends.quicksetup.UserData;
import org.opends.quicksetup.UserDataCertificateException;
import org.opends.quicksetup.UserDataException;
import org.opends.quicksetup.WizardStep;
import org.opends.quicksetup.ui.CertificateDialog;
import org.opends.quicksetup.ui.FieldName;
import org.opends.quicksetup.ui.FinishedPanel;
import org.opends.quicksetup.ui.GuiApplication;
import org.opends.quicksetup.ui.ProgressDialog;
import org.opends.quicksetup.ui.ProgressPanel;
import org.opends.quicksetup.ui.QuickSetup;
import org.opends.quicksetup.ui.QuickSetupDialog;
import org.opends.quicksetup.ui.QuickSetupStepPanel;
import org.opends.quicksetup.ui.Utilities;
import org.opends.quicksetup.util.BackgroundTask;
import org.opends.quicksetup.util.ServerController;
import org.opends.quicksetup.util.UIKeyStore;
import org.opends.quicksetup.util.Utils;
import org.forgerock.opendj.config.ConfigurationFramework;
import org.forgerock.opendj.config.ManagedObjectNotFoundException;
import org.forgerock.opendj.server.config.client.ReplicationDomainCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationServerCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationSynchronizationProviderCfgClient;
import org.forgerock.opendj.server.config.client.RootCfgClient;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.HostPort;
import org.opends.server.util.DynamicConstants;
@@ -67,6 +94,7 @@
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.util.OperatingSystem.*;
import static org.forgerock.util.Utils.*;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.messages.QuickSetupMessages.*;
@@ -2064,9 +2092,8 @@
    {
      if (adsContext.hasAdminData() && serverADSProperties != null)
      {
        logger.info(LocalizableMessage.raw("Unregistering server on ADS of server "+
            ConnectionUtils.getHostPort(connWrapper.getLdapContext())+".  Properties: "+
            serverADSProperties));
        logger.info(LocalizableMessage.raw("Unregistering server on ADS of server " + connWrapper.getHostPort()
            + ".  Properties: " + serverADSProperties));
        adsContext.unregisterServer(serverADSProperties);
      }
    }
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
@@ -16,9 +16,9 @@
 */
package org.opends.quicksetup.installer;
import static com.forgerock.opendj.util.OperatingSystem.isWindows;
import static com.forgerock.opendj.cli.ArgumentConstants.*;
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.util.OperatingSystem.isWindows;
import static org.forgerock.util.Utils.*;
import static org.opends.admin.ads.ServerDescriptor.*;
@@ -82,7 +82,6 @@
import org.opends.admin.ads.TopologyCacheException;
import org.opends.admin.ads.TopologyCacheFilter;
import org.opends.admin.ads.util.ApplicationTrustManager;
import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.admin.ads.util.PreferredConnection;
import org.opends.quicksetup.ApplicationException;
@@ -1792,7 +1791,6 @@
   */
  private void unconfigureRemote()
  {
    ConnectionWrapper connectionWrapper = null;
    if (registeredNewServerOnRemote || createdAdministrator || createdRemoteAds)
    {
      // Try to connect
@@ -1802,10 +1800,8 @@
      {
        notifyListeners(getFormattedWithPoints(INFO_PROGRESS_UNCONFIGURING_ADS_ON_REMOTE.get(auth.getHostPort())));
      }
      try
      try (ConnectionWrapper connectionWrapper = createConnection(auth))
      {
        connectionWrapper = createConnection(auth);
        ADSContext adsContext = new ADSContext(connectionWrapper);
        if (createdRemoteAds)
        {
@@ -1844,29 +1840,20 @@
      {
        notifyListeners(getFormattedError(t, true));
      }
      finally
      {
        StaticUtils.close(connectionWrapper);
      }
    }
    InstallerHelper helper = new InstallerHelper();
    for (ServerDescriptor server : hmConfiguredRemoteReplication.keySet())
    {
      notifyListeners(getFormattedWithPoints(INFO_PROGRESS_UNCONFIGURING_REPLICATION_REMOTE.get(getHostPort(server))));
      try
      try (ConnectionWrapper connectionWrapper =
          getRemoteConnection(server, getTrustManager(), getPreferredConnections()))
      {
        connectionWrapper = getRemoteConnection(server, getTrustManager(), getPreferredConnections());
        helper.unconfigureReplication(connectionWrapper, hmConfiguredRemoteReplication.get(server),
            ConnectionUtils.getHostPort(connectionWrapper.getLdapContext()));
        helper.unconfigureReplication(connectionWrapper, hmConfiguredRemoteReplication.get(server));
      }
      catch (ApplicationException ae)
      {
        notifyListeners(getFormattedError(ae, true));
      }
      finally
      {
        StaticUtils.close(connectionWrapper);
      }
      notifyListeners(getFormattedDoneWithLineBreak());
    }
  }
@@ -1961,15 +1948,12 @@
  private void createReplicatedBackends(final Map<String, Set<String>> hmBackendSuffix,
      final Map<String, BackendTypeUIAdapter> backendTypes) throws ApplicationException
  {
    ConnectionWrapper connection = null;
    try
    try (ConnectionWrapper connection = createLocalConnection())
    {
      connection = createLocalConnection();
      final InstallerHelper helper = new InstallerHelper();
      for (String backendName : hmBackendSuffix.keySet())
      {
        helper.createBackend(connection, backendName, hmBackendSuffix.get(backendName),
            ConnectionUtils.getHostPort(connection.getLdapContext()),
            backendTypes.get(backendName).getBackend());
      }
    }
@@ -1978,10 +1962,6 @@
      LocalizableMessage failedMsg = getThrowableMsg(INFO_ERROR_CONNECTING_TO_LOCAL.get(), ne);
      throw new ApplicationException(ReturnCode.CONFIGURATION_ERROR, failedMsg, ne);
    }
    finally
    {
      StaticUtils.close(connection);
    }
  }
  /**
@@ -2081,31 +2061,25 @@
    replicationServers.put(ADSContext.getAdministrationSuffixDN(), adsServers);
    replicationServers.put(Constants.SCHEMA_DN, new HashSet<String>(adsServers));
    ConnectionWrapper connWrapper = null;
    long localTime = -1;
    long localTimeMeasureTime = -1;
    HostPort localServerDisplay = null;
    try
    try (ConnectionWrapper conn = createLocalConnection())
    {
      connWrapper = createLocalConnection();
      helper.configureReplication(connWrapper, replicationServers,
      helper.configureReplication(conn, replicationServers,
          getUserData().getReplicationOptions().getReplicationPort(),
          getUserData().getReplicationOptions().useSecureReplication(),
          getUserData().getHostPort(),
          knownReplicationServerIds, knownServerIds);
          knownReplicationServerIds,
          knownServerIds);
      localTimeMeasureTime = System.currentTimeMillis();
      localTime = Utils.getServerClock(connWrapper.getLdapContext());
      localServerDisplay = ConnectionUtils.getHostPort(connWrapper.getLdapContext());
      localTime = Utils.getServerClock(conn.getLdapContext());
      localServerDisplay = conn.getHostPort();
    }
    catch (NamingException ne)
    {
      LocalizableMessage failedMsg = getThrowableMsg(INFO_ERROR_CONNECTING_TO_LOCAL.get(), ne);
      throw new ApplicationException(ReturnCode.CONFIGURATION_ERROR, failedMsg, ne);
    }
    finally
    {
      StaticUtils.close(connWrapper);
    }
    notifyListeners(getFormattedDoneWithLineBreak());
    checkAbort();
@@ -2185,25 +2159,25 @@
          }
        }
        connWrapper = getRemoteConnection(server, getTrustManager(), getPreferredConnections());
        InitialLdapContext ctx = connWrapper.getLdapContext();
        ConfiguredReplication repl =
            helper.configureReplication(connWrapper, remoteReplicationServers, replicationPort, enableSecureReplication,
                ConnectionUtils.getHostPort(ctx), knownReplicationServerIds, knownServerIds);
        try (ConnectionWrapper conn = getRemoteConnection(server, getTrustManager(), getPreferredConnections()))
        {
          ConfiguredReplication repl = helper.configureReplication(
              conn, remoteReplicationServers, replicationPort, enableSecureReplication,
              knownReplicationServerIds, knownServerIds);
        long remoteTimeMeasureTime = System.currentTimeMillis();
        long remoteTime = Utils.getServerClock(ctx);
          long remoteTime = Utils.getServerClock(conn.getLdapContext());
        if (localTime != -1
            && remoteTime != -1
            && Math.abs(localTime - remoteTime - localTimeMeasureTime + remoteTimeMeasureTime) >
               THRESHOLD_CLOCK_DIFFERENCE_WARNING * 60 * 1000)
        {
          notifyListeners(getFormattedWarning(INFO_WARNING_SERVERS_CLOCK_DIFFERENCE.get(localServerDisplay,
              ConnectionUtils.getHostPort(ctx), THRESHOLD_CLOCK_DIFFERENCE_WARNING)));
            notifyListeners(getFormattedWarning(INFO_WARNING_SERVERS_CLOCK_DIFFERENCE.get(
                localServerDisplay, conn.getHostPort(), THRESHOLD_CLOCK_DIFFERENCE_WARNING)));
        }
        hmConfiguredRemoteReplication.put(server, repl);
        }
        StaticUtils.close(connWrapper);
        notifyListeners(getFormattedDoneWithLineBreak());
        checkAbort();
      }
@@ -2339,20 +2313,14 @@
   */
  private void writeHostName()
  {
    BufferedWriter writer = null;
    try
    try (BufferedWriter writer = new BufferedWriter(new FileWriter(getHostNameFile(), false)))
    {
      writer = new BufferedWriter(new FileWriter(getHostNameFile(), false));
      writer.append(getUserData().getHostName());
    }
    catch (IOException ioe)
    {
      logger.warn(LocalizableMessage.raw("Error writing host name file: " + ioe, ioe));
    }
    finally
    {
      StaticUtils.close(writer);
    }
  }
  /**
@@ -2509,10 +2477,8 @@
    /* Initialize local ADS and schema contents using any replica. */
    {
      ServerDescriptor server = suffixes.iterator().next().getReplicas().iterator().next().getServer();
      ConnectionWrapper remoteConn = null;
      try
      try (ConnectionWrapper remoteConn = getRemoteConnection(server, getTrustManager(), getPreferredConnections()))
      {
        remoteConn = getRemoteConnection(server, getTrustManager(), getPreferredConnections());
        TopologyCacheFilter filter = new TopologyCacheFilter();
        filter.setSearchMonitoringInformation(false);
        filter.addBaseDNToSearch(ADSContext.getAdministrationSuffixDN());
@@ -2544,10 +2510,6 @@
        }
        throw new ApplicationException(ReturnCode.CONFIGURATION_ERROR, msg, ne);
      }
      finally
      {
        StaticUtils.close(remoteConn);
      }
    }
    for (SuffixDescriptor suffix : suffixes)
@@ -2585,10 +2547,8 @@
        if (replicationId == -1)
        {
          // This occurs if the remote server had not replication configured.
          ConnectionWrapper remoteConn = null;
          try
          try (ConnectionWrapper remoteConn = getRemoteConnection(server, getTrustManager(), getPreferredConnections()))
          {
            remoteConn = getRemoteConnection(server, getTrustManager(), getPreferredConnections());
            TopologyCacheFilter filter = new TopologyCacheFilter();
            filter.setSearchMonitoringInformation(false);
            filter.addBaseDNToSearch(dn);
@@ -2614,10 +2574,6 @@
            }
            throw new ApplicationException(ReturnCode.CONFIGURATION_ERROR, msg, ne);
          }
          finally
          {
            StaticUtils.close(remoteConn);
          }
        }
        if (replicationId == -1)
        {
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java
@@ -47,7 +47,22 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.ManagedObjectDefinition;
import org.forgerock.opendj.config.ManagedObjectNotFoundException;
import org.forgerock.opendj.config.PropertyException;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.server.config.client.BackendCfgClient;
import org.forgerock.opendj.server.config.client.CryptoManagerCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationDomainCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationServerCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationSynchronizationProviderCfgClient;
import org.forgerock.opendj.server.config.client.RootCfgClient;
import org.forgerock.opendj.server.config.meta.BackendCfgDefn;
import org.forgerock.opendj.server.config.meta.ReplicationDomainCfgDefn;
import org.forgerock.opendj.server.config.meta.ReplicationServerCfgDefn;
import org.forgerock.opendj.server.config.meta.ReplicationSynchronizationProviderCfgDefn;
import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.messages.BackendMessages;
@@ -60,28 +75,12 @@
import org.opends.quicksetup.UserData;
import org.opends.quicksetup.util.OutputReader;
import org.opends.quicksetup.util.Utils;
import org.forgerock.opendj.config.ManagedObjectDefinition;
import org.forgerock.opendj.config.ManagedObjectNotFoundException;
import org.forgerock.opendj.config.PropertyException;
import org.forgerock.opendj.server.config.client.BackendCfgClient;
import org.forgerock.opendj.server.config.client.CryptoManagerCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationDomainCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationServerCfgClient;
import org.forgerock.opendj.server.config.client.ReplicationSynchronizationProviderCfgClient;
import org.forgerock.opendj.server.config.client.RootCfgClient;
import org.forgerock.opendj.server.config.meta.BackendCfgDefn;
import org.forgerock.opendj.server.config.meta.ReplicationDomainCfgDefn;
import org.forgerock.opendj.server.config.meta.ReplicationServerCfgDefn;
import org.forgerock.opendj.server.config.meta.ReplicationSynchronizationProviderCfgDefn;
import org.forgerock.opendj.server.config.server.BackendCfg;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.DirectoryServer;
import org.opends.server.tools.ConfigureDS;
import org.opends.server.tools.ConfigureWindowsService;
import org.opends.server.tools.JavaPropertiesTool;
import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.HostPort;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.OpenDsException;
import org.opends.server.util.LDIFException;
@@ -348,26 +347,24 @@
  /**
   * Creates a database backend on the server.
   *
   * @param connWrapper
   * @param conn
   *          the connection to the server.
   * @param backendName
   *          the name of the backend to be created.
   * @param baseDNs
   *          the list of base DNs to be defined on the server.
   * @param serverDisplay
   *          the server display.
   * @param backendType
   *          the backend type.
   * @throws ApplicationException
   *           if something goes wrong.
   */
  public void createBackend(ConnectionWrapper connWrapper, String backendName, Set<String> baseDNs,
      HostPort serverDisplay, ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType)
  public void createBackend(ConnectionWrapper conn, String backendName, Set<String> baseDNs,
      ManagedObjectDefinition<? extends BackendCfgClient, ? extends BackendCfg> backendType)
      throws ApplicationException
  {
    try
    {
      RootCfgClient root = connWrapper.getRootConfiguration();
      RootCfgClient root = conn.getRootConfiguration();
      BackendCfgClient backend = root.createBackend(backendType, backendName, null);
      backend.setEnabled(true);
      backend.setBaseDN(toByteStrings(baseDNs));
@@ -378,7 +375,7 @@
    catch (Throwable t)
    {
      throw new ApplicationException(
          ReturnCode.CONFIGURATION_ERROR, INFO_ERROR_CONFIGURING_REMOTE_GENERIC.get(serverDisplay, t), t);
          ReturnCode.CONFIGURATION_ERROR, INFO_ERROR_CONFIGURING_REMOTE_GENERIC.get(conn.getHostPort(), t), t);
    }
  }
@@ -421,7 +418,7 @@
  /**
   * Configures the replication on a given server.
   * @param connWrapper the connection to the server where we want to configure
   * @param conn the connection to the server where we want to configure
   * the replication.
   * @param replicationServers a Map where the key value is the base dn and
   * the value is the list of replication servers for that base dn (or domain).
@@ -429,7 +426,6 @@
   * configured (it might not exist and the user specified it in the setup).
   * @param useSecureReplication whether to encrypt connections with the
   * replication port or not.
   * @param serverDisplay the server display.
   * @param usedReplicationServerIds the list of replication server ids that
   * are already used.
   * @param usedServerIds the list of server ids (domain ids) that
@@ -438,9 +434,9 @@
   * @return a ConfiguredReplication object describing what has been configured.
   */
  public ConfiguredReplication configureReplication(
      ConnectionWrapper connWrapper, Map<String,Set<String>> replicationServers,
      int replicationPort, boolean useSecureReplication, HostPort serverDisplay,
      Set<Integer> usedReplicationServerIds, Set<Integer> usedServerIds)
      ConnectionWrapper conn, Map<String,Set<String>> replicationServers,
      int replicationPort, boolean useSecureReplication, Set<Integer> usedReplicationServerIds,
      Set<Integer> usedServerIds)
  throws ApplicationException
  {
    boolean synchProviderCreated;
@@ -449,7 +445,7 @@
    boolean secureReplicationEnabled;
    try
    {
      RootCfgClient root = connWrapper.getRootConfiguration();
      RootCfgClient root = conn.getRootConfiguration();
      /*
       * Configure Synchronization plugin.
@@ -622,7 +618,7 @@
    {
      throw new ApplicationException(
          ReturnCode.CONFIGURATION_ERROR,
          INFO_ERROR_CONFIGURING_REMOTE_GENERIC.get(serverDisplay, t),
          INFO_ERROR_CONFIGURING_REMOTE_GENERIC.get(conn.getHostPort(), t),
          t);
    }
  }
@@ -637,22 +633,19 @@
  /**
   * Configures the replication on a given server.
   *
   * @param connWrapper
   * @param conn
   *          the connection to the server where we want to configure the
   *          replication.
   * @param replConf
   *          the object describing what was configured.
   * @param serverDisplay
   *          the server display.
   * @throws ApplicationException
   *           if something goes wrong.
   */
  public void unconfigureReplication(ConnectionWrapper connWrapper, ConfiguredReplication replConf,
      HostPort serverDisplay) throws ApplicationException
  public void unconfigureReplication(ConnectionWrapper conn, ConfiguredReplication replConf) throws ApplicationException
  {
    try
    {
      RootCfgClient root = connWrapper.getRootConfiguration();
      RootCfgClient root = conn.getRootConfiguration();
      final String syncProvider = "Multimaster Synchronization";
      // Unconfigure Synchronization plugin.
      if (replConf.isSynchProviderCreated())
@@ -739,7 +732,7 @@
    catch (Throwable t)
    {
      throw new ApplicationException(ReturnCode.CONFIGURATION_ERROR, INFO_ERROR_CONFIGURING_REMOTE_GENERIC.get(
          serverDisplay, t), t);
          conn.getHostPort(), t), t);
    }
  }
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -2222,7 +2222,7 @@
      if (replicationServer1Configured && !configureReplicationServer1)
      {
        final LocalizableMessage msg =
            INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(getHostPort(ctx1.getLdapContext()), repPort1);
            INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(ctx1.getHostPort(), repPort1);
        if (!askConfirmation(msg, false))
        {
          cancelled = true;
@@ -2490,7 +2490,7 @@
      if (replicationServer2Configured && !configureReplicationServer2)
      {
        final LocalizableMessage prompt =
            INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(getHostPort(ctx2.getLdapContext()), repPort2);
            INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(ctx2.getHostPort(), repPort2);
        if (!askConfirmation(prompt, false))
        {
          cancelled = true;
@@ -2833,8 +2833,7 @@
    if (disableReplicationServer && repPort < 0)
    {
      disableReplicationServer = false;
      final LocalizableMessage msg = INFO_REPLICATION_PROMPT_NO_REPLICATION_SERVER_TO_DISABLE.get(
          getHostPort(ctx.getLdapContext()));
      final LocalizableMessage msg = INFO_REPLICATION_PROMPT_NO_REPLICATION_SERVER_TO_DISABLE.get(ctx.getHostPort());
      try
      {
        cancelled = askConfirmation(msg, false, logger);
@@ -2866,7 +2865,7 @@
        {
          uData.setDisableReplicationServer(askConfirmation(
              INFO_REPLICATION_DISABLE_ALL_SUFFIXES_DISABLE_REPLICATION_SERVER.get(
                  getHostPort(ctx.getLdapContext()), repPort), true,
                  ctx.getHostPort(), repPort), true,
              logger));
        }
        catch (ClientException ce)
@@ -2951,7 +2950,7 @@
      // Ask for confirmation to initialize.
      println();
      if (!askConfirmation(getPrompt(uData, conn.getLdapContext()), true))
      if (!askConfirmation(getPrompt(uData, conn), true))
      {
        return false;
      }
@@ -2960,9 +2959,9 @@
    }
  }
  private LocalizableMessage getPrompt(InitializeAllReplicationUserData uData, InitialLdapContext ctx)
  private LocalizableMessage getPrompt(InitializeAllReplicationUserData uData, ConnectionWrapper conn)
  {
    HostPort hostPortSource = getHostPort(ctx);
    HostPort hostPortSource = conn.getHostPort();
    if (initializeADS(uData.getBaseDNs()))
    {
      return INFO_REPLICATION_CONFIRM_INITIALIZE_ALL_ADS.get(ADSContext.getAdministrationSuffixDN(), hostPortSource);
@@ -3518,7 +3517,7 @@
    boolean triedWithUserProvidedAdmin = false;
    final ConnectionWrapper connWrapper1 = connWrapper.get();
    final InitialLdapContext ctx1 = connWrapper1.getLdapContext();
    HostPort hostPort = getHostPort(ctx1);
    HostPort hostPort = connWrapper1.getHostPort();
    boolean isSSL = isSSL(ctx1);
    boolean isStartTLS = isStartTLS(ctx1);
    Type connectionType;
@@ -3992,7 +3991,7 @@
      try
      {
        updateConfiguration(ctx1, ctx2, uData);
        printSuccessfullyEnabled(ctx1.getLdapContext(), ctx2.getLdapContext());
        printSuccessfullyEnabled(ctx1, ctx2);
        return SUCCESSFUL;
      }
      catch (ReplicationCliException rce)
@@ -4015,7 +4014,7 @@
    int repPort = getReplicationPort(connWrapper);
    if (!server.configureReplicationServer() && repPort > 0)
    {
      println(INFO_REPLICATION_SERVER_CONFIGURED_WARNING.get(getHostPort(connWrapper.getLdapContext()), repPort));
      println(INFO_REPLICATION_SERVER_CONFIGURED_WARNING.get(connWrapper.getHostPort(), repPort));
      println();
    }
  }
@@ -4075,15 +4074,15 @@
    }
  }
  private void printSuccessfullyEnabled(InitialLdapContext ctx1, InitialLdapContext ctx2)
  private void printSuccessfullyEnabled(ConnectionWrapper conn1, ConnectionWrapper conn2)
  {
    long time1 = getServerClock(ctx1);
    long time2 = getServerClock(ctx2);
    long time1 = getServerClock(conn1.getLdapContext());
    long time2 = getServerClock(conn2.getLdapContext());
    if (time1 != -1
        && time2 != -1
        && Math.abs(time1 - time2) > Installer.THRESHOLD_CLOCK_DIFFERENCE_WARNING * 60 * 1000)
    {
        println(INFO_WARNING_SERVERS_CLOCK_DIFFERENCE.get(getHostPort(ctx1), getHostPort(ctx2),
      println(INFO_WARNING_SERVERS_CLOCK_DIFFERENCE.get(conn1.getHostPort(), conn2.getHostPort(),
            Installer.THRESHOLD_CLOCK_DIFFERENCE_WARNING));
    }
    println();
@@ -4163,7 +4162,7 @@
        {
          uData.setDisableReplicationServer(false);
          println(
              INFO_REPLICATION_WARNING_NO_REPLICATION_SERVER_TO_DISABLE.get(getHostPort(connWrapper.getLdapContext())));
              INFO_REPLICATION_WARNING_NO_REPLICATION_SERVER_TO_DISABLE.get(connWrapper.getHostPort()));
          println();
        }
      }
@@ -4179,7 +4178,7 @@
        // Inform the user that the replication server will not be disabled.
        // Inform also of the user of the disableReplicationServerArg
        println(INFO_REPLICATION_DISABLE_ALL_SUFFIXES_KEEP_REPLICATION_SERVER.get(
            getHostPort(connWrapper.getLdapContext()),
            connWrapper.getHostPort(),
            argParser.disableReplicationServerArg.getLongIdentifier(),
            argParser.disableAllArg.getLongIdentifier()));
      }
@@ -5028,8 +5027,8 @@
    filter.addBaseDNToSearch(ADSContext.getAdministrationSuffixDN());
    filter.addBaseDNToSearch(Constants.SCHEMA_DN);
    addBaseDNs(filter, uData.getBaseDNs());
    ServerDescriptor serverDesc1 = createStandalone(ctx1.getLdapContext(), filter);
    ServerDescriptor serverDesc2 = createStandalone(ctx2.getLdapContext(), filter);
    ServerDescriptor serverDesc1 = createStandalone(ctx1, filter);
    ServerDescriptor serverDesc2 = createStandalone(ctx2, filter);
    ADSContext adsCtx1 = new ADSContext(ctx1);
    ADSContext adsCtx2 = new ADSContext(ctx2);
@@ -5312,8 +5311,8 @@
      {
        logger.error(LocalizableMessage.raw("Error seeding truststores: "+t, t));
        throw new ReplicationCliException(
            ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get(getHostPort(ctxDestination.getLdapContext()),
            getHostPort(adsCtxSource.getDirContext()), toString(t)),
            ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get(ctxDestination.getHostPort(),
            adsCtxSource.getHostPort(), toString(t)),
            ERROR_SEEDING_TRUSTORE, t);
      }
    }
@@ -5430,7 +5429,7 @@
    if (adsMergeDone)
    {
      PointAdder pointAdder = new PointAdder(this);
      print(INFO_ENABLE_REPLICATION_INITIALIZING_ADS_ALL.get(getHostPort(ctxSource.getLdapContext())));
      print(INFO_ENABLE_REPLICATION_INITIALIZING_ADS_ALL.get(ctxSource.getHostPort()));
      pointAdder.start();
      try
      {
@@ -5447,8 +5446,7 @@
    else if (ctxSource != null && ctxDestination != null)
    {
      print(formatter.getFormattedWithPoints(
          INFO_ENABLE_REPLICATION_INITIALIZING_ADS.get(
              getHostPort(ctxDestination.getLdapContext()), getHostPort(ctxSource.getLdapContext()))));
          INFO_ENABLE_REPLICATION_INITIALIZING_ADS.get(ctxDestination.getHostPort(), ctxSource.getHostPort())));
      initializeSuffix(
          ADSContext.getAdministrationSuffixDN(), ctxSource.getLdapContext(), ctxDestination.getLdapContext(), false);
@@ -5473,7 +5471,7 @@
      {
        PointAdder pointAdder = new PointAdder(this);
        println(INFO_ENABLE_REPLICATION_INITIALIZING_SCHEMA.get(
            getHostPort(ctxDestination.getLdapContext()), getHostPort(ctxSource.getLdapContext())));
            ctxDestination.getHostPort(), ctxSource.getHostPort()));
        pointAdder.start();
        try
        {
@@ -5488,7 +5486,7 @@
      else
      {
        print(formatter.getFormattedWithPoints(INFO_ENABLE_REPLICATION_INITIALIZING_SCHEMA.get(
            getHostPort(ctxDestination.getLdapContext()), getHostPort(ctxSource.getLdapContext()))));
            ctxDestination.getHostPort(), ctxSource.getHostPort())));
        initializeSuffix(Constants.SCHEMA_DN, ctxSource.getLdapContext(), ctxDestination.getLdapContext(), false);
      }
      print(formatter.getFormattedDone());
@@ -5524,7 +5522,7 @@
      }
      catch (Exception ode)
      {
        LocalizableMessage msg = getMessageForEnableException(getHostPort(ctx.getLdapContext()), baseDN);
        LocalizableMessage msg = getMessageForEnableException(ctx.getHostPort(), baseDN);
        throw new ReplicationCliException(msg, ERROR_ENABLING_REPLICATION_ON_BASEDN, ode);
      }
    }
@@ -5552,7 +5550,7 @@
      }
      catch (Exception ode)
      {
        throw errorConfiguringReplicationServer(ctx.getLdapContext(), ode);
        throw errorConfiguringReplicationServer(ctx, ode);
      }
    }
    else if (serverDesc.isReplicationServer())
@@ -5563,7 +5561,7 @@
      }
      catch (Exception ode)
      {
        throw errorConfiguringReplicationServer(ctx.getLdapContext(), ode);
        throw errorConfiguringReplicationServer(ctx, ode);
      }
      if (replicationPortArg.isPresent() && enableServer.getReplicationPort() != serverDesc.getReplicationServerPort())
      {
@@ -5576,10 +5574,10 @@
    alreadyConfiguredReplicationServers.add(serverDesc.getId());
  }
  private ReplicationCliException errorConfiguringReplicationServer(InitialLdapContext ctx, Exception ode)
  private ReplicationCliException errorConfiguringReplicationServer(ConnectionWrapper conn, Exception ode)
  {
    return new ReplicationCliException(
        ERR_REPLICATION_CONFIGURING_REPLICATIONSERVER.get(getHostPort(ctx)),
        ERR_REPLICATION_CONFIGURING_REPLICATIONSERVER.get(conn.getHostPort()),
        ERROR_CONFIGURING_REPLICATIONSERVER, ode);
  }
@@ -5598,18 +5596,17 @@
    return null;
  }
  private ServerDescriptor createStandalone(InitialLdapContext ctx, TopologyCacheFilter filter)
  private ServerDescriptor createStandalone(ConnectionWrapper conn, TopologyCacheFilter filter)
      throws ReplicationCliException
  {
    try
    {
      return ServerDescriptor.createStandalone(ctx, filter);
      return ServerDescriptor.createStandalone(conn.getLdapContext(), filter);
    }
    catch (NamingException ne)
    {
      throw new ReplicationCliException(
          getMessageForException(ne, getHostPort(ctx).toString()),
          ERROR_READING_CONFIGURATION, ne);
          getMessageForException(ne, conn.getHostPort().toString()), ERROR_READING_CONFIGURATION, ne);
    }
  }
@@ -5631,7 +5628,7 @@
      filter.addBaseDNToSearch(ADSContext.getAdministrationSuffixDN());
      addBaseDNs(filter, uData.getBaseDNs());
    }
    ServerDescriptor server = createStandalone(ctx.getLdapContext(), filter);
    ServerDescriptor server = createStandalone(ctx, filter);
    ADSContext adsCtx = new ADSContext(ctx);
@@ -5912,9 +5909,8 @@
      }
      catch (OpenDsException ode)
      {
        LocalizableMessage msg = getMessageForDisableException(getHostPort(ctx.getLdapContext()), baseDN);
        throw new ReplicationCliException(msg,
            ERROR_DISABLING_REPLICATION_ON_BASEDN, ode);
        LocalizableMessage msg = getMessageForDisableException(ctx.getHostPort(), baseDN);
        throw new ReplicationCliException(msg, ERROR_DISABLING_REPLICATION_ON_BASEDN, ode);
      }
    }
@@ -6705,10 +6701,9 @@
  }
  /**
   * Configures the server to which the provided InitialLdapContext is connected
   * as a replication server.  The replication server listens in the provided
   * port.
   * @param ctx the context connected to the server that we want to configure.
   * Configures the server as a replication server by using the provided connection.
   * The replication server listens to the provided port.
   * @param conn the connection to the server that we want to configure.
   * @param replicationPort the replication port of the replication server.
   * @param useSecureReplication whether to have encrypted communication with
   * the replication port or not.
@@ -6719,15 +6714,15 @@
   * that will be used by the newly configured replication server.
   * @throws OpenDsException if there is an error updating the configuration.
   */
  private void configureAsReplicationServer(ConnectionWrapper ctx,
  private void configureAsReplicationServer(ConnectionWrapper conn,
      int replicationPort, boolean useSecureReplication,
      Set<String> replicationServers,
      Set<Integer> usedReplicationServerIds) throws Exception
  {
    print(formatter.getFormattedWithPoints(
        INFO_REPLICATION_ENABLE_CONFIGURING_REPLICATION_SERVER.get(getHostPort(ctx.getLdapContext()))));
        INFO_REPLICATION_ENABLE_CONFIGURING_REPLICATION_SERVER.get(conn.getHostPort())));
    RootCfgClient root = ctx.getRootConfiguration();
    RootCfgClient root = conn.getRootConfiguration();
    /* Configure Synchronization plugin. */
    ReplicationSynchronizationProviderCfgClient sync = null;
@@ -6739,7 +6734,7 @@
    catch (ManagedObjectNotFoundException monfe)
    {
      logger.info(LocalizableMessage.raw(
          "Synchronization server does not exist in " + getHostPort(ctx.getLdapContext())));
          "Synchronization server does not exist in " + conn.getHostPort()));
    }
    if (sync == null)
    {
@@ -6821,7 +6816,7 @@
      Set<String> replicationServers) throws Exception
  {
    print(formatter.getFormattedWithPoints(
        INFO_REPLICATION_ENABLE_UPDATING_REPLICATION_SERVER.get(getHostPort(ctx.getLdapContext()))));
        INFO_REPLICATION_ENABLE_UPDATING_REPLICATION_SERVER.get(ctx.getHostPort())));
    RootCfgClient root = ctx.getRootConfiguration();
@@ -6899,12 +6894,12 @@
        && areDnsEqual(baseDN, ADSContext.getAdministrationSuffixDN()))
    {
      print(formatter.getFormattedWithPoints(
          INFO_REPLICATION_ENABLE_CONFIGURING_ADS.get(getHostPort(ctx.getLdapContext()))));
          INFO_REPLICATION_ENABLE_CONFIGURING_ADS.get(ctx.getHostPort())));
    }
    else
    {
      print(formatter.getFormattedWithPoints(
          INFO_REPLICATION_ENABLE_CONFIGURING_BASEDN.get(baseDN, getHostPort(ctx.getLdapContext()))));
          INFO_REPLICATION_ENABLE_CONFIGURING_BASEDN.get(baseDN, ctx.getHostPort())));
    }
    RootCfgClient root = ctx.getRootConfiguration();
@@ -7162,8 +7157,8 @@
   * @param displayProgress whether we want to display progress or not.
   * @throws ReplicationCliException if an unexpected error occurs.
   */
  public void initializeAllSuffix(String baseDN, InitialLdapContext ctx,
  boolean displayProgress) throws ReplicationCliException
  public void initializeAllSuffix(String baseDN, InitialLdapContext ctx, boolean displayProgress)
      throws ReplicationCliException
  {
    if (argParser == null)
    {
@@ -7651,7 +7646,7 @@
    try
    {
      ctx = loader.createConnectionWrapper();
      hostPort = getHostPort(ctx.getLdapContext());
      hostPort = ctx.getHostPort();
      RootCfgClient root = ctx.getRootConfiguration();
      ReplicationSynchronizationProviderCfgClient sync = null;
      try
@@ -7749,8 +7744,7 @@
      }
      else
      {
        LocalizableMessage msg = ERR_REPLICATION_ERROR_READING_CONFIGURATION.get(hostPort,
            ode.getMessage());
        LocalizableMessage msg = ERR_REPLICATION_ERROR_READING_CONFIGURATION.get(hostPort, ode.getMessage());
        throw new ReplicationCliException(msg, ERROR_CONNECTING, ode);
      }
    }
@@ -7763,18 +7757,17 @@
  /**
   * Deletes a replication domain in a server for a given base DN (disable
   * replication of the base DN).
   * @param ctx the connection to the server.
   * @param baseDN the base DN of the replication domain that we want to
   * delete.
   * @param conn the connection to the server.
   * @param baseDN the base DN of the replication domain that we want to delete.
   * @throws ReplicationCliException if there is an error updating the
   * configuration of the server.
   */
  private void deleteReplicationDomain(ConnectionWrapper ctx, String baseDN) throws ReplicationCliException
  private void deleteReplicationDomain(ConnectionWrapper conn, String baseDN) throws ReplicationCliException
  {
    HostPort hostPort = getHostPort(ctx.getLdapContext());
    HostPort hostPort = conn.getHostPort();
    try
    {
      RootCfgClient root = ctx.getRootConfiguration();
      RootCfgClient root = conn.getRootConfiguration();
      ReplicationSynchronizationProviderCfgClient sync = null;
      try
      {
@@ -7784,8 +7777,7 @@
      catch (ManagedObjectNotFoundException monfe)
      {
        // It does not exist.
        logger.info(LocalizableMessage.raw("No synchronization found on "+ hostPort +".",
            monfe));
        logger.info(LocalizableMessage.raw("No synchronization found on " + hostPort + ".", monfe));
      }
      if (sync != null)
      {
@@ -7827,7 +7819,7 @@
  private void disableReplicationServer(ConnectionWrapper connWrapper)
  throws ReplicationCliException
  {
    HostPort hostPort = getHostPort(connWrapper.getLdapContext());
    HostPort hostPort = connWrapper.getHostPort();
    try
    {
      RootCfgClient root = connWrapper.getRootConfiguration();
@@ -7845,15 +7837,13 @@
      catch (ManagedObjectNotFoundException monfe)
      {
        // It does not exist.
        logger.info(LocalizableMessage.raw("No synchronization found on "+ hostPort +".",
            monfe));
        logger.info(LocalizableMessage.raw("No synchronization found on " + hostPort + ".", monfe));
      }
      if (replicationServer != null)
      {
        String s = String.valueOf(replicationServer.getReplicationPort());
        print(formatter.getFormattedWithPoints(
            INFO_REPLICATION_DISABLING_REPLICATION_SERVER.get(s,
                hostPort)));
            INFO_REPLICATION_DISABLING_REPLICATION_SERVER.get(s, hostPort)));
        sync.removeReplicationServer();
        sync.commit();
@@ -9332,7 +9322,7 @@
    }
    catch (Throwable t)
    {
      String msg = "Error loading topology cache from " + getHostPort(adsCtx.getDirContext()) + ": " + t;
      String msg = "Error loading topology cache from " + adsCtx.getHostPort() + ": " + t;
      logger.warn(LocalizableMessage.raw(msg, t));
    }
  }
@@ -9369,21 +9359,21 @@
      int nRepServers1 = countReplicationServers(cache1);
      int nRepServers2 = countReplicationServers(cache2);
      InitialLdapContext ctxSource;
      InitialLdapContext ctxDestination;
      ADSContext ctxSource;
      ADSContext ctxDestination;
      if (nRepServers1 >= nRepServers2)
      {
        ctxSource = adsCtx1.getDirContext();
        ctxDestination = adsCtx2.getDirContext();
        ctxSource = adsCtx1;
        ctxDestination = adsCtx2;
      }
      else
      {
        ctxSource = adsCtx2.getDirContext();
        ctxDestination = adsCtx1.getDirContext();
        ctxSource = adsCtx2;
        ctxDestination = adsCtx1;
      }
      HostPort hostPortSource = getHostPort(ctxSource);
      HostPort hostPortDestination = getHostPort(ctxDestination);
      HostPort hostPortSource = ctxSource.getHostPort();
      HostPort hostPortDestination = ctxDestination.getHostPort();
      if (isInteractive())
      {
        LocalizableMessage msg = INFO_REPLICATION_MERGING_REGISTRIES_CONFIRMATION.get(hostPortSource,
@@ -9475,11 +9465,11 @@
      }
      catch (ADSContextException adce)
      {
        logger.error(LocalizableMessage.raw("Error merging registry of "+
            getHostPort(adsCtxSource.getDirContext())+
            " with registry of "+
            getHostPort(adsCtxDestination.getDirContext())+" "+
            adce, adce));
        logger.error(LocalizableMessage.raw("Error merging registry of "
            + adsCtxSource.getHostPort()
            + " with registry of "
            + adsCtxDestination.getHostPort()
            + " " + adce, adce));
        if (adce.getError() == ADSContextException.ErrorType.ERROR_MERGING)
        {
          throw new ReplicationCliException(adce.getMessageObject(),
@@ -9500,8 +9490,7 @@
          if (server.isReplicationServer())
          {
            logger.info(LocalizableMessage.raw("Seeding to replication server on "+
                server.getHostPort(true)+" with certificates of "+
                getHostPort(adsCtxSource.getDirContext())));
                server.getHostPort(true)+" with certificates of "+ adsCtxSource.getHostPort()));
            try (ConnectionWrapper conn = getDirContextForServer(cacheDestination, server))
            {
              ServerDescriptor.seedAdsTrustStore(conn.getLdapContext(), adsCtxSource.getTrustedCertificates());
@@ -9512,8 +9501,8 @@
      catch (Throwable t)
      {
        logger.error(LocalizableMessage.raw("Error seeding truststore: "+t, t));
        LocalizableMessage msg = ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get(getHostPort(adsCtx2.getDirContext()),
            getHostPort(adsCtx1.getDirContext()), toString(t));
        LocalizableMessage msg = ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get(adsCtx2.getHostPort(),
            adsCtx1.getHostPort(), toString(t));
        throw new ReplicationCliException(msg, ERROR_SEEDING_TRUSTORE, t);
      }
      pointAdder.stop();
@@ -9550,7 +9539,7 @@
    {
      LocalizableMessage msg = getMessageFromCollection(cacheErrors, Constants.LINE_SEPARATOR);
      throw new ReplicationCliException(
          ERR_REPLICATION_CANNOT_MERGE_WITH_ERRORS.get(getHostPort(adsCtx.getDirContext()), msg),
          ERR_REPLICATION_CANNOT_MERGE_WITH_ERRORS.get(adsCtx.getHostPort(), msg),
          ERROR_READING_ADS, null);
    }
  }
@@ -9622,7 +9611,7 @@
    catch (TopologyCacheException te)
    {
      logger.error(LocalizableMessage.raw(
          "Error reading topology cache of " + getHostPort(adsCtx.getDirContext()) + " " + te, te));
          "Error reading topology cache of " + adsCtx.getHostPort() + " " + te, te));
      throw new ReplicationCliException(ERR_REPLICATION_READING_ADS.get(te.getMessageObject()), ERROR_UPDATING_ADS, te);
    }
  }