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/guitools/uninstaller/Uninstaller.java |   85 ++++++++++++++++--------------------------
 1 files changed, 33 insertions(+), 52 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java b/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
index a854f06..ccadb8b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/Uninstaller.java
@@ -27,7 +27,6 @@
 
 import javax.naming.Context;
 import javax.naming.NamingException;
-import javax.naming.ldap.InitialLdapContext;
 import javax.swing.JFrame;
 import javax.swing.SwingUtilities;
 
@@ -42,6 +41,7 @@
 import org.opends.admin.ads.TopologyCacheException;
 import org.opends.admin.ads.util.ApplicationTrustManager;
 import org.opends.admin.ads.util.ConnectionUtils;
+import org.opends.admin.ads.util.ConnectionWrapper;
 import org.opends.admin.ads.util.PreferredConnection;
 import org.opends.guitools.uninstaller.ui.ConfirmUninstallPanel;
 import org.opends.guitools.uninstaller.ui.LoginDialog;
@@ -51,13 +51,8 @@
 import org.opends.quicksetup.util.ServerController;
 import org.opends.quicksetup.util.UIKeyStore;
 import org.opends.quicksetup.util.Utils;
-import org.forgerock.opendj.config.AttributeTypePropertyDefinition;
 import org.forgerock.opendj.config.ConfigurationFramework;
-import org.forgerock.opendj.config.ClassPropertyDefinition;
 import org.forgerock.opendj.config.ManagedObjectNotFoundException;
-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.ReplicationDomainCfgClient;
 import org.forgerock.opendj.server.config.client.ReplicationServerCfgClient;
 import org.forgerock.opendj.server.config.client.ReplicationSynchronizationProviderCfgClient;
@@ -71,7 +66,6 @@
 import static com.forgerock.opendj.cli.ArgumentConstants.*;
 import static com.forgerock.opendj.cli.Utils.*;
 import static com.forgerock.opendj.util.OperatingSystem.*;
-
 import static org.forgerock.util.Utils.*;
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.messages.QuickSetupMessages.*;
@@ -118,25 +112,20 @@
     //  Bootstrap definition classes.
     try
     {
-      if (!ClassLoaderProvider.getInstance().isEnabled())
+      ConfigurationFramework configFramework = ConfigurationFramework.getInstance();
+      if (!configFramework.isInitialized())
       {
-        ClassLoaderProvider.getInstance().enable();
+        configFramework.initialize();
       }
+      configFramework.setIsClient(true);
     }
     catch (Throwable t)
     {
-      logger.warn(LocalizableMessage.raw("Error enabling admin framework class loader: "+t,
-          t));
+      logger.warn(LocalizableMessage.raw("Error enabling admin framework class loader: "+t, t));
     }
-
-    // Switch off class name validation in client.
-    ClassPropertyDefinition.setAllowClassValidation(false);
-
-    // Switch off attribute type name validation in client.
-    AttributeTypePropertyDefinition.setCheckSchema(false);
-
     logger.info(LocalizableMessage.raw("Uninstaller is created."));
   }
