From a12eb578b2b06f6ba9d929f4a2c7b81e13eae7cc 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/server/tools/dsreplication/ReplicationCliMain.java   |   18 ----
 opendj-server-legacy/src/main/java/org/opends/admin/ads/util/PreferredConnection.java              |   16 ---
 opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java                           |   43 ----------
 opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ServerLoader.java                     |   16 ++-
 opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java                  |   85 +--------------------
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java |    5 
 opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionWrapper.java                |   42 ++++++++++
 7 files changed, 59 insertions(+), 166 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
index 6238ea3..95cc437 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
@@ -18,7 +18,6 @@
 
 import java.io.IOException;
 import java.net.ConnectException;
-import java.net.URI;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Set;
@@ -88,7 +87,7 @@
    * @see javax.naming.Context
    * @see javax.naming.ldap.InitialLdapContext
    */
-  public static InitialLdapContext createLdapContext(String ldapURL, String dn,
+  static InitialLdapContext createLdapContext(String ldapURL, String dn,
       String pwd, int timeout, Hashtable<String, String> env)
       throws NamingException
   {
@@ -163,7 +162,7 @@
    * @see javax.naming.ldap.InitialLdapContext
    * @see TrustedSocketFactory
    */
-  public static InitialLdapContext createLdapsContext(String ldapsURL,
+  static InitialLdapContext createLdapsContext(String ldapsURL,
       String dn, String pwd, int timeout, Hashtable<String, String> env,
       TrustManager trustManager, KeyManager keyManager) throws NamingException {
     env = copy(env);
@@ -276,8 +275,7 @@
    * @see javax.naming.ldap.StartTlsResponse
    * @see TrustedSocketFactory
    */
-
-  public static InitialLdapContext createStartTLSContext(String ldapURL,
+  static InitialLdapContext createStartTLSContext(String ldapURL,
       String dn, String pwd, int timeout, Hashtable<String, String> env,
       TrustManager trustManager, KeyManager keyManager,
       HostnameVerifier verifier)
@@ -363,64 +361,11 @@
    * @param ctx the context to analyze.
    * @return the LDAP URL used in the provided InitialLdapContext.
    */
-  public static String getLdapUrl(InitialLdapContext ctx)
+  static String getLdapUrl(InitialLdapContext ctx)
   {
     return getEnvProperty(ctx, Context.PROVIDER_URL);
   }
 
-  /**
-   * Returns the host name used in the provided InitialLdapContext.
-   * @param ctx the context to analyze.
-   * @return the host name used in the provided InitialLdapContext.
-   */
-  public static String getHostName(InitialLdapContext ctx)
-  {
-    HostPort hp = getHostPort(ctx);
-    return hp != null ? hp.getHost() : null;
-  }
-
-  /**
-   * Returns the host port representation of the server to which this
-   * context is connected.
-   * @param ctx the context to analyze.
-   * @return the host port representation of the server to which this
-   * context is connected.
-   */
-  public static HostPort getHostPort(InitialLdapContext ctx)
-  {
-    try
-    {
-      URI ldapURL = new URI(getLdapUrl(ctx));
-      return new HostPort(ldapURL.getHost(), ldapURL.getPort());
-    }
-    catch (Throwable t)
-    {
-      // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Error getting host: "+t, t));
-      return null;
-    }
-  }
-
-  /**
-   * Returns the bind DN used in the provided InitialLdapContext.
-   * @param ctx the context to analyze.
-   * @return the bind DN used in the provided InitialLdapContext.
-   */
-  public static String getBindDN(InitialLdapContext ctx)
-  {
-    return getEnvProperty(ctx, Context.SECURITY_PRINCIPAL);
-  }
-
-  /**
-   * Returns the password used in the provided InitialLdapContext.
-   * @param ctx the context to analyze.
-   * @return the password used in the provided InitialLdapContext.
-   */
-  public static String getBindPassword(InitialLdapContext ctx)
-  {
-    return getEnvProperty(ctx, Context.SECURITY_CREDENTIALS);
-  }
-
   private static String getEnvProperty(InitialLdapContext ctx, String property) {
     try {
       return (String) ctx.getEnvironment().get(property);
@@ -432,32 +377,12 @@
   }
 
   /**
-   * Tells whether we are using SSL in the provided InitialLdapContext.
-   * @param ctx the context to analyze.
-   * @return <CODE>true</CODE> if we are using SSL and <CODE>false</CODE>
-   * otherwise.
-   */
-  public static boolean isSSL(InitialLdapContext ctx)
-  {
-    try
-    {
-      return getLdapUrl(ctx).toLowerCase().startsWith("ldaps");
-    }
-    catch (Throwable t)
-    {
-      // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Error getting if is SSL "+t, t));
-      return false;
-    }
-  }
-
-  /**
    * Tells whether we are using StartTLS in the provided InitialLdapContext.
    * @param ctx the context to analyze.
    * @return <CODE>true</CODE> if we are using StartTLS and <CODE>false</CODE>
    * otherwise.
    */
-  public static boolean isStartTLS(InitialLdapContext ctx)
+  static boolean isStartTLS(InitialLdapContext ctx)
   {
     return "true".equalsIgnoreCase(getEnvProperty(ctx, STARTTLS_PROPERTY));
   }
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionWrapper.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionWrapper.java
index 66ce546..0507018 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionWrapper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionWrapper.java
@@ -36,6 +36,8 @@
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.LDAPProfile;
 import org.forgerock.opendj.ldap.Connection;
 import org.forgerock.opendj.ldap.DN;
@@ -60,6 +62,8 @@
  */
 public class ConnectionWrapper implements Closeable
 {
+  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+
   private final LDAPConnectionFactory connectionFactory;
   private final Connection connection;
   private final InitialLdapContext ldapContext;
@@ -263,7 +267,18 @@
    */
   public boolean isSSL()
   {
-    return ConnectionUtils.isSSL(ldapContext);
+    // FIXME the code down below is what the code was doing in the control-panel / dsreplication
+    // We might as well just return this.connectionType == LDAPS;
+    try
+    {
+      return ConnectionUtils.getLdapUrl(ldapContext).toLowerCase().startsWith("ldaps");
+    }
+    catch (Throwable t)
+    {
+      // This is really strange. Seems like a bug somewhere.
+      logger.warn(LocalizableMessage.raw("Error getting if is SSL " + t, t));
+      return false;
+    }
   }
 
   /**
@@ -273,6 +288,8 @@
    */
   public boolean isStartTLS()
   {
+    // FIXME the code down below is what the code was doing in the control-panel / dsreplication
+    // We might as well just return this.connectionType == START_TLS;
     return ConnectionUtils.isStartTLS(ldapContext);
   }
 
@@ -327,6 +344,29 @@
   }
 
   /**
+   * Returns the connection type used by this connection wrapper.
+   *
+   * @return the connection type used by this connection wrapper
+   */
+  public PreferredConnection.Type getConnectionType()
+  {
+    // FIXME the code down below is what the code was doing in the control-panel / dsreplication
+    // We might as well just return this.connectionType;
+    if (isSSL())
+    {
+      return LDAPS;
+    }
+    else if (isStartTLS())
+    {
+      return START_TLS;
+    }
+    else
+    {
+      return LDAP;
+    }
+  }
+
+  /**
    * Returns the ldap context (JNDI).
    *
    * @return the ldap context
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/PreferredConnection.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/PreferredConnection.java
index 9337132..8402809 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/PreferredConnection.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/PreferredConnection.java
@@ -99,21 +99,7 @@
    */
   private static PreferredConnection getPreferredConnection(ConnectionWrapper conn)
   {
-    String ldapUrl = conn.getLdapUrl();
-    PreferredConnection.Type type;
-    if (conn.isStartTLS())
-    {
-      type = PreferredConnection.Type.START_TLS;
-    }
-    else if (conn.isSSL())
-    {
-      type = PreferredConnection.Type.LDAPS;
-    }
-    else
-    {
-      type = PreferredConnection.Type.LDAP;
-    }
-    return new PreferredConnection(ldapUrl, type);
+    return new PreferredConnection(conn.getLdapUrl(), conn.getConnectionType());
   }
 
   /**
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ServerLoader.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ServerLoader.java
index 9c5f690..db26534 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ServerLoader.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ServerLoader.java
@@ -16,6 +16,8 @@
  */
 package org.opends.admin.ads.util;
 
+import static org.opends.admin.ads.util.PreferredConnection.Type.*;
+
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
@@ -379,17 +381,17 @@
         ldapUrls.add(connection);
       }
       else if (url.equalsIgnoreCase(ldapsUrl) &&
-          connection.getType() == PreferredConnection.Type.LDAPS)
+          connection.getType() == LDAPS)
       {
         ldapUrls.add(connection);
       }
       else if (url.equalsIgnoreCase(startTLSUrl) &&
-          connection.getType() == PreferredConnection.Type.START_TLS)
+          connection.getType() == START_TLS)
       {
         ldapUrls.add(connection);
       }
       else if (url.equalsIgnoreCase(ldapUrl) &&
-          connection.getType() == PreferredConnection.Type.LDAP)
+          connection.getType() == LDAP)
       {
         ldapUrls.add(connection);
       }
@@ -397,19 +399,19 @@
 
     if (adminConnectorUrl != null)
     {
-      ldapUrls.add(new PreferredConnection(adminConnectorUrl, PreferredConnection.Type.LDAPS));
+      ldapUrls.add(new PreferredConnection(adminConnectorUrl, LDAPS));
     }
     if (ldapsUrl != null)
     {
-      ldapUrls.add(new PreferredConnection(ldapsUrl, PreferredConnection.Type.LDAPS));
+      ldapUrls.add(new PreferredConnection(ldapsUrl, LDAPS));
     }
     if (startTLSUrl != null)
     {
-      ldapUrls.add(new PreferredConnection(startTLSUrl, PreferredConnection.Type.START_TLS));
+      ldapUrls.add(new PreferredConnection(startTLSUrl, START_TLS));
     }
     if (ldapUrl != null)
     {
-      ldapUrls.add(new PreferredConnection(ldapUrl, PreferredConnection.Type.LDAP));
+      ldapUrls.add(new PreferredConnection(ldapUrl, LDAP));
     }
     return ldapUrls;
   }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
index 5fb077d..242246e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
@@ -16,7 +16,6 @@
  */
 package org.opends.guitools.controlpanel.browser;
 
-import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.server.util.ServerConstants.*;
 
 import java.awt.Font;
@@ -1031,7 +1030,7 @@
    */
   LDAPURL findUrlForLocalEntry(BasicNode node) {
     if (node == rootNode) {
-      return LDAPConnectionPool.makeLDAPUrl(connConfig.getHostPort(), "", isSSL(connConfig.getLdapContext()));
+      return LDAPConnectionPool.makeLDAPUrl(connConfig.getHostPort(), "", connConfig.isSSL());
     }
     final BasicNode parent = (BasicNode) node.getParent();
     if (parent != null)
@@ -1039,7 +1038,7 @@
       final LDAPURL parentUrl = findUrlForDisplayedEntry(parent);
       return LDAPConnectionPool.makeLDAPUrl(parentUrl, node.getDN());
     }
-    return LDAPConnectionPool.makeLDAPUrl(connConfig.getHostPort(), node.getDN(), isSSL(connConfig.getLdapContext()));
+    return LDAPConnectionPool.makeLDAPUrl(connConfig.getHostPort(), node.getDN(), connConfig.isSSL());
   }
 
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
index 82e57bf..ac6aea0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
@@ -43,7 +43,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Locale;
@@ -59,10 +58,7 @@
 import javax.naming.NoPermissionException;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
