From 97f7d39cf58d120fc84c99c20bdb36ae35476ab3 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 04 Apr 2016 13:38:35 +0000
Subject: [PATCH] Use HostPort throughout

---
 opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java |  141 ++++++++++++++++------------------------------
 1 files changed, 50 insertions(+), 91 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 6477a39..952be21 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
@@ -12,9 +12,8 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions Copyright 2012-2015 ForgeRock AS.
+ * Portions Copyright 2012-2016 ForgeRock AS.
  */
-
 package org.opends.admin.ads.util;
 
 import java.io.IOException;
@@ -44,6 +43,7 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.replication.plugin.EntryHistorical;
 import org.opends.server.schema.SchemaConstants;
+import org.opends.server.types.HostPort;
 
 import com.forgerock.opendj.cli.Utils;
 
@@ -383,18 +383,7 @@
    */
   public static String getLdapUrl(InitialLdapContext ctx)
   {
-    String s = null;
-    try
-    {
-      s = (String)ctx.getEnvironment().get(Context.PROVIDER_URL);
-    }
-    catch (NamingException ne)
-    {
-      // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Naming exception getting environment of "+ctx,
-          ne));
-    }
-    return s;
+    return getEnvProperty(ctx, Context.PROVIDER_URL);
   }
 
   /**
@@ -404,18 +393,8 @@
    */
   public static String getHostName(InitialLdapContext ctx)
   {
-    String s = null;
-    try
-    {
-      URI ldapURL = new URI(getLdapUrl(ctx));
-      s = ldapURL.getHost();
-    }
-    catch (Throwable t)
-    {
-      // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Error getting host: "+t, t));
-    }
-    return s;
+    HostPort hp = getHostPort(ctx);
+    return hp != null ? hp.getHost() : null;
   }
 
   /**
@@ -425,18 +404,8 @@
    */
   public static int getPort(InitialLdapContext ctx)
   {
-    int port = -1;
-    try
-    {
-      URI ldapURL = new URI(getLdapUrl(ctx));
-      port = ldapURL.getPort();
-    }
-    catch (Throwable t)
-    {
-      // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Error getting port: "+t, t));
-    }
-    return port;
+    HostPort hp = getHostPort(ctx);
+    return hp != null ? hp.getPort() : -1;
   }
 
   /**
@@ -446,9 +415,19 @@
    * @return the host port representation of the server to which this
    * context is connected.
    */
-  public static String getHostPort(InitialLdapContext ctx)
+  public static HostPort getHostPort(InitialLdapContext ctx)
   {
-    return getHostName(ctx)+":"+getPort(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;
+    }
   }
 
   /**
@@ -458,18 +437,7 @@
    */
   public static String getBindDN(InitialLdapContext ctx)
   {
-    String bindDN = null;
-    try
-    {
-      bindDN = (String)ctx.getEnvironment().get(Context.SECURITY_PRINCIPAL);
-    }
-    catch (NamingException ne)
-    {
-      // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Naming exception getting environment of "+ctx,
-          ne));
-    }
-    return bindDN;
+    return getEnvProperty(ctx, Context.SECURITY_PRINCIPAL);
   }
 
   /**
@@ -479,18 +447,17 @@
    */
   public static String getBindPassword(InitialLdapContext ctx)
   {
-    String bindPwd = null;
-    try
-    {
-      bindPwd = (String)ctx.getEnvironment().get(Context.SECURITY_CREDENTIALS);
-    }
-    catch (NamingException ne)
-    {
+    return getEnvProperty(ctx, Context.SECURITY_CREDENTIALS);
+  }
+
+  private static String getEnvProperty(InitialLdapContext ctx, String property) {
+    try {
+      return (String) ctx.getEnvironment().get(property);
+    } catch (NamingException ne) {
       // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Naming exception getting environment of "+ctx,
-          ne));
+      logger.warn(LocalizableMessage.raw("Naming exception getting environment of " + ctx, ne));
+      return null;
     }
