From 5d7be546948d1d019e3d29932b222d69412643dd Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 01 Jul 2014 15:23:25 +0000
Subject: [PATCH] Code cleanups.

---
 opends/src/guitools/org/opends/guitools/controlpanel/browser/LDAPConnectionPool.java |  198 ++++++++++---------------------------------------
 1 files changed, 41 insertions(+), 157 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/browser/LDAPConnectionPool.java b/opends/src/guitools/org/opends/guitools/controlpanel/browser/LDAPConnectionPool.java
index 6ed2cc3..89d2275 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/browser/LDAPConnectionPool.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/browser/LDAPConnectionPool.java
@@ -22,12 +22,11 @@
  *
  *
  *      Copyright 2008-2010 Sun Microsystems, Inc.
+ *      Portions Copyright 2014 ForgeRock AS
  */
-
 package org.opends.guitools.controlpanel.browser;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
 
 import javax.naming.NamingException;
@@ -42,6 +41,8 @@
 import org.opends.server.types.LDAPURL;
 import org.opends.server.types.SearchScope;
 
+import static org.opends.admin.ads.util.ConnectionUtils.*;
+
 /**
  * An LDAPConnectionPool is a pool of LDAPConnection.
  * <BR><BR>
@@ -71,11 +72,12 @@
  */
 public class LDAPConnectionPool {
 
-  HashMap<String, AuthRecord> authTable = new HashMap<String, AuthRecord>();
-  HashMap<String, ConnectionRecord> connectionTable =
+  private final HashMap<String, AuthRecord> authTable =
+      new HashMap<String, AuthRecord>();
+  private final HashMap<String, ConnectionRecord> connectionTable =
     new HashMap<String, ConnectionRecord>();
 
-  ArrayList<ReferralAuthenticationListener> listeners;
+  private ArrayList<ReferralAuthenticationListener> listeners;
 
   private Control[] requestControls = new Control[] {};
   private ApplicationTrustManager trustManager;
@@ -89,28 +91,20 @@
    * connection pool, <CODE>false</CODE> otherwise.
    */
   public boolean isConnectionRegistered(InitialLdapContext ctx) {
-    boolean isConnectionRegistered = false;
     for (String key : connectionTable.keySet())
     {
       ConnectionRecord cr = connectionTable.get(key);
-      if (cr.ctx != null) {
-        isConnectionRegistered =
-         ConnectionUtils.getHostName(cr.ctx).equals(
-             ConnectionUtils.getHostName(ctx)) &&
-        (ConnectionUtils.getPort(cr.ctx) == ConnectionUtils.getPort(ctx)) &&
-        ConnectionUtils.getBindDN(cr.ctx).equals(
-            ConnectionUtils.getBindDN(ctx)) &&
-        ConnectionUtils.getBindPassword(cr.ctx).equals(
-            ConnectionUtils.getBindPassword(ctx)) &&
-        (ConnectionUtils.isSSL(cr.ctx) == ConnectionUtils.isSSL(ctx)) &&
-        (ConnectionUtils.isStartTLS(cr.ctx) == ConnectionUtils.isStartTLS(ctx));
-      }
-      if (isConnectionRegistered)
-      {
-        break;
+      if (cr.ctx != null
+          && getHostName(cr.ctx).equals(getHostName(ctx))
+          && getPort(cr.ctx) == getPort(ctx)
+          && getBindDN(cr.ctx).equals(getBindDN(ctx))
+          && getBindPassword(cr.ctx).equals(getBindPassword(ctx))
+          && isSSL(cr.ctx) == isSSL(ctx)
+          && isStartTLS(cr.ctx) == isStartTLS(ctx)) {
+        return true;
       }
     }
-    return isConnectionRegistered;
+    return false;
   }
 
   /**
@@ -119,12 +113,7 @@
    */
   public void registerConnection(InitialLdapContext ctx) {
     registerAuth(ctx);
-    LDAPURL url = makeLDAPUrl(
-                  ConnectionUtils.getHostName(ctx),
-                  ConnectionUtils.getPort(ctx),
-                  "",
-                  ConnectionUtils.isSSL(ctx)
-                  );
+    LDAPURL url = makeLDAPUrl(ctx);
     String key = makeKeyFromLDAPUrl(url);
     ConnectionRecord cr = new ConnectionRecord();
     cr.ctx = ctx;
@@ -141,11 +130,7 @@
   public void unregisterConnection(InitialLdapContext ctx)
   throws NamingException
   {
-    LDAPURL url = makeLDAPUrl(
-        ConnectionUtils.getHostName(ctx),
-        ConnectionUtils.getPort(ctx),
-        "",
-        ConnectionUtils.isSSL(ctx));
+    LDAPURL url = makeLDAPUrl(ctx);
     unRegisterAuth(url);
     String key = makeKeyFromLDAPUrl(url);
     connectionTable.remove(key);
@@ -164,17 +149,6 @@
   }
 
   /**
-   * Removes a referral authentication listener.
-   * @param listener the referral authentication listener.
-   */
-  public void removeReferralAuthenticationListener(
-      ReferralAuthenticationListener listener) {
-    if (listeners != null) {
-      listeners.remove(listener);
-    }
-  }
-
-  /**
    * Returns an LDAPConnection for accessing the specified url.
    * If no connection are available for the protocol/host/port
    * of the URL, getConnection() makes a new one and call connect().
@@ -287,35 +261,17 @@
     if (targetRecord == null) { // ldc is not in _connectionTable -> bug
       throw new IllegalArgumentException("Invalid LDAP connection");
     }
-    else {
-      synchronized(targetRecord) {
-        targetRecord.counter--;
-        if ((targetRecord.counter == 0) && targetRecord.disconnectAfterUse) {
-          disconnectAndRemove(targetRecord);
-        }
-      }
-    }
-  }
 
-
-  /**
-   * Disconnect the connections which are not being used.
-   * Connections being used will be disconnected as soon
-   * as they are released.
-   */
-  public synchronized void flush() {
-    for (ConnectionRecord cr : connectionTable.values())
+    synchronized (targetRecord)
     {
-      if (cr.counter <= 0) {
-        disconnectAndRemove(cr);
-      }
-      else {
-        cr.disconnectAfterUse = true;
+      targetRecord.counter--;
+      if (targetRecord.counter == 0 && targetRecord.disconnectAfterUse)
+      {
+        disconnectAndRemove(targetRecord);
       }
     }
   }
 
-
   /**
    * Register authentication data.
    * If authentication data are already available for the protocol/host/port
@@ -331,14 +287,11 @@
    * provided authentication (for testing purposes).
    * @throws NamingException if an error occurs connecting.
    */
-  public void registerAuth(LDAPURL ldapUrl, String dn, String pw,
-      boolean connect)
-  throws NamingException {
+  private void registerAuth(LDAPURL ldapUrl, String dn, String pw,
+      boolean connect) throws NamingException {
 
     String key = makeKeyFromLDAPUrl(ldapUrl);
-    AuthRecord ar;
-    ar = new AuthRecord();
-    ar.ldapUrl  = ldapUrl;
+    final AuthRecord ar = new AuthRecord();
     ar.dn       = dn;
     ar.password = pw;
 
@@ -371,15 +324,10 @@
    * @param ctx the connection that we retrieve the authentication information
    * from.
    */
-  public void registerAuth(InitialLdapContext ctx) {
-    LDAPURL url = makeLDAPUrl(
-      ConnectionUtils.getHostName(ctx),
-      ConnectionUtils.getPort(ctx),
-      "",
-      ConnectionUtils.isSSL(ctx));
+  private void registerAuth(InitialLdapContext ctx) {
+    LDAPURL url = makeLDAPUrl(ctx);
     try {
-      registerAuth(url, ConnectionUtils.getBindDN(ctx),
-          ConnectionUtils.getBindPassword(ctx), false);
+      registerAuth(url, getBindDN(ctx), getBindPassword(ctx), false);
     }
     catch (NamingException x) {
       throw new RuntimeException("Bug");
@@ -395,7 +343,7 @@
    * unregistered.
    * @throws NamingException if the unbind fails.
    */
-  public void unRegisterAuth(LDAPURL ldapUrl) throws NamingException {
+  private void unRegisterAuth(LDAPURL ldapUrl) throws NamingException {
     String key = makeKeyFromLDAPUrl(ldapUrl);
 
     authTable.remove(key);
@@ -403,45 +351,6 @@
   }
 
   /**
-   * Get authentication DN registered for this url.
-   * @param ldapUrl the LDAP URL for which we want to get authentication DN.
-   * @return the bind DN of the authentication.
-   */
-  public synchronized String getAuthDN(LDAPURL ldapUrl) {
-    String result;
-    String key = makeKeyFromLDAPUrl(ldapUrl);
-    AuthRecord ar = authTable.get(key);
-    if (ar == null) {
-      result = null;
-    }
-    else {
-      result = ar.dn;
-    }
-    return result;
-  }
-
-
-  /**
-   * Get authentication password registered for this url.
-   * @param ldapUrl the LDAP URL for which we want to get authentication
-   * password.
-   * @return the password of the authentication.
-   */
-  public synchronized String getAuthPassword(LDAPURL ldapUrl) {
-    String result;
-    String key = makeKeyFromLDAPUrl(ldapUrl);
-    AuthRecord ar = authTable.get(key);
-    if (ar == null) {
-      result = null;
-    }
-    else {
-      result = ar.password;
-    }
-    return result;
-  }
-
-
-  /**
    * Disconnect the connection associated to a record
    * and remove the record from connectionTable.
    * @param cr the ConnectionRecord to remove.
@@ -490,8 +399,7 @@
    */
   private static String makeKeyFromRecord(ConnectionRecord rec) {
     String protocol = ConnectionUtils.isSSL(rec.ctx) ? "LDAPS" : "LDAP";
-    return protocol + ":" + ConnectionUtils.getHostName(rec.ctx) + ":" +
-    ConnectionUtils.getPort(rec.ctx);
+    return protocol + ":" + getHostName(rec.ctx) + ":" + getPort(rec.ctx);
   }
 
   /**
@@ -505,24 +413,18 @@
   private InitialLdapContext createLDAPConnection(LDAPURL ldapUrl,
       AuthRecord ar) throws NamingException
   {
-    InitialLdapContext ctx;
-
     // Take the base DN out of the URL and only keep the protocol, host and port
     ldapUrl = new LDAPURL(ldapUrl.getScheme(), ldapUrl.getHost(),
           ldapUrl.getPort(), (DN)null, null, null, null, null);
 
     if (isSecureLDAPUrl(ldapUrl))
     {
-      ctx = ConnectionUtils.createLdapsContext(ldapUrl.toString(), ar.dn,
+      return ConnectionUtils.createLdapsContext(ldapUrl.toString(), ar.dn,
           ar.password, getConnectTimeout(), null,
-          getTrustManager() , getKeyManager());
+          getTrustManager(), getKeyManager());
     }
-    else
-    {
-      ctx = ConnectionUtils.createLdapContext(ldapUrl.toString(), ar.dn,
-          ar.password, getConnectTimeout(), null);
-    }
-    return ctx;
+    return ConnectionUtils.createLdapContext(ldapUrl.toString(), ar.dn,
+        ar.password, getConnectTimeout(), null);
   }
 
   /**
@@ -579,26 +481,16 @@
    * @return <CODE>true</CODE> if the LDAP URL is secure and <CODE>false</CODE>
    * otherwise.
    */
-  public static boolean isSecureLDAPUrl(LDAPURL url) {
+  private static boolean isSecureLDAPUrl(LDAPURL url) {
     return !LDAPURL.DEFAULT_SCHEME.equalsIgnoreCase(url.getScheme());
   }
 
-
-  /**
-   * Make an url from the specified arguments.
-   * @param host the host.
-   * @param port the port.
-   * @param dn the dn.
-   * @param secure whether it is a secure URL or not.
-   * @return an LDAP URL from the specified arguments.
-   */
-  public static LDAPURL makeLDAPUrl(String host, int port, String dn,
-      boolean secure) {
+  private LDAPURL makeLDAPUrl(InitialLdapContext ctx) {
     return new LDAPURL(
-        secure ? "ldaps" : LDAPURL.DEFAULT_SCHEME,
-            host,
-            port,
-            dn,
+        isSSL(ctx) ? "ldaps" : LDAPURL.DEFAULT_SCHEME,
+            getHostName(ctx),
+            getPort(ctx),
+            "",
             null, // no attributes
             SearchScope.BASE_OBJECT,
             null, // No filter
@@ -643,20 +535,12 @@
         null); // No extensions
   }
 
-  /**
-   * Returns a collection of AuthRecord.
-   * @return a collection of AuthRecord.
-   */
-  Collection<?> getRegisteredAuthentication() {
-    return authTable.values();
-  }
 }
 
 /**
  * A structure representing authentication data.
  */
 class AuthRecord {
-  LDAPURL ldapUrl;
   String dn;
   String password;
 }

--
Gitblit v1.10.0