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

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

commit c283255d68b3e4c14a47a71eeeb33f822d86ff62
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Tue May 30 08:51:00 2023 +0700

    JAMES-3906 Use an interface dedicated for certificate reload in bindings
---
 .../java/org/apache/james/CertificateReloadTest.java  |  2 +-
 .../james/modules/protocols/IMAPServerModule.java     |  4 ++--
 .../james/modules/protocols/LMTPServerModule.java     |  4 ++--
 .../modules/protocols/ManageSieveServerModule.java    |  4 ++--
 .../james/modules/protocols/POP3ServerModule.java     |  4 ++--
 .../james/modules/protocols/SMTPServerModule.java     |  4 ++--
 .../james/modules/protocols/SmtpGuiceProbe.java       |  5 +----
 .../protocols/lib/netty/AbstractServerFactory.java    | 10 ++++++++--
 .../protocols/lib/netty/CertificateReloadable.java    |  7 +++++++
 .../protocols/webadmin/ProtocolServerRoutes.java      | 19 +++++++++----------
 10 files changed, 36 insertions(+), 27 deletions(-)

diff --git 
a/server/apps/memory-app/src/test/java/org/apache/james/CertificateReloadTest.java
 
b/server/apps/memory-app/src/test/java/org/apache/james/CertificateReloadTest.java
index 8de9a48892..7b084f45d7 100644
--- 
a/server/apps/memory-app/src/test/java/org/apache/james/CertificateReloadTest.java
+++ 
b/server/apps/memory-app/src/test/java/org/apache/james/CertificateReloadTest.java
@@ -203,7 +203,7 @@ class CertificateReloadTest {
         .then()
             .statusCode(204);
 
-        System.out.println(readBytes(channel));
+        readBytes(channel);
         channel.getOutputStream().write("EHLO 
toto.com\r\n".getBytes(StandardCharsets.UTF_8));
         assertThat(readBytes(channel))
             .contains("250 8BITMIME");
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 603fdc7a15..fa478b0b6a 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
@@ -60,7 +60,7 @@ import org.apache.james.imapserver.netty.IMAPServerFactory;
 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.AbstractServerFactory;
+import org.apache.james.protocols.lib.netty.CertificateReloadable;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
 import org.apache.james.utils.ClassName;
 import org.apache.james.utils.GuiceGenericLoader;
@@ -101,7 +101,7 @@ public class IMAPServerModule extends AbstractModule {
 
         Multibinder.newSetBinder(binder(), 
GuiceProbe.class).addBinding().to(ImapGuiceProbe.class);
 
-        Multibinder.newSetBinder(binder(), 
AbstractServerFactory.class).addBinding().to(IMAPServerFactory.class);
+        Multibinder.newSetBinder(binder(), 
CertificateReloadable.Factory.class).addBinding().to(IMAPServerFactory.class);
     }
 
     @Provides
diff --git 
a/server/container/guice/protocols/lmtp/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java
 
b/server/container/guice/protocols/lmtp/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java
index 9e198cf843..e16e9cf945 100644
--- 
a/server/container/guice/protocols/lmtp/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java
+++ 
b/server/container/guice/protocols/lmtp/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java
@@ -24,7 +24,7 @@ import org.apache.james.RunArguments;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.lifecycle.api.ConfigurationSanitizer;
 import org.apache.james.lmtpserver.netty.LMTPServerFactory;
-import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.lib.netty.CertificateReloadable;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
 import org.apache.james.util.LoggingLevel;
 import org.apache.james.utils.GuiceProbe;
@@ -44,7 +44,7 @@ public class LMTPServerModule extends AbstractModule {
 
         Multibinder.newSetBinder(binder(), 
GuiceProbe.class).addBinding().to(LmtpGuiceProbe.class);
 
-        Multibinder.newSetBinder(binder(), 
AbstractServerFactory.class).addBinding().to(LMTPServerFactory.class);
+        Multibinder.newSetBinder(binder(), 
CertificateReloadable.Factory.class).addBinding().to(LMTPServerFactory.class);
     }
 
     @ProvidesIntoSet
diff --git 
a/server/container/guice/protocols/managedsieve/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
 
b/server/container/guice/protocols/managedsieve/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
index 9f62812d45..8eb469d48a 100644
--- 
a/server/container/guice/protocols/managedsieve/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
+++ 
b/server/container/guice/protocols/managedsieve/src/main/java/org/apache/james/modules/protocols/ManageSieveServerModule.java
@@ -25,7 +25,7 @@ import org.apache.james.lifecycle.api.ConfigurationSanitizer;
 import org.apache.james.managesieve.api.commands.CoreCommands;
 import org.apache.james.managesieve.core.CoreProcessor;
 import org.apache.james.managesieveserver.netty.ManageSieveServerFactory;
-import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.lib.netty.CertificateReloadable;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
 import org.apache.james.util.LoggingLevel;
 import org.apache.james.utils.GuiceProbe;
@@ -47,7 +47,7 @@ public class ManageSieveServerModule extends AbstractModule {
         bind(CoreCommands.class).to(CoreProcessor.class);
         Multibinder.newSetBinder(binder(), 
GuiceProbe.class).addBinding().to(SieveProbeImpl.class);
 
-        Multibinder.newSetBinder(binder(), 
AbstractServerFactory.class).addBinding().to(ManageSieveServerFactory.class);
+        Multibinder.newSetBinder(binder(), 
CertificateReloadable.Factory.class).addBinding().to(ManageSieveServerFactory.class);
     }
 
     @ProvidesIntoSet
diff --git 
a/server/container/guice/protocols/pop/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java
 
b/server/container/guice/protocols/pop/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java
index 75bfc62949..445fb50b03 100644
--- 
a/server/container/guice/protocols/pop/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java
+++ 
b/server/container/guice/protocols/pop/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java
@@ -26,7 +26,7 @@ import org.apache.james.lifecycle.api.ConfigurationSanitizer;
 import org.apache.james.pop3server.mailbox.DefaultMailboxAdapterFactory;
 import org.apache.james.pop3server.mailbox.MailboxAdapterFactory;
 import org.apache.james.pop3server.netty.POP3ServerFactory;
-import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.lib.netty.CertificateReloadable;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
 import org.apache.james.utils.GuiceProbe;
 import org.apache.james.utils.InitializationOperation;
@@ -48,7 +48,7 @@ public class POP3ServerModule extends AbstractModule {
 
         Multibinder.newSetBinder(binder(), 
GuiceProbe.class).addBinding().to(Pop3GuiceProbe.class);
 
-        Multibinder.newSetBinder(binder(), 
AbstractServerFactory.class).addBinding().to(POP3ServerFactory.class);
+        Multibinder.newSetBinder(binder(), 
CertificateReloadable.Factory.class).addBinding().to(POP3ServerFactory.class);
     }
 
     @ProvidesIntoSet
diff --git 
a/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java
 
b/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java
index b3b8dcd3b2..b4f6b08e3c 100644
--- 
a/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java
+++ 
b/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java
@@ -23,7 +23,7 @@ import org.apache.james.ProtocolConfigurationSanitizer;
 import org.apache.james.RunArguments;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.lifecycle.api.ConfigurationSanitizer;
-import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.lib.netty.CertificateReloadable;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
 import org.apache.james.smtpserver.SendMailHandler;
 import org.apache.james.smtpserver.netty.SMTPServerFactory;
@@ -45,7 +45,7 @@ public class SMTPServerModule extends AbstractModule {
 
         Multibinder.newSetBinder(binder(), 
GuiceProbe.class).addBinding().to(SmtpGuiceProbe.class);
 
-        Multibinder.newSetBinder(binder(), 
AbstractServerFactory.class).addBinding().to(SMTPServerFactory.class);
+        Multibinder.newSetBinder(binder(), 
CertificateReloadable.Factory.class).addBinding().to(SMTPServerFactory.class);
     }
 
     @ProvidesIntoSet
diff --git 
a/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java
 
b/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java
index ed07df2af4..42815e52b3 100644
--- 
a/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java
+++ 
b/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java
@@ -65,10 +65,7 @@ public class SmtpGuiceProbe implements GuiceProbe {
     }
 
     public Port getSmtpSslPort() {
-        return getPort(server -> {
-            System.out.println(server.getServiceType());
-            return server.getSocketType().equals("secure");
-        });
+        return getPort(server -> server.getSocketType().equals("secure"));
     }
 
     public Port getSmtpAuthRequiredPort() {
diff --git 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractServerFactory.java
 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractServerFactory.java
index bf672d5efa..62fccd9ecd 100644
--- 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractServerFactory.java
+++ 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractServerFactory.java
@@ -20,6 +20,7 @@
 package org.apache.james.protocols.lib.netty;
 
 import java.util.List;
+import java.util.stream.Stream;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -31,7 +32,7 @@ import org.apache.james.lifecycle.api.Configurable;
 /**
  * Abstract base class for Factories that need to create {@link 
AbstractConfigurableAsyncServer}'s via configuration files
  */
-public abstract class AbstractServerFactory implements Configurable {
+public abstract class AbstractServerFactory implements Configurable, 
CertificateReloadable.Factory {
 
     private List<AbstractConfigurableAsyncServer> servers;
     private HierarchicalConfiguration<ImmutableNode> config;
@@ -69,5 +70,10 @@ public abstract class AbstractServerFactory implements 
Configurable {
             server.destroy();
         }
     }
- 
+
+    @Override
+    public Stream<AbstractConfigurableAsyncServer> certificatesReloadable() {
+        return getServers().stream()
+            .filter(AbstractConfigurableAsyncServer::isEnabled);
+    }
 }
diff --git 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/CertificateReloadable.java
 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/CertificateReloadable.java
index 248de22857..79656203f5 100644
--- 
a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/CertificateReloadable.java
+++ 
b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/CertificateReloadable.java
@@ -18,7 +18,14 @@
  ****************************************************************/
 package org.apache.james.protocols.lib.netty;
 
+import java.util.stream.Stream;
+
 public interface CertificateReloadable {
+    interface Factory {
+        Stream<? extends CertificateReloadable> certificatesReloadable();
+    }
 
     void reloadSSLCertificate() throws Exception;
+
+    int getPort();
 }
diff --git 
a/server/protocols/webadmin/webadmin-protocols/src/main/java/org/apache/james/protocols/webadmin/ProtocolServerRoutes.java
 
b/server/protocols/webadmin/webadmin-protocols/src/main/java/org/apache/james/protocols/webadmin/ProtocolServerRoutes.java
index 028b75f3e1..d78109e518 100644
--- 
a/server/protocols/webadmin/webadmin-protocols/src/main/java/org/apache/james/protocols/webadmin/ProtocolServerRoutes.java
+++ 
b/server/protocols/webadmin/webadmin-protocols/src/main/java/org/apache/james/protocols/webadmin/ProtocolServerRoutes.java
@@ -24,8 +24,7 @@ import java.util.Set;
 
 import javax.inject.Inject;
 
-import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
-import org.apache.james.protocols.lib.netty.AbstractServerFactory;
+import org.apache.james.protocols.lib.netty.CertificateReloadable;
 import org.apache.james.util.Port;
 import org.apache.james.webadmin.Routes;
 import org.apache.james.webadmin.utils.ErrorResponder;
@@ -42,10 +41,10 @@ import spark.Service;
 public class ProtocolServerRoutes implements Routes {
     public static final String SERVERS = "servers";
 
-    private final Set<AbstractServerFactory> servers;
+    private final Set<CertificateReloadable.Factory> servers;
 
     @Inject
-    public ProtocolServerRoutes(Set<AbstractServerFactory> servers) {
+    public ProtocolServerRoutes(Set<CertificateReloadable.Factory> servers) {
         this.servers = servers;
     }
 
@@ -69,16 +68,15 @@ public class ProtocolServerRoutes implements Routes {
             }
 
             servers.stream()
-                .flatMap(serverFactory -> serverFactory.getServers().stream())
-                .filter(AbstractConfigurableAsyncServer::isEnabled)
+                .flatMap(CertificateReloadable.Factory::certificatesReloadable)
                 .filter(filters(request))
-                
.forEach(Throwing.consumer(AbstractConfigurableAsyncServer::reloadSSLCertificate));
+                
.forEach(Throwing.consumer(CertificateReloadable::reloadSSLCertificate));
 
             return Responses.returnNoContent(response);
         });
     }
 
-    private Predicate<AbstractConfigurableAsyncServer> filters(Request 
request) {
+    private Predicate<CertificateReloadable> filters(Request request) {
         Optional<Port> port = 
Optional.ofNullable(request.queryParams("port")).map(Integer::parseUnsignedInt).map(Port::of);
 
         return server -> port.map(p -> server.getPort() == 
p.getValue()).orElse(true);
@@ -86,7 +84,8 @@ public class ProtocolServerRoutes implements Routes {
 
     private boolean noServerEnabled() {
         return servers.stream()
-            .flatMap(serverFactory -> serverFactory.getServers().stream())
-            
.filter(AbstractConfigurableAsyncServer::isEnabled).findFirst().isEmpty();
+            .flatMap(CertificateReloadable.Factory::certificatesReloadable)
+            .findFirst()
+            .isEmpty();
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to