-    return bindPwd;
   }
 
   /**
@@ -501,17 +468,16 @@
    */
   public static boolean isSSL(InitialLdapContext ctx)
   {
-    boolean isSSL = false;
     try
     {
-      isSSL = getLdapUrl(ctx).toLowerCase().startsWith("ldaps");
+      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;
     }
-    return isSSL;
   }
 
   /**
@@ -522,19 +488,7 @@
    */
   public static boolean isStartTLS(InitialLdapContext ctx)
   {
-    boolean isStartTLS = false;
-    try
-    {
-      isStartTLS = "true".equalsIgnoreCase((String)ctx.getEnvironment().get(
-            STARTTLS_PROPERTY));
-    }
-    catch (NamingException ne)
-    {
-      // This is really strange.  Seems like a bug somewhere.
-      logger.warn(LocalizableMessage.raw("Naming exception getting environment of "+ctx,
-          ne));
-    }
-    return isStartTLS;
+    return "true".equalsIgnoreCase(getEnvProperty(ctx, STARTTLS_PROPERTY));
   }
 
   /**
@@ -551,7 +505,6 @@
   public static boolean canConnectAsAdministrativeUser(String ldapUrl,
       String dn, String pwd, int timeout)
   {
-    boolean canConnectAsAdministrativeUser = false;
     try
     {
       InitialLdapContext ctx;
@@ -566,15 +519,15 @@
             null, null, null);
       }
 
-      canConnectAsAdministrativeUser = connectedAsAdministrativeUser(ctx);
+      return connectedAsAdministrativeUser(ctx);
     } catch (NamingException ne)
     {
       // Nothing to do.
+      return false;
     } catch (Throwable t)
     {
       throw new IllegalStateException("Unexpected throwable.", t);
     }
-    return canConnectAsAdministrativeUser;
   }
 
   /**
@@ -586,12 +539,9 @@
    */
   public static boolean connectedAsAdministrativeUser(InitialLdapContext ctx)
   {
-    boolean connectedAsAdministrativeUser = false;
     try
     {
-      /*
-       * Search for the config to check that it is the directory manager.
-       */
+      // Search for the config to check that it is the directory manager.
       SearchControls searchControls = new SearchControls();
       searchControls.setSearchScope(
           SearchControls. OBJECT_SCOPE);
@@ -618,15 +568,15 @@
               "Unexpected error closing enumeration on cn=Config entry", ex));
         }
       }
-      connectedAsAdministrativeUser = true;
+      return true;
     } catch (NamingException ne)
     {
       // Nothing to do.
+      return false;
     } catch (Throwable t)
     {
       throw new IllegalStateException("Unexpected throwable.", t);
     }
-    return connectedAsAdministrativeUser;
   }
 
   /**
@@ -682,10 +632,8 @@
 
     if (throwException)
     {
-      NamingException xx;
-      ConnectException x = new ConnectException("Connection timed out");
-      xx = new CommunicationException("Connection timed out");
-      xx.initCause(x);
+      NamingException xx = new CommunicationException("Connection timed out");
+      xx.initCause(new ConnectException("Connection timed out"));
       throw xx;
     }
 
@@ -710,6 +658,17 @@
 
   /**
    * Returns the LDAP URL for the provided parameters.
+   * @param hostPort the host name and LDAP port.
+   * @param useSSL whether to use SSL or not.
+   * @return the LDAP URL for the provided parameters.
+   */
+  public static String getLDAPUrl(HostPort hostPort, boolean useSSL)
+  {
+    return getLDAPUrl(hostPort.getHost(), hostPort.getPort(), useSSL);
+  }
+
+  /**
+   * Returns the LDAP URL for the provided parameters.
    * @param host the host name.
    * @param port the LDAP port.
    * @param useSSL whether to use SSL or not.

--
Gitblit v1.10.0