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
The following commit(s) were added to refs/heads/master by this push:
new ed16de1e87 [IMPROVEMENT] Use a single LDAP pool accross James
ed16de1e87 is described below
commit ed16de1e87a0e0fd13d05592bea53ceeb39df0c5
Author: Benoit TELLIER <[email protected]>
AuthorDate: Mon Jul 22 22:34:10 2024 +0200
[IMPROVEMENT] Use a single LDAP pool accross James
---
.../james/data/LdapUsersRepositoryModule.java | 13 ++++-
.../james/user/ldap/ReadOnlyLDAPUsersDAO.java | 23 +++-----
.../user/ldap/ReadOnlyUsersLDAPRepository.java | 26 ++++++---
.../james/user/ldap/LdapHealthCheckTest.java | 4 +-
.../ReadOnlyUsersLDAPRepositoryEmptyListTest.java | 7 ++-
.../ReadOnlyUsersLDAPRepositoryInvalidDnTest.java | 7 ++-
.../user/ldap/ReadOnlyUsersLDAPRepositoryTest.java | 67 ++++++++++++----------
...nlyUsersLDAPRepositoryWithLDAPFailoverTest.java | 21 ++++---
...LDAPRepositoryWithLocalPartAsLoginNameTest.java | 7 ++-
.../transport/matchers/SenderHasLDAPAttribute.java | 13 +++--
.../transport/matchers/SenderIsInLDAPGroup.java | 8 ++-
11 files changed, 113 insertions(+), 83 deletions(-)
diff --git
a/server/container/guice/data-ldap/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java
b/server/container/guice/data-ldap/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java
index 815a525f2e..a00114a336 100644
---
a/server/container/guice/data-ldap/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java
+++
b/server/container/guice/data-ldap/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java
@@ -22,6 +22,7 @@ import
org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.james.core.healthcheck.HealthCheck;
import org.apache.james.server.core.configuration.ConfigurationProvider;
import org.apache.james.user.api.UsersRepository;
+import org.apache.james.user.ldap.LDAPConnectionFactory;
import org.apache.james.user.ldap.LdapHealthCheck;
import org.apache.james.user.ldap.LdapRepositoryConfiguration;
import org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository;
@@ -34,6 +35,8 @@ import com.google.inject.Scopes;
import com.google.inject.Singleton;
import com.google.inject.multibindings.Multibinder;
import com.google.inject.multibindings.ProvidesIntoSet;
+import com.unboundid.ldap.sdk.LDAPConnectionPool;
+import com.unboundid.ldap.sdk.LDAPException;
public class LdapUsersRepositoryModule extends AbstractModule {
@Override
@@ -50,12 +53,18 @@ public class LdapUsersRepositoryModule extends
AbstractModule {
configurationProvider.getConfiguration("usersrepository"));
}
+ @Provides
+ @Singleton
+ public LDAPConnectionPool provideConfiguration(LdapRepositoryConfiguration
configuration) throws LDAPException {
+ return new
LDAPConnectionFactory(configuration).getLdapConnectionPool();
+ }
+
@ProvidesIntoSet
- InitializationOperation configureLdap(LdapRepositoryConfiguration
configuration, ReadOnlyUsersLDAPRepository usersRepository) {
+ InitializationOperation configureLdap(ConfigurationProvider
configurationProvider, ReadOnlyUsersLDAPRepository usersRepository) {
return InitilizationOperationBuilder
.forClass(ReadOnlyUsersLDAPRepository.class)
.init(() -> {
- usersRepository.configure(configuration);
+
usersRepository.configure(configurationProvider.getConfiguration("usersrepository"));
usersRepository.init();
});
}
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 263fdef354..39b1409ec6 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
@@ -64,31 +64,24 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO,
Configurable {
private static final Logger LOGGER =
LoggerFactory.getLogger(ReadOnlyLDAPUsersDAO.class);
private final GaugeRegistry gaugeRegistry;
- private LdapRepositoryConfiguration ldapConfiguration;
+ private final LdapRepositoryConfiguration ldapConfiguration;
private LDAPConnectionPool ldapConnectionPool;
private Optional<Filter> userExtraFilter;
private Filter objectClassFilter;
private Filter listingFilter;
@Inject
- public ReadOnlyLDAPUsersDAO(GaugeRegistry gaugeRegistry) {
+ public ReadOnlyLDAPUsersDAO(GaugeRegistry gaugeRegistry,
+ LDAPConnectionPool ldapConnectionPool,
+ LdapRepositoryConfiguration configuration) {
this.gaugeRegistry = gaugeRegistry;
+ this.ldapConnectionPool = ldapConnectionPool;
+ this.ldapConfiguration = configuration;
}
- /**
- * Extracts the parameters required by the repository instance from the
- * James server configuration data. The fields extracted include
- *
- * @param configuration
- * An encapsulation of the James server configuration data.
- */
@Override
- public void configure(HierarchicalConfiguration<ImmutableNode>
configuration) throws ConfigurationException {
- configure(LdapRepositoryConfiguration.from(configuration));
- }
+ public void configure(HierarchicalConfiguration<ImmutableNode> config)
throws ConfigurationException {
- public void configure(LdapRepositoryConfiguration configuration) {
- ldapConfiguration = configuration;
}
/**
@@ -108,8 +101,6 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO,
Configurable {
+ ldapConfiguration.getConnectionTimeout() + '\n' +
"readTimeout: " + ldapConfiguration.getReadTimeout());
}
- ldapConnectionPool = new
LDAPConnectionFactory(ldapConfiguration).getLdapConnectionPool();
-
userExtraFilter = Optional.ofNullable(ldapConfiguration.getFilter())
.map(Throwing.function(Filter::create).sneakyThrow());
objectClassFilter = Filter.createEqualityFilter("objectClass",
ldapConfiguration.getUserObjectClass());
diff --git
a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
index 2d0d6121fd..bffa18e32a 100644
---
a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
+++
b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
@@ -33,6 +33,9 @@ import org.apache.james.user.api.InvalidUsernameException;
import org.apache.james.user.api.UsersRepositoryException;
import org.apache.james.user.lib.UsersRepositoryImpl;
+import com.unboundid.ldap.sdk.LDAPConnectionPool;
+import com.unboundid.ldap.sdk.LDAPException;
+
import reactor.core.publisher.Mono;
/**
@@ -158,11 +161,22 @@ import reactor.core.publisher.Mono;
*
*/
public class ReadOnlyUsersLDAPRepository extends
UsersRepositoryImpl<ReadOnlyLDAPUsersDAO> implements Configurable {
- private LdapRepositoryConfiguration ldapConfiguration;
+ private final LdapRepositoryConfiguration ldapConfiguration;
@Inject
- public ReadOnlyUsersLDAPRepository(DomainList domainList, GaugeRegistry
gaugeRegistry) {
- super(domainList, new ReadOnlyLDAPUsersDAO(gaugeRegistry));
+ public ReadOnlyUsersLDAPRepository(DomainList domainList,
+ GaugeRegistry gaugeRegistry,
+ LDAPConnectionPool ldapConnectionPool,
+ LdapRepositoryConfiguration
configuration) {
+ super(domainList, new ReadOnlyLDAPUsersDAO(gaugeRegistry,
ldapConnectionPool, configuration));
+ this.ldapConfiguration = configuration;
+ }
+
+ public ReadOnlyUsersLDAPRepository(DomainList domainList,
+ GaugeRegistry gaugeRegistry,
+ LdapRepositoryConfiguration
configuration) throws LDAPException {
+ super(domainList, new ReadOnlyLDAPUsersDAO(gaugeRegistry, new
LDAPConnectionFactory(configuration).getLdapConnectionPool(), configuration));
+ this.ldapConfiguration = configuration;
}
/**
@@ -176,15 +190,9 @@ public class ReadOnlyUsersLDAPRepository extends
UsersRepositoryImpl<ReadOnlyLDA
*/
@Override
public void configure(HierarchicalConfiguration<ImmutableNode>
configuration) throws ConfigurationException {
- configure(LdapRepositoryConfiguration.from(configuration));
super.configure(configuration);
}
- public void configure(LdapRepositoryConfiguration configuration) {
- usersDAO.configure(configuration);
- this.ldapConfiguration = configuration;
- }
-
/**
* Initialises the user-repository instance. It will create a connection to
* the LDAP host using the supplied configuration.
diff --git
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapHealthCheckTest.java
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapHealthCheckTest.java
index 535a144516..107dc6c4ee 100644
---
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapHealthCheckTest.java
+++
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapHealthCheckTest.java
@@ -45,8 +45,8 @@ class LdapHealthCheckTest {
@BeforeEach
public void setUp() throws Exception {
- ReadOnlyUsersLDAPRepository ldapUserRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
-
ldapUserRepository.configure(ReadOnlyUsersLDAPRepositoryTest.ldapRepositoryConfigurationWithVirtualHosting(ldapContainer));
+ ReadOnlyUsersLDAPRepository ldapUserRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+
LdapRepositoryConfiguration.from(ReadOnlyUsersLDAPRepositoryTest.ldapRepositoryConfigurationWithVirtualHosting(ldapContainer)));
ldapUserRepository.init();
ldapHealthCheck = new LdapHealthCheck(ldapUserRepository);
}
diff --git
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryEmptyListTest.java
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryEmptyListTest.java
index cac4c6d7a8..8a02234178 100644
---
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryEmptyListTest.java
+++
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryEmptyListTest.java
@@ -108,9 +108,10 @@ class ReadOnlyUsersLDAPRepositoryEmptyListTest {
}
}
- private ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode>
ldapRepositoryConfiguration) throws Exception {
- ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry());
- ldapRepository.configure(ldapRepositoryConfiguration);
+ private ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode> configuration)
throws Exception {
+ ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
+ ldapRepository.configure(configuration);
ldapRepository.init();
return ldapRepository;
}
diff --git
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryInvalidDnTest.java
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryInvalidDnTest.java
index 0f53e94c66..7358389097 100644
---
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryInvalidDnTest.java
+++
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryInvalidDnTest.java
@@ -84,9 +84,10 @@ class ReadOnlyUsersLDAPRepositoryInvalidDnTest {
assertThat(ldapRepository.countUsers()).isEqualTo(0);
}
- private ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode>
ldapRepositoryConfiguration) throws Exception {
- ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry());
- ldapRepository.configure(ldapRepositoryConfiguration);
+ private ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode> configuration)
throws Exception {
+ ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
+ ldapRepository.configure(configuration);
ldapRepository.init();
return ldapRepository;
}
diff --git
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index 23059246eb..bbad94794f 100644
---
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -80,7 +80,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty("[@filter]", "INVALID!!!");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
assertThatThrownBy(usersLDAPRepository::init)
@@ -96,7 +97,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfigurationWithVirtualHosting(ldapContainer);
configuration.addProperty("domains.extra.org",
"ou=whatever,dc=james,dc=org");
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
+ usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
}
@@ -139,8 +141,10 @@ class ReadOnlyUsersLDAPRepositoryTest {
@BeforeEach
void setUp() throws Exception {
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
- usersLDAPRepository.configure(configuration(ldapContainer));
+ PropertyListConfiguration configuration =
configuration(ldapContainer);
+ usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
+ usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
}
@@ -183,7 +187,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty("[@filter]", "(sn=james-user)");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
@@ -195,7 +200,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty("[@filter]", "(sn=nomatch)");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
@@ -207,7 +213,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty("[@filter]", "(sn=nomatch)");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
@@ -219,7 +226,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty("[@filter]", "(sn=nomatch)");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
@@ -427,8 +435,10 @@ class ReadOnlyUsersLDAPRepositoryTest {
@Test
void supportVirtualHostingShouldReturnFalseByDefault() throws
Exception {
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
-
usersLDAPRepository.configure(ldapRepositoryConfiguration(ldapContainer));
+ HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
+ usersLDAPRepository.configure(configuration);
assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
}
@@ -438,7 +448,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty(SUPPORTS_VIRTUAL_HOSTING, "true");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
assertThat(usersLDAPRepository.supportVirtualHosting()).isTrue();
@@ -449,21 +460,23 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty(SUPPORTS_VIRTUAL_HOSTING, "false");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
}
@Test
- void configureShouldThrowOnNonBooleanValueForSupportsVirtualHosting() {
+ void configureShouldThrowOnNonBooleanValueForSupportsVirtualHosting()
throws Exception {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty(SUPPORTS_VIRTUAL_HOSTING, "bad");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
-
- assertThatThrownBy(() ->
usersLDAPRepository.configure(configuration))
- .isInstanceOf(ConversionException.class);
+ assertThatThrownBy(() -> {
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
+ usersLDAPRepository.configure(configuration);
+ }).isInstanceOf(ConversionException.class);
}
}
@@ -472,10 +485,8 @@ class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfiguration(ldapContainer);
configuration.addProperty("[@ldapHost]",
ldapContainer.getLdapsBadHost());
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
- usersLDAPRepository.configure(configuration);
-
- assertThatThrownBy(usersLDAPRepository::init)
+ assertThatThrownBy(() -> new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration)))
.isInstanceOf(LDAPException.class)
.hasMessageContaining("SSLHandshakeException");
}
@@ -487,19 +498,17 @@ class ReadOnlyUsersLDAPRepositoryTest {
configuration.addProperty("[@trustAllCerts]", "true");
Awaitility.await().untilAsserted(() -> {
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry());
- usersLDAPRepository.configure(configuration);
-
- assertThatThrownBy(usersLDAPRepository::init)
+ assertThatThrownBy(() -> new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration)))
.isInstanceOf(LDAPException.class)
.hasMessageContaining("SSLHandshakeException");
});
}
- private static ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode>
ldapRepositoryConfiguration,
- DomainList
domainList) throws Exception {
- ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry());
- ldapRepository.configure(ldapRepositoryConfiguration);
+ private static ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode> configuration,
DomainList domainList) throws Exception {
+ ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
+ ldapRepository.configure(configuration);
ldapRepository.init();
return ldapRepository;
}
diff --git
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest.java
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest.java
index f1718a2b29..92f0a6b319 100644
---
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest.java
+++
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest.java
@@ -67,7 +67,8 @@ class ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfigurationWithVirtualHosting(List.of(masterLdap, slaveLdap));
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
+ usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
}
@@ -139,10 +140,8 @@ class ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest {
masterLdap.pause();
slaveLdap.pause();
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
- usersLDAPRepository.configure(configuration);
-
- assertThatThrownBy(() -> usersLDAPRepository.init())
+ assertThatThrownBy(() -> usersLDAPRepository = new
ReadOnlyUsersLDAPRepository(new SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration)))
.isInstanceOf(LDAPException.class)
.hasMessageContaining("A client-side timeout was encountered");
}
@@ -152,7 +151,8 @@ class ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfigurationWithVirtualHosting(List.of(masterLdap, slaveLdap));
masterLdap.pause();
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
+ usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
assertThatCode(() -> usersLDAPRepository.init())
@@ -165,7 +165,8 @@ class ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfigurationWithVirtualHosting(List.of(masterLdap, slaveLdap));
slaveLdap.pause();
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
+ usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
assertThatCode(() -> usersLDAPRepository.init())
@@ -177,7 +178,8 @@ class ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest {
void shouldSupportBackwardCompatibilityForTheLegacyLdapHostProperty()
throws Exception {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfigurationWithVirtualHosting(List.of(masterLdap, slaveLdap),
"ldapHost");
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
+ usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
assertThatCode(() -> usersLDAPRepository.init())
@@ -190,7 +192,8 @@ class ReadOnlyUsersLDAPRepositoryWithLDAPFailoverTest {
HierarchicalConfiguration<ImmutableNode> configuration =
ldapRepositoryConfigurationWithVirtualHosting(
Set.of(masterLdap.getLdapHost(), slaveLdap.getLdapsHost()));
- usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry());
+ usersLDAPRepository = new ReadOnlyUsersLDAPRepository(new
SimpleDomainList(), new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
usersLDAPRepository.configure(configuration);
usersLDAPRepository.init();
diff --git
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLocalPartAsLoginNameTest.java
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLocalPartAsLoginNameTest.java
index 42975d7d7a..a41a9a009e 100644
---
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLocalPartAsLoginNameTest.java
+++
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryWithLocalPartAsLoginNameTest.java
@@ -290,10 +290,11 @@ public class
ReadOnlyUsersLDAPRepositoryWithLocalPartAsLoginNameTest {
}
- private static ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode>
ldapRepositoryConfiguration,
+ private static ReadOnlyUsersLDAPRepository
startUsersRepository(HierarchicalConfiguration<ImmutableNode> configuration,
DomainList
domainList) throws Exception {
- ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry());
- ldapRepository.configure(ldapRepositoryConfiguration);
+ ReadOnlyUsersLDAPRepository ldapRepository = new
ReadOnlyUsersLDAPRepository(domainList, new NoopGaugeRegistry(),
+ LdapRepositoryConfiguration.from(configuration));
+ ldapRepository.configure(configuration);
ldapRepository.init();
return ldapRepository;
}
diff --git
a/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderHasLDAPAttribute.java
b/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderHasLDAPAttribute.java
index fb1acfd76f..943dc65d0b 100644
---
a/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderHasLDAPAttribute.java
+++
b/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderHasLDAPAttribute.java
@@ -78,13 +78,16 @@ public class SenderHasLDAPAttribute extends GenericMatcher {
private String[] attributes;
@Inject
- public SenderHasLDAPAttribute(LdapRepositoryConfiguration configuration)
throws LDAPException {
+ public SenderHasLDAPAttribute(LDAPConnectionPool ldapConnectionPool,
LdapRepositoryConfiguration configuration) {
this.configuration = configuration;
- ldapConnectionPool = new
LDAPConnectionFactory(this.configuration).getLdapConnectionPool();
-
- userExtraFilter = Optional.ofNullable(configuration.getFilter())
+ this.ldapConnectionPool = ldapConnectionPool;
+ this.userExtraFilter = Optional.ofNullable(configuration.getFilter())
.map(Throwing.function(Filter::create).sneakyThrow());
- objectClassFilter = Filter.createEqualityFilter("objectClass",
configuration.getUserObjectClass());
+ this.objectClassFilter = Filter.createEqualityFilter("objectClass",
configuration.getUserObjectClass());
+ }
+
+ public SenderHasLDAPAttribute(LdapRepositoryConfiguration configuration)
throws LDAPException {
+ this(new LDAPConnectionFactory(configuration).getLdapConnectionPool(),
configuration);
}
@Override
diff --git
a/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderIsInLDAPGroup.java
b/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderIsInLDAPGroup.java
index 8ca5cc4cf8..5a8928fbb9 100644
---
a/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderIsInLDAPGroup.java
+++
b/server/mailet/ldap/src/main/java/org/apache/james/transport/matchers/SenderIsInLDAPGroup.java
@@ -59,9 +59,13 @@ public class SenderIsInLDAPGroup extends GenericMatcher {
private String groupDN;
@Inject
- public SenderIsInLDAPGroup(LdapRepositoryConfiguration configuration)
throws LDAPException {
+ public SenderIsInLDAPGroup(LDAPConnectionPool ldapConnectionPool,
LdapRepositoryConfiguration configuration) {
this.configuration = configuration;
- ldapConnectionPool = new
LDAPConnectionFactory(this.configuration).getLdapConnectionPool();
+ this.ldapConnectionPool = ldapConnectionPool;
+ }
+
+ public SenderIsInLDAPGroup(LdapRepositoryConfiguration configuration)
throws LDAPException {
+ this(new LDAPConnectionFactory(configuration).getLdapConnectionPool(),
configuration);
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]