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