This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit e7a24c98a0ce58d73c4adee0d3ca01c4e1b42448
Author: Benoit TELLIER <[email protected]>
AuthorDate: Sat Mar 28 15:58:48 2026 +0100

    JAMES-4193 Use dependency injections to inject Encryption.Factory
---
 protocols/netty/pom.xml                            |  4 +++
 .../apache/james/protocols/netty/Encryption.java   |  2 +-
 .../apache/james/protocols/netty}/SslConfig.java   |  2 +-
 .../james/CassandraRabbitMQJamesServerMain.java    |  2 ++
 .../james/DistributedPOP3JamesServerMain.java      |  2 ++
 .../java/org/apache/james/JPAJamesServerMain.java  |  2 ++
 .../java/org/apache/james/JPAJamesServerMain.java  |  2 ++
 .../org/apache/james/MemoryJamesServerMain.java    |  3 ++
 .../org/apache/james/PostgresJamesServerMain.java  |  2 ++
 .../src/main/java/org/apache/james/Main.java       |  2 ++
 .../james/ProtocolConfigurationSanitizer.java      |  2 +-
 .../james/modules/LegacyEncryptionModule.java      | 37 ++++++++++++++++++++++
 .../james/modules/protocols/IMAPServerModule.java  |  8 +++--
 .../resources/META-INF/spring/loaders-context.xml  |  4 +++
 .../james/imapserver/netty/IMAPServerFactory.java  |  8 +++++
 .../imapserver/netty/IMAPHealthCheckTest.java      |  3 ++
 .../james/imapserver/netty/IMAPServerTest.java     |  2 ++
 .../protocols/lib/LegacyJavaEncryptionFactory.java | 13 ++++----
 .../lib/netty/AbstractConfigurableAsyncServer.java | 13 +++++---
 .../lib/AbstractConfigurableAsyncServerTest.java   |  1 +
 .../james/lmtpserver/netty/LMTPServerFactory.java  |  8 +++++
 .../apache/james/lmtpserver/LmtpServerTest.java    |  2 ++
 .../netty/ManageSieveServerFactory.java            |  8 +++++
 .../ManageSieveServerTestSystem.java               |  2 ++
 .../james/pop3server/netty/POP3ServerFactory.java  |  8 +++++
 .../apache/james/pop3server/POP3ServerTest.java    |  2 ++
 .../james/smtpserver/netty/SMTPServerFactory.java  |  8 +++++
 .../james/smtpserver/SMTPServerTestSystem.java     |  2 ++
 28 files changed, 139 insertions(+), 15 deletions(-)

diff --git a/protocols/netty/pom.xml b/protocols/netty/pom.xml
index b6b51de127..7fc49dcd16 100644
--- a/protocols/netty/pom.xml
+++ b/protocols/netty/pom.xml
@@ -66,6 +66,10 @@
             <groupId>io.projectreactor</groupId>
             <artifactId>reactor-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-configuration2</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
diff --git 
a/protocols/netty/src/main/java/org/apache/james/protocols/netty/Encryption.java
 
