From a4e2fc0298e8d60aa0e4bcfd3304303d952e0972 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Fri, 28 Nov 2014 14:52:21 +0000
Subject: [PATCH] OPENDJ-1607 Revert changes to revision 11339
---
opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java | 71 ++++++++++++++++++++++-------------
1 files changed, 45 insertions(+), 26 deletions(-)
diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
index 7e5e26a..a0a3d26 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
@@ -16,6 +16,11 @@
package org.forgerock.opendj.rest2ldap;
+import static org.forgerock.opendj.ldap.requests.Requests.newSearchRequest;
+import static org.forgerock.opendj.ldap.schema.CoreSchema.getEntryUUIDAttributeType;
+import static org.forgerock.opendj.rest2ldap.ReadOnUpdatePolicy.CONTROLS;
+import static org.forgerock.opendj.rest2ldap.Utils.ensureNotNull;
+
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
@@ -45,10 +50,11 @@
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.Entry;
import org.forgerock.opendj.ldap.EntryNotFoundException;
+import org.forgerock.opendj.ldap.LdapException;
import org.forgerock.opendj.ldap.FailoverLoadBalancingAlgorithm;
import org.forgerock.opendj.ldap.Filter;
+import org.forgerock.opendj.ldap.LDAPConnectionFactory;
import org.forgerock.opendj.ldap.LDAPOptions;
-import org.forgerock.opendj.ldap.LdapException;
import org.forgerock.opendj.ldap.LinkedAttribute;
import org.forgerock.opendj.ldap.MultipleEntriesFoundException;
import org.forgerock.opendj.ldap.RDN;
@@ -58,18 +64,12 @@
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.TimeoutResultException;
import org.forgerock.opendj.ldap.TrustManagers;
+import org.forgerock.opendj.ldap.requests.BindRequest;
+import org.forgerock.opendj.ldap.requests.Requests;
import org.forgerock.opendj.ldap.requests.SearchRequest;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.Schema;
-import static java.util.concurrent.TimeUnit.*;
-
-import static org.forgerock.opendj.ldap.Connections.*;
-import static org.forgerock.opendj.ldap.requests.Requests.*;
-import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
-import static org.forgerock.opendj.rest2ldap.ReadOnUpdatePolicy.*;
-import static org.forgerock.opendj.rest2ldap.Utils.*;
-
/**
* Provides core factory methods and builders for constructing LDAP resource
* collections.
@@ -970,28 +970,31 @@
Math.max(configuration.get("connectionPoolSize").defaultTo(10).asInteger(), 1);
final int heartBeatIntervalSeconds =
Math.max(configuration.get("heartBeatIntervalSeconds").defaultTo(30).asInteger(), 1);
- final int heartBeatTimeoutMS =
- Math.max(configuration.get("heartBeatTimeoutMilliSeconds").defaultTo(500).asInteger(), 100);
- final LDAPOptions options =
- new LDAPOptions().setHeartBeatInterval(heartBeatIntervalSeconds, SECONDS)
- .setTimeout(heartBeatTimeoutMS, MILLISECONDS);
+ final int heartBeatTimeoutMilliSeconds =
+ Math.max(configuration.get("heartBeatTimeoutMilliSeconds").defaultTo(500)
+ .asInteger(), 100);
// Parse authentication parameters.
+ final BindRequest bindRequest;
if (configuration.isDefined("authentication")) {
final JsonValue authn = configuration.get("authentication");
if (authn.isDefined("simple")) {
final JsonValue simple = authn.get("simple");
- options.setBindRequest(newSimpleBindRequest(simple.get("bindDN").required().asString(),
- simple.get("bindPassword").required().asString().toCharArray()));
+ bindRequest =
+ Requests.newSimpleBindRequest(simple.get("bindDN").required().asString(),
+ simple.get("bindPassword").required().asString().toCharArray());
} else {
throw new IllegalArgumentException("Only simple authentication is supported");
}
+ } else {
+ bindRequest = null;
}
// Parse SSL/StartTLS parameters.
final ConnectionSecurity connectionSecurity =
configuration.get("connectionSecurity").defaultTo(ConnectionSecurity.NONE).asEnum(
ConnectionSecurity.class);
+ final LDAPOptions options = new LDAPOptions();
if (connectionSecurity != ConnectionSecurity.NONE) {
try {
// Configure SSL.
@@ -1035,18 +1038,24 @@
throw new IllegalArgumentException("No primaryLDAPServers");
}
final ConnectionFactory primary =
- parseLDAPServers(primaryLDAPServers, connectionPoolSize, heartBeatIntervalSeconds, options);
+ parseLDAPServers(primaryLDAPServers, bindRequest, connectionPoolSize,
+ heartBeatIntervalSeconds, heartBeatTimeoutMilliSeconds, options);
// Parse secondary data center(s).
final JsonValue secondaryLDAPServers = configuration.get("secondaryLDAPServers");
- ConnectionFactory secondary = null;
+ final ConnectionFactory secondary;
if (secondaryLDAPServers.isList()) {
if (secondaryLDAPServers.size() > 0) {
secondary =
- parseLDAPServers(secondaryLDAPServers, connectionPoolSize, heartBeatIntervalSeconds, options);
+ parseLDAPServers(secondaryLDAPServers, bindRequest, connectionPoolSize,
+ heartBeatIntervalSeconds, heartBeatTimeoutMilliSeconds, options);
+ } else {
+ secondary = null;
}
} else if (!secondaryLDAPServers.isNull()) {
throw new IllegalArgumentException("Invalid secondaryLDAPServers configuration");
+ } else {
+ secondary = null;
}
// Create fail-over.
@@ -1085,22 +1094,32 @@
}
}
- private static ConnectionFactory parseLDAPServers(final JsonValue config, final int connectionPoolSize,
- final int heartBeatIntervalSeconds, final LDAPOptions options) {
+ private static ConnectionFactory parseLDAPServers(final JsonValue config,
+ final BindRequest bindRequest, final int connectionPoolSize,
+ final int heartBeatIntervalSeconds, final int heartBeatTimeoutMilliSeconds,
+ final LDAPOptions options) {
final List<ConnectionFactory> servers = new ArrayList<ConnectionFactory>(config.size());
-
for (final JsonValue server : config) {
final String host = server.get("hostname").required().asString();
final int port = server.get("port").required().asInteger();
- ConnectionFactory factory = newLDAPConnectionFactory(host, port, options);
+ ConnectionFactory factory = new LDAPConnectionFactory(host, port, options);
+ factory =
+ Connections.newHeartBeatConnectionFactory(factory,
+ heartBeatIntervalSeconds * 1000, heartBeatTimeoutMilliSeconds,
+ TimeUnit.MILLISECONDS);
+ if (bindRequest != null) {
+ factory = Connections.newAuthenticatedConnectionFactory(factory, bindRequest);
+ }
if (connectionPoolSize > 1) {
- factory = newCachedConnectionPool(factory, 0, connectionPoolSize, 60L, SECONDS);
+ factory =
+ Connections.newCachedConnectionPool(factory, 0, connectionPoolSize, 60L,
+ TimeUnit.SECONDS);
}
servers.add(factory);
}
-
if (servers.size() > 1) {
- return newLoadBalancer(new RoundRobinLoadBalancingAlgorithm(servers, heartBeatIntervalSeconds, SECONDS));
+ return Connections.newLoadBalancer(new RoundRobinLoadBalancingAlgorithm(servers,
+ heartBeatIntervalSeconds, TimeUnit.SECONDS));
} else {
return servers.get(0);
}
--
Gitblit v1.10.0