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 d1affd2426 [FIX] LdapRepositoryConfiguration should interoperate with
UsersRepositoryImpl (#1855)
d1affd2426 is described below
commit d1affd2426bd19709a514d3599b4ae362df10c2f
Author: Benoit TELLIER <[email protected]>
AuthorDate: Fri Dec 15 08:14:14 2023 +0100
[FIX] LdapRepositoryConfiguration should interoperate with
UsersRepositoryImpl (#1855)
---
server/data/data-ldap/pom.xml | 4 ++
.../user/ldap/LdapRepositoryConfiguration.java | 4 +-
.../user/ldap/LdapRepositoryConfigurationTest.java | 66 ++++++++++++++++++++++
.../src/test/resources/usersrepository-default.xml | 8 +++
.../usersrepository-enableVirtualHosting.xml | 9 +++
.../usersrepository-supportsVirtualHosting.xml | 9 +++
6 files changed, 99 insertions(+), 1 deletion(-)
diff --git a/server/data/data-ldap/pom.xml b/server/data/data-ldap/pom.xml
index e73cd85777..7bc5740b22 100644
--- a/server/data/data-ldap/pom.xml
+++ b/server/data/data-ldap/pom.xml
@@ -69,6 +69,10 @@
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
</dependency>
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ </dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
diff --git
a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/LdapRepositoryConfiguration.java
b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/LdapRepositoryConfiguration.java
index 2a962790ac..4548d5d01d 100644
---
a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/LdapRepositoryConfiguration.java
+++
b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/LdapRepositoryConfiguration.java
@@ -39,6 +39,7 @@ import com.google.common.collect.ImmutableMap;
public class LdapRepositoryConfiguration {
public static final String SUPPORTS_VIRTUAL_HOSTING =
"supportsVirtualHosting";
+ public static final String SUPPORTS_VIRTUAL_HOSTING_FALLBACK =
"enableVirtualHosting";
private static final int NO_CONNECTION_TIMEOUT = 0;
private static final int NO_READ_TIME_OUT = 0;
@@ -183,7 +184,8 @@ public class LdapRepositoryConfiguration {
// Default is to use connection pooling
int connectionTimeout = configuration.getInt("[@connectionTimeout]",
NO_CONNECTION_TIMEOUT);
int readTimeout = configuration.getInt("[@readTimeout]",
NO_READ_TIME_OUT);
- boolean supportsVirtualHosting =
configuration.getBoolean(SUPPORTS_VIRTUAL_HOSTING, !ENABLE_VIRTUAL_HOSTING);
+ boolean supportsVirtualHostingFallback =
configuration.getBoolean(SUPPORTS_VIRTUAL_HOSTING_FALLBACK,
!ENABLE_VIRTUAL_HOSTING);
+ boolean supportsVirtualHosting =
configuration.getBoolean(SUPPORTS_VIRTUAL_HOSTING,
supportsVirtualHostingFallback);
HierarchicalConfiguration<ImmutableNode> restrictionConfig = null;
// Check if we have a restriction we can use
diff --git
a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapRepositoryConfigurationTest.java
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapRepositoryConfigurationTest.java
new file mode 100644
index 0000000000..4c5e4e4eef
--- /dev/null
+++
b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/LdapRepositoryConfigurationTest.java
@@ -0,0 +1,66 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.user.ldap;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.InputStream;
+
+import org.apache.commons.configuration2.XMLConfiguration;
+import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
+import org.apache.commons.configuration2.builder.fluent.Parameters;
+import org.apache.commons.configuration2.convert.DisabledListDelimiterHandler;
+import org.apache.commons.configuration2.io.FileHandler;
+import org.apache.james.util.ClassLoaderUtils;
+import org.junit.jupiter.api.Test;
+
+class LdapRepositoryConfigurationTest {
+ public static XMLConfiguration getConfig(String configurationFile) throws
Exception {
+ InputStream configStream =
ClassLoaderUtils.getSystemResourceAsSharedStream(configurationFile);
+ FileBasedConfigurationBuilder<XMLConfiguration> builder = new
FileBasedConfigurationBuilder<>(XMLConfiguration.class)
+ .configure(new Parameters()
+ .xml()
+ .setListDelimiterHandler(new DisabledListDelimiterHandler()));
+ XMLConfiguration xmlConfiguration = builder.getConfiguration();
+ FileHandler fileHandler = new FileHandler(xmlConfiguration);
+ fileHandler.load(configStream);
+ configStream.close();
+
+ return xmlConfiguration;
+ }
+
+ @Test
+ void shouldNotBeVirtualHostedByDefault() throws Exception {
+ LdapRepositoryConfiguration configuration =
LdapRepositoryConfiguration.from(getConfig("usersrepository-default.xml"));
+ assertThat(configuration.supportsVirtualHosting()).isFalse();
+ }
+
+ @Test
+ void shouldSupportFallbackValue() throws Exception {
+ LdapRepositoryConfiguration configuration =
LdapRepositoryConfiguration.from(getConfig("usersrepository-enableVirtualHosting.xml"));
+ assertThat(configuration.supportsVirtualHosting()).isTrue();
+ }
+
+ @Test
+ void shouldSupportLDAPSpecificValue() throws Exception {
+ LdapRepositoryConfiguration configuration =
LdapRepositoryConfiguration.from(getConfig("usersrepository-supportsVirtualHosting.xml"));
+ assertThat(configuration.supportsVirtualHosting()).isTrue();
+ }
+}
\ No newline at end of file
diff --git
a/server/data/data-ldap/src/test/resources/usersrepository-default.xml
b/server/data/data-ldap/src/test/resources/usersrepository-default.xml
new file mode 100644
index 0000000000..ac45df46e0
--- /dev/null
+++ b/server/data/data-ldap/src/test/resources/usersrepository-default.xml
@@ -0,0 +1,8 @@
+<usersrepository name="LocalUsers"
class="org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository"
+ ldapHost="ldap://myldapserver:389"
+ principal="uid=ldapUser,ou=system"
+ credentials="password"
+ userBase="ou=People,o=myorg.com,ou=system"
+ userIdAttribute="uid"
+ userObjectClass="person">
+</usersrepository>
\ No newline at end of file
diff --git
a/server/data/data-ldap/src/test/resources/usersrepository-enableVirtualHosting.xml
b/server/data/data-ldap/src/test/resources/usersrepository-enableVirtualHosting.xml
new file mode 100644
index 0000000000..ed001b8f8c
--- /dev/null
+++
b/server/data/data-ldap/src/test/resources/usersrepository-enableVirtualHosting.xml
@@ -0,0 +1,9 @@
+<usersrepository name="LocalUsers"
class="org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository"
+ ldapHost="ldap://myldapserver:389"
+ principal="uid=ldapUser,ou=system"
+ credentials="password"
+ userBase="ou=People,o=myorg.com,ou=system"
+ userIdAttribute="uid"
+ userObjectClass="person">
+ <enableVirtualHosting>true</enableVirtualHosting>
+</usersrepository>
\ No newline at end of file
diff --git
a/server/data/data-ldap/src/test/resources/usersrepository-supportsVirtualHosting.xml
b/server/data/data-ldap/src/test/resources/usersrepository-supportsVirtualHosting.xml
new file mode 100644
index 0000000000..d4c2cc1023
--- /dev/null
+++
b/server/data/data-ldap/src/test/resources/usersrepository-supportsVirtualHosting.xml
@@ -0,0 +1,9 @@
+<usersrepository name="LocalUsers"
class="org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository"
+ ldapHost="ldap://myldapserver:389"
+ principal="uid=ldapUser,ou=system"
+ credentials="password"
+ userBase="ou=People,o=myorg.com,ou=system"
+ userIdAttribute="uid"
+ userObjectClass="person">
+ <supportsVirtualHosting>true</supportsVirtualHosting>
+</usersrepository>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]