From f3f9f37cd05c81867e2852746b169132d8f1b598 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 01 Jul 2016 14:30:12 +0000
Subject: [PATCH] Partial OPENDJ-2625 Convert all code that uses JNDI to use the SDK instead

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java |   64 ++++++++++++++-----------------
 1 files changed, 29 insertions(+), 35 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
index 8ba4da1..8357e64 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
@@ -24,6 +24,7 @@
 import static org.opends.server.tools.ConfigureWindowsService.*;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.InetAddress;
 import java.util.Collection;
 import java.util.Collections;
@@ -34,14 +35,12 @@
 import java.util.SortedSet;
 
 import javax.naming.NamingException;
-import javax.naming.ldap.InitialLdapContext;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.ConfigurationFramework;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.admin.ads.util.ApplicationTrustManager;
-import org.opends.admin.ads.util.ConnectionUtils;
 import org.opends.admin.ads.util.ConnectionWrapper;
 import org.opends.guitools.controlpanel.browser.IconPool;
 import org.opends.guitools.controlpanel.browser.LDAPConnectionPool;
@@ -82,7 +81,7 @@
 
   private final Set<Task> tasks = new HashSet<>();
   private ConnectionWrapper connWrapper;
-  private InitialLdapContext userDataCtx;
+  private ConnectionWrapper userDataConn;
   private final LDAPConnectionPool connectionPool = new LDAPConnectionPool();
   /** Used by the browsers. */
   private final IconPool iconPool = new IconPool();
@@ -319,36 +318,31 @@
   /**
    * Sets the dir context to be used by the ControlPanelInfo to retrieve
    * user data.
-   * @param ctx the connection.
+   * @param conn the connection.
    * @throws NamingException if there is a problem updating the connection pool.
    */
-  public void setUserDataDirContext(InitialLdapContext ctx)
-  throws NamingException
+  public void setUserDataDirContext(ConnectionWrapper conn) throws NamingException
   {
-    if (userDataCtx != null)
+    if (userDataConn != null)
     {
-      unregisterConnection(connectionPool, ctx);
+      unregisterConnection(connectionPool, conn);
     }
-    this.userDataCtx = ctx;
-    if (ctx != null)
+    this.userDataConn = conn;
+    if (conn != null)
     {
-      InitialLdapContext cloneLdc =
-        ConnectionUtils.cloneInitialLdapContext(userDataCtx,
-            getConnectTimeout(),
-            getTrustManager(), null);
-      connectionPool.registerConnection(cloneLdc);
+      ConnectionWrapper cloneConn = cloneConnectionWrapper(userDataConn, getConnectTimeout(), getTrustManager(), null);
+      connectionPool.registerConnection(cloneConn);
     }
   }
 
   /**
-   * Returns the dir context to be used by the ControlPanelInfo to retrieve
-   * user data.
-   * @return the dir context to be used by the ControlPanelInfo to retrieve
-   * user data.
+   * Returns the connection to be used by the ControlPanelInfo to retrieve user data.
+   *
+   * @return the connection to be used by the ControlPanelInfo to retrieve user data.
    */
-  public InitialLdapContext getUserDataDirContext()
+  public ConnectionWrapper getUserDataDirContext()
   {
-    return userDataCtx;
+    return userDataConn;
   }
 
   /**
@@ -436,11 +430,11 @@
       {
         StaticUtils.close(connWrapper);
         connWrapper = null;
-        if (userDataCtx != null)
+        if (userDataConn != null)
         {
           unregisterConnection(connectionPool, null);
-          StaticUtils.close(userDataCtx);
-          userDataCtx = null;
+          StaticUtils.close(userDataConn);
+          userDataConn = null;
         }
       }
       if (isLocal)
@@ -474,7 +468,7 @@
                 getConnectTimeout(), getTrustManager());
           }
         }
-        catch (ConfigReadException | NamingException cre)
+        catch (ConfigReadException | NamingException | IOException ignored)
         {
           // Ignore: we will ask the user for credentials.
         }
@@ -497,7 +491,7 @@
         Utilities.initializeConfigurationFramework();
         reader = newRemoteConfigReader();
 
-        boolean connectionWorks = checkConnections(connWrapper, userDataCtx);
+        boolean connectionWorks = checkConnections(connWrapper, userDataConn);
         if (!connectionWorks)
         {
           if (isLocal)
@@ -511,9 +505,9 @@
           }
           StaticUtils.close(connWrapper);
           this.connWrapper = null;
-          unregisterConnection(connectionPool, connWrapper.getLdapContext());
-          StaticUtils.close(userDataCtx);
-          userDataCtx = null;
+          unregisterConnection(connectionPool, connWrapper);
+          StaticUtils.close(userDataConn);
+          userDataConn = null;
         }
       }
 
@@ -610,13 +604,13 @@
     return status;
   }
 
-  private void unregisterConnection(LDAPConnectionPool connectionPool, InitialLdapContext userDataCtx)
+  private void unregisterConnection(LDAPConnectionPool connectionPool, ConnectionWrapper userDataConn)
   {
-    if (connectionPool.isConnectionRegistered(userDataCtx))
+    if (connectionPool.isConnectionRegistered(userDataConn))
     {
       try
       {
-        connectionPool.unregisterConnection(userDataCtx);
+        connectionPool.unregisterConnection(userDataConn);
       }
       catch (Throwable t)
       {
@@ -1194,7 +1188,7 @@
     return adminPort1 == adminPort2;
   }
 
-  private boolean checkConnections(ConnectionWrapper conn, InitialLdapContext userCtx)
+  private boolean checkConnections(ConnectionWrapper conn, ConnectionWrapper userConn)
   {
     // Check the connection
     int nMaxErrors = 5;
@@ -1203,9 +1197,9 @@
       try
       {
         Utilities.ping(conn);
-        if (userCtx != null)
+        if (userConn != null)
         {
-          Utilities.pingDirContext(userCtx);
+          Utilities.ping(userConn);
         }
         return true;
       }

--
Gitblit v1.10.0