From f1fec12bd1a545622e25a27ca1e118179c27e4e5 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 07 Jul 2015 12:44:41 +0000
Subject: [PATCH] Code cleanups
---
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java | 933 ++++++++++++++++++++++++---------------------------------
1 files changed, 392 insertions(+), 541 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
index 27216ae..ad1de74 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -72,6 +72,7 @@
import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg0;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
+import org.forgerock.i18n.LocalizableMessageDescriptor.Arg2;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.admin.ads.*;
@@ -105,6 +106,7 @@
import org.opends.server.admin.std.meta.ReplicationSynchronizationProviderCfgDefn;
import org.opends.server.core.DirectoryServer;
import org.opends.server.tasks.PurgeConflictsHistoricalTask;
+import org.opends.server.tools.dsreplication.EnableReplicationUserData.EnableReplicationServerData;
import org.opends.server.tools.tasks.TaskEntry;
import org.opends.server.tools.tasks.TaskScheduleInteraction;
import org.opends.server.tools.tasks.TaskScheduleUserData;
@@ -1194,8 +1196,7 @@
String hostPort =
ServerDescriptor.getServerRepresentation(hostName, portNumber);
LocalizableMessage message = getMessageForException(e, hostPort);
- throw new ClientException(ReturnCode.CLIENT_SIDE_CONNECT_ERROR,
- message);
+ throw new ClientException(ReturnCode.CLIENT_SIDE_CONNECT_ERROR, message);
}
}
}
@@ -1736,7 +1737,7 @@
{
println();
maximumDuration = askInteger(INFO_REPLICATION_PURGE_HISTORICAL_MAXIMUM_DURATION_PROMPT.get(),
- argParser.getDefaultMaximumDuration(), logger);
+ getDefaultValue(argParser.maximumDurationArg), logger);
}
uData.setMaximumDuration(maximumDuration);
@@ -1896,9 +1897,9 @@
/*
* Try to connect to the first server.
*/
- String host1 = argParser.getHostName1();
- int port1 = argParser.getPort1();
- String bindDn1 = argParser.getBindDn1();
+ String host1 = getValue(argParser.getHostName1Arg());
+ int port1 = getValue(argParser.getPort1Arg());
+ String bindDn1 = getValue(argParser.getBindDn1Arg());
String pwd1 = argParser.getBindPassword1();
String pwd = null;
Map<String, String> pwdFile = null;
@@ -1977,10 +1978,10 @@
if (!cancelled)
{
- uData.setHostName1(host1);
- uData.setPort1(port1);
- uData.setBindDn1(bindDn1);
- uData.setPwd1(pwd1);
+ uData.getServer1().setHostName(host1);
+ uData.getServer1().setPort(port1);
+ uData.getServer1().setBindDn(bindDn1);
+ uData.getServer1().setPwd(pwd1);
}
int replicationPort1 = -1;
boolean secureReplication1 = argParser.isSecureReplication1();
@@ -2039,7 +2040,7 @@
{
replicationPort1 = askPort(
INFO_REPLICATION_ENABLE_REPLICATIONPORT1_PROMPT.get(),
- argParser.getDefaultReplicationPort1(), logger);
+ getDefaultValue(argParser.replicationPort1Arg), logger);
println();
}
if (!argParser.skipReplicationPortCheck() && isLocalHost(host1))
@@ -2116,10 +2117,10 @@
}
}
}
- uData.setReplicationPort1(replicationPort1);
- uData.setSecureReplication1(secureReplication1);
- uData.setConfigureReplicationServer1(configureReplicationServer1);
- uData.setConfigureReplicationDomain1(configureReplicationDomain1);
+ uData.getServer1().setReplicationPort(replicationPort1);
+ uData.getServer1().setSecureReplication(secureReplication1);
+ uData.getServer1().setConfigureReplicationServer(configureReplicationServer1);
+ uData.getServer1().setConfigureReplicationDomain(configureReplicationDomain1);
firstServerCommandBuilder = new CommandBuilder(null, null);
if (mustPrintCommandBuilder())
{
@@ -2139,9 +2140,9 @@
if (!cancelled)
{
- host2 = argParser.getHostName2();
- port2 = argParser.getPort2();
- bindDn2 = argParser.getBindDn2();
+ host2 = getValue(argParser.getHostName2Arg());
+ port2 = getValue(argParser.getPort2Arg());
+ bindDn2 = getValue(argParser.getBindDn2Arg());
pwd2 = argParser.getBindPassword2();
pwdFile = null;
@@ -2249,10 +2250,10 @@
if (!cancelled)
{
- uData.setHostName2(host2);
- uData.setPort2(port2);
- uData.setBindDn2(bindDn2);
- uData.setPwd2(pwd2);
+ uData.getServer2().setHostName(host2);
+ uData.getServer2().setPort(port2);
+ uData.getServer2().setBindDn(bindDn2);
+ uData.getServer2().setPwd(pwd2);
}
int replicationPort2 = -1;
@@ -2313,7 +2314,7 @@
{
replicationPort2 = askPort(
INFO_REPLICATION_ENABLE_REPLICATIONPORT2_PROMPT.get(),
- argParser.getDefaultReplicationPort2(), logger);
+ getDefaultValue(argParser.replicationPort2Arg), logger);
println();
}
if (!argParser.skipReplicationPortCheck() &&
@@ -2394,10 +2395,10 @@
administratorDefined |= hasAdministrator(ctx2);
}
}
- uData.setReplicationPort2(replicationPort2);
- uData.setSecureReplication2(secureReplication2);
- uData.setConfigureReplicationServer2(configureReplicationServer2);
- uData.setConfigureReplicationDomain2(configureReplicationDomain2);
+ uData.getServer2().setReplicationPort(replicationPort2);
+ uData.getServer2().setSecureReplication(secureReplication2);
+ uData.getServer2().setConfigureReplicationServer(configureReplicationServer2);
+ uData.getServer2().setConfigureReplicationDomain(configureReplicationDomain2);
// If the adminUid and adminPwd are not set in the EnableReplicationUserData
// object, that means that there are no administrators and that they
@@ -2416,7 +2417,7 @@
println(INFO_REPLICATION_ENABLE_ADMINISTRATOR_MUST_BE_CREATED.get());
promptedForAdmin = true;
adminUid= askForAdministratorUID(
- argParser.getDefaultAdministratorUID(), logger);
+ getDefaultValue(argParser.getAdminUidArg()), logger);
println();
}
uData.setAdminUid(adminUid);
@@ -3098,34 +3099,6 @@
}
/**
- * Commodity method that simply checks if a provided value is null or not,
- * if it is not <CODE>null</CODE> returns it and if it is <CODE>null</CODE>
- * returns the provided default value.
- * @param v the value to analyze.
- * @param defaultValue the default value.
- * @return if the provided value is not <CODE>null</CODE> returns it and if it
- * is <CODE>null</CODE> returns the provided default value.
- */
- private String getValue(String v, String defaultValue)
- {
- return v != null ? v : defaultValue;
- }
-
- /**
- * Commodity method that simply checks if a provided value is -1 or not,
- * if it is not -1 returns it and if it is -1 returns the provided default
- * value.
- * @param v the value to analyze.
- * @param defaultValue the default value.
- * @return if the provided value is not -1 returns it and if it is -1 returns
- * the provided default value.
- */
- private int getValue(int v, int defaultValue)
- {
- return v != -1 ? v : defaultValue;
- }
-
- /**
* Returns the trust manager to be used by this application.
* @return the trust manager to be used by this application.
*/
@@ -3147,95 +3120,57 @@
String adminPwd = uData.getAdminPwd();
final String adminDN = getAdministratorDN(adminUid);
- String host1Name = getValue(argParser.getHostName1(),
- argParser.getDefaultHostName1());
- uData.setHostName1(host1Name);
- int port1 = getValue(argParser.getPort1(),
- argParser.getDefaultPort1());
- uData.setPort1(port1);
- String pwd1 = argParser.getBindPassword1();
- if (pwd1 == null)
- {
- uData.setBindDn1(adminDN);
- uData.setPwd1(adminPwd);
- }
- else
- {
- // Best-effort: try to use admin, if it does not work, use bind DN.
- try
- {
- InitialLdapContext ctx = createAdministrativeContext(
- uData.getHostName1(), uData.getPort1(), useSSL, useStartTLS,
- adminDN, adminPwd, getConnectTimeout(), getTrustManager());
- uData.setBindDn1(adminDN);
- uData.setPwd1(adminPwd);
- ctx.close();
- }
- catch (Throwable t)
- {
- String bindDn = getValue(argParser.getBindDn1(),
- argParser.getDefaultBindDn1());
- uData.setBindDn1(bindDn);
- uData.setPwd1(pwd1);
- }
- }
- uData.setSecureReplication1(argParser.isSecureReplication1());
+ setConnectionDetails(uData.getServer1(), adminPwd, adminDN,
+ argParser.getHostName1Arg(), argParser.getPort1Arg(), argParser.getBindDn1Arg(), argParser.getBindPassword1());
+ setConnectionDetails(uData.getServer2(), adminPwd, adminDN,
+ argParser.getHostName2Arg(), argParser.getPort2Arg(), argParser.getBindDn2Arg(), argParser.getBindPassword2());
- String host2Name = getValue(argParser.getHostName2(),
- argParser.getDefaultHostName2());
- uData.setHostName2(host2Name);
- int port2 = getValue(argParser.getPort2(),
- argParser.getDefaultPort2());
- uData.setPort2(port2);
- String pwd2 = argParser.getBindPassword2();
- if (pwd2 == null)
- {
- uData.setBindDn2(adminDN);
- uData.setPwd2(adminPwd);
- }
- else
- {
- // Best-effort: try to use admin, if it does not work, use bind DN.
- try
- {
- InitialLdapContext ctx = createAdministrativeContext(
- uData.getHostName2(), uData.getPort2(), useSSL, useStartTLS,
- adminDN, adminPwd, getConnectTimeout(), getTrustManager());
- uData.setBindDn2(adminDN);
- uData.setPwd2(adminPwd);
- ctx.close();
- }
- catch (Throwable t)
- {
- String bindDn = getValue(argParser.getBindDn2(),
- argParser.getDefaultBindDn2());
- uData.setBindDn2(bindDn);
- uData.setPwd2(pwd2);
- }
- }
- uData.setSecureReplication2(argParser.isSecureReplication2());
uData.setReplicateSchema(!argParser.noSchemaReplication());
- uData.setConfigureReplicationDomain1(
- !argParser.onlyReplicationServer1Arg.isPresent());
- uData.setConfigureReplicationDomain2(
- !argParser.onlyReplicationServer2Arg.isPresent());
- uData.setConfigureReplicationServer1(
- !argParser.noReplicationServer1Arg.isPresent());
- uData.setConfigureReplicationServer2(
- !argParser.noReplicationServer2Arg.isPresent());
- int replicationPort1 = getValue(argParser.getReplicationPort1(),
- argParser.getDefaultReplicationPort1());
- if (uData.configureReplicationServer1())
+ setReplicationDetails(uData.getServer1(), argParser.isSecureReplication1(), argParser.onlyReplicationServer1Arg,
+ argParser.noReplicationServer1Arg, argParser.getReplicationPort1OrDefault());
+ setReplicationDetails(uData.getServer2(), argParser.isSecureReplication2(), argParser.onlyReplicationServer2Arg,
+ argParser.noReplicationServer2Arg, argParser.getReplicationPort2OrDefault());
+ }
+
+ private void setConnectionDetails(EnableReplicationServerData server, String adminPwd, final String adminDN,
+ StringArgument hostNameArg, IntegerArgument portArg, StringArgument bindDnArg, String pwd)
+ {
+ server.setHostName(getValueOrDefault(hostNameArg));
+ server.setPort(getValueOrDefault(portArg));
+ if (pwd == null)
{
- uData.setReplicationPort1(replicationPort1);
+ server.setBindDn(adminDN);
+ server.setPwd(adminPwd);
}
-
- int replicationPort2 = getValue(argParser.getReplicationPort2(),
- argParser.getDefaultReplicationPort2());
- if (uData.configureReplicationServer2())
+ else
{
- uData.setReplicationPort2(replicationPort2);
+ // Best-effort: try to use admin, if it does not work, use bind DN.
+ try
+ {
+ InitialLdapContext ctx = createAdministrativeContext(server.getHostName(), server.getPort(),
+ useSSL, useStartTLS, adminDN, adminPwd, getConnectTimeout(), getTrustManager());
+ server.setBindDn(adminDN);
+ server.setPwd(adminPwd);
+ ctx.close();
+ }
+ catch (Throwable t)
+ {
+ server.setBindDn(getDefaultValue(bindDnArg));
+ server.setPwd(pwd);
+ }
+ }
+ }
+
+ private void setReplicationDetails(EnableReplicationServerData server, boolean secureReplication,
+ BooleanArgument onlyReplicationServer, BooleanArgument noReplicationServer, int replicationPort)
+ {
+ server.setSecureReplication(secureReplication);
+ server.setConfigureReplicationDomain(!onlyReplicationServer.isPresent());
+ server.setConfigureReplicationServer(!noReplicationServer.isPresent());
+ if (server.configureReplicationServer())
+ {
+ server.setReplicationPort(replicationPort);
}
}
@@ -3249,20 +3184,10 @@
{
initialize(uData);
- String hostNameSource = getValue(argParser.getHostNameSource(),
- argParser.getDefaultHostNameSource());
- uData.setHostNameSource(hostNameSource);
- int portSource = getValue(argParser.getPortSource(),
- argParser.getDefaultPortSource());
- uData.setPortSource(portSource);
-
- String hostNameDestination = getValue(
- argParser.getHostNameDestination(),
- argParser.getDefaultHostNameDestination());
- uData.setHostNameDestination(hostNameDestination);
- int portDestination = getValue(argParser.getPortDestination(),
- argParser.getDefaultPortDestination());
- uData.setPortDestination(portDestination);
+ uData.setHostNameSource(argParser.getHostNameSourceOrDefault());
+ uData.setPortSource(argParser.getPortSourceOrDefault());
+ uData.setHostNameDestination(argParser.getHostNameDestinationOrDefault());
+ uData.setPortDestination(argParser.getPortDestinationOrDefault());
}
/**
@@ -3278,19 +3203,15 @@
String bindDn = argParser.getBindDNToDisable();
if (bindDn == null && adminUid == null)
{
- adminUid = argParser.getDefaultAdministratorUID();
+ adminUid = argParser.getAdministratorUIDOrDefault();
bindDn = getAdministratorDN(adminUid);
}
uData.setAdminUid(adminUid);
uData.setBindDn(bindDn);
uData.setAdminPwd(argParser.getBindPasswordAdmin());
- String hostName = getValue(argParser.getHostNameToDisable(),
- argParser.getDefaultHostNameToDisable());
- uData.setHostName(hostName);
- int port = getValue(argParser.getPortToDisable(),
- argParser.getDefaultPortToDisable());
- uData.setPort(port);
+ uData.setHostName(argParser.getHostNameToDisableOrDefault());
+ uData.setPort(argParser.getPortToDisableOrDefault());
uData.setDisableAll(argParser.disableAllArg.isPresent());
uData.setDisableReplicationServer(
@@ -3306,12 +3227,8 @@
{
initialize(uData);
- String hostName = getValue(argParser.getHostNameToInitializeAll(),
- argParser.getDefaultHostNameToInitializeAll());
- uData.setHostName(hostName);
- int port = getValue(argParser.getPortToInitializeAll(),
- argParser.getDefaultPortToInitializeAll());
- uData.setPort(port);
+ uData.setHostName(argParser.getHostNameToInitializeAllOrDefault());
+ uData.setPort(argParser.getPortToInitializeAllOrDefault());
}
/**
@@ -3324,21 +3241,15 @@
{
initialize(uData);
- String hostName = getValue(argParser.getHostNameToStatus(),
- argParser.getDefaultHostNameToStatus());
- uData.setHostName(hostName);
- int port = getValue(argParser.getPortToStatus(),
- argParser.getDefaultPortToStatus());
- uData.setPort(port);
-
+ uData.setHostName(argParser.getHostNameToStatusOrDefault());
+ uData.setPort(argParser.getPortToStatusOrDefault());
uData.setScriptFriendly(argParser.isScriptFriendly());
}
private void initialize(ReplicationUserData uData)
{
uData.setBaseDNs(new LinkedList<String>(argParser.getBaseDNs()));
- String adminUid = getValue(argParser.getAdministratorUID(), argParser.getDefaultAdministratorUID());
- uData.setAdminUid(adminUid);
+ uData.setAdminUid(argParser.getAdministratorUIDOrDefault());
uData.setAdminPwd(argParser.getBindPasswordAdmin());
}
@@ -3486,8 +3397,7 @@
{
if (!triedWithUserProvidedAdmin && adminPwd == null)
{
- adminUid = getValue(argParser.getAdministratorUID(),
- argParser.getDefaultAdministratorUID());
+ adminUid = argParser.getAdministratorUIDOrDefault();
adminPwd = argParser.getBindPasswordAdmin();
triedWithUserProvidedAdmin = true;
}
@@ -3501,7 +3411,7 @@
errorDisplayed = true;
}
adminUid = askForAdministratorUID(
- argParser.getDefaultAdministratorUID(), logger);
+ getDefaultValue(argParser.getAdminUidArg()), logger);
println();
adminPwd = askForAdministratorPwd(logger);
println();
@@ -3535,18 +3445,11 @@
uData.setAdminPwd(adminPwd);
if (uData instanceof EnableReplicationUserData)
{
- EnableReplicationUserData enableData =
- (EnableReplicationUserData)uData;
- if (isFirstOrSourceServer)
- {
- enableData.setBindDn1(getAdministratorDN(adminUid));
- enableData.setPwd1(adminPwd);
- }
- else
- {
- enableData.setBindDn2(getAdministratorDN(adminUid));
- enableData.setPwd2(adminPwd);
- }
+ EnableReplicationUserData enableData = (EnableReplicationUserData) uData;
+ EnableReplicationServerData server =
+ isFirstOrSourceServer ? enableData.getServer1() : enableData.getServer2();
+ server.setBindDn(getAdministratorDN(adminUid));
+ server.setPwd(adminPwd);
}
reloadTopology = true;
break;
@@ -3885,19 +3788,8 @@
if (!isInteractive())
{
- int repPort1 = getReplicationPort(ctx1);
- int repPort2 = getReplicationPort(ctx2);
-
- if (!uData.configureReplicationServer1() && repPort1 > 0)
- {
- println(INFO_REPLICATION_SERVER_CONFIGURED_WARNING.get(getHostPort(ctx1), repPort1));
- println();
- }
- if (!uData.configureReplicationServer2() && repPort2 > 0)
- {
- println(INFO_REPLICATION_SERVER_CONFIGURED_WARNING.get(getHostPort(ctx2), repPort2));
- println();
- }
+ checkReplicationServerAlreadyConfigured(ctx1, uData.getServer1());
+ checkReplicationServerAlreadyConfigured(ctx2, uData.getServer2());
}
try
@@ -3920,37 +3812,27 @@
}
}
+ private void checkReplicationServerAlreadyConfigured(InitialLdapContext ctx, EnableReplicationServerData server)
+ {
+ int repPort = getReplicationPort(ctx);
+ if (!server.configureReplicationServer() && repPort > 0)
+ {
+ println(INFO_REPLICATION_SERVER_CONFIGURED_WARNING.get(getHostPort(ctx), repPort));
+ println();
+ }
+ }
+
private void checksForNonInteractiveMode(EnableReplicationUserData uData,
InitialLdapContext ctx1, InitialLdapContext ctx2, LinkedList<LocalizableMessage> errorMessages)
{
- String host1 = uData.getHostName1();
- String host2 = uData.getHostName2();
+ EnableReplicationServerData server1 = uData.getServer1();
+ EnableReplicationServerData server2 = uData.getServer2();
+ String host1 = server1.getHostName();
+ String host2 = server2.getHostName();
- int replPort1 = getReplicationPort(ctx1);
- boolean hasReplicationPort1 = replPort1 > 0;
- if (replPort1 < 0 && uData.configureReplicationServer1())
- {
- replPort1 = uData.getReplicationPort1();
- }
- int replPort2 = getReplicationPort(ctx2);
- boolean hasReplicationPort2 = replPort2 > 0;
- if (replPort2 < 0 && uData.configureReplicationServer2())
- {
- replPort2 = uData.getReplicationPort2();
- }
- boolean checkReplicationPort1 = replPort1 > 0;
- boolean checkReplicationPort2 = replPort2 > 0;
- if (!hasReplicationPort1 && checkReplicationPort1 && !argParser.skipReplicationPortCheck()
- && uData.configureReplicationServer1() && isLocalHost(host1) && !SetupUtils.canUseAsPort(replPort1))
- {
- errorMessages.add(getCannotBindToPortError(replPort1));
- }
- if (!hasReplicationPort2 && checkReplicationPort2 && !argParser.skipReplicationPortCheck()
- && uData.configureReplicationServer2() && isLocalHost(host2) && !SetupUtils.canUseAsPort(replPort2))
- {
- errorMessages.add(getCannotBindToPortError(replPort2));
- }
- if (checkReplicationPort1 && checkReplicationPort2 && replPort1 == replPort2 && host1.equalsIgnoreCase(host2))
+ int replPort1 = checkReplicationPort(ctx1, server1, errorMessages);
+ int replPort2 = checkReplicationPort(ctx2, server2, errorMessages);
+ if (replPort1 > 0 && replPort1 == replPort2 && host1.equalsIgnoreCase(host2))
{
errorMessages.add(ERR_REPLICATION_SAME_REPLICATION_PORT.get(replPort1, host1));
}
@@ -3959,15 +3841,39 @@
{
// This is something that we must do in any case... this test is
// already included when we call SetupUtils.canUseAsPort
- if (checkReplicationPort1 && replPort1 == uData.getPort1())
- {
- errorMessages.add(ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL.get(host1, replPort1));
- }
+ checkAdminAndReplicationPortsAreDifferent(replPort1, server1, errorMessages);
+ checkAdminAndReplicationPortsAreDifferent(replPort2, server2, errorMessages);
+ }
+ }
- if (checkReplicationPort2 && replPort2 == uData.getPort2())
- {
- errorMessages.add(ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL.get(host2, replPort2));
- }
+ private int checkReplicationPort(
+ InitialLdapContext ctx, EnableReplicationServerData server, LinkedList<LocalizableMessage> errorMessages)
+ {
+ int replPort = getReplicationPort(ctx);
+ boolean hasReplicationPort = replPort > 0;
+ if (replPort < 0 && server.configureReplicationServer())
+ {
+ replPort = server.getReplicationPort();
+ }
+ boolean checkReplicationPort = replPort > 0;
+ if (!hasReplicationPort
+ && checkReplicationPort
+ && !argParser.skipReplicationPortCheck()
+ && server.configureReplicationServer()
+ && isLocalHost(server.getHostName())
+ && !SetupUtils.canUseAsPort(replPort))
+ {
+ errorMessages.add(getCannotBindToPortError(replPort));
+ }
+ return replPort;
+ }
+
+ private void checkAdminAndReplicationPortsAreDifferent(
+ int replPort, EnableReplicationServerData server, LinkedList<LocalizableMessage> errorMessages)
+ {
+ if (replPort > 0 && replPort == server.getPort())
+ {
+ errorMessages.add(ERR_REPLICATION_PORT_AND_REPLICATION_PORT_EQUAL.get(server.getHostName(), replPort));
}
}
@@ -3999,19 +3905,16 @@
private InitialLdapContext createAdministrativeContext(EnableReplicationUserData uData, boolean isFirstSetOfValues,
LinkedList<LocalizableMessage> errorMessages)
{
- final String host = isFirstSetOfValues ? uData.getHostName1() : uData.getHostName2();
- final int port = isFirstSetOfValues ? uData.getPort1() : uData.getPort2();
- final String bindDn = isFirstSetOfValues ? uData.getBindDn1() : uData.getBindDn2();
- final String pwd = isFirstSetOfValues ? uData.getPwd1() : uData.getPwd2();
+ EnableReplicationServerData server = isFirstSetOfValues ? uData.getServer1() : uData.getServer2();
try
{
return createAdministrativeContext(
- host, port, useSSL, useStartTLS, bindDn, pwd,
+ server.getHostName(), server.getPort(), useSSL, useStartTLS, server.getBindDn(), server.getPwd(),
getConnectTimeout(), getTrustManager());
}
catch (NamingException ne)
{
- String hostPort = getServerRepresentation(host, port);
+ String hostPort = getServerRepresentation(server.getHostName(), server.getPort());
errorMessages.add(getMessageForException(ne, hostPort));
logger.error(LocalizableMessage.raw("Complete error stack:"), ne);
return null;
@@ -4423,22 +4326,24 @@
InitialLdapContext ctx1, InitialLdapContext ctx2,
boolean interactive, EnableReplicationUserData uData)
{
+ EnableReplicationServerData server1 = uData.getServer1();
+ EnableReplicationServerData server2 = uData.getServer2();
final TreeSet<String> availableSuffixes = new TreeSet<String>();
final TreeSet<String> alreadyReplicatedSuffixes = new TreeSet<String>();
- if (uData.configureReplicationDomain1() &&
- uData.configureReplicationDomain2())
+ if (server1.configureReplicationDomain() &&
+ server2.configureReplicationDomain())
{
availableSuffixes.addAll(getCommonSuffixes(ctx1, ctx2,
SuffixRelationType.NOT_FULLY_REPLICATED));
alreadyReplicatedSuffixes.addAll(getCommonSuffixes(ctx1, ctx2,
SuffixRelationType.FULLY_REPLICATED));
}
- else if (uData.configureReplicationDomain1())
+ else if (server1.configureReplicationDomain())
{
updateAvailableAndReplicatedSuffixesForOneDomain(ctx1, ctx2,
availableSuffixes, alreadyReplicatedSuffixes);
}
- else if (uData.configureReplicationDomain2())
+ else if (server2.configureReplicationDomain())
{
updateAvailableAndReplicatedSuffixesForOneDomain(ctx2, ctx1,
availableSuffixes, alreadyReplicatedSuffixes);
@@ -4452,8 +4357,8 @@
if (availableSuffixes.isEmpty())
{
println();
- if (!uData.configureReplicationDomain1() &&
- !uData.configureReplicationDomain1() &&
+ if (!server1.configureReplicationDomain() &&
+ !server1.configureReplicationDomain() &&
alreadyReplicatedSuffixes.isEmpty())
{
// Use a clarifying message: there is no replicated base DN.
@@ -4932,8 +4837,8 @@
filter.addBaseDNToSearch(ADSContext.getAdministrationSuffixDN());
filter.addBaseDNToSearch(Constants.SCHEMA_DN);
addBaseDNs(filter, uData.getBaseDNs());
- ServerDescriptor server1 = createStandalone(ctx1, filter);
- ServerDescriptor server2 = createStandalone(ctx2, filter);
+ ServerDescriptor serverDesc1 = createStandalone(ctx1, filter);
+ ServerDescriptor serverDesc2 = createStandalone(ctx2, filter);
ADSContext adsCtx1 = new ADSContext(ctx1);
ADSContext adsCtx2 = new ADSContext(ctx2);
@@ -5041,12 +4946,12 @@
{
adsCtx1.createAdministrator(getAdministratorProperties(uData));
}
- server2.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx1, server2.getAdsProperties());
- if (!ADSContext.isRegistered(server1, registry1))
+ serverDesc2.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx1, serverDesc2.getAdsProperties());
+ if (!ADSContext.isRegistered(serverDesc1, registry1))
{
- server1.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx1, server1.getAdsProperties());
+ serverDesc1.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx1, serverDesc1.getAdsProperties());
}
ctxSource = ctx1;
@@ -5059,13 +4964,13 @@
{
adsCtx2.createAdministrator(getAdministratorProperties(uData));
}
- server1.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx2, server1.getAdsProperties());
+ serverDesc1.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx2, serverDesc1.getAdsProperties());
- if (!ADSContext.isRegistered(server2, registry2))
+ if (!ADSContext.isRegistered(serverDesc2, registry2))
{
- server2.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx2, server2.getAdsProperties());
+ serverDesc2.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx2, serverDesc2.getAdsProperties());
}
ctxSource = ctx2;
@@ -5085,13 +4990,13 @@
{
// They are already replicated: nothing to do in terms of ADS
// initialization or ADS update data
- adsAlreadyReplicated = isBaseDNReplicated(server1, server2, ADSContext.getAdministrationSuffixDN());
+ adsAlreadyReplicated = isBaseDNReplicated(serverDesc1, serverDesc2, ADSContext.getAdministrationSuffixDN());
if (!adsAlreadyReplicated)
{
// Try to merge if both are replicated
- boolean isADS1Replicated = isBaseDNReplicated(server1, ADSContext.getAdministrationSuffixDN());
- boolean isADS2Replicated = isBaseDNReplicated(server2, ADSContext.getAdministrationSuffixDN());
+ boolean isADS1Replicated = isBaseDNReplicated(serverDesc1, ADSContext.getAdministrationSuffixDN());
+ boolean isADS2Replicated = isBaseDNReplicated(serverDesc2, ADSContext.getAdministrationSuffixDN());
if (isADS1Replicated && isADS2Replicated)
{
// Merge
@@ -5110,12 +5015,12 @@
{
adsCtx1.createAdministrator(getAdministratorProperties(uData));
}
- server2.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx1, server2.getAdsProperties());
- if (!ADSContext.isRegistered(server1, registry1))
+ serverDesc2.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx1, serverDesc2.getAdsProperties());
+ if (!ADSContext.isRegistered(serverDesc1, registry1))
{
- server1.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx1, server1.getAdsProperties());
+ serverDesc1.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx1, serverDesc1.getAdsProperties());
}
ctxSource = ctx1;
@@ -5128,12 +5033,12 @@
{
adsCtx2.createAdministrator(getAdministratorProperties(uData));
}
- server1.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx2, server1.getAdsProperties());
- if (!ADSContext.isRegistered(server2, registry2))
+ serverDesc1.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx2, serverDesc1.getAdsProperties());
+ if (!ADSContext.isRegistered(serverDesc2, registry2))
{
- server2.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx2, server2.getAdsProperties());
+ serverDesc2.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx2, serverDesc2.getAdsProperties());
}
ctxSource = ctx2;
@@ -5149,13 +5054,13 @@
{
adsCtx2.createAdministrator(getAdministratorProperties(uData));
}
- server1.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx2, server1.getAdsProperties());
+ serverDesc1.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx2, serverDesc1.getAdsProperties());
Set<Map<ServerProperty, Object>> registry2 = adsCtx2.readServerRegistry();
- if (!ADSContext.isRegistered(server2, registry2))
+ if (!ADSContext.isRegistered(serverDesc2, registry2))
{
- server2.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx2, server2.getAdsProperties());
+ serverDesc2.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx2, serverDesc2.getAdsProperties());
}
ctxSource = ctx2;
@@ -5168,13 +5073,13 @@
{
adsCtx1.createAdministrator(getAdministratorProperties(uData));
}
- server2.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx1, server2.getAdsProperties());
+ serverDesc2.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx1, serverDesc2.getAdsProperties());
Set<Map<ServerProperty, Object>> registry1 = adsCtx1.readServerRegistry();
- if (!ADSContext.isRegistered(server1, registry1))
+ if (!ADSContext.isRegistered(serverDesc1, registry1))
{
- server1.updateAdsPropertiesWithServerProperties();
- registerServer(adsCtx1, server1.getAdsProperties());
+ serverDesc1.updateAdsPropertiesWithServerProperties();
+ registerServer(adsCtx1, serverDesc1.getAdsProperties());
}
ctxSource = ctx1;
@@ -5190,10 +5095,10 @@
// registering any server.
adsCtx1.createAdministrator(getAdministratorProperties(uData));
}
- server1.updateAdsPropertiesWithServerProperties();
- adsCtx1.registerServer(server1.getAdsProperties());
- server2.updateAdsPropertiesWithServerProperties();
- adsCtx1.registerServer(server2.getAdsProperties());
+ serverDesc1.updateAdsPropertiesWithServerProperties();
+ adsCtx1.registerServer(serverDesc1.getAdsProperties());
+ serverDesc2.updateAdsPropertiesWithServerProperties();
+ adsCtx1.registerServer(serverDesc2.getAdsProperties());
ctxSource = ctx1;
ctxDestination = ctx2;
@@ -5273,36 +5178,20 @@
ERROR_READING_TOPOLOGY_CACHE, tce);
}
- if (server1.isReplicationServer())
- {
- twoReplServers.add(server1.getReplicationServerHostPort());
- usedReplicationServerIds.add(server1.getReplicationServerId());
- }
- else if (uData.configureReplicationServer1())
- {
- twoReplServers.add(getReplicationServer(getHostName(ctx1), uData.getReplicationPort1()));
- }
- if (server2.isReplicationServer())
- {
- twoReplServers.add(server2.getReplicationServerHostPort());
- usedReplicationServerIds.add(server2.getReplicationServerId());
- }
- else if (uData.configureReplicationServer2())
- {
- twoReplServers.add(getReplicationServer(getHostName(ctx2), uData.getReplicationPort2()));
- }
+ addToSets(serverDesc1, uData.getServer1(), ctx1, twoReplServers, usedReplicationServerIds);
+ addToSets(serverDesc2, uData.getServer2(), ctx2, twoReplServers, usedReplicationServerIds);
for (String baseDN : uData.getBaseDNs())
{
Set<String> repServersForBaseDN = new LinkedHashSet<String>();
- repServersForBaseDN.addAll(getReplicationServers(baseDN, cache1, server1));
- repServersForBaseDN.addAll(getReplicationServers(baseDN, cache2, server2));
+ repServersForBaseDN.addAll(getReplicationServers(baseDN, cache1, serverDesc1));
+ repServersForBaseDN.addAll(getReplicationServers(baseDN, cache2, serverDesc2));
repServersForBaseDN.addAll(twoReplServers);
hmRepServers.put(baseDN, repServersForBaseDN);
Set<Integer> ids = new HashSet<Integer>();
- ids.addAll(getReplicationDomainIds(baseDN, server1));
- ids.addAll(getReplicationDomainIds(baseDN, server2));
+ ids.addAll(getReplicationDomainIds(baseDN, serverDesc1));
+ ids.addAll(getReplicationDomainIds(baseDN, serverDesc2));
if (cache1 != null)
{
for (ServerDescriptor server : cache1.getServers())
@@ -5325,10 +5214,10 @@
}
Set<String> alreadyConfiguredReplicationServers = new HashSet<String>();
- configureServer1(
- ctx1, server1, uData, allRepServers, usedReplicationServerIds, alreadyConfiguredReplicationServers);
- configureServer2(
- ctx2, server2, uData, allRepServers, usedReplicationServerIds, alreadyConfiguredReplicationServers);
+ configureServer(ctx1, serverDesc1, uData.getServer1(), argParser.replicationPort1Arg, usedReplicationServerIds,
+ allRepServers, alreadyConfiguredReplicationServers, WARN_FIRST_REPLICATION_SERVER_ALREADY_CONFIGURED);
+ configureServer(ctx2, serverDesc2, uData.getServer2(), argParser.replicationPort2Arg, usedReplicationServerIds,
+ allRepServers, alreadyConfiguredReplicationServers, WARN_SECOND_REPLICATION_SERVER_ALREADY_CONFIGURED);
for (String baseDN : uData.getBaseDNs())
{
@@ -5336,50 +5225,11 @@
Set<Integer> usedIds = hmUsedReplicationDomainIds.get(baseDN);
Set<String> alreadyConfiguredServers = new HashSet<String>();
- if (uData.configureReplicationDomain1()
- || areDnsEqual(baseDN, ADSContext.getAdministrationSuffixDN()))
- {
- try
- {
- configureToReplicateBaseDN(ctx1, baseDN, repServers, usedIds);
- }
- catch (OpenDsException ode)
- {
- LocalizableMessage msg = getMessageForEnableException(getHostPort(ctx1), baseDN);
- throw new ReplicationCliException(msg,
- ERROR_ENABLING_REPLICATION_ON_BASEDN, ode);
- }
- }
- alreadyConfiguredServers.add(server1.getId());
+ configureToReplicateBaseDN(uData.getServer1(), ctx1, serverDesc1, cache1, baseDN,
+ usedIds, alreadyConfiguredServers, repServers, allRepServers, alreadyConfiguredReplicationServers);
- if (uData.configureReplicationDomain2()
- || areDnsEqual(baseDN, ADSContext.getAdministrationSuffixDN()))
- {
- try
- {
- configureToReplicateBaseDN(ctx2, baseDN, repServers, usedIds);
- }
- catch (OpenDsException ode)
- {
- LocalizableMessage msg = getMessageForEnableException(getHostPort(ctx2), baseDN);
- throw new ReplicationCliException(msg,
- ERROR_ENABLING_REPLICATION_ON_BASEDN, ode);
- }
- }
- alreadyConfiguredServers.add(server2.getId());
-
- if (cache1 != null)
- {
- configureToReplicateBaseDN(baseDN, repServers, usedIds, cache1, server1,
- alreadyConfiguredServers, allRepServers,
- alreadyConfiguredReplicationServers);
- }
- if (cache2 != null)
- {
- configureToReplicateBaseDN(baseDN, repServers, usedIds, cache2, server2,
- alreadyConfiguredServers, allRepServers,
- alreadyConfiguredReplicationServers);
- }
+ configureToReplicateBaseDN(uData.getServer2(), ctx2, serverDesc2, cache2, baseDN,
+ usedIds, alreadyConfiguredServers, repServers, allRepServers, alreadyConfiguredReplicationServers);
}
// Now that replication is configured in all servers, simply try to
@@ -5414,7 +5264,7 @@
}
// If we must initialize the schema do so.
- if (mustInitializeSchema(server1, server2, uData))
+ if (mustInitializeSchema(serverDesc1, serverDesc2, uData))
{
if (argParser.useSecondServerAsSchemaSource())
{
@@ -5453,64 +5303,66 @@
}
}
- private void configureServer1(InitialLdapContext ctx, ServerDescriptor server, EnableReplicationUserData uData,
- Set<String> allRepServers, Set<Integer> usedReplicationServerIds,
- Set<String> alreadyConfiguredReplicationServers) throws ReplicationCliException
+ private void addToSets(ServerDescriptor serverDesc, EnableReplicationServerData serverData, InitialLdapContext ctx,
+ final Set<String> twoReplServers, final Set<Integer> usedReplicationServerIds)
{
- if (!server.isReplicationServer() && uData.configureReplicationServer1())
+ if (serverDesc.isReplicationServer())
{
- try
- {
- configureAsReplicationServer(ctx, uData.getReplicationPort1(),
- uData.isSecureReplication1(), allRepServers,
- usedReplicationServerIds);
- }
- catch (OpenDsException ode)
- {
- throw errorConfiguringReplicationServer(ctx, ode);
- }
+ twoReplServers.add(serverDesc.getReplicationServerHostPort());
+ usedReplicationServerIds.add(serverDesc.getReplicationServerId());
}
- else if (server.isReplicationServer())
+ else if (serverData.configureReplicationServer())
{
- try
- {
- updateReplicationServer(ctx, allRepServers);
- }
- catch (OpenDsException ode)
- {
- throw errorConfiguringReplicationServer(ctx, ode);
- }
- if (argParser.replicationPort1Arg.isPresent()
- && uData.getReplicationPort1() != server.getReplicationServerPort())
- {
- // Inform the user that the provided value will be ignored
- LocalizableMessage msg = WARN_FIRST_REPLICATION_SERVER_ALREADY_CONFIGURED.get(
- server.getReplicationServerPort(), uData.getReplicationPort1());
- logger.warn(msg);
- errPrintln(msg);
- }
+ twoReplServers.add(getReplicationServer(getHostName(ctx), serverData.getReplicationPort()));
}
- alreadyConfiguredReplicationServers.add(server.getId());
}
- private void configureServer2(InitialLdapContext ctx, ServerDescriptor server, EnableReplicationUserData uData,
- Set<String> allRepServers, Set<Integer> usedReplicationServerIds,
+ private void configureToReplicateBaseDN(EnableReplicationServerData server, InitialLdapContext ctx,
+ ServerDescriptor serverDesc, TopologyCache cache, String baseDN, Set<Integer> usedIds,
+ Set<String> alreadyConfiguredServers, Set<String> repServers, final Set<String> allRepServers,
Set<String> alreadyConfiguredReplicationServers) throws ReplicationCliException
{
- if (!server.isReplicationServer() && uData.configureReplicationServer2())
+ if (server.configureReplicationDomain()
+ || areDnsEqual(baseDN, ADSContext.getAdministrationSuffixDN()))
{
try
{
- configureAsReplicationServer(ctx, uData.getReplicationPort2(),
- uData.isSecureReplication2(), allRepServers,
- usedReplicationServerIds);
+ configureToReplicateBaseDN(ctx, baseDN, repServers, usedIds);
+ }
+ catch (OpenDsException ode)
+ {
+ LocalizableMessage msg = getMessageForEnableException(getHostPort(ctx), baseDN);
+ throw new ReplicationCliException(msg, ERROR_ENABLING_REPLICATION_ON_BASEDN, ode);
+ }
+ }
+ alreadyConfiguredServers.add(serverDesc.getId());
+
+ if (cache != null)
+ {
+ configureToReplicateBaseDN(baseDN, repServers, usedIds, cache, serverDesc, alreadyConfiguredServers,
+ allRepServers, alreadyConfiguredReplicationServers);
+ }
+ }
+
+ private void configureServer(InitialLdapContext ctx, ServerDescriptor serverDesc,
+ EnableReplicationServerData enableServer, IntegerArgument replicationPortArg,
+ Set<Integer> usedReplicationServerIds, Set<String> allRepServers,
+ Set<String> alreadyConfiguredReplicationServers, Arg2<Number, Number> replicationServerAlreadyConfiguredMsg)
+ throws ReplicationCliException
+ {
+ if (!serverDesc.isReplicationServer() && enableServer.configureReplicationServer())
+ {
+ try
+ {
+ configureAsReplicationServer(ctx, enableServer.getReplicationPort(), enableServer.isSecureReplication(),
+ allRepServers, usedReplicationServerIds);
}
catch (OpenDsException ode)
{
throw errorConfiguringReplicationServer(ctx, ode);
}
}
- else if (server.isReplicationServer())
+ else if (serverDesc.isReplicationServer())
{
try
{
@@ -5520,16 +5372,15 @@
{
throw errorConfiguringReplicationServer(ctx, ode);
}
- if (argParser.replicationPort2Arg.isPresent()
- && uData.getReplicationPort2() != server.getReplicationServerPort())
+ if (replicationPortArg.isPresent() && enableServer.getReplicationPort() != serverDesc.getReplicationServerPort())
{
- LocalizableMessage msg = WARN_SECOND_REPLICATION_SERVER_ALREADY_CONFIGURED.get(
- server.getReplicationServerPort(), uData.getReplicationPort2());
+ LocalizableMessage msg = replicationServerAlreadyConfiguredMsg.get(
+ serverDesc.getReplicationServerPort(), enableServer.getReplicationPort());
logger.warn(msg);
errPrintln(msg);
}
}
- alreadyConfiguredReplicationServers.add(server.getId());
+ alreadyConfiguredReplicationServers.add(serverDesc.getId());
}
private ReplicationCliException errorConfiguringReplicationServer(InitialLdapContext ctx, OpenDsException ode)
@@ -8077,8 +7928,8 @@
if (mustInitializeSchema)
{
// Check that both will contain replication data
- mustInitializeSchema = uData.configureReplicationDomain1() &&
- uData.configureReplicationDomain2();
+ mustInitializeSchema = uData.getServer1().configureReplicationDomain()
+ && uData.getServer2().configureReplicationDomain();
}
return mustInitializeSchema;
}
@@ -8657,14 +8508,14 @@
}
}
- private void updateCommandBuilder(CommandBuilder commandBuilder,
- EnableReplicationUserData uData)
- throws ArgumentException
+ private void updateCommandBuilder(CommandBuilder commandBuilder, EnableReplicationUserData uData)
+ throws ArgumentException
{
// Update the arguments used in the console interaction with the
// actual arguments of dsreplication.
boolean adminInformationAdded = false;
+ EnableReplicationServerData server1 = uData.getServer1();
if (firstServerCommandBuilder != null)
{
boolean useAdminUID = existsArg(firstServerCommandBuilder, OPTION_LONG_ADMIN_UID);
@@ -8674,7 +8525,7 @@
boolean forceAddBindPwdFile1 = false;
if (useAdminUID)
{
- String bindDN1 = uData.getBindDn1();
+ String bindDN1 = server1.getBindDn();
String adminUID = uData.getAdminUid();
if (bindDN1 != null
&& adminUID != null
@@ -8688,12 +8539,12 @@
{
if (OPTION_LONG_HOST.equals(arg.getLongIdentifier()))
{
- commandBuilder.addArgument(getHostArg("host1", OPTION_SHORT_HOST, uData.getHostName1(),
+ commandBuilder.addArgument(getHostArg("host1", OPTION_SHORT_HOST, server1.getHostName(),
INFO_DESCRIPTION_ENABLE_REPLICATION_HOST1));
}
else if (OPTION_LONG_PORT.equals(arg.getLongIdentifier()))
{
- commandBuilder.addArgument(getPortArg("port1", OPTION_SHORT_PORT, uData.getPort1(),
+ commandBuilder.addArgument(getPortArg("port1", OPTION_SHORT_PORT, server1.getPort(),
INFO_DESCRIPTION_ENABLE_REPLICATION_SERVER_PORT1));
if (forceAddBindDN1)
@@ -8755,6 +8606,7 @@
}
+ EnableReplicationServerData server2 = uData.getServer2();
if (ci != null && ci.getCommandBuilder() != null)
{
CommandBuilder interactionBuilder = ci.getCommandBuilder();
@@ -8766,7 +8618,7 @@
boolean forceAddBindPwdFile2 = false;
if (useAdminUID)
{
- String bindDN2 = uData.getBindDn2();
+ String bindDN2 = server2.getBindDn();
String adminUID = uData.getAdminUid();
if (bindDN2 != null
&& adminUID != null
@@ -8781,12 +8633,12 @@
{
if (OPTION_LONG_HOST.equals(arg.getLongIdentifier()))
{
- commandBuilder.addArgument(getHostArg("host2", 'O', uData.getHostName2(),
+ commandBuilder.addArgument(getHostArg("host2", 'O', server2.getHostName(),
INFO_DESCRIPTION_ENABLE_REPLICATION_HOST2));
}
else if (OPTION_LONG_PORT.equals(arg.getLongIdentifier()))
{
- commandBuilder.addArgument(getPortArg("port2", null, uData.getPort2(),
+ commandBuilder.addArgument(getPortArg("port2", null, server2.getPort(),
INFO_DESCRIPTION_ENABLE_REPLICATION_SERVER_PORT2));
if (forceAddBindDN2)
@@ -8878,32 +8730,32 @@
}
}
- if (uData.configureReplicationServer1() &&
- !uData.configureReplicationDomain1())
+ if (server1.configureReplicationServer() &&
+ !server1.configureReplicationDomain())
{
commandBuilder.addArgument(newBooleanArgument(
argParser.onlyReplicationServer1Arg, INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER1));
}
- if (!uData.configureReplicationServer1() &&
- uData.configureReplicationDomain1())
+ if (!server1.configureReplicationServer() &&
+ server1.configureReplicationDomain())
{
commandBuilder.addArgument(newBooleanArgument(
argParser.noReplicationServer1Arg, INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER1));
}
- if (uData.configureReplicationServer1() &&
- uData.getReplicationPort1() > 0)
+ if (server1.configureReplicationServer() &&
+ server1.getReplicationPort() > 0)
{
IntegerArgument replicationPort1 = new IntegerArgument(
"replicationPort1", 'r',
"replicationPort1", false, false, true, INFO_PORT_PLACEHOLDER.get(),
8989, null,
INFO_DESCRIPTION_ENABLE_REPLICATION_PORT1.get());
- replicationPort1.addValue(String.valueOf(uData.getReplicationPort1()));
+ replicationPort1.addValue(String.valueOf(server1.getReplicationPort()));
commandBuilder.addArgument(replicationPort1);
}
- if (uData.isSecureReplication1())
+ if (server1.isSecureReplication())
{
commandBuilder.addArgument(new BooleanArgument("secureReplication1", null,
"secureReplication1",
@@ -8911,31 +8763,31 @@
}
- if (uData.configureReplicationServer2() &&
- !uData.configureReplicationDomain2())
+ if (server2.configureReplicationServer() &&
+ !server2.configureReplicationDomain())
{
commandBuilder.addArgument(newBooleanArgument(
argParser.onlyReplicationServer2Arg, INFO_DESCRIPTION_ENABLE_REPLICATION_ONLY_REPLICATION_SERVER2));
}
- if (!uData.configureReplicationServer2() &&
- uData.configureReplicationDomain2())
+ if (!server2.configureReplicationServer() &&
+ server2.configureReplicationDomain())
{
commandBuilder.addArgument(newBooleanArgument(
argParser.noReplicationServer2Arg, INFO_DESCRIPTION_ENABLE_REPLICATION_NO_REPLICATION_SERVER2));
}
- if (uData.configureReplicationServer2() &&
- uData.getReplicationPort2() > 0)
+ if (server2.configureReplicationServer() &&
+ server2.getReplicationPort() > 0)
{
IntegerArgument replicationPort2 = new IntegerArgument(
"replicationPort2", 'r',
"replicationPort2", false, false, true, INFO_PORT_PLACEHOLDER.get(),
- uData.getReplicationPort2(), null,
+ server2.getReplicationPort(), null,
INFO_DESCRIPTION_ENABLE_REPLICATION_PORT2.get());
- replicationPort2.addValue(String.valueOf(uData.getReplicationPort2()));
+ replicationPort2.addValue(String.valueOf(server2.getReplicationPort()));
commandBuilder.addArgument(replicationPort2);
}
- if (uData.isSecureReplication2())
+ if (server2.isSecureReplication())
{
commandBuilder.addArgument(new BooleanArgument("secureReplication2", null,
"secureReplication2",
@@ -8972,20 +8824,19 @@
private StringArgument getBindPassword1Arg(Argument arg) throws ArgumentException
{
- StringArgument bindPasswordArg = new StringArgument(
- "bindPassword1", null, "bindPassword1", false, false, true,
- INFO_BINDPWD_PLACEHOLDER.get(), null, null,
- INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD1.get());
- bindPasswordArg.addValue(arg.getValue());
- return bindPasswordArg;
+ return getBindPasswordArg("bindPassword1", arg, INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD1);
}
private StringArgument getBindPassword2Arg(Argument arg) throws ArgumentException
{
+ return getBindPasswordArg("bindPassword2", arg, INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD2);
+ }
+
+ private StringArgument getBindPasswordArg(String name, Argument arg, Arg0 bindPwdMsg) throws ArgumentException
+ {
StringArgument bindPasswordArg = new StringArgument(
- "bindPassword2", null, "bindPassword2", false, false, true,
- INFO_BINDPWD_PLACEHOLDER.get(), null, null,
- INFO_DESCRIPTION_ENABLE_REPLICATION_BINDPASSWORD2.get());
+ name, null, name, false, false, true,
+ INFO_BINDPWD_PLACEHOLDER.get(), null, null, bindPwdMsg.get());
bindPasswordArg.addValue(arg.getValue());
return bindPasswordArg;
}
@@ -9011,7 +8862,7 @@
StringArgument bindDN = new StringArgument("bindDN1", OPTION_SHORT_BINDDN, "bindDN1", false, false, true,
INFO_BINDDN_PLACEHOLDER.get(), "cn=Directory Manager", null,
INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN1.get());
- bindDN.addValue(uData.getBindDn1());
+ bindDN.addValue(uData.getServer1().getBindDn());
return bindDN;
}
@@ -9021,7 +8872,7 @@
StringArgument bindDN = new StringArgument("bindDN2", shortIdentifier, "bindDN2", false, false, true,
INFO_BINDDN_PLACEHOLDER.get(), "cn=Directory Manager", null,
INFO_DESCRIPTION_ENABLE_REPLICATION_BINDDN2.get());
- bindDN.addValue(uData.getBindDn2());
+ bindDN.addValue(uData.getServer2().getBindDn());
return bindDN;
}
@@ -9287,8 +9138,10 @@
Set<String> baseDNsWithNoReplicationServer,
Set<String> baseDNsWithOneReplicationServer)
{
- if (uData.configureReplicationServer1() &&
- uData.configureReplicationServer2())
+ EnableReplicationServerData server1 = uData.getServer1();
+ EnableReplicationServerData server2 = uData.getServer2();
+ if (server1.configureReplicationServer() &&
+ server2.configureReplicationServer())
{
return;
}
@@ -9297,9 +9150,9 @@
createTopologyCache(adsCtx2, uData, suffixes);
int repPort1 = getReplicationPort(adsCtx1.getDirContext());
- String repServer1 = getReplicationServer(uData.getHostName1(), repPort1);
+ String repServer1 = getReplicationServer(server1.getHostName(), repPort1);
int repPort2 = getReplicationPort(adsCtx2.getDirContext());
- String repServer2 = getReplicationServer(uData.getHostName2(), repPort2);
+ String repServer2 = getReplicationServer(server2.getHostName(), repPort2);
for (String baseDN : uData.getBaseDNs())
{
int nReplicationServers = 0;
@@ -9311,12 +9164,12 @@
nReplicationServers += replicationServers.size();
for (String repServer : replicationServers)
{
- if (uData.configureReplicationServer1() &&
+ if (server1.configureReplicationServer() &&
repServer.equalsIgnoreCase(repServer1))
{
nReplicationServers --;
}
- if (uData.configureReplicationServer2() &&
+ if (server2.configureReplicationServer() &&
repServer.equalsIgnoreCase(repServer2))
{
nReplicationServers --;
@@ -9324,11 +9177,11 @@
}
}
}
- if (uData.configureReplicationServer1())
+ if (server1.configureReplicationServer())
{
nReplicationServers ++;
}
- if (uData.configureReplicationServer2())
+ if (server2.configureReplicationServer())
{
nReplicationServers ++;
}
@@ -9393,23 +9246,8 @@
// Look for the cache with biggest number of replication servers:
// that one is going to be source.
- int nRepServers1 = 0;
- for (ServerDescriptor server : cache1.getServers())
- {
- if (server.isReplicationServer())
- {
- nRepServers1 ++;
- }
- }
-
- int nRepServers2 = 0;
- for (ServerDescriptor server : cache2.getServers())
- {
- if (server.isReplicationServer())
- {
- nRepServers2 ++;
- }
- }
+ int nRepServers1 = countReplicationServers(cache1);
+ int nRepServers2 = countReplicationServers(cache2);
InitialLdapContext ctxSource;
InitialLdapContext ctxDestination;
@@ -9424,11 +9262,12 @@
ctxDestination = adsCtx1.getDirContext();
}
+ String hostPortSource = getHostPort(ctxSource);
+ String hostPortDestination = getHostPort(ctxDestination);
if (isInteractive())
{
LocalizableMessage msg = INFO_REPLICATION_MERGING_REGISTRIES_CONFIRMATION.get(
- getHostPort(ctxSource), getHostPort(ctxDestination),
- getHostPort(ctxSource), getHostPort(ctxDestination));
+ hostPortSource, hostPortDestination, hostPortSource, hostPortDestination);
if (!askConfirmation(msg, true))
{
throw new ReplicationCliException(ERR_REPLICATION_USER_CANCELLED.get(), USER_CANCELLED, null);
@@ -9437,8 +9276,7 @@
else
{
LocalizableMessage msg = INFO_REPLICATION_MERGING_REGISTRIES_DESCRIPTION.get(
- getHostPort(ctxSource), getHostPort(ctxDestination),
- getHostPort(ctxSource), getHostPort(ctxDestination));
+ hostPortSource, hostPortDestination, hostPortSource, hostPortDestination);
println(msg);
println();
}
@@ -9446,55 +9284,15 @@
print(INFO_REPLICATION_MERGING_REGISTRIES_PROGRESS.get());
pointAdder.start();
- Set<LocalizableMessage> cache1Errors = cache1.getErrorMessages();
- if (!cache1Errors.isEmpty())
- {
- throw new ReplicationCliException(
- ERR_REPLICATION_CANNOT_MERGE_WITH_ERRORS.get(
- getHostPort(adsCtx1.getDirContext()),
- getMessageFromCollection(cache1Errors,
- Constants.LINE_SEPARATOR)),
- ERROR_READING_ADS, null);
- }
-
- Set<LocalizableMessage> cache2Errors = cache2.getErrorMessages();
- if (!cache2Errors.isEmpty())
- {
- throw new ReplicationCliException(
- ERR_REPLICATION_CANNOT_MERGE_WITH_ERRORS.get(
- getHostPort(adsCtx2.getDirContext()),
- getMessageFromCollection(cache2Errors,
- Constants.LINE_SEPARATOR)),
- ERROR_READING_ADS, null);
- }
+ checkCanMergeReplicationTopologies(adsCtx1, cache1);
+ checkCanMergeReplicationTopologies(adsCtx2, cache2);
Set<LocalizableMessage> commonRepServerIDErrors = new HashSet<LocalizableMessage>();
for (ServerDescriptor server1 : cache1.getServers())
{
- if (server1.isReplicationServer())
+ if (findSameReplicationServer(server1, cache2.getServers(), commonRepServerIDErrors))
{
- int replicationID1 = server1.getReplicationServerId();
- String replServerHostPort1 = server1.getReplicationServerHostPort();
- boolean found = false;
- for (ServerDescriptor server2 : cache2.getServers())
- {
- if (server2.isReplicationServer()
- && server2.getReplicationServerId() == replicationID1
- && !server2.getReplicationServerHostPort().equalsIgnoreCase(replServerHostPort1))
- {
- commonRepServerIDErrors.add(
- ERR_REPLICATION_ENABLE_COMMON_REPLICATION_SERVER_ID_ARG.get(
- server1.getHostPort(true),
- server2.getHostPort(true),
- replicationID1));
- found = true;
- break;
- }
- }
- if (found)
- {
- break;
- }
+ break;
}
}
Set<LocalizableMessage> commonDomainIDErrors = new HashSet<LocalizableMessage>();
@@ -9504,33 +9302,9 @@
{
if (replica1.isReplicated())
{
- int domain1Id = replica1.getReplicationId();
- boolean found = false;
for (SuffixDescriptor suffix2 : cache2.getSuffixes())
{
- if (!areDnsEqual(suffix2.getDN(),
- replica1.getSuffix().getDN()))
- {
- // Conflicting domain names must apply to same suffix.
- continue;
- }
- for (ReplicaDescriptor replica2 : suffix2.getReplicas())
- {
- if (replica2.isReplicated()
- && domain1Id == replica2.getReplicationId())
- {
- commonDomainIDErrors.add(
- ERR_REPLICATION_ENABLE_COMMON_DOMAIN_ID_ARG.get(
- replica1.getServer().getHostPort(true),
- suffix1.getDN(),
- replica2.getServer().getHostPort(true),
- suffix2.getDN(),
- domain1Id));
- found = true;
- break;
- }
- }
- if (found)
+ if (findReplicaInSuffix2(replica1, suffix2, suffix1.getDN(), commonDomainIDErrors))
{
break;
}
@@ -9644,6 +9418,83 @@
}
}
+ private int countReplicationServers(TopologyCache cache)
+ {
+ int nbRepServers = 0;
+ for (ServerDescriptor server : cache.getServers())
+ {
+ if (server.isReplicationServer())
+ {
+ nbRepServers++;
+ }
+ }
+ return nbRepServers;
+ }
+
+ private void checkCanMergeReplicationTopologies(ADSContext adsCtx, TopologyCache cache)
+ throws ReplicationCliException
+ {
+ Set<LocalizableMessage> cacheErrors = cache.getErrorMessages();
+ if (!cacheErrors.isEmpty())
+ {
+ LocalizableMessage msg = getMessageFromCollection(cacheErrors, Constants.LINE_SEPARATOR);
+ throw new ReplicationCliException(
+ ERR_REPLICATION_CANNOT_MERGE_WITH_ERRORS.get(getHostPort(adsCtx.getDirContext()), msg),
+ ERROR_READING_ADS, null);
+ }
+ }
+
+ private boolean findSameReplicationServer(ServerDescriptor serverToFind, Set<ServerDescriptor> servers,
+ Set<LocalizableMessage> commonRepServerIDErrors)
+ {
+ if (!serverToFind.isReplicationServer())
+ {
+ return false;
+ }
+
+ int replicationID1 = serverToFind.getReplicationServerId();
+ String replServerHostPort1 = serverToFind.getReplicationServerHostPort();
+ for (ServerDescriptor server2 : servers)
+ {
+ if (server2.isReplicationServer() && server2.getReplicationServerId() == replicationID1
+ && !server2.getReplicationServerHostPort().equalsIgnoreCase(replServerHostPort1))
+ {
+ commonRepServerIDErrors.add(ERR_REPLICATION_ENABLE_COMMON_REPLICATION_SERVER_ID_ARG.get(serverToFind
+ .getHostPort(true), server2.getHostPort(true), replicationID1));
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean findReplicaInSuffix2(ReplicaDescriptor replica1, SuffixDescriptor suffix2, String suffix1DN,
+ Set<LocalizableMessage> commonDomainIDErrors)
+ {
+ if (!areDnsEqual(suffix2.getDN(), replica1.getSuffix().getDN()))
+ {
+ // Conflicting domain names must apply to same suffix.
+ return false;
+ }
+
+ int domain1Id = replica1.getReplicationId();
+ for (ReplicaDescriptor replica2 : suffix2.getReplicas())
+ {
+ if (replica2.isReplicated()
+ && domain1Id == replica2.getReplicationId())
+ {
+ commonDomainIDErrors.add(
+ ERR_REPLICATION_ENABLE_COMMON_DOMAIN_ID_ARG.get(
+ replica1.getServer().getHostPort(true),
+ suffix1DN,
+ replica2.getServer().getHostPort(true),
+ suffix2.getDN(),
+ domain1Id));
+ return true;
+ }
+ }
+ return false;
+ }
+
private String toString(Throwable t)
{
return (t instanceof OpenDsException) ?
--
Gitblit v1.10.0