This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 2712b332588a0d2b755fac28936b2b19916a0f92 Author: Benoit Tellier <[email protected]> AuthorDate: Wed Jun 9 08:14:51 2021 +0700 JAMES-3594 Implement ReadOnlyLDAPUsersDAO with UnboundID library --- .../apache/james/user/ldap/ReadOnlyLDAPUser.java | 4 +-- .../james/user/ldap/ReadOnlyLDAPUsersDAO.java | 35 ++++++++-------------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java index b185e9f..09ecc6c 100644 --- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java +++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java @@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory; import com.unboundid.ldap.sdk.BindResult; import com.unboundid.ldap.sdk.LDAPConnectionPool; import com.unboundid.ldap.sdk.LDAPException; +import com.unboundid.ldap.sdk.ResultCode; import reactor.core.publisher.Mono; @@ -145,7 +146,6 @@ public class ReadOnlyLDAPUser implements User, Serializable { private boolean doVerifyPassword(String password) throws LDAPException { BindResult bindResult = connectionPool.bindAndRevertAuthentication(userDN, password); - return bindResult.getResultCode() - .intValue() == 0; + return bindResult.getResultCode() == ResultCode.SUCCESS; } } diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java index 0dc4ecd..d400aed 100644 --- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java +++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java @@ -113,7 +113,6 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable { SocketFactory socketFactory = null; LDAPConnection ldapConnection = new LDAPConnection(socketFactory, connectionOptions, uri.getHost(), uri.getPort(), ldapConfiguration.getPrincipal(), ldapConfiguration.getCredentials()); ldapConnectionPool = new LDAPConnectionPool(ldapConnection, 4); - // TODO implement retries } @PreDestroy @@ -155,19 +154,14 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable { } private Set<String> getAllUsersFromLDAP() throws LDAPException { - LDAPConnection connection = ldapConnectionPool.getConnection(); - try { - SearchResult searchResult = connection.search(ldapConfiguration.getUserBase(), - SearchScope.SUB, - filterTemplate); + SearchResult searchResult = ldapConnectionPool.search(ldapConfiguration.getUserBase(), + SearchScope.SUB, + filterTemplate); - return searchResult.getSearchEntries() - .stream() - .map(entry -> entry.getObjectClassAttribute().getName()) - .collect(Guavate.toImmutableSet()); - } finally { - ldapConnectionPool.releaseConnection(connection); - } + return searchResult.getSearchEntries() + .stream() + .map(entry -> entry.getObjectClassAttribute().getName()) + .collect(Guavate.toImmutableSet()); } /** @@ -229,16 +223,11 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable { } private Optional<ReadOnlyLDAPUser> buildUser(String userDN) throws LDAPException { - LDAPConnection connection = ldapConnectionPool.getConnection(); - try { - SearchResultEntry userAttributes = connection.getEntry(userDN); - Optional<String> userName = Optional.ofNullable(userAttributes.getAttributeValue(ldapConfiguration.getUserIdAttribute())); - return userName - .map(Username::of) - .map(username -> new ReadOnlyLDAPUser(username, userDN, ldapConnectionPool, ldapConfiguration)); - } finally { - ldapConnectionPool.releaseConnection(connection); - } + SearchResultEntry userAttributes = ldapConnectionPool.getEntry(userDN); + Optional<String> userName = Optional.ofNullable(userAttributes.getAttributeValue(ldapConfiguration.getUserIdAttribute())); + return userName + .map(Username::of) + .map(username -> new ReadOnlyLDAPUser(username, userDN, ldapConnectionPool, ldapConfiguration)); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