b/protocols/netty/src/main/java/org/apache/james/protocols/netty/Encryption.java
index 869d0e88dc..b1788b61fe 100644
--- 
a/protocols/netty/src/main/java/org/apache/james/protocols/netty/Encryption.java
+++ 
b/protocols/netty/src/main/java/org/apache/james/protocols/netty/Encryption.java
@@ -35,7 +35,7 @@ import io.netty.handler.ssl.SslHandler;
 public interface Encryption {
 
     interface Factory {
-        Encryption create() throws Exception;
+        Encryption create(SslConfig conf) throws Exception;
     }
 
     @VisibleForTesting
diff --git 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/SslConfig.java
 b/protocols/netty/src/main/java/org/apache/james/protocols/netty/SslConfig.java
similarity index 99%
rename from 
server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/SslConfig.java
rename to 
protocols/netty/src/main/java/org/apache/james/protocols/netty/SslConfig.java
index 3cd8d505bb..f185f43395 100644
--- 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/SslConfig.java
+++ 
b/protocols/netty/src/main/java/org/apache/james/protocols/netty/SslConfig.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.protocols.lib;
+package org.apache.james.protocols.netty;
 
 import org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.ex.ConfigurationException;
diff --git 
a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
 
b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
index 9d17f58a2d..ce9af6b50f 100644
--- 
a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
+++ 
b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
@@ -32,6 +32,7 @@ import org.apache.james.modules.BlobExportMechanismModule;
 import org.apache.james.modules.CassandraConsistencyTaskSerializationModule;
 import org.apache.james.modules.DistributedTaskManagerModule;
 import org.apache.james.modules.DistributedTaskSerializationModule;
+import org.apache.james.modules.LegacyEncryptionModule;
 import org.apache.james.modules.MailboxModule;
 import org.apache.james.modules.MailetProcessingModule;
 import org.apache.james.modules.RunArgumentsModule;
@@ -133,6 +134,7 @@ public class CassandraRabbitMQJamesServerMain implements 
JamesServerMain {
         new CassandraJmapModule(),
         new CassandraVacationModule(),
         new IMAPServerModule(),
+        new LegacyEncryptionModule(),
         new LMTPServerModule(),
         new ManageSieveServerModule(),
         new POP3ServerModule(),
diff --git 
a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesServerMain.java
 
b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesServerMain.java
index e858004f4a..0b799ca7dd 100644
--- 
a/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesServerMain.java
+++ 
b/server/apps/distributed-pop3-app/src/main/java/org/apache/james/DistributedPOP3JamesServerMain.java
@@ -39,6 +39,7 @@ import 
org.apache.james.modules.CassandraConsistencyTaskSerializationModule;
 import org.apache.james.modules.DistributedPop3Module;
 import org.apache.james.modules.DistributedTaskManagerModule;
 import org.apache.james.modules.DistributedTaskSerializationModule;
+import org.apache.james.modules.LegacyEncryptionModule;
 import org.apache.james.modules.MailboxModule;
 import org.apache.james.modules.MailetProcessingModule;
 import org.apache.james.modules.Pop3FixInconsistenciesWebAdminModule;
@@ -126,6 +127,7 @@ public class DistributedPOP3JamesServerMain implements 
JamesServerMain {
         new UserIdentityModule());
 
     public static final Module PROTOCOLS = Modules.combine(
+        new LegacyEncryptionModule(),
         new LMTPServerModule(),
         new JMAPServerModule(),
         JMAPModule.INSTANCE,
diff --git 
a/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java 
b/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java
index b41bd72e62..68ac1be026 100644
--- a/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java
+++ b/server/apps/jpa-app/src/main/java/org/apache/james/JPAJamesServerMain.java
@@ -22,6 +22,7 @@ package org.apache.james;
 import org.apache.james.data.UsersRepositoryModuleChooser;
 import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.store.extractor.JsoupTextExtractor;
+import org.apache.james.modules.LegacyEncryptionModule;
 import org.apache.james.modules.MailboxModule;
 import org.apache.james.modules.MailetProcessingModule;
 import org.apache.james.modules.RunArgumentsModule;
@@ -77,6 +78,7 @@ public class JPAJamesServerMain implements JamesServerMain {
 
     private static final Module PROTOCOLS = Modules.combine(
         new IMAPServerModule(),
+        new LegacyEncryptionModule(),
         new LMTPServerModule(),
         new ManageSieveServerModule(),
         new POP3ServerModule(),
diff --git 
a/server/apps/jpa-smtp-app/src/main/java/org/apache/james/JPAJamesServerMain.java
 
b/server/apps/jpa-smtp-app/src/main/java/org/apache/james/JPAJamesServerMain.java
index 7c517d2cc8..a48faf5fac 100644
--- 
a/server/apps/jpa-smtp-app/src/main/java/org/apache/james/JPAJamesServerMain.java
+++ 
b/server/apps/jpa-smtp-app/src/main/java/org/apache/james/JPAJamesServerMain.java
@@ -20,6 +20,7 @@
 package org.apache.james;
 
 import org.apache.james.data.UsersRepositoryModuleChooser;
+import org.apache.james.modules.LegacyEncryptionModule;
 import org.apache.james.modules.MailetProcessingModule;
 import org.apache.james.modules.RunArgumentsModule;
 import org.apache.james.modules.data.JPAAuthorizatorModule;
@@ -46,6 +47,7 @@ import com.google.inject.util.Modules;
 public class JPAJamesServerMain implements JamesServerMain {
 
     private static final Module PROTOCOLS = Modules.combine(
+        new LegacyEncryptionModule(),
         new ProtocolHandlerModule(),
         new SMTPServerModule(),
         new WebAdminServerModule(),
diff --git 
a/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java
 
b/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java
index 5adc1ebea1..da3a34aaf5 100644
--- 
a/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java
+++ 
b/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java
@@ -29,6 +29,7 @@ import 
org.apache.james.jmap.memory.pushsubscription.MemoryPushSubscriptionModul
 import org.apache.james.jwt.JwtConfiguration;
 import org.apache.james.modules.BlobExportMechanismModule;
 import org.apache.james.modules.BlobMemoryModule;
+import org.apache.james.modules.LegacyEncryptionModule;
 import org.apache.james.modules.MailboxModule;
 import org.apache.james.modules.MailetProcessingModule;
 import org.apache.james.modules.RunArgumentsModule;
@@ -111,6 +112,7 @@ public class MemoryJamesServerMain implements 
JamesServerMain {
 
     public static final Module PROTOCOLS = Modules.combine(
         new IMAPServerModule(),
+        new LegacyEncryptionModule(),
         new LMTPServerModule(),
         new ManageSieveServerModule(),
         new POP3ServerModule(),
@@ -140,6 +142,7 @@ public class MemoryJamesServerMain implements 
JamesServerMain {
 
     public static final Module SMTP_ONLY_MODULE = Modules.combine(
         MemoryJamesServerMain.IN_MEMORY_SERVER_MODULE,
+        new LegacyEncryptionModule(),
         new ProtocolHandlerModule(),
         new SMTPServerModule(),
         new RawPostDequeueDecoratorModule(),
diff --git 
a/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java
 
b/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java
index c8c0e8b041..55254401e0 100644
--- 
a/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java
+++ 
b/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java
@@ -33,6 +33,7 @@ import org.apache.james.json.DTO;
 import org.apache.james.json.DTOModule;
 import org.apache.james.modules.BlobExportMechanismModule;
 import org.apache.james.modules.DistributedTaskSerializationModule;
+import org.apache.james.modules.LegacyEncryptionModule;
 import org.apache.james.modules.MailboxModule;
 import org.apache.james.modules.MailetProcessingModule;
 import org.apache.james.modules.RunArgumentsModule;
@@ -130,6 +131,7 @@ public class PostgresJamesServerMain implements 
JamesServerMain {
 
     private static final Module PROTOCOLS = Modules.combine(
         new IMAPServerModule(),
+        new LegacyEncryptionModule(),
         new LMTPServerModule(),
         new ManageSieveServerModule(),
         new POP3ServerModule(),
diff --git 
a/server/apps/scaling-pulsar-smtp/src/main/java/org/apache/james/Main.java 
b/server/apps/scaling-pulsar-smtp/src/main/java/org/apache/james/Main.java
index 58f6a5319f..7fc3a55792 100644
--- a/server/apps/scaling-pulsar-smtp/src/main/java/org/apache/james/Main.java
+++ b/server/apps/scaling-pulsar-smtp/src/main/java/org/apache/james/Main.java
@@ -29,6 +29,7 @@ import 
org.apache.james.mailrepository.api.MailRepositoryFactory;
 import org.apache.james.mailrepository.api.MailRepositoryUrlStore;
 import org.apache.james.mailrepository.postgres.PostgresMailRepositoryFactory;
 import org.apache.james.mailrepository.postgres.PostgresMailRepositoryUrlStore;
+import org.apache.james.modules.LegacyEncryptionModule;
 import org.apache.james.modules.RunArgumentsModule;
 import org.apache.james.modules.data.MemoryDelegationStoreModule;
 import org.apache.james.modules.data.PostgresCommonModule;
@@ -70,6 +71,7 @@ public class Main implements JamesServerMain {
             new WebAdminServerModule(),
             new WebAdminMailOverWebModule());
     public static final Module PROTOCOLS = Modules.combine(
+            new LegacyEncryptionModule(),
             new SMTPServerModule(),
             new ProtocolHandlerModule());
     private static final Module BLOB_MODULE = Modules.combine(
diff --git 
a/server/container/guice/common/src/main/java/org/apache/james/ProtocolConfigurationSanitizer.java
 
b/server/container/guice/common/src/main/java/org/apache/james/ProtocolConfigurationSanitizer.java
index 5f70e9638b..22d3d2031f 100644
--- 
a/server/container/guice/common/src/main/java/org/apache/james/ProtocolConfigurationSanitizer.java
+++ 
b/server/container/guice/common/src/main/java/org/apache/james/ProtocolConfigurationSanitizer.java
@@ -26,7 +26,7 @@ import 
org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.tree.ImmutableNode;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.lifecycle.api.ConfigurationSanitizer;
-import org.apache.james.protocols.lib.SslConfig;
+import org.apache.james.protocols.netty.SslConfig;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
 import org.apache.james.utils.KeystoreCreator;
 
diff --git 
a/server/container/guice/common/src/main/java/org/apache/james/modules/LegacyEncryptionModule.java
 
b/server/container/guice/common/src/main/java/org/apache/james/modules/LegacyEncryptionModule.java
new file mode 100644
index 0000000000..e9359886cf
--- /dev/null
+++ 
b/server/container/guice/common/src/main/java/org/apache/james/modules/LegacyEncryptionModule.java
@@ -0,0 +1,37 @@
+/****************************************************************
+ * 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.modules;
+
+import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
+import org.apache.james.protocols.netty.Encryption;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+
+/**
+ * Default Guice module that binds {@link Encryption.Factory} to {@link 
LegacyJavaEncryptionFactory}.
+ * Override this binding to supply a custom SSL strategy.
+ */
+public class LegacyEncryptionModule extends AbstractModule {
+    @Override
+    protected void configure() {
+        
bind(Encryption.Factory.class).to(LegacyJavaEncryptionFactory.class).in(Scopes.SINGLETON);
+    }
+}
diff --git 
a/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java
 
b/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java
index 80a39d5725..3c3fc4ee3d 100644
--- 
a/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java
+++ 
b/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java
@@ -73,6 +73,7 @@ import org.apache.james.lifecycle.api.ConfigurationSanitizer;
 import org.apache.james.metrics.api.GaugeRegistry;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.lib.netty.CertificateReloadable;
+import org.apache.james.protocols.netty.Encryption;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
 import org.apache.james.utils.ClassName;
 import org.apache.james.utils.GuiceLoader;
@@ -132,8 +133,11 @@ public class IMAPServerModule extends AbstractModule {
                                            StatusResponseFactory 
statusResponseFactory,
                                            MetricFactory metricFactory,
                                            GaugeRegistry gaugeRegistry,
-                                           ConnectionCheckFactory 
connectionCheckFactory) {
-        return new IMAPServerFactory(fileSystem, imapSuiteLoader(guiceLoader, 
statusResponseFactory), metricFactory, gaugeRegistry, connectionCheckFactory);
+                                           ConnectionCheckFactory 
connectionCheckFactory,
+                                           Encryption.Factory 
encryptionFactory) {
+        IMAPServerFactory factory = new IMAPServerFactory(fileSystem, 
imapSuiteLoader(guiceLoader, statusResponseFactory), metricFactory, 
gaugeRegistry, connectionCheckFactory);
+        factory.setEncryptionFactory(encryptionFactory);
+        return factory;
     }
 
     DefaultProcessor provideClassImapProcessors(ImapPackage imapPackage, 
GuiceLoader guiceLoader, StatusResponseFactory statusResponseFactory) {
diff --git 
a/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
 
b/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
index 5fa887305e..55520ebf9d 100644
--- 
a/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
+++ 
b/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
@@ -121,6 +121,10 @@
     <!--<bean id="filesystem" 
class="org.apache.james.container.spring.filesystem.FileSystemImpl" 
autowire="byName"/>-->
     <bean id="filesystem" 
class="org.apache.james.container.spring.filesystem.ResourceLoaderFileSystem"/>
 
+    <bean id="encryptionFactory" 
class="org.apache.james.protocols.lib.LegacyJavaEncryptionFactory">
+        <constructor-arg ref="filesystem"/>
+    </bean>
+
     <bean id="sieveparser" class="org.apache.james.managesieve.jsieve.Parser"/>
 
 </beans>
diff --git 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServerFactory.java
 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServerFactory.java
index ab89490095..9cdcd4e79f 100644
--- 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServerFactory.java
+++ 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServerFactory.java
@@ -41,6 +41,7 @@ import org.apache.james.metrics.api.GaugeRegistry;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
 import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.netty.Encryption;
 
 import com.github.fge.lambdas.functions.ThrowingFunction;
 
@@ -51,6 +52,7 @@ public class IMAPServerFactory extends AbstractServerFactory 
implements Disconne
     protected final ImapMetrics imapMetrics;
     protected final GaugeRegistry gaugeRegistry;
     protected final ConnectionCheckFactory connectionCheckFactory;
+    protected Encryption.Factory encryptionFactory;
 
     @Inject
     @Deprecated
@@ -72,6 +74,11 @@ public class IMAPServerFactory extends AbstractServerFactory 
implements Disconne
         this.connectionCheckFactory = connectionCheckFactory;
     }
 
+    @Inject
+    public void setEncryptionFactory(Encryption.Factory encryptionFactory) {
+        this.encryptionFactory = encryptionFactory;
+    }
+
     protected IMAPServer createServer(HierarchicalConfiguration<ImmutableNode> 
config) {
         ImapSuite imapSuite = imapSuiteProvider.apply(config);
 
@@ -86,6 +93,7 @@ public class IMAPServerFactory extends AbstractServerFactory 
implements Disconne
         for (HierarchicalConfiguration<ImmutableNode> serverConfig: configs) {
             IMAPServer server = createServer(serverConfig);
             server.setFileSystem(fileSystem);
+            server.setEncryptionFactory(encryptionFactory);
             server.configure(serverConfig);
             servers.add(server);
         }
diff --git 
a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPHealthCheckTest.java
 
b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPHealthCheckTest.java
index 5915dfe363..a4b1408313 100644
--- 
a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPHealthCheckTest.java
+++ 
b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPHealthCheckTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.store.FakeAuthorizator;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.metrics.api.NoopGaugeRegistry;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
+import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
 import org.apache.james.protocols.lib.mock.ConfigLoader;
 import org.apache.james.server.core.filesystem.FileSystemImpl;
 import org.apache.james.util.ClassLoaderUtils;
@@ -94,6 +95,8 @@ public class IMAPHealthCheckTest {
             new NoopGaugeRegistry(),
             new DefaultConnectionCheckFactory());
 
+        imapServerFactory.setEncryptionFactory(new 
LegacyJavaEncryptionFactory(FileSystemImpl.forTestingWithConfigurationFromClasspath()));
+
         HierarchicalConfiguration<ImmutableNode> config = 
ConfigLoader.getConfig(ClassLoaderUtils.getSystemResourceAsSharedStream("imapServerHealthCheck.xml"));
         imapServerFactory.configure(config);
         imapServerFactory.init();
diff --git 
a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
 
b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
index 5c390bf09c..6d8bbe3747 100644
--- 
a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
+++ 
b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/IMAPServerTest.java
@@ -103,6 +103,7 @@ import 
org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.apache.james.protocols.api.OIDCSASLHelper;
 import org.apache.james.protocols.api.utils.BogusSslContextFactory;
 import org.apache.james.protocols.api.utils.BogusTrustManagerFactory;
+import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
 import org.apache.james.protocols.lib.mock.ConfigLoader;
 import org.apache.james.server.core.filesystem.FileSystemImpl;
 import org.apache.james.util.ClassLoaderUtils;
@@ -188,6 +189,7 @@ class IMAPServerTest {
 
         FileSystemImpl fileSystem = 
FileSystemImpl.forTestingWithConfigurationFromClasspath();
         imapServer.setFileSystem(fileSystem);
+        imapServer.setEncryptionFactory(new 
LegacyJavaEncryptionFactory(fileSystem));
 
         imapServer.configure(config);
         imapServer.init();
diff --git 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/LegacyJavaEncryptionFactory.java
 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/LegacyJavaEncryptionFactory.java
index fd44959abb..07a2754e2f 100644
--- 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/LegacyJavaEncryptionFactory.java
+++ 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/LegacyJavaEncryptionFactory.java
@@ -31,9 +31,11 @@ import javax.net.ssl.CertPathTrustManagerParameters;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.X509ExtendedKeyManager;
 
+import jakarta.inject.Inject;
+
 import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
 import org.apache.james.protocols.netty.Encryption;
+import org.apache.james.protocols.netty.SslConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,18 +46,17 @@ import nl.altindag.ssl.pem.util.PemUtils;
 import nl.altindag.ssl.trustmanager.trustoptions.TrustStoreTrustOptions;
 
 public class LegacyJavaEncryptionFactory implements Encryption.Factory {
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(AbstractConfigurableAsyncServer.class);
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(LegacyJavaEncryptionFactory.class);
 
     private final FileSystem fileSystem;
-    private final SslConfig sslConfig;
 
-    public LegacyJavaEncryptionFactory(FileSystem fileSystem, SslConfig 
sslConfig) {
+    @Inject
+    public LegacyJavaEncryptionFactory(FileSystem fileSystem) {
         this.fileSystem = fileSystem;
-        this.sslConfig = sslConfig;
     }
 
     @Override
-    public Encryption create() throws Exception {
+    public Encryption create(SslConfig sslConfig) throws Exception {
         SSLFactory.Builder sslFactoryBuilder = SSLFactory.builder()
                 .withSslContextAlgorithm("TLS");
         if (sslConfig.getKeystore() != null) {
diff --git 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
index cd99ca9b5c..639c418c0e 100644
--- 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
+++ 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
@@ -41,14 +41,13 @@ import org.apache.commons.configuration2.tree.ImmutableNode;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.lifecycle.api.Configurable;
-import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
-import org.apache.james.protocols.lib.SslConfig;
 import org.apache.james.protocols.lib.jmx.ServerMBean;
 import org.apache.james.protocols.netty.AbstractAsyncServer;
 import org.apache.james.protocols.netty.AbstractChannelPipelineFactory;
 import org.apache.james.protocols.netty.AbstractSSLAwareChannelPipelineFactory;
 import org.apache.james.protocols.netty.ChannelHandlerFactory;
 import org.apache.james.protocols.netty.Encryption;
+import org.apache.james.protocols.netty.SslConfig;
 import org.apache.james.util.Size;
 import org.apache.james.util.concurrent.NamedThreadFactory;
 import org.slf4j.Logger;
@@ -96,6 +95,8 @@ public abstract class AbstractConfigurableAsyncServer
 
     private FileSystem fileSystem;
 
+    private Encryption.Factory encryptionFactory;
+
     private boolean enabled;
 
     protected boolean proxyRequired;
@@ -123,6 +124,11 @@ public abstract class AbstractConfigurableAsyncServer
         this.fileSystem = filesystem;
     }
 
+    @Inject
+    public final void setEncryptionFactory(Encryption.Factory 
encryptionFactory) {
+        this.encryptionFactory = encryptionFactory;
+    }
+
     protected void registerMBean() {
 
         try {
@@ -387,8 +393,7 @@ public abstract class AbstractConfigurableAsyncServer
      */
     protected void buildSSLContext() throws Exception {
         if (sslConfig.useSSL() || sslConfig.useStartTLS()) {
-            encryption = new LegacyJavaEncryptionFactory(fileSystem, sslConfig)
-                .create();
+            encryption = encryptionFactory.create(sslConfig);
         }
     }
 
diff --git 
a/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/AbstractConfigurableAsyncServerTest.java
 
b/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/AbstractConfigurableAsyncServerTest.java
index 9f63c241bf..e907fed37e 100644
--- 
a/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/AbstractConfigurableAsyncServerTest.java
+++ 
b/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/AbstractConfigurableAsyncServerTest.java
@@ -134,6 +134,7 @@ class AbstractConfigurableAsyncServerTest {
     private void initTestServer(String configFile) throws Exception {
         testServer = new TestableConfigurableAsyncServer();
         testServer.setFileSystem(memoryFileSystem);
+        testServer.setEncryptionFactory(new 
LegacyJavaEncryptionFactory(memoryFileSystem));
         
testServer.configure(ConfigLoader.getConfig(ClassLoader.getSystemResourceAsStream(configFile)));
     }
 
diff --git 
a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServerFactory.java
 
b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServerFactory.java
index 20e40817f6..188759f2cf 100644
--- 
a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServerFactory.java
+++ 
b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServerFactory.java
@@ -30,12 +30,14 @@ import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.lib.handler.ProtocolHandlerLoader;
 import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
 import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.netty.Encryption;
 
 public class LMTPServerFactory extends AbstractServerFactory {
 
     private final ProtocolHandlerLoader loader;
     private final FileSystem fileSystem;
     protected final LMTPMetricsImpl lmtpMetrics;
+    private Encryption.Factory encryptionFactory;
 
     @Inject
     public LMTPServerFactory(ProtocolHandlerLoader loader, FileSystem 
fileSystem, MetricFactory metricFactory) {
@@ -44,6 +46,11 @@ public class LMTPServerFactory extends AbstractServerFactory 
{
         this.lmtpMetrics = new LMTPMetricsImpl(metricFactory);
     }
 
+    @Inject
+    public void setEncryptionFactory(Encryption.Factory encryptionFactory) {
+        this.encryptionFactory = encryptionFactory;
+    }
+
     protected LMTPServer createServer() {
        return new LMTPServer(lmtpMetrics);
     }
@@ -56,6 +63,7 @@ public class LMTPServerFactory extends AbstractServerFactory {
         for (HierarchicalConfiguration<ImmutableNode> serverConfig: configs) {
             LMTPServer server = createServer();
             server.setFileSystem(fileSystem);
+            server.setEncryptionFactory(encryptionFactory);
             server.setProtocolHandlerLoader(loader);
             server.configure(serverConfig);
             servers.add(server);
diff --git 
a/server/protocols/protocols-lmtp/src/test/java/org/apache/james/lmtpserver/LmtpServerTest.java
 
b/server/protocols/protocols-lmtp/src/test/java/org/apache/james/lmtpserver/LmtpServerTest.java
index dd02a3182d..0a1e83d485 100644
--- 
a/server/protocols/protocols-lmtp/src/test/java/org/apache/james/lmtpserver/LmtpServerTest.java
+++ 
b/server/protocols/protocols-lmtp/src/test/java/org/apache/james/lmtpserver/LmtpServerTest.java
@@ -65,6 +65,7 @@ import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailetcontainer.api.MailProcessor;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
+import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
 import org.apache.james.protocols.lib.mock.ConfigLoader;
 import org.apache.james.protocols.lib.mock.MockProtocolHandlerLoader;
 import org.apache.james.rrt.api.AliasReverseResolver;
@@ -167,6 +168,7 @@ class LmtpServerTest {
 
     private LMTPServerFactory createLMTPServer(MockProtocolHandlerLoader 
loader, String configuration) throws Exception {
         LMTPServerFactory lmtpServerFactory = new LMTPServerFactory(loader, 
fileSystem, new RecordingMetricFactory());
+        lmtpServerFactory.setEncryptionFactory(new 
LegacyJavaEncryptionFactory(fileSystem));
         
lmtpServerFactory.configure(ConfigLoader.getConfig(ClassLoader.getSystemResourceAsStream(configuration)));
         lmtpServerFactory.init();
         return lmtpServerFactory;
diff --git 
a/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
 
b/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
index 4aee2ebff8..b345dcaf86 100644
--- 
a/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
+++ 
b/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServerFactory.java
@@ -34,12 +34,14 @@ import 
org.apache.james.managesieve.transcode.ArgumentParser;
 import org.apache.james.managesieve.transcode.ManageSieveProcessor;
 import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
 import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.netty.Encryption;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.user.api.UsersRepository;
 
 public class ManageSieveServerFactory extends AbstractServerFactory {
 
     private FileSystem fileSystem;
+    private Encryption.Factory encryptionFactory;
     private ManageSieveProcessor manageSieveProcessor;
     private SieveRepository sieveRepository;
     private UsersRepository usersRepository;
@@ -50,6 +52,11 @@ public class ManageSieveServerFactory extends 
AbstractServerFactory {
         this.fileSystem = fileSystem;
     }
 
+    @Inject
+    public void setEncryptionFactory(Encryption.Factory encryptionFactory) {
+        this.encryptionFactory = encryptionFactory;
+    }
+
     @Inject
     public void setSieveRepository(SieveRepository sieveRepository) {
         this.sieveRepository = sieveRepository;
@@ -81,6 +88,7 @@ public class ManageSieveServerFactory extends 
AbstractServerFactory {
         for (HierarchicalConfiguration<ImmutableNode> serverConfig: configs) {
             ManageSieveServer server = new ManageSieveServer(8000, 
manageSieveProcessor);
             server.setFileSystem(fileSystem);
+            server.setEncryptionFactory(encryptionFactory);
             server.configure(serverConfig);
             servers.add(server);
         }
diff --git 
a/server/protocols/protocols-managesieve/src/test/java/org/apache/james/managesieveserver/ManageSieveServerTestSystem.java
 
b/server/protocols/protocols-managesieve/src/test/java/org/apache/james/managesieveserver/ManageSieveServerTestSystem.java
index 185c40e48e..ef9b8e282e 100644
--- 
a/server/protocols/protocols-managesieve/src/test/java/org/apache/james/managesieveserver/ManageSieveServerTestSystem.java
+++ 
b/server/protocols/protocols-managesieve/src/test/java/org/apache/james/managesieveserver/ManageSieveServerTestSystem.java
@@ -32,6 +32,7 @@ import org.apache.james.managesieve.transcode.ArgumentParser;
 import org.apache.james.managesieve.transcode.ManageSieveProcessor;
 import org.apache.james.managesieveserver.netty.ManageSieveServer;
 import org.apache.james.protocols.api.utils.ProtocolServerUtils;
+import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
 import org.apache.james.server.core.configuration.FileConfigurationProvider;
 import org.apache.james.sieverepository.file.SieveFileRepository;
 import org.apache.james.user.memory.MemoryUsersRepository;
@@ -70,6 +71,7 @@ class ManageSieveServerTestSystem {
             this.manageSieveProcessor
         );
         this.manageSieveServer.setFileSystem(this.fileSystem);
+        this.manageSieveServer.setEncryptionFactory(new 
LegacyJavaEncryptionFactory(this.fileSystem));
         this.manageSieveServer.configure(configuration);
         this.manageSieveServer.init();
     }
diff --git 
a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3ServerFactory.java
 
b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3ServerFactory.java
index d795efaa0a..5b0ae64ee2 100644
--- 
a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3ServerFactory.java
+++ 
b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3ServerFactory.java
@@ -30,11 +30,13 @@ import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.protocols.lib.handler.ProtocolHandlerLoader;
 import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
 import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.netty.Encryption;
 
 public class POP3ServerFactory extends AbstractServerFactory {
 
     private ProtocolHandlerLoader loader;
     private FileSystem fileSystem;
+    private Encryption.Factory encryptionFactory;
 
     @Inject
     public void setProtocolHandlerLoader(ProtocolHandlerLoader loader) {
@@ -46,6 +48,11 @@ public class POP3ServerFactory extends AbstractServerFactory 
{
         this.fileSystem = filesystem;
     }
 
+    @Inject
+    public final void setEncryptionFactory(Encryption.Factory 
encryptionFactory) {
+        this.encryptionFactory = encryptionFactory;
+    }
+
     protected POP3Server createServer() {
        return new POP3Server();
     }
@@ -60,6 +67,7 @@ public class POP3ServerFactory extends AbstractServerFactory {
             POP3Server server = createServer();
             server.setProtocolHandlerLoader(loader);
             server.setFileSystem(fileSystem);
+            server.setEncryptionFactory(encryptionFactory);
             server.configure(serverConfig);
             servers.add(server);
         }
diff --git 
a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
 
b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
index 00f12a6359..9f30037270 100644
--- 
a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
+++ 
b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
@@ -59,6 +59,7 @@ import 
org.apache.james.pop3server.mailbox.DefaultMailboxAdapterFactory;
 import org.apache.james.pop3server.mailbox.MailboxAdapterFactory;
 import org.apache.james.pop3server.netty.POP3Server;
 import org.apache.james.protocols.api.utils.ProtocolServerUtils;
+import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
 import org.apache.james.protocols.lib.POP3BeforeSMTPHelper;
 import org.apache.james.protocols.lib.mock.ConfigLoader;
 import org.apache.james.protocols.lib.mock.MockProtocolHandlerLoader;
@@ -959,6 +960,7 @@ public class POP3ServerTest {
     protected void setUpPOP3Server() {
         pop3Server = createPOP3Server();
         pop3Server.setFileSystem(fileSystem);
+        pop3Server.setEncryptionFactory(new 
LegacyJavaEncryptionFactory(fileSystem));
         pop3Server.setProtocolHandlerLoader(protocolHandlerChain);
     }
 
diff --git 
a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServerFactory.java
 
b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServerFactory.java
index 831a7d4fa4..5d4bbc08f4 100644
--- 
a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServerFactory.java
+++ 
b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServerFactory.java
@@ -38,6 +38,7 @@ import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.lib.handler.ProtocolHandlerLoader;
 import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
 import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.netty.Encryption;
 
 public class SMTPServerFactory extends AbstractServerFactory implements 
Disconnector, ConnectionDescriptionSupplier {
 
@@ -45,6 +46,7 @@ public class SMTPServerFactory extends AbstractServerFactory 
implements Disconne
     protected final ProtocolHandlerLoader loader;
     protected final FileSystem fileSystem;
     protected final SmtpMetricsImpl smtpMetrics;
+    protected Encryption.Factory encryptionFactory;
 
     @Inject
     public SMTPServerFactory(DNSService dns, ProtocolHandlerLoader loader, 
FileSystem fileSystem,
@@ -55,6 +57,11 @@ public class SMTPServerFactory extends AbstractServerFactory 
implements Disconne
         this.smtpMetrics = new SmtpMetricsImpl(metricFactory);
     }
 
+    @Inject
+    public void setEncryptionFactory(Encryption.Factory encryptionFactory) {
+        this.encryptionFactory = encryptionFactory;
+    }
+
     protected SMTPServer createServer() {
        return new SMTPServer(smtpMetrics);
     }
@@ -70,6 +77,7 @@ public class SMTPServerFactory extends AbstractServerFactory 
implements Disconne
             server.setDnsService(dns);
             server.setProtocolHandlerLoader(loader);
             server.setFileSystem(fileSystem);
+            server.setEncryptionFactory(encryptionFactory);
             server.configure(serverConfig);
             servers.add(server);
         }
diff --git 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTestSystem.java
 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTestSystem.java
index a72c2521ab..d276912fe2 100644
--- 
a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTestSystem.java
+++ 
b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTestSystem.java
@@ -50,6 +50,7 @@ import org.apache.james.metrics.api.Metric;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.apache.james.protocols.api.utils.ProtocolServerUtils;
+import org.apache.james.protocols.lib.LegacyJavaEncryptionFactory;
 import org.apache.james.protocols.lib.mock.MockProtocolHandlerLoader;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
@@ -147,6 +148,7 @@ class SMTPServerTestSystem {
         smtpServer = createSMTPServer(smtpMetrics);
         smtpServer.setDnsService(dnsServer);
         smtpServer.setFileSystem(fileSystem);
+        smtpServer.setEncryptionFactory(new 
LegacyJavaEncryptionFactory(fileSystem));
         smtpServer.setProtocolHandlerLoader(chain);
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to