-import javax.naming.ldap.InitialLdapContext;
 import javax.naming.ldap.LdapName;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.TrustManager;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
@@ -646,45 +642,6 @@
   }
 
   /**
-   * Creates an LDAP+StartTLS connection and returns the corresponding
-   * LdapContext. This method first creates an LdapContext with anonymous bind.
-   * Then it requests a StartTlsRequest extended operation. The StartTlsResponse
-   * is setup with the specified hostname verifier. Negotiation is done using a
-   * TrustSocketFactory so that the specified TrustManager gets called during
-   * the SSL handshake. If trust manager is null, certificates are not checked
-   * during SSL handshake.
-   *
-   * @param ldapsURL
-   *          the target *LDAPS* URL.
-   * @param dn
-   *          passed as Context.SECURITY_PRINCIPAL if not null.
-   * @param pwd
-   *          passed as Context.SECURITY_CREDENTIALS if not null.
-   * @param timeout
-   *          passed as com.sun.jndi.ldap.connect.timeout if > 0.
-   * @param env
-   *          null or additional environment properties.
-   * @param trustManager
-   *          null or the trust manager to be invoked during SSL. negociation.
-   * @param verifier
-   *          null or the hostname verifier to be setup in the StartTlsResponse.
-   * @return the established connection with the given parameters.
-   * @throws NamingException
-   *           the exception thrown when instantiating InitialLdapContext.
-   * @see javax.naming.Context
-   * @see javax.naming.ldap.InitialLdapContext
-   * @see javax.naming.ldap.StartTlsRequest
-   * @see javax.naming.ldap.StartTlsResponse
-   * @see org.opends.admin.ads.util.TrustedSocketFactory
-   */
-
-  public static InitialLdapContext createStartTLSContext(String ldapsURL, String dn, String pwd, int timeout,
-      Hashtable<String, String> env, TrustManager trustManager, HostnameVerifier verifier) throws NamingException
-  {
-    return ConnectionUtils.createStartTLSContext(ldapsURL, dn, pwd, timeout, env, trustManager, null, verifier);
-  }
-
-  /**
    * Returns a message object for the given NamingException. The code assume
    * that we are trying to connect to the local server.
    *
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 c494743..ac4acf9 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
@@ -3418,7 +3418,7 @@
     boolean triedWithUserProvidedAdmin = false;
     final ConnectionWrapper conn1 = conn.get();
     HostPort hostPort = conn1.getHostPort();
-    Type connectionType = getConnectionType(conn1);
+    Type connectionType = conn1.getConnectionType();
     if (getTrustManager(ci) == null)
     {
       // This is required when the user did  connect to the server using SSL or
@@ -3591,22 +3591,6 @@
     return !cancelled;
   }
 
-  private Type getConnectionType(final ConnectionWrapper conn)
-  {
-    if (conn.isSSL())
-    {
-      return LDAPS;
-    }
-    else if (conn.isStartTLS())
-    {
-      return START_TLS;
-    }
-    else
-    {
-      return LDAP;
-    }
-  }
-
   /**
    * Tells whether there is a Global Administrator defined in the server for which the connection is
    * provided.

--
Gitblit v1.10.0