From 5b7afcc00e450bf639610f27af7a1c3a3562a020 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Thu, 19 May 2016 15:10:45 +0000
Subject: [PATCH] Rest2Ldap: Removed connection reuse, simplify authorization filtering, use factory methods, add more unit tests.

---
 opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java
index 4d77253..dc4dcd3 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/authz/SimpleBindStrategy.java
@@ -16,6 +16,7 @@
 package org.forgerock.opendj.rest2ldap.authz;
 
 import static org.forgerock.opendj.ldap.requests.Requests.newSimpleBindRequest;
+import static org.forgerock.opendj.rest2ldap.authz.Utils.close;
 import static org.forgerock.services.context.SecurityContext.AUTHZID_DN;
 import static org.forgerock.services.context.SecurityContext.AUTHZID_ID;
 import static org.forgerock.util.Reject.checkNotNull;
@@ -37,7 +38,7 @@
 import org.forgerock.util.promise.Promise;
 
 /** Bind using a computed DN from a template and the current request/context. */
-public final class SimpleBindStrategy implements AuthenticationStrategy {
+final class SimpleBindStrategy implements AuthenticationStrategy {
 
     private final ConnectionFactory connectionFactory;
     private final Schema schema;
@@ -64,11 +65,13 @@
 
     @Override
     public Promise<SecurityContext, LdapException> authenticate(final String username, final String password,
-            final Context parentContext, final AtomicReference<Connection> authenticatedConnectionHolder) {
+            final Context parentContext) {
+        final AtomicReference<Connection> connectionHolder = new AtomicReference<>();
         return connectionFactory
                 .getConnectionAsync()
-                .thenAsync(doSimpleBind(authenticatedConnectionHolder, parentContext, username,
-                           DN.format(bindDNTemplate, schema, username), password));
+                .thenAsync(doSimpleBind(connectionHolder, parentContext, username,
+                           DN.format(bindDNTemplate, schema, username), password))
+                .thenFinally(close(connectionHolder));
     }
 
     static AsyncFunction<Connection, SecurityContext, LdapException> doSimpleBind(

--
Gitblit v1.10.0