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/util/Utilities.java | 103 ++++++++++++++++++---------------------------------
1 files changed, 37 insertions(+), 66 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
index d0b2531..b606029 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
@@ -23,10 +23,10 @@
import static org.forgerock.opendj.ldap.DereferenceAliasesPolicy.*;
import static org.forgerock.opendj.ldap.SearchScope.*;
import static org.forgerock.opendj.ldap.requests.Requests.*;
-import static org.opends.admin.ads.util.ConnectionUtils.*;
import static org.opends.admin.ads.util.PreferredConnection.Type.*;
import static org.opends.messages.AdminToolMessages.*;
import static org.opends.quicksetup.Installation.*;
+import static org.opends.server.schema.SchemaConstants.*;
import static org.opends.server.util.SchemaUtils.*;
import java.awt.Color;
@@ -58,11 +58,7 @@
import javax.naming.CompositeName;
import javax.naming.InvalidNameException;
import javax.naming.Name;
-import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapName;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
@@ -111,6 +107,7 @@
import org.forgerock.opendj.ldap.schema.SchemaBuilder;
import org.forgerock.opendj.ldap.schema.SchemaElement;
import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.opendj.ldif.ConnectionEntryReader;
import org.opends.admin.ads.util.ConnectionWrapper;
import org.opends.guitools.controlpanel.ControlPanel;
import org.opends.guitools.controlpanel.browser.IconPool;
@@ -2141,7 +2138,7 @@
}
/**
- * Returns the InitialLdapContext to connect to the administration connector
+ * Returns the connection to connect to the administration connector
* of the server using the information in the ControlCenterInfo object (which
* provides the host and administration connector port to be used) and some
* LDAP credentials.
@@ -2150,13 +2147,15 @@
* @param controlInfo the object which provides the connection parameters.
* @param bindDN the base DN to be used to bind.
* @param pwd the password to be used to bind.
- * @return the InitialLdapContext connected to the server.
+ * @return the connection to the server.
* @throws NamingException if there was a problem connecting to the server
* or the provided credentials do not have enough rights.
+ * @throws IOException if there was a problem connecting to the server
+ * or the provided credentials do not have enough rights.
* @throws ConfigReadException if there is an error reading the configuration.
*/
public static ConnectionWrapper getAdminDirContext(ControlPanelInfo controlInfo, String bindDN, String pwd)
- throws NamingException, ConfigReadException
+ throws NamingException, IOException, ConfigReadException
{
String usedUrl = controlInfo.getAdminConnectorURL();
if (usedUrl == null)
@@ -2168,115 +2167,87 @@
// Search for the config to check that it is the directory manager.
ConnectionWrapper conn = new ConnectionWrapper(
usedUrl, LDAPS, bindDN, pwd, controlInfo.getConnectTimeout(), controlInfo.getTrustManager());
- checkCanReadConfig(conn.getLdapContext());
+ checkCanReadConfig(conn);
return conn;
}
/**
- * Returns the InitialLdapContext to connect to the server using the
+ * Returns the connection to connect to the server using the
* information in the ControlCenterInfo object (which provides the host, port
* and protocol to be used) and some LDAP credentials. It also tests that
* the provided credentials have enough rights to read the configuration.
* @param controlInfo the object which provides the connection parameters.
* @param bindDN the base DN to be used to bind.
* @param pwd the password to be used to bind.
- * @return the InitialLdapContext connected to the server.
+ * @return the connection to the server.
* @throws NamingException if there was a problem connecting to the server
* or the provided credentials do not have enough rights.
+ * @throws IOException if there was a problem connecting to the server
+ * or the provided credentials do not have enough rights.
* @throws ConfigReadException if there is an error reading the configuration.
*/
- public static InitialLdapContext getUserDataDirContext(
- ControlPanelInfo controlInfo,
- String bindDN, String pwd) throws NamingException, ConfigReadException
+ public static ConnectionWrapper getUserDataDirContext(ControlPanelInfo controlInfo,
+ String bindDN, String pwd) throws NamingException, IOException, ConfigReadException
{
- InitialLdapContext ctx;
- String usedUrl;
+ ConnectionWrapper conn;
if (controlInfo.connectUsingStartTLS())
{
- usedUrl = controlInfo.getStartTLSURL();
+ String usedUrl = controlInfo.getStartTLSURL();
if (usedUrl == null)
{
throw new ConfigReadException(
ERR_COULD_NOT_FIND_VALID_LDAPURL.get());
}
- ctx = Utils.createStartTLSContext(usedUrl,
- bindDN, pwd, controlInfo.getConnectTimeout(), null,
- controlInfo.getTrustManager(), null);
+ conn = new ConnectionWrapper(usedUrl, START_TLS,
+ bindDN, pwd, controlInfo.getConnectTimeout(), controlInfo.getTrustManager());
}
else if (controlInfo.connectUsingLDAPS())
{
- usedUrl = controlInfo.getLDAPSURL();
+ String usedUrl = controlInfo.getLDAPSURL();
if (usedUrl == null)
{
throw new ConfigReadException(
ERR_COULD_NOT_FIND_VALID_LDAPURL.get());
}
- ctx = createLdapsContext(usedUrl,
- bindDN, pwd, controlInfo.getConnectTimeout(), null,
- controlInfo.getTrustManager(), null);
+ conn = new ConnectionWrapper(usedUrl, LDAPS,
+ bindDN, pwd, controlInfo.getConnectTimeout(), controlInfo.getTrustManager());
}
else
{
- usedUrl = controlInfo.getLDAPURL();
+ String usedUrl = controlInfo.getLDAPURL();
if (usedUrl == null)
{
throw new ConfigReadException(
ERR_COULD_NOT_FIND_VALID_LDAPURL.get());
}
- ctx = createLdapContext(usedUrl,
- bindDN, pwd, controlInfo.getConnectTimeout(), null);
+ conn = new ConnectionWrapper(usedUrl, LDAP,
+ bindDN, pwd, controlInfo.getConnectTimeout(), controlInfo.getTrustManager());
}
- checkCanReadConfig(ctx);
- return ctx;
+ checkCanReadConfig(conn);
+ return conn;
}
/**
* Checks that the provided connection can read cn=config.
- * @param ctx the connection to be tested.
- * @throws NamingException if an error occurs while reading cn=config.
+ *
+ * @param conn
+ * the connection to be tested.
+ * @throws IOException
+ * if an error occurs while reading cn=config.
*/
- private static void checkCanReadConfig(InitialLdapContext ctx)
- throws NamingException
+ private static void checkCanReadConfig(ConnectionWrapper conn) throws IOException
{
// Search for the config to check that it is the directory manager.
- SearchControls searchControls = new SearchControls();
- searchControls.setSearchScope(SearchControls.OBJECT_SCOPE);
- searchControls.setReturningAttributes(new String[] { SchemaConstants.NO_ATTRIBUTES });
- NamingEnumeration<SearchResult> sr =
- ctx.search("cn=config", "objectclass=*", searchControls);
- try
+ SearchRequest request = newSearchRequest("cn=config", BASE_OBJECT, "objectclass=*", NO_ATTRIBUTES);
+ try (ConnectionEntryReader entryReader = conn.getConnection().search(request))
{
- while (sr.hasMore())
+ while (entryReader.hasNext())
{
- sr.next();
+ entryReader.readEntry();
}
}
- finally
- {
- sr.close();
- }
- }
-
- /**
- * Ping the specified InitialLdapContext.
- * This method sends a search request on the root entry of the DIT
- * and forward the corresponding exception (if any).
- * @param ctx the InitialLdapContext to be "pinged".
- * @throws NamingException if the ping could not be performed.
- */
- public static void pingDirContext(InitialLdapContext ctx)
- throws NamingException {
- SearchControls sc = new SearchControls(
- SearchControls.OBJECT_SCOPE,
- 0, // count limit
- 0, // time limit
- new String[0], // No attributes
- false, // Don't return bound object
- false // Don't dereference link
- );
- ctx.search("", "objectClass=*", sc);
}
/**
@@ -2290,7 +2261,7 @@
*/
public static void ping(ConnectionWrapper connWrapper) throws NamingException
{
- SearchRequest request = newSearchRequest("", BASE_OBJECT, "objectClass=*", "1.1")
+ SearchRequest request = newSearchRequest("", BASE_OBJECT, "objectClass=*", NO_ATTRIBUTES)
.setSizeLimit(0)
.setTimeLimit(0)
.setDereferenceAliasesPolicy(NEVER);
--
Gitblit v1.10.0