[prev in list] [next in list] [prev in thread] [next in thread] 

List:       james-dev
Subject:    [james-project] 01/04: JAMES-2902 Allow to pass additional hooks within SmtpConfiguration
From:       btellier () apache ! org
Date:       2019-09-30 5:58:03
Message-ID: 20190930055803.42F9D81E76 () gitbox ! apache ! org
[Download RAW message or body]

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

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

commit 0a269a50ffbfb8aa5a6fdcfa2c3cf52d00e384d2
Author: Benoit Tellier <btellier@linagora.com>
AuthorDate: Thu Sep 26 10:32:38 2019 +0700

    JAMES-2902 Allow to pass additional hooks within SmtpConfiguration
---
 .../mailets/configuration/SmtpConfiguration.java   | 25 ++++++++++++++++++++--
 .../src/test/resources/smtpserver.xml              |  6 ++++++
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/SmtpConfiguration.java \
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/SmtpConfiguration.java
 index fc4fac5..40bcb31 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/SmtpConfiguration.java
                
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/SmtpConfiguration.java
 @@ -30,6 +30,7 @@ import java.util.HashMap;
 import java.util.Optional;
 
 import org.apache.commons.io.IOUtils;
+import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.github.mustachejava.DefaultMustacheFactory;
 import com.github.mustachejava.Mustache;
@@ -40,6 +41,14 @@ public class SmtpConfiguration implements SerializableAsXml {
     public static final boolean AUTH_REQUIRED = true;
     public static final SmtpConfiguration DEFAULT = \
SmtpConfiguration.builder().build();  
+    static class HookConfigurationEntry {
+        String hookFqcn;
+
+        HookConfigurationEntry(String hookFqcn) {
+            this.hookFqcn = hookFqcn;
+        }
+    }
+
     public static class Builder {
         private static final int DEFAULT_DISABLED = 0;
 
@@ -48,6 +57,7 @@ public class SmtpConfiguration implements SerializableAsXml {
         private Optional<Boolean> verifyIndentity;
         private Optional<Boolean> bracketEnforcement;
         private Optional<String> authorizedAddresses;
+        private ImmutableList.Builder<HookConfigurationEntry> addittionalHooks;
 
         public Builder() {
             authorizedAddresses = Optional.empty();
@@ -55,6 +65,7 @@ public class SmtpConfiguration implements SerializableAsXml {
             verifyIndentity = Optional.empty();
             maxMessageSizeInKb = Optional.empty();
             bracketEnforcement = Optional.empty();
+            addittionalHooks = ImmutableList.builder();
         }
 
         public Builder withAutorizedAddresses(String authorizedAddresses) {
@@ -94,12 +105,18 @@ public class SmtpConfiguration implements SerializableAsXml {
             return this;
         }
 
+        public Builder addHook(String hookFQCN) {
+            this.addittionalHooks.add(new HookConfigurationEntry(hookFQCN));
+            return this;
+        }
+
         public SmtpConfiguration build() {
             return new SmtpConfiguration(authorizedAddresses,
                 authRequired.orElse(!AUTH_REQUIRED),
                 bracketEnforcement.orElse(true),
                 verifyIndentity.orElse(true),
-                maxMessageSizeInKb.orElse(DEFAULT_DISABLED));
+                maxMessageSizeInKb.orElse(DEFAULT_DISABLED),
+                addittionalHooks.build());
         }
     }
 
@@ -112,13 +129,16 @@ public class SmtpConfiguration implements SerializableAsXml {
     private final boolean bracketEnforcement;
     private final boolean verifyIndentity;
     private final int maxMessageSizeInKb;
+    private final ImmutableList<HookConfigurationEntry> addittionalHooks;
 
-    public SmtpConfiguration(Optional<String> authorizedAddresses, boolean \
authRequired, boolean bracketEnforcement, boolean verifyIndentity, int \
maxMessageSizeInKb) { +    private SmtpConfiguration(Optional<String> \
authorizedAddresses, boolean authRequired, boolean bracketEnforcement, +              \
boolean verifyIndentity, int maxMessageSizeInKb, \
ImmutableList<HookConfigurationEntry> addittionalHooks) {  this.authorizedAddresses = \
authorizedAddresses;  this.authRequired = authRequired;
         this.bracketEnforcement = bracketEnforcement;
         this.verifyIndentity = verifyIndentity;
         this.maxMessageSizeInKb = maxMessageSizeInKb;
+        this.addittionalHooks = addittionalHooks;
     }
 
     @Override
@@ -130,6 +150,7 @@ public class SmtpConfiguration implements SerializableAsXml {
         scopes.put("verifyIdentity", verifyIndentity);
         scopes.put("maxmessagesize", maxMessageSizeInKb);
         scopes.put("bracketEnforcement", bracketEnforcement);
+        scopes.put("hooks", addittionalHooks);
 
         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         Writer writer = new OutputStreamWriter(byteArrayOutputStream);
diff --git a/server/mailet/integration-testing/src/test/resources/smtpserver.xml \
b/server/mailet/integration-testing/src/test/resources/smtpserver.xml index \
                3466c9c..e02e4a8 100644
--- a/server/mailet/integration-testing/src/test/resources/smtpserver.xml
+++ b/server/mailet/integration-testing/src/test/resources/smtpserver.xml
@@ -44,6 +44,9 @@
         <handlerchain>
             <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
             <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+            {{#hooks}}
+            <handler class="{{hookFqcn}}"/>
+            {{/hooks}}
         </handlerchain>
     </smtpserver>
     <smtpserver enabled="true">
@@ -74,6 +77,9 @@
         <handlerchain>
             <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
             <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+            {{#hooks}}
+            <handler class="{{hookFqcn}}"/>
+            {{/hooks}}
         </handlerchain>
     </smtpserver>
 </smtpservers>


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic