From c30a14be35ba387e61b960740f6afc1b9774bb3d Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 04 Apr 2016 13:38:34 +0000
Subject: [PATCH] Add ConnectionWrapper to replace all uses of InitialLdapContext
---
opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java | 491 ++++++++++++++++++++++++++++++++----------------------
1 files changed, 289 insertions(+), 202 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 c4d39dd..be6f87a 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
@@ -65,11 +65,16 @@
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg2;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.ConfigurationFramework;
+import org.forgerock.opendj.config.ManagedObjectNotFoundException;
+import org.forgerock.opendj.config.PropertyException;
+import org.forgerock.opendj.config.server.ConfigException;
import org.opends.admin.ads.*;
import org.opends.admin.ads.ADSContext.ADSPropertySyntax;
import org.opends.admin.ads.ADSContext.AdministratorProperty;
import org.opends.admin.ads.ADSContext.ServerProperty;
import org.opends.admin.ads.util.ApplicationTrustManager;
+import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.admin.ads.util.OpendsCertificateException;
import org.opends.admin.ads.util.PreferredConnection;
import org.opends.admin.ads.util.ServerLoader;
@@ -86,10 +91,6 @@
import org.opends.quicksetup.installer.PeerNotFoundException;
import org.opends.quicksetup.installer.offline.OfflineInstaller;
import org.opends.quicksetup.util.PlainTextProgressMessageFormatter;
-import org.opends.server.admin.*;
-import org.forgerock.opendj.config.client.ManagementContext;
-import org.opends.server.admin.client.ldap.JNDIDirContextAdaptor;
-import org.forgerock.opendj.config.client.ldap.LDAPManagementContext;
import org.forgerock.opendj.server.config.client.*;
import org.forgerock.opendj.server.config.meta.ReplicationDomainCfgDefn;
import org.forgerock.opendj.server.config.meta.ReplicationServerCfgDefn;
@@ -136,7 +137,6 @@
import static com.forgerock.opendj.cli.Utils.*;
import static com.forgerock.opendj.util.OperatingSystem.*;
import static com.forgerock.opendj.cli.CommonArguments.*;
-
import static java.util.Collections.*;
import static org.forgerock.util.Utils.*;
import static org.opends.admin.ads.util.ConnectionUtils.*;
@@ -431,17 +431,14 @@
// Bootstrap definition classes.
try
{
- if (!ClassLoaderProvider.getInstance().isEnabled())
+ ConfigurationFramework configFramework = ConfigurationFramework.getInstance();
+ if (!configFramework.isInitialized())
{
- ClassLoaderProvider.getInstance().enable();
+ configFramework.initialize();
}
- // Switch off class name validation in client.
- ClassPropertyDefinition.setAllowClassValidation(false);
-
- // Switch off attribute type name validation in client.
- AttributeTypePropertyDefinition.setCheckSchema(false);
+ configFramework.setIsClient(true);
}
- catch (InitializationException ie)
+ catch (ConfigException ie)
{
errPrintln(ie.getMessageObject());
return ERROR_INITIALIZING_ADMINISTRATION_FRAMEWORK;
@@ -1111,6 +1108,12 @@
return createInitialLdapContextInteracting(ci, isInteractive() && ci.isTrustStoreInMemory());
}
+ private ConnectionWrapper createConnectionInteracting(LDAPConnectionConsoleInteraction ci)
+ throws ClientException
+ {
+ return createConnectionInteracting(ci, isInteractive() && ci.isTrustStoreInMemory());
+ }
+
private OpendsCertificateException getCertificateRootException(Throwable t)
{
while (t != null)
@@ -1124,6 +1127,22 @@
return null;
}
+ private ConnectionWrapper createConnectionInteracting(LDAPConnectionConsoleInteraction ci,
+ boolean promptForCertificate) throws ClientException
+ {
+ try
+ {
+ InitialLdapContext ctx= createInitialLdapContextInteracting(ci, promptForCertificate);
+ return new ConnectionWrapper(ctx, CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT, ci.getTrustManager());
+ }
+ catch (NamingException e)
+ {
+ String hostName = getHostNameForLdapUrl(ci.getHostName());
+ Integer portNumber = ci.getPortNumber();
+ throw new ClientException(ReturnCode.CLIENT_SIDE_CONNECT_ERROR, ERR_FAILED_TO_CONNECT.get(hostName, portNumber));
+ }
+ }
+
/**
* Creates an Initial LDAP Context interacting with the user if the
* application is interactive.
@@ -1561,6 +1580,27 @@
return createAdministrativeContext(uData, bindDn);
}
+ private ConnectionWrapper createAdministrativeConnection(MonoServerReplicationUserData uData)
+ {
+ final String bindDn = getAdministratorDN(uData.getAdminUid());
+ return createAdministrativeConnection(uData, bindDn);
+ }
+
+ private ConnectionWrapper createAdministrativeConnection(MonoServerReplicationUserData uData, final String bindDn)
+ {
+ try
+ {
+ return new ConnectionWrapper(createAdministrativeContext(uData, bindDn),
+ getConnectTimeout(), getTrustManager(sourceServerCI));
+ }
+ catch (NamingException e)
+ {
+ String hostPort = getServerRepresentation(uData.getHostName(), uData.getPort());
+ logger.error(LocalizableMessage.raw("Error when creating connection for:" + hostPort));
+ return null;
+ }
+ }
+
private InitialLdapContext createAdministrativeContext(MonoServerReplicationUserData uData, final String bindDn)
{
try
@@ -1965,11 +2005,11 @@
*/
private boolean promptIfRequired(PurgeHistoricalUserData uData)
{
- InitialLdapContext ctx = null;
+ ConnectionWrapper connWrapper = null;
try
{
- ctx = getInitialLdapContext(uData);
- if (ctx == null)
+ connWrapper = getConnection(uData);
+ if (connWrapper == null)
{
return false;
}
@@ -1987,7 +2027,7 @@
List<String> suffixes = argParser.getBaseDNs();
if (uData.isOnline())
{
- checkSuffixesForPurgeHistorical(suffixes, ctx, true);
+ checkSuffixesForPurgeHistorical(suffixes, connWrapper.getLdapContext(), true);
}
else
{
@@ -2001,7 +2041,7 @@
if (uData.isOnline())
{
- List<? extends TaskEntry> taskEntries = getAvailableTaskEntries(ctx);
+ List<? extends TaskEntry> taskEntries = getAvailableTaskEntries(connWrapper.getLdapContext());
TaskScheduleInteraction interaction =
new TaskScheduleInteraction(uData.getTaskSchedule(), argParser.taskArgs, this,
@@ -2022,7 +2062,21 @@
}
finally
{
- close(ctx);
+ close(connWrapper);
+ }
+ }
+
+ private ConnectionWrapper getConnection(PurgeHistoricalUserData uData)
+ {
+ try
+ {
+ InitialLdapContext ctx = getInitialLdapContext(uData);
+ return new ConnectionWrapper(ctx, sourceServerCI.getConnectTimeout(), sourceServerCI.getTrustManager());
+ }
+ catch (NamingException ce)
+ {
+ logger.warn(LocalizableMessage.raw("An error occured " + ce));
+ return null;
}
}
@@ -2099,10 +2153,10 @@
InitialLdapContext ctx)
{
List<TaskEntry> taskEntries = new ArrayList<>();
- List<OpenDsException> exceptions = new ArrayList<>();
+ List<Exception> exceptions = new ArrayList<>();
ConfigFromDirContext cfg = new ConfigFromDirContext();
cfg.updateTaskInformation(ctx, exceptions, taskEntries);
- for (OpenDsException ode : exceptions)
+ for (Exception ode : exceptions)
{
logger.warn(LocalizableMessage.raw("Error retrieving task entries: "+ode, ode));
}
@@ -2163,7 +2217,7 @@
*/
sourceServerCI.initializeGlobalArguments(host1, port1, adminUid, bindDn1, pwd,
pwdFile == null ? null : new LinkedHashMap<String, String>(pwdFile));
- InitialLdapContext ctx1 = null;
+ ConnectionWrapper ctx1 = null;
while (ctx1 == null && !cancelled)
{
@@ -2187,7 +2241,7 @@
bindDn1 = sourceServerCI.getBindDN();
pwd1 = sourceServerCI.getBindPassword();
- ctx1 = createInitialLdapContextInteracting(sourceServerCI);
+ ctx1 = createConnectionInteracting(sourceServerCI);
if (ctx1 == null)
{
cancelled = true;
@@ -2227,7 +2281,7 @@
if (replicationServer1Configured && !configureReplicationServer1)
{
final LocalizableMessage msg =
- INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(getHostPort(ctx1), repPort1);
+ INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(getHostPort(ctx1.getLdapContext()), repPort1);
if (!askConfirmation(msg, false))
{
cancelled = true;
@@ -2335,7 +2389,7 @@
// eventually admin authentication data.
if (!cancelled)
{
- AtomicReference<InitialLdapContext> aux = new AtomicReference<>(ctx1);
+ AtomicReference<ConnectionWrapper> aux = new AtomicReference<>(ctx1);
cancelled = !loadADSAndAcceptCertificates(sourceServerCI, aux, uData, true);
ctx1 = aux.get();
}
@@ -2405,7 +2459,7 @@
pwdFile == null ? null : new LinkedHashMap<String, String>(pwdFile));
destinationServerCI.setUseAdminOrBindDn(true);
}
- InitialLdapContext ctx2 = null;
+ ConnectionWrapper ctx2 = null;
while (ctx2 == null && !cancelled)
{
@@ -2441,7 +2495,7 @@
if (!error)
{
- ctx2 = createInitialLdapContextInteracting(destinationServerCI, true);
+ ctx2 = createConnectionInteracting(destinationServerCI, true);
if (ctx2 == null)
{
cancelled = true;
@@ -2496,7 +2550,7 @@
if (replicationServer2Configured && !configureReplicationServer2)
{
final LocalizableMessage prompt =
- INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(getHostPort(ctx2), repPort2);
+ INFO_REPLICATION_SERVER_CONFIGURED_WARNING_PROMPT.get(getHostPort(ctx2.getLdapContext()), repPort2);
if (!askConfirmation(prompt, false))
{
cancelled = true;
@@ -2613,7 +2667,7 @@
// to load the ADS to ask the user to accept the certificates.
if (!cancelled)
{
- AtomicReference<InitialLdapContext> aux = new AtomicReference<>(ctx2);
+ AtomicReference<ConnectionWrapper> aux = new AtomicReference<>(ctx2);
cancelled = !loadADSAndAcceptCertificates(destinationServerCI, aux, uData, false);
ctx2 = aux.get();
}
@@ -2744,7 +2798,7 @@
int port = argParser.getPortToDisable();
/* Try to connect to the server. */
- InitialLdapContext ctx = null;
+ ConnectionWrapper ctx = null;
while (ctx == null && !cancelled)
{
@@ -2758,7 +2812,7 @@
adminUid = sourceServerCI.getProvidedAdminUID();
adminPwd = sourceServerCI.getBindPassword();
- ctx = createInitialLdapContextInteracting(sourceServerCI);
+ ctx = createConnectionInteracting(sourceServerCI);
if (ctx == null)
{
cancelled = true;
@@ -2795,7 +2849,7 @@
// disableReplication(DisableReplicationUserData) method. Here we have
// to load the ADS to ask the user to accept the certificates and
// eventually admin authentication data.
- AtomicReference<InitialLdapContext> aux = new AtomicReference<>(ctx);
+ AtomicReference<ConnectionWrapper> aux = new AtomicReference<>(ctx);
cancelled = !loadADSAndAcceptCertificates(sourceServerCI, aux, uData, false);
ctx = aux.get();
}
@@ -2840,7 +2894,8 @@
if (disableReplicationServer && repPort < 0)
{
disableReplicationServer = false;
- final LocalizableMessage msg = INFO_REPLICATION_PROMPT_NO_REPLICATION_SERVER_TO_DISABLE.get(getHostPort(ctx));
+ final LocalizableMessage msg = INFO_REPLICATION_PROMPT_NO_REPLICATION_SERVER_TO_DISABLE.get(
+ getHostPort(ctx.getLdapContext()));
try
{
cancelled = askConfirmation(msg, false, logger);
@@ -2860,18 +2915,19 @@
if (!cancelled && !disableAll)
{
List<String> suffixes = argParser.getBaseDNs();
- checkSuffixesForDisableReplication(suffixes, ctx, true, !disableReplicationServer);
+ checkSuffixesForDisableReplication(suffixes, ctx.getLdapContext(), true, !disableReplicationServer);
cancelled = suffixes.isEmpty() && !disableReplicationServer;
uData.setBaseDNs(suffixes);
if (!uData.disableReplicationServer() && repPort > 0 &&
- disableAllBaseDns(ctx, uData) && !argParser.advancedArg.isPresent())
+ disableAllBaseDns(ctx.getLdapContext(), uData) && !argParser.advancedArg.isPresent())
{
try
{
uData.setDisableReplicationServer(askConfirmation(
- INFO_REPLICATION_DISABLE_ALL_SUFFIXES_DISABLE_REPLICATION_SERVER.get(getHostPort(ctx), repPort), true,
+ INFO_REPLICATION_DISABLE_ALL_SUFFIXES_DISABLE_REPLICATION_SERVER.get(
+ getHostPort(ctx.getLdapContext()), repPort), true,
logger));
}
catch (ClientException ce)
@@ -3005,16 +3061,16 @@
*/
private boolean promptIfRequiredForPreOrPost(MonoServerReplicationUserData uData)
{
- InitialLdapContext ctx = null;
+ ConnectionWrapper ctx = null;
try
{
- ctx = getInitialLdapContext(uData);
+ ctx = getConnection(uData);
if (ctx == null)
{
return false;
}
List<String> suffixes = argParser.getBaseDNs();
- checkSuffixesForInitializeReplication(suffixes, ctx, true);
+ checkSuffixesForInitializeReplication(suffixes, ctx.getLdapContext(), true);
uData.setBaseDNs(suffixes);
return !suffixes.isEmpty();
}
@@ -3024,6 +3080,20 @@
}
}
+ private ConnectionWrapper getConnection(MonoServerReplicationUserData uData)
+ {
+ try
+ {
+ InitialLdapContext ctx = getInitialLdapContext(uData);
+ return new ConnectionWrapper(ctx, sourceServerCI.getConnectTimeout(), getTrustManager(sourceServerCI));
+ }
+ catch (NamingException ce)
+ {
+ logger.warn(LocalizableMessage.raw("An error occured " + ce));
+ return null;
+ }
+ }
+
private InitialLdapContext getInitialLdapContext(MonoServerReplicationUserData uData)
{
// Try to connect to the server.
@@ -3082,10 +3152,10 @@
private boolean promptIfRequired(StatusReplicationUserData uData)
throws ReplicationCliException
{
- InitialLdapContext ctx = null;
+ ConnectionWrapper ctx = null;
try
{
- ctx = getInitialLdapContext(uData);
+ ctx = getConnection(uData);
if (ctx == null)
{
return false;
@@ -3096,7 +3166,7 @@
// statusReplication(StatusReplicationUserData) method. Here we have
// to load the ADS to ask the user to accept the certificates and
// eventually admin authentication data.
- AtomicReference<InitialLdapContext> aux = new AtomicReference<>(ctx);
+ AtomicReference<ConnectionWrapper> aux = new AtomicReference<>(ctx);
boolean cancelled = !loadADSAndAcceptCertificates(sourceServerCI, aux, uData, false);
ctx = aux.get();
if (cancelled)
@@ -3150,7 +3220,7 @@
sourceServerCI.initializeGlobalArguments(hostSource, portSource, adminUid, null, adminPwd,
pwdFile == null ? null : new LinkedHashMap<String, String>(pwdFile));
/* Try to connect to the source server. */
- InitialLdapContext ctxSource = null;
+ ConnectionWrapper ctxSource = null;
while (ctxSource == null && !cancelled)
{
@@ -3163,7 +3233,7 @@
adminUid = sourceServerCI.getAdministratorUID();
adminPwd = sourceServerCI.getBindPassword();
- ctxSource = createInitialLdapContextInteracting(sourceServerCI);
+ ctxSource = createConnectionInteracting(sourceServerCI);
if (ctxSource == null)
{
@@ -3212,7 +3282,7 @@
destinationServerCI.initializeGlobalArguments(hostDestination, portDestination, adminUid, null, adminPwd,
pwdFile == null ? null : new LinkedHashMap<String, String>(pwdFile));
/* Try to connect to the destination server. */
- InitialLdapContext ctxDestination = null;
+ ConnectionWrapper ctxDestination = null;
destinationServerCI.resetHeadingDisplayed();
while (ctxDestination == null && !cancelled)
@@ -3237,7 +3307,7 @@
if (!error)
{
- ctxDestination = createInitialLdapContextInteracting(destinationServerCI, true);
+ ctxDestination = createConnectionInteracting(destinationServerCI, true);
if (ctxDestination == null)
{
@@ -3269,14 +3339,16 @@
if (!cancelled)
{
List<String> suffixes = argParser.getBaseDNs();
- cancelled = serversOperations.continueAfterUserInput(suffixes, ctxSource, ctxDestination, true);
+ cancelled = serversOperations.continueAfterUserInput(
+ suffixes, ctxSource.getLdapContext(), ctxDestination.getLdapContext(), true);
uData.setBaseDNs(suffixes);
}
if (!cancelled)
{
println();
- cancelled = serversOperations.confirmOperation(uData, ctxSource, ctxDestination, true);
+ cancelled = serversOperations.confirmOperation(
+ uData, ctxSource.getLdapContext(), ctxDestination.getLdapContext(), true);
println();
}
@@ -3463,30 +3535,28 @@
/**
* Tells whether the server to which the LdapContext is connected has a
* replication port or not.
- * @param ctx the InitialLdapContext to be used.
+ * @param connWrapper the InitialLdapContext to be used.
* @return <CODE>true</CODE> if the replication port for the server could
* be found and <CODE>false</CODE> otherwise.
*/
- private boolean hasReplicationPort(InitialLdapContext ctx)
+ private boolean hasReplicationPort(ConnectionWrapper connWrapper)
{
- return getReplicationPort(ctx) != -1;
+ return getReplicationPort(connWrapper) != -1;
}
/**
* Returns the replication port of server to which the LdapContext is
* connected and -1 if the replication port could not be found.
- * @param ctx the InitialLdapContext to be used.
+ * @param connWrapper the InitialLdapContext to be used.
* @return the replication port of server to which the LdapContext is
* connected and -1 if the replication port could not be found.
*/
- private int getReplicationPort(InitialLdapContext ctx)
+ private int getReplicationPort(ConnectionWrapper connWrapper)
{
int replicationPort = -1;
try
{
- ManagementContext mCtx = LDAPManagementContext.createFromContext(
- JNDIDirContextAdaptor.adapt(ctx));
- RootCfgClient root = mCtx.getRootConfiguration();
+ RootCfgClient root = connWrapper.getRootConfiguration();
ReplicationSynchronizationProviderCfgClient sync =
(ReplicationSynchronizationProviderCfgClient)
@@ -3514,7 +3584,7 @@
* accordingly.
*
* @param ci the LDAP connection to the server
- * @param ctx the Ldap context to be used in an array: note the context
+ * @param connWrapper the Ldap context to be used in an array: note the context
* may be modified with the new credentials provided by the user.
* @param uData the ReplicationUserData to be updated.
* @param isFirstOrSourceServer whether this is the first server in the
@@ -3527,12 +3597,13 @@
* messages.
*/
private boolean loadADSAndAcceptCertificates(LDAPConnectionConsoleInteraction ci,
- AtomicReference<InitialLdapContext> ctx, ReplicationUserData uData, boolean isFirstOrSourceServer)
+ AtomicReference<ConnectionWrapper> connWrapper, ReplicationUserData uData, boolean isFirstOrSourceServer)
throws ReplicationCliException
{
boolean cancelled = false;
boolean triedWithUserProvidedAdmin = false;
- final InitialLdapContext ctx1 = ctx.get();
+ final ConnectionWrapper connWrapper1 = connWrapper.get();
+ final InitialLdapContext ctx1 = connWrapper1.getLdapContext();
String host = getHostName(ctx1);
int port = getPort(ctx1);
boolean isSSL = isSSL(ctx1);
@@ -3546,7 +3617,7 @@
}
try
{
- ADSContext adsContext = new ADSContext(ctx1);
+ ADSContext adsContext = new ADSContext(connWrapper1);
if (adsContext.hasAdminData())
{
boolean reloadTopology = true;
@@ -3629,8 +3700,10 @@
final InitialLdapContext ctx2 = createAdministrativeContext(host, port, isSSL,
isStartTLS, getAdministratorDN(adminUid),
adminPwd, getConnectTimeout(), getTrustManager(ci));
- ctx.set(ctx2);
- adsContext = new ADSContext(ctx2);
+ final ConnectionWrapper connWrapper2 =
+ new ConnectionWrapper(ctx2, getConnectTimeout(), getTrustManager(ci));
+ connWrapper.set(connWrapper2);
+ adsContext = new ADSContext(connWrapper2);
cache = new TopologyCache(adsContext, getTrustManager(ci),
getConnectTimeout());
cache.getFilter().setSearchMonitoringInformation(false);
@@ -3716,15 +3789,15 @@
/**
* Tells whether there is a Global Administrator defined in the server
* to which the InitialLdapContext is connected.
- * @param ctx the InitialLdapContext.
+ * @param connWrapper the InitialLdapContext.
* @return <CODE>true</CODE> if we could find an administrator and
* <CODE>false</CODE> otherwise.
*/
- private boolean hasAdministrator(InitialLdapContext ctx)
+ private boolean hasAdministrator(ConnectionWrapper connWrapper)
{
try
{
- ADSContext adsContext = new ADSContext(ctx);
+ ADSContext adsContext = new ADSContext(connWrapper);
if (adsContext.hasAdminData())
{
Set<?> administrators = adsContext.readAdministratorRegistry();
@@ -3743,18 +3816,18 @@
* Tells whether there is a Global Administrator corresponding to the provided
* ReplicationUserData defined in the server to which the InitialLdapContext
* is connected.
- * @param ctx the InitialLdapContext.
+ * @param connWrapper the InitialLdapContext.
* @param uData the user data
* @return <CODE>true</CODE> if we could find an administrator and
* <CODE>false</CODE> otherwise.
*/
- private boolean hasAdministrator(InitialLdapContext ctx,
+ private boolean hasAdministrator(ConnectionWrapper connWrapper,
ReplicationUserData uData)
{
String adminUid = uData.getAdminUid();
try
{
- ADSContext adsContext = new ADSContext(ctx);
+ ADSContext adsContext = new ADSContext(connWrapper);
Set<Map<AdministratorProperty, Object>> administrators =
adsContext.readAdministratorRegistry();
for (Map<AdministratorProperty, Object> admin : administrators)
@@ -3943,16 +4016,16 @@
*/
private ReplicationCliReturnCode enableReplication(EnableReplicationUserData uData)
{
- InitialLdapContext ctx1 = null;
- InitialLdapContext ctx2 = null;
+ ConnectionWrapper ctx1 = null;
+ ConnectionWrapper ctx2 = null;
try
{
println();
print(formatter.getFormattedWithPoints(INFO_REPLICATION_CONNECTING.get()));
LinkedList<LocalizableMessage> errorMessages = new LinkedList<>();
- ctx1 = createAdministrativeContext(uData, true, errorMessages);
- ctx2 = createAdministrativeContext(uData, false, errorMessages);
+ ctx1 = createAdministrativeConnection(uData, true, errorMessages);
+ ctx2 = createAdministrativeConnection(uData, false, errorMessages);
if (!errorMessages.isEmpty())
{
@@ -3998,7 +4071,7 @@
try
{
updateConfiguration(ctx1, ctx2, uData);
- printSuccessfullyEnabled(ctx1, ctx2);
+ printSuccessfullyEnabled(ctx1.getLdapContext(), ctx2.getLdapContext());
return SUCCESSFUL;
}
catch (ReplicationCliException rce)
@@ -4015,26 +4088,27 @@
}
}
- private void checkReplicationServerAlreadyConfigured(InitialLdapContext ctx, EnableReplicationServerData server)
+ private void checkReplicationServerAlreadyConfigured(
+ ConnectionWrapper connWrapper, EnableReplicationServerData server)
{
- int repPort = getReplicationPort(ctx);
+ int repPort = getReplicationPort(connWrapper);
if (!server.configureReplicationServer() && repPort > 0)
{
- println(INFO_REPLICATION_SERVER_CONFIGURED_WARNING.get(getHostPort(ctx), repPort));
+ println(INFO_REPLICATION_SERVER_CONFIGURED_WARNING.get(getHostPort(connWrapper.getLdapContext()), repPort));
println();
}
}
private void checksForNonInteractiveMode(EnableReplicationUserData uData,
- InitialLdapContext ctx1, InitialLdapContext ctx2, LinkedList<LocalizableMessage> errorMessages)
+ ConnectionWrapper connWrapper1, ConnectionWrapper connWrapper2, LinkedList<LocalizableMessage> errorMessages)
{
EnableReplicationServerData server1 = uData.getServer1();
EnableReplicationServerData server2 = uData.getServer2();
String host1 = server1.getHostName();
String host2 = server2.getHostName();
- int replPort1 = checkReplicationPort(ctx1, server1, errorMessages);
- int replPort2 = checkReplicationPort(ctx2, server2, errorMessages);
+ int replPort1 = checkReplicationPort(connWrapper1, server1, errorMessages);
+ int replPort2 = checkReplicationPort(connWrapper2, server2, errorMessages);
if (replPort1 > 0 && replPort1 == replPort2 && host1.equalsIgnoreCase(host2))
{
errorMessages.add(ERR_REPLICATION_SAME_REPLICATION_PORT.get(replPort1, host1));
@@ -4050,9 +4124,9 @@
}
private int checkReplicationPort(
- InitialLdapContext ctx, EnableReplicationServerData server, LinkedList<LocalizableMessage> errorMessages)
+ ConnectionWrapper connWrapper, EnableReplicationServerData server, LinkedList<LocalizableMessage> errorMessages)
{
- int replPort = getReplicationPort(ctx);
+ int replPort = getReplicationPort(connWrapper);
boolean hasReplicationPort = replPort > 0;
if (replPort < 0 && server.configureReplicationServer())
{
@@ -4105,6 +4179,23 @@
}
}
+ private ConnectionWrapper createAdministrativeConnection(EnableReplicationUserData uData, boolean isFirstSetOfValues,
+ LinkedList<LocalizableMessage> errorMessages)
+ {
+ EnableReplicationServerData server = isFirstSetOfValues ? uData.getServer1() : uData.getServer2();
+ try
+ {
+ return new ConnectionWrapper(createAdministrativeContext(uData, isFirstSetOfValues, errorMessages),
+ getConnectTimeout(), getTrustManager(sourceServerCI));
+ }
+ catch (NamingException e)
+ {
+ String hostPort = getServerRepresentation(server.getHostName(), server.getPort());
+ logger.error(LocalizableMessage.raw("Error when creating connection for:" + hostPort));
+ return null;
+ }
+ }
+
private InitialLdapContext createAdministrativeContext(EnableReplicationUserData uData, boolean isFirstSetOfValues,
LinkedList<LocalizableMessage> errorMessages)
{
@@ -4139,8 +4230,8 @@
? getAdministratorDN(uData.getAdminUid())
: uData.getBindDn();
- InitialLdapContext ctx = createAdministrativeContext(uData, bindDn);
- if (ctx == null)
+ ConnectionWrapper connWrapper = createAdministrativeConnection(uData, bindDn);
+ if (connWrapper == null)
{
return ERROR_CONNECTING;
}
@@ -4152,7 +4243,8 @@
println();
List<String> suffixes = uData.getBaseDNs();
- checkSuffixesForDisableReplication(suffixes, ctx, false, !uData.disableReplicationServer());
+ checkSuffixesForDisableReplication(
+ suffixes, connWrapper.getLdapContext(), false, !uData.disableReplicationServer());
if (suffixes.isEmpty() && !uData.disableReplicationServer() && !uData.disableAll())
{
return REPLICATION_CANNOT_BE_DISABLED_ON_BASEDN;
@@ -4161,7 +4253,7 @@
if (!isInteractive())
{
- boolean hasReplicationPort = hasReplicationPort(ctx);
+ boolean hasReplicationPort = hasReplicationPort(connWrapper);
if (uData.disableAll() && hasReplicationPort)
{
uData.setDisableReplicationServer(true);
@@ -4169,7 +4261,8 @@
else if (uData.disableReplicationServer() && !hasReplicationPort && !uData.disableAll())
{
uData.setDisableReplicationServer(false);
- println(INFO_REPLICATION_WARNING_NO_REPLICATION_SERVER_TO_DISABLE.get(getHostPort(ctx)));
+ println(
+ INFO_REPLICATION_WARNING_NO_REPLICATION_SERVER_TO_DISABLE.get(getHostPort(connWrapper.getLdapContext())));
println();
}
}
@@ -4179,17 +4272,19 @@
printNewCommandBuilder(DISABLE_REPLICATION_SUBCMD_NAME, uData);
}
- if (!isInteractive() && !uData.disableReplicationServer() && !uData.disableAll() && disableAllBaseDns(ctx, uData)
- && hasReplicationPort(ctx))
+ if (!isInteractive() && !uData.disableReplicationServer() && !uData.disableAll()
+ && disableAllBaseDns(connWrapper.getLdapContext(), uData) && hasReplicationPort(connWrapper))
{
// 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(ctx),
- argParser.disableReplicationServerArg.getLongIdentifier(), argParser.disableAllArg.getLongIdentifier()));
+ println(INFO_REPLICATION_DISABLE_ALL_SUFFIXES_KEEP_REPLICATION_SERVER.get(
+ getHostPort(connWrapper.getLdapContext()),
+ argParser.disableReplicationServerArg.getLongIdentifier(),
+ argParser.disableAllArg.getLongIdentifier()));
}
try
{
- updateConfiguration(ctx, uData);
+ updateConfiguration(connWrapper, uData);
return SUCCESSFUL;
}
catch (ReplicationCliException rce)
@@ -4202,7 +4297,7 @@
}
finally
{
- close(ctx);
+ close(connWrapper);
}
}
@@ -4217,7 +4312,7 @@
private ReplicationCliReturnCode statusReplication(
StatusReplicationUserData uData)
{
- final InitialLdapContext ctx = createAdministrativeContext(uData);
+ final ConnectionWrapper ctx = createAdministrativeConnection(uData);
if (ctx == null)
{
return ERROR_CONNECTING;
@@ -4521,7 +4616,7 @@
* replication domains must be configured or not.
*/
private void checkSuffixesForEnableReplication(Collection<String> suffixes,
- InitialLdapContext ctx1, InitialLdapContext ctx2,
+ ConnectionWrapper ctx1, ConnectionWrapper ctx2,
boolean interactive, EnableReplicationUserData uData)
{
EnableReplicationServerData server1 = uData.getServer1();
@@ -4531,9 +4626,9 @@
if (server1.configureReplicationDomain() &&
server2.configureReplicationDomain())
{
- availableSuffixes.addAll(getCommonSuffixes(ctx1, ctx2,
+ availableSuffixes.addAll(getCommonSuffixes(ctx1.getLdapContext(), ctx2.getLdapContext(),
SuffixRelationType.NOT_FULLY_REPLICATED));
- alreadyReplicatedSuffixes.addAll(getCommonSuffixes(ctx1, ctx2,
+ alreadyReplicatedSuffixes.addAll(getCommonSuffixes(ctx1.getLdapContext(), ctx2.getLdapContext(),
SuffixRelationType.FULLY_REPLICATED));
}
else if (server1.configureReplicationDomain())
@@ -5018,8 +5113,8 @@
* parameters to update the configuration.
* @throws ReplicationCliException if there is an error.
*/
- private void updateConfiguration(InitialLdapContext ctx1,
- InitialLdapContext ctx2, EnableReplicationUserData uData)
+ private void updateConfiguration(ConnectionWrapper ctx1,
+ ConnectionWrapper ctx2, EnableReplicationUserData uData)
throws ReplicationCliException
{
final Set<String> twoReplServers = new LinkedHashSet<>();
@@ -5033,8 +5128,8 @@
filter.addBaseDNToSearch(ADSContext.getAdministrationSuffixDN());
filter.addBaseDNToSearch(Constants.SCHEMA_DN);
addBaseDNs(filter, uData.getBaseDNs());
- ServerDescriptor serverDesc1 = createStandalone(ctx1, filter);
- ServerDescriptor serverDesc2 = createStandalone(ctx2, filter);
+ ServerDescriptor serverDesc1 = createStandalone(ctx1.getLdapContext(), filter);
+ ServerDescriptor serverDesc2 = createStandalone(ctx2.getLdapContext(), filter);
ADSContext adsCtx1 = new ADSContext(ctx1);
ADSContext adsCtx2 = new ADSContext(ctx2);
@@ -5047,8 +5142,8 @@
try
{
final Set<PreferredConnection> cnx = new LinkedHashSet<>();
- cnx.addAll(getPreferredConnections(ctx1));
- cnx.addAll(getPreferredConnections(ctx2));
+ cnx.addAll(getPreferredConnections(ctx1.getLdapContext()));
+ cnx.addAll(getPreferredConnections(ctx2.getLdapContext()));
TopologyCache cache1 = createTopologyCache(adsCtx1, cnx, uData);
if (cache1 != null)
{
@@ -5121,8 +5216,8 @@
// These are used to identify which server we use to initialize
// the contents of the other server (if any).
- InitialLdapContext ctxSource = null;
- InitialLdapContext ctxDestination = null;
+ ConnectionWrapper ctxSource = null;
+ ConnectionWrapper ctxDestination = null;
ADSContext adsCtxSource = null;
boolean adsAlreadyReplicated = false;
@@ -5138,7 +5233,7 @@
Set<Map<ServerProperty, Object>> registry2 = adsCtx2.readServerRegistry();
if (registry2.size() <= 1)
{
- if (!hasAdministrator(adsCtx1.getDirContext(), uData))
+ if (!hasAdministrator(adsCtx1.getConnection(), uData))
{
adsCtx1.createAdministrator(getAdministratorProperties(uData));
}
@@ -5156,7 +5251,7 @@
}
else if (registry1.size() <= 1)
{
- if (!hasAdministrator(adsCtx2.getDirContext(), uData))
+ if (!hasAdministrator(adsCtx2.getConnection(), uData))
{
adsCtx2.createAdministrator(getAdministratorProperties(uData));
}
@@ -5207,7 +5302,7 @@
{
// The case where only the first ADS is replicated or none
// is replicated.
- if (!hasAdministrator(adsCtx1.getDirContext(), uData))
+ if (!hasAdministrator(adsCtx1.getConnection(), uData))
{
adsCtx1.createAdministrator(getAdministratorProperties(uData));
}
@@ -5225,7 +5320,7 @@
}
else if (isADS2Replicated)
{
- if (!hasAdministrator(adsCtx2.getDirContext(), uData))
+ if (!hasAdministrator(adsCtx2.getConnection(), uData))
{
adsCtx2.createAdministrator(getAdministratorProperties(uData));
}
@@ -5246,7 +5341,7 @@
}
else if (!adsCtx1.hasAdminData() && adsCtx2.hasAdminData())
{
- if (!hasAdministrator(adsCtx2.getDirContext(), uData))
+ if (!hasAdministrator(adsCtx2.getConnection(), uData))
{
adsCtx2.createAdministrator(getAdministratorProperties(uData));
}
@@ -5265,7 +5360,7 @@
}
else if (adsCtx1.hasAdminData() && !adsCtx2.hasAdminData())
{
- if (!hasAdministrator(adsCtx1.getDirContext(), uData))
+ if (!hasAdministrator(adsCtx1.getConnection(), uData))
{
adsCtx1.createAdministrator(getAdministratorProperties(uData));
}
@@ -5311,14 +5406,13 @@
{
try
{
- ServerDescriptor.seedAdsTrustStore(ctxDestination,
- adsCtxSource.getTrustedCertificates());
+ ServerDescriptor.seedAdsTrustStore(ctxDestination.getLdapContext(), adsCtxSource.getTrustedCertificates());
}
catch (Throwable t)
{
logger.error(LocalizableMessage.raw("Error seeding truststores: "+t, t));
throw new ReplicationCliException(
- ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get(getHostPort(ctxDestination),
+ ERR_REPLICATION_ENABLE_SEEDING_TRUSTSTORE.get(getHostPort(ctxDestination.getLdapContext()),
getHostPort(adsCtxSource.getDirContext()), toString(t)),
ERROR_SEEDING_TRUSTORE, t);
}
@@ -5348,8 +5442,8 @@
try
{
Set<PreferredConnection> cnx = new LinkedHashSet<>();
- cnx.addAll(getPreferredConnections(ctx1));
- cnx.addAll(getPreferredConnections(ctx2));
+ cnx.addAll(getPreferredConnections(ctx1.getLdapContext()));
+ cnx.addAll(getPreferredConnections(ctx2.getLdapContext()));
cache1 = createTopologyCache(adsCtx1, cnx, uData);
if (cache1 != null)
{
@@ -5374,8 +5468,8 @@
ERROR_READING_TOPOLOGY_CACHE, tce);
}
- addToSets(serverDesc1, uData.getServer1(), ctx1, twoReplServers, usedReplicationServerIds);
- addToSets(serverDesc2, uData.getServer2(), ctx2, twoReplServers, usedReplicationServerIds);
+ addToSets(serverDesc1, uData.getServer1(), ctx1.getLdapContext(), twoReplServers, usedReplicationServerIds);
+ addToSets(serverDesc2, uData.getServer2(), ctx2.getLdapContext(), twoReplServers, usedReplicationServerIds);
for (String baseDN : uData.getBaseDNs())
{
@@ -5436,11 +5530,11 @@
if (adsMergeDone)
{
PointAdder pointAdder = new PointAdder(this);
- print(INFO_ENABLE_REPLICATION_INITIALIZING_ADS_ALL.get(getHostPort(ctxSource)));
+ print(INFO_ENABLE_REPLICATION_INITIALIZING_ADS_ALL.get(getHostPort(ctxSource.getLdapContext())));
pointAdder.start();
try
{
- initializeAllSuffix(ADSContext.getAdministrationSuffixDN(), ctxSource, false);
+ initializeAllSuffix(ADSContext.getAdministrationSuffixDN(), ctxSource.getLdapContext(), false);
}
finally
{
@@ -5454,9 +5548,10 @@
{
print(formatter.getFormattedWithPoints(
INFO_ENABLE_REPLICATION_INITIALIZING_ADS.get(
- getHostPort(ctxDestination), getHostPort(ctxSource))));
+ getHostPort(ctxDestination.getLdapContext()), getHostPort(ctxSource.getLdapContext()))));
- initializeSuffix(ADSContext.getAdministrationSuffixDN(), ctxSource, ctxDestination, false);
+ initializeSuffix(
+ ADSContext.getAdministrationSuffixDN(), ctxSource.getLdapContext(), ctxDestination.getLdapContext(), false);
print(formatter.getFormattedDone());
println();
}
@@ -5478,11 +5573,11 @@
{
PointAdder pointAdder = new PointAdder(this);
println(INFO_ENABLE_REPLICATION_INITIALIZING_SCHEMA.get(
- getHostPort(ctxDestination), getHostPort(ctxSource)));
+ getHostPort(ctxDestination.getLdapContext()), getHostPort(ctxSource.getLdapContext())));
pointAdder.start();
try
{
- initializeAllSuffix(Constants.SCHEMA_DN, ctxSource, false);
+ initializeAllSuffix(Constants.SCHEMA_DN, ctxSource.getLdapContext(), false);
}
finally
{
@@ -5493,8 +5588,8 @@
else
{
print(formatter.getFormattedWithPoints(INFO_ENABLE_REPLICATION_INITIALIZING_SCHEMA.get(
- getHostPort(ctxDestination), getHostPort(ctxSource))));
- initializeSuffix(Constants.SCHEMA_DN, ctxSource, ctxDestination, false);
+ getHostPort(ctxDestination.getLdapContext()), getHostPort(ctxSource.getLdapContext()))));
+ initializeSuffix(Constants.SCHEMA_DN, ctxSource.getLdapContext(), ctxDestination.getLdapContext(), false);
}
print(formatter.getFormattedDone());
println();
@@ -5515,7 +5610,7 @@
}
}
- private void configureToReplicateBaseDN(EnableReplicationServerData server, InitialLdapContext ctx,
+ private void configureToReplicateBaseDN(EnableReplicationServerData server, ConnectionWrapper 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
@@ -5527,9 +5622,9 @@
{
configureToReplicateBaseDN(ctx, baseDN, repServers, usedIds);
}
- catch (OpenDsException ode)
+ catch (Exception ode)
{
- LocalizableMessage msg = getMessageForEnableException(getHostPort(ctx), baseDN);
+ LocalizableMessage msg = getMessageForEnableException(getHostPort(ctx.getLdapContext()), baseDN);
throw new ReplicationCliException(msg, ERROR_ENABLING_REPLICATION_ON_BASEDN, ode);
}
}
@@ -5542,7 +5637,7 @@
}
}
- private void configureServer(InitialLdapContext ctx, ServerDescriptor serverDesc,
+ private void configureServer(ConnectionWrapper ctx, ServerDescriptor serverDesc,
EnableReplicationServerData enableServer, IntegerArgument replicationPortArg,
Set<Integer> usedReplicationServerIds, Set<String> allRepServers,
Set<String> alreadyConfiguredReplicationServers, Arg2<Number, Number> replicationServerAlreadyConfiguredMsg)
@@ -5555,9 +5650,9 @@
configureAsReplicationServer(ctx, enableServer.getReplicationPort(), enableServer.isSecureReplication(),
allRepServers, usedReplicationServerIds);
}
- catch (OpenDsException ode)
+ catch (Exception ode)
{
- throw errorConfiguringReplicationServer(ctx, ode);
+ throw errorConfiguringReplicationServer(ctx.getLdapContext(), ode);
}
}
else if (serverDesc.isReplicationServer())
@@ -5566,9 +5661,9 @@
{
updateReplicationServer(ctx, allRepServers);
}
- catch (OpenDsException ode)
+ catch (Exception ode)
{
- throw errorConfiguringReplicationServer(ctx, ode);
+ throw errorConfiguringReplicationServer(ctx.getLdapContext(), ode);
}
if (replicationPortArg.isPresent() && enableServer.getReplicationPort() != serverDesc.getReplicationServerPort())
{
@@ -5581,7 +5676,7 @@
alreadyConfiguredReplicationServers.add(serverDesc.getId());
}
- private ReplicationCliException errorConfiguringReplicationServer(InitialLdapContext ctx, OpenDsException ode)
+ private ReplicationCliException errorConfiguringReplicationServer(InitialLdapContext ctx, Exception ode)
{
return new ReplicationCliException(
ERR_REPLICATION_CONFIGURING_REPLICATIONSERVER.get(getHostPort(ctx)),
@@ -5626,7 +5721,7 @@
* parameters to update the configuration.
* @throws ReplicationCliException if there is an error.
*/
- private void updateConfiguration(InitialLdapContext ctx,
+ private void updateConfiguration(ConnectionWrapper ctx,
DisableReplicationUserData uData) throws ReplicationCliException
{
TopologyCacheFilter filter = new TopologyCacheFilter();
@@ -5636,7 +5731,7 @@
filter.addBaseDNToSearch(ADSContext.getAdministrationSuffixDN());
addBaseDNs(filter, uData.getBaseDNs());
}
- ServerDescriptor server = createStandalone(ctx, filter);
+ ServerDescriptor server = createStandalone(ctx.getLdapContext(), filter);
ADSContext adsCtx = new ADSContext(ctx);
@@ -5649,7 +5744,7 @@
if (adsCtx.hasAdminData() && tryToUpdateRemote)
{
cache = new TopologyCache(adsCtx, getTrustManager(sourceServerCI), getConnectTimeout());
- cache.setPreferredConnections(getPreferredConnections(ctx));
+ cache.setPreferredConnections(getPreferredConnections(ctx.getLdapContext()));
cache.getFilter().setSearchMonitoringInformation(false);
if (!uData.disableAll())
{
@@ -5820,9 +5915,9 @@
boolean forceDisableADS = false;
boolean schemaReplicated = false;
boolean adsReplicated = false;
- boolean disableAllBaseDns = disableAllBaseDns(ctx, uData);
+ boolean disableAllBaseDns = disableAllBaseDns(ctx.getLdapContext(), uData);
- Collection<ReplicaDescriptor> replicas = getReplicas(ctx);
+ Collection<ReplicaDescriptor> replicas = getReplicas(ctx.getLdapContext());
for (ReplicaDescriptor rep : replicas)
{
String dn = rep.getSuffix().getDN();
@@ -5920,7 +6015,7 @@
}
catch (OpenDsException ode)
{
- LocalizableMessage msg = getMessageForDisableException(getHostPort(ctx), baseDN);
+ LocalizableMessage msg = getMessageForDisableException(getHostPort(ctx.getLdapContext()), baseDN);
throw new ReplicationCliException(msg,
ERROR_DISABLING_REPLICATION_ON_BASEDN, ode);
}
@@ -5957,13 +6052,13 @@
}
}
}
- String bindDn = getBindDN(ctx);
- String pwd = getBindPassword(ctx);
+ String bindDn = getBindDN(ctx.getLdapContext());
+ String pwd = getBindPassword(ctx.getLdapContext());
for (ServerDescriptor s : serversToUpdate)
{
removeReferencesInServer(s, replicationServerHostPort, bindDn, pwd,
baseDNsToUpdate, disableReplicationServer,
- getPreferredConnections(ctx));
+ getPreferredConnections(ctx.getLdapContext()));
}
if (disableReplicationServer)
@@ -6041,7 +6136,7 @@
* parameters to update the configuration.
* @throws ReplicationCliException if there is an error.
*/
- private void displayStatus(InitialLdapContext ctx,
+ private void displayStatus(ConnectionWrapper ctx,
StatusReplicationUserData uData) throws ReplicationCliException
{
ADSContext adsCtx = new ADSContext(ctx);
@@ -6051,7 +6146,7 @@
try
{
cache = new TopologyCache(adsCtx, getTrustManager(sourceServerCI), getConnectTimeout());
- cache.setPreferredConnections(getPreferredConnections(ctx));
+ cache.setPreferredConnections(getPreferredConnections(ctx.getLdapContext()));
addBaseDNs(cache.getFilter(), uData.getBaseDNs());
cache.reloadTopology();
}
@@ -6132,7 +6227,7 @@
}
if (!rServers.isEmpty())
{
- displayStatus(rServers, uData.isScriptFriendly(), getPreferredConnections(ctx));
+ displayStatus(rServers, uData.isScriptFriendly(), getPreferredConnections(ctx.getLdapContext()));
somethingDisplayed = true;
}
}
@@ -6162,7 +6257,7 @@
Set<ReplicaDescriptor> replicasWithNoReplicationServer = new HashSet<>();
Set<ServerDescriptor> serversWithNoReplica = new HashSet<>();
displayStatus(orderedReplicaLists, uData.isScriptFriendly(),
- getPreferredConnections(ctx),
+ getPreferredConnections(ctx.getLdapContext()),
cache.getServers(),
replicasWithNoReplicationServer, serversWithNoReplica);
somethingDisplayed = true;
@@ -6721,17 +6816,15 @@
* that will be used by the newly configured replication server.
* @throws OpenDsException if there is an error updating the configuration.
*/
- private void configureAsReplicationServer(InitialLdapContext ctx,
+ private void configureAsReplicationServer(ConnectionWrapper ctx,
int replicationPort, boolean useSecureReplication,
Set<String> replicationServers,
- Set<Integer> usedReplicationServerIds) throws OpenDsException
+ Set<Integer> usedReplicationServerIds) throws Exception
{
print(formatter.getFormattedWithPoints(
- INFO_REPLICATION_ENABLE_CONFIGURING_REPLICATION_SERVER.get(getHostPort(ctx))));
+ INFO_REPLICATION_ENABLE_CONFIGURING_REPLICATION_SERVER.get(getHostPort(ctx.getLdapContext()))));
- ManagementContext mCtx = LDAPManagementContext.createFromContext(
- JNDIDirContextAdaptor.adapt(ctx));
- RootCfgClient root = mCtx.getRootConfiguration();
+ RootCfgClient root = ctx.getRootConfiguration();
/* Configure Synchronization plugin. */
ReplicationSynchronizationProviderCfgClient sync = null;
@@ -6742,7 +6835,8 @@
}
catch (ManagedObjectNotFoundException monfe)
{
- logger.info(LocalizableMessage.raw("Synchronization server does not exist in " + getHostPort(ctx)));
+ logger.info(LocalizableMessage.raw(
+ "Synchronization server does not exist in " + getHostPort(ctx.getLdapContext())));
}
if (sync == null)
{
@@ -6820,15 +6914,13 @@
* replication server will communicate with.
* @throws OpenDsException if there is an error updating the configuration.
*/
- private void updateReplicationServer(InitialLdapContext ctx,
- Set<String> replicationServers) throws OpenDsException
+ private void updateReplicationServer(ConnectionWrapper ctx,
+ Set<String> replicationServers) throws Exception
{
print(formatter.getFormattedWithPoints(
- INFO_REPLICATION_ENABLE_UPDATING_REPLICATION_SERVER.get(getHostPort(ctx))));
+ INFO_REPLICATION_ENABLE_UPDATING_REPLICATION_SERVER.get(getHostPort(ctx.getLdapContext()))));
- ManagementContext mCtx = LDAPManagementContext.createFromContext(
- JNDIDirContextAdaptor.adapt(ctx));
- RootCfgClient root = mCtx.getRootConfiguration();
+ RootCfgClient root = ctx.getRootConfiguration();
ReplicationSynchronizationProviderCfgClient sync =
(ReplicationSynchronizationProviderCfgClient)
@@ -6889,10 +6981,10 @@
* that will be used by the newly configured replication server.
* @throws OpenDsException if there is an error updating the configuration.
*/
- private void configureToReplicateBaseDN(InitialLdapContext ctx,
+ private void configureToReplicateBaseDN(ConnectionWrapper ctx,
String baseDN,
Set<String> replicationServers,
- Set<Integer> usedReplicationDomainIds) throws OpenDsException
+ Set<Integer> usedReplicationDomainIds) throws Exception
{
boolean userSpecifiedAdminBaseDN = false;
List<String> l = argParser.getBaseDNs();
@@ -6904,16 +6996,14 @@
&& areDnsEqual(baseDN, ADSContext.getAdministrationSuffixDN()))
{
print(formatter.getFormattedWithPoints(
- INFO_REPLICATION_ENABLE_CONFIGURING_ADS.get(getHostPort(ctx))));
+ INFO_REPLICATION_ENABLE_CONFIGURING_ADS.get(getHostPort(ctx.getLdapContext()))));
}
else
{
print(formatter.getFormattedWithPoints(
- INFO_REPLICATION_ENABLE_CONFIGURING_BASEDN.get(baseDN, getHostPort(ctx))));
+ INFO_REPLICATION_ENABLE_CONFIGURING_BASEDN.get(baseDN, getHostPort(ctx.getLdapContext()))));
}
- ManagementContext mCtx = LDAPManagementContext.createFromContext(
- JNDIDirContextAdaptor.adapt(ctx));
- RootCfgClient root = mCtx.getRootConfiguration();
+ RootCfgClient root = ctx.getRootConfiguration();
ReplicationSynchronizationProviderCfgClient sync =
(ReplicationSynchronizationProviderCfgClient)
@@ -7039,16 +7129,18 @@
{
logger.info(LocalizableMessage.raw("Configuring server "+server.getHostPort(true)));
InitialLdapContext ctx = null;
+ ConnectionWrapper conn = null;
try
{
ctx = getDirContextForServer(cache, s);
+ conn = new ConnectionWrapper(ctx, getConnectTimeout(), getTrustManager(sourceServerCI));
if (serversToConfigureDomain.contains(s))
{
- configureToReplicateBaseDN(ctx, baseDN, repServers, usedIds);
+ configureToReplicateBaseDN(conn, baseDN, repServers, usedIds);
}
if (replicationServersToConfigure.contains(s))
{
- updateReplicationServer(ctx, allRepServers);
+ updateReplicationServer(conn, allRepServers);
}
}
catch (NamingException ne)
@@ -7057,7 +7149,7 @@
LocalizableMessage msg = getMessageForException(ne, hostPort);
throw new ReplicationCliException(msg, ERROR_CONNECTING, ne);
}
- catch (OpenDsException ode)
+ catch (Exception ode)
{
String hostPort = getHostPort2(s, cache.getPreferredConnections());
LocalizableMessage msg = getMessageForEnableException(hostPort, baseDN);
@@ -7067,6 +7159,7 @@
finally
{
close(ctx);
+ close(conn);
}
alreadyConfiguredServers.add(s.getId());
alreadyConfiguredReplicationServers.add(s.getId());
@@ -7659,17 +7752,15 @@
filter.setSearchBaseDNInformation(false);
ServerLoader loader = new ServerLoader(server.getAdsProperties(), bindDn,
pwd, getTrustManager(sourceServerCI), getConnectTimeout(), cnx, filter);
- InitialLdapContext ctx = null;
+ ConnectionWrapper ctx = null;
String lastBaseDN = null;
String hostPort = null;
try
{
- ctx = loader.createContext();
- hostPort = getHostPort(ctx);
- ManagementContext mCtx = LDAPManagementContext.createFromContext(
- JNDIDirContextAdaptor.adapt(ctx));
- RootCfgClient root = mCtx.getRootConfiguration();
+ ctx = loader.createConnectionWrapper();
+ hostPort = getHostPort(ctx.getLdapContext());
+ RootCfgClient root = ctx.getRootConfiguration();
ReplicationSynchronizationProviderCfgClient sync = null;
try
{
@@ -7756,7 +7847,7 @@
LocalizableMessage msg = getMessageForException(ne, hostPort);
throw new ReplicationCliException(msg, ERROR_CONNECTING, ne);
}
- catch (OpenDsException ode)
+ catch (Exception ode)
{
if (lastBaseDN != null)
{
@@ -7786,15 +7877,12 @@
* @throws ReplicationCliException if there is an error updating the
* configuration of the server.
*/
- private void deleteReplicationDomain(InitialLdapContext ctx,
- String baseDN) throws ReplicationCliException
+ private void deleteReplicationDomain(ConnectionWrapper ctx, String baseDN) throws ReplicationCliException
{
- String hostPort = getHostPort(ctx);
+ String hostPort = getHostPort(ctx.getLdapContext());
try
{
- ManagementContext mCtx = LDAPManagementContext.createFromContext(
- JNDIDirContextAdaptor.adapt(ctx));
- RootCfgClient root = mCtx.getRootConfiguration();
+ RootCfgClient root = ctx.getRootConfiguration();
ReplicationSynchronizationProviderCfgClient sync = null;
try
{
@@ -7830,7 +7918,7 @@
}
}
}
- catch (OpenDsException ode)
+ catch (Exception ode)
{
LocalizableMessage msg = getMessageForDisableException(hostPort, baseDN);
throw new ReplicationCliException(msg,
@@ -7840,19 +7928,17 @@
/**
* Disables the replication server for a given server.
- * @param ctx the connection to the server.
+ * @param connWrapper the connection to the server.
* @throws ReplicationCliException if there is an error updating the
* configuration of the server.
*/
- private void disableReplicationServer(InitialLdapContext ctx)
+ private void disableReplicationServer(ConnectionWrapper connWrapper)
throws ReplicationCliException
{
- String hostPort = getHostPort(ctx);
+ String hostPort = getHostPort(connWrapper.getLdapContext());
try
{
- ManagementContext mCtx = LDAPManagementContext.createFromContext(
- JNDIDirContextAdaptor.adapt(ctx));
- RootCfgClient root = mCtx.getRootConfiguration();
+ RootCfgClient root = connWrapper.getRootConfiguration();
ReplicationSynchronizationProviderCfgClient sync = null;
ReplicationServerCfgClient replicationServer = null;
try
@@ -7883,7 +7969,7 @@
println();
}
}
- catch (OpenDsException ode)
+ catch (Exception ode)
{
throw new ReplicationCliException(
ERR_REPLICATION_DISABLING_REPLICATIONSERVER.get(hostPort),
@@ -9124,13 +9210,13 @@
}
private void updateAvailableAndReplicatedSuffixesForOneDomain(
- InitialLdapContext ctxDomain, InitialLdapContext ctxOther,
+ ConnectionWrapper ctxDomain, ConnectionWrapper ctxOther,
Set<String> availableSuffixes, Set<String> alreadyReplicatedSuffixes)
{
- Collection<ReplicaDescriptor> replicas = getReplicas(ctxDomain);
+ Collection<ReplicaDescriptor> replicas = getReplicas(ctxDomain.getLdapContext());
int replicationPort = getReplicationPort(ctxOther);
boolean isReplicationServerConfigured = replicationPort != -1;
- String replicationServer = getReplicationServer(getHostName(ctxOther), replicationPort);
+ String replicationServer = getReplicationServer(getHostName(ctxOther.getLdapContext()), replicationPort);
for (ReplicaDescriptor replica : replicas)
{
if (!isReplicationServerConfigured)
@@ -9162,16 +9248,16 @@
}
private void updateAvailableAndReplicatedSuffixesForNoDomain(
- InitialLdapContext ctx1, InitialLdapContext ctx2,
+ ConnectionWrapper ctx1, ConnectionWrapper ctx2,
Set<String> availableSuffixes, Set<String> alreadyReplicatedSuffixes)
{
int replicationPort1 = getReplicationPort(ctx1);
boolean isReplicationServer1Configured = replicationPort1 != -1;
- String replicationServer1 = getReplicationServer(getHostName(ctx1), replicationPort1);
+ String replicationServer1 = getReplicationServer(getHostName(ctx1.getLdapContext()), replicationPort1);
int replicationPort2 = getReplicationPort(ctx2);
boolean isReplicationServer2Configured = replicationPort2 != -1;
- String replicationServer2 = getReplicationServer(getHostName(ctx2), replicationPort2);
+ String replicationServer2 = getReplicationServer(getHostName(ctx2.getLdapContext()), replicationPort2);
TopologyCache cache1 = isReplicationServer1Configured ? createTopologyCache(ctx1) : null;
TopologyCache cache2 = isReplicationServer2Configured ? createTopologyCache(ctx2) : null;
@@ -9194,7 +9280,7 @@
}
}
- private TopologyCache createTopologyCache(InitialLdapContext ctx)
+ private TopologyCache createTopologyCache(ConnectionWrapper ctx)
{
try
{
@@ -9203,14 +9289,15 @@
{
TopologyCache cache = new TopologyCache(adsContext, getTrustManager(sourceServerCI), getConnectTimeout());
cache.getFilter().setSearchMonitoringInformation(false);
- cache.setPreferredConnections(getPreferredConnections(ctx));
+ cache.setPreferredConnections(getPreferredConnections(ctx.getLdapContext()));
cache.reloadTopology();
return cache;
}
}
catch (Throwable t)
{
- logger.warn(LocalizableMessage.raw("Error loading topology cache in " + getLdapUrl(ctx) + ": " + t, t));
+ logger.warn(LocalizableMessage.raw("Error loading topology cache in "
+ + getLdapUrl(ctx.getLdapContext()) + ": " + t, t));
}
return null;
}
@@ -9298,9 +9385,9 @@
createTopologyCache(adsCtx1, uData, suffixes);
createTopologyCache(adsCtx2, uData, suffixes);
- int repPort1 = getReplicationPort(adsCtx1.getDirContext());
+ int repPort1 = getReplicationPort(adsCtx1.getConnection());
String repServer1 = getReplicationServer(server1.getHostName(), repPort1);
- int repPort2 = getReplicationPort(adsCtx2.getDirContext());
+ int repPort2 = getReplicationPort(adsCtx2.getConnection());
String repServer2 = getReplicationServer(server2.getHostName(), repPort2);
for (String baseDN : uData.getBaseDNs())
{
--
Gitblit v1.10.0