+
   /** {@inheritDoc} */
   @Override
   public LocalizableMessage getFrameTitle() {
@@ -1522,11 +1511,11 @@
     {
       getUninstallUserData().setAdminUID(loginDialog.getAdministratorUid());
       getUninstallUserData().setAdminPwd(loginDialog.getAdministratorPwd());
-      final InitialLdapContext ctx = loginDialog.getContext();
+      final ConnectionWrapper connWrapper = loginDialog.getConnection();
       try
       {
         getUninstallUserData().setLocalServerUrl(
-            (String)ctx.getEnvironment().get(Context.PROVIDER_URL));
+            (String)connWrapper.getLdapContext().getEnvironment().get(Context.PROVIDER_URL));
       }
       catch (NamingException ne)
       {
@@ -1544,7 +1533,7 @@
         public TopologyCache processBackgroundTask() throws Throwable
         {
           logger.info(LocalizableMessage.raw("Loading Topology Cache in askForAuthentication"));
-          ADSContext adsContext = new ADSContext(ctx);
+          ADSContext adsContext = new ADSContext(connWrapper);
           TopologyCache cache = new TopologyCache(adsContext,
               getTrustManager(), getConnectTimeout());
           cache.getFilter().setSearchMonitoringInformation(false);
@@ -1925,19 +1914,19 @@
       logger.info(LocalizableMessage.raw("Updating references in: "+ server.getHostPort(true)));
       notifyListeners(getFormattedWithPoints(
           INFO_PROGRESS_REMOVING_REFERENCES.get(server.getHostPort(true))));
-      InitialLdapContext ctx = null;
+      ConnectionWrapper connWrapper = null;
       try
       {
         String dn = ADSContext.getAdministratorDN(
             getUninstallUserData().getAdminUID());
         String pwd = getUninstallUserData().getAdminPwd();
-        ctx = getRemoteConnection(server, dn, pwd, getTrustManager(),
+        connWrapper = getRemoteConnection(server, dn, pwd, getTrustManager(),
             getConnectTimeout(),
             new LinkedHashSet<PreferredConnection>());
 
         // Update replication servers and domains.  If the domain
         // is an ADS, then remove it from there.
-        removeReferences(ctx, server.getHostPort(true), serverADSProperties);
+        removeReferences(connWrapper, server.getHostPort(true), serverADSProperties);
 
         notifyListeners(getFormattedDoneWithLineBreak());
       }
@@ -1966,7 +1955,7 @@
       }
       finally
       {
-        StaticUtils.close(ctx);
+        StaticUtils.close(connWrapper);
       }
     }
   }
@@ -1976,7 +1965,7 @@
    * provided InitialLdapContext.
    * It also tries to delete the server registration entry from the remote ADS
    * servers if the serverADSProperties object passed is not null.
-   * @param ctx the connection to the remote server where we want to remove
+   * @param connWrapper the connection to the remote server where we want to remove
    * references to the server that we are trying to uninstall.
    * @param serverDisplay an String representation that is used to identify
    * the remote server in the log messages we present to the user.
@@ -1985,15 +1974,13 @@
    * @throws ApplicationException if an error occurs while updating the remote
    * OpenDS server configuration.
    */
-  private void removeReferences(InitialLdapContext ctx, String serverDisplay,
+  private void removeReferences(ConnectionWrapper connWrapper, String serverDisplay,
       Map<ADSContext.ServerProperty, Object> serverADSProperties)
   throws ApplicationException
   {
     try
     {
-      ManagementContext mCtx = LDAPManagementContext.createFromContext(
-          JNDIDirContextAdaptor.adapt(ctx));
-      RootCfgClient root = mCtx.getRootConfiguration();
+      RootCfgClient root = connWrapper.getRootConfiguration();
       ReplicationSynchronizationProviderCfgClient sync =
         (ReplicationSynchronizationProviderCfgClient)
         root.getSynchronizationProvider("Multimaster Synchronization");
@@ -2004,16 +1991,7 @@
         Set<String> replServers = replicationServer.getReplicationServer();
         if (replServers != null)
         {
-          String replServer = null;
-          for (String o : replServers)
-          {
-            if (getUninstallUserData().getReplicationServer().equalsIgnoreCase(
-                o))
-            {
-              replServer = o;
-              break;
-            }
-          }
+          String replServer = findReplicationServer(replServers);
           if (replServer != null)
           {
             logger.info(LocalizableMessage.raw("Updating references in replication server on "+
@@ -2042,16 +2020,7 @@
           Set<String> replServers = domain.getReplicationServer();
           if (replServers != null)
           {
-            String replServer = null;
-            for (String o : replServers)
-            {
-              if (getUninstallUserData().getReplicationServer().
-                  equalsIgnoreCase(o))
-              {
-                replServer = o;
-                break;
-              }
-            }
+            String replServer = findReplicationServer(replServers);
             if (replServer != null)
             {
               logger.info(LocalizableMessage.raw("Updating references in domain " +
@@ -2088,14 +2057,14 @@
       throw new ApplicationException(
           ReturnCode.CONFIGURATION_ERROR, errorMessage, t);
     }
-    ADSContext adsContext = new ADSContext(ctx);
+    ADSContext adsContext = new ADSContext(connWrapper);
 
     try
     {
       if (adsContext.hasAdminData() && serverADSProperties != null)
       {
         logger.info(LocalizableMessage.raw("Unregistering server on ADS of server "+
-            ConnectionUtils.getHostPort(ctx)+".  Properties: "+
+            ConnectionUtils.getHostPort(connWrapper.getLdapContext())+".  Properties: "+
             serverADSProperties));
         adsContext.unregisterServer(serverADSProperties);
       }
@@ -2119,6 +2088,18 @@
     }
   }
 
+  private String findReplicationServer(Set<String> replServers)
+  {
+    for (String s : replServers)
+    {
+      if (getUninstallUserData().getReplicationServer().equalsIgnoreCase(s))
+      {
+        return s;
+      }
+    }
+    return null;
+  }
+
   /**
    * Tells whether this ServerDescriptor object represents the server that we
    * are trying to uninstall or not.

--
Gitblit v1.10.0