You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2020/03/06 08:33:40 UTC

[james-project] branch master updated: JAMES-3067 Fixes related to make RecipientRewriteTable configuration immutable

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


The following commit(s) were added to refs/heads/master by this push:
     new 4b3ebab  JAMES-3067 Fixes related to make RecipientRewriteTable configuration immutable
4b3ebab is described below

commit 4b3ebab67143b54859c8abe9de6c7426d77df68f
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Wed Mar 4 11:41:19 2020 +0100

    JAMES-3067 Fixes related to make RecipientRewriteTable configuration immutable
---
 .../james/rrt/api/RecipientRewriteTableConfiguration.java      |  7 +++++--
 .../org/apache/james/rrt/lib/AliasReverseResolverImpl.java     | 10 ++++++----
 .../java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java   |  4 ++--
 .../org/apache/james/rrt/lib/AliasReverseResolverImplTest.java |  4 +---
 .../java/org/apache/james/rrt/lib/CanSendFromImplTest.java     |  4 +---
 .../apache/james/transport/matchers/IsSenderInRRTLoopTest.java |  2 ++
 .../jmap/draft/methods/SetMessagesCreationProcessorTest.java   |  2 ++
 .../jmap/draft/methods/SetMessagesUpdateProcessorTest.java     |  2 ++
 .../test/java/org/apache/james/smtpserver/SMTPServerTest.java  |  2 ++
 .../java/org/apache/james/smtpserver/ValidRcptHandlerTest.java |  3 ++-
 .../java/org/apache/james/webadmin/routes/UserRoutesTest.java  |  2 ++
 11 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableConfiguration.java b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableConfiguration.java
index e349ccc..7927559 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableConfiguration.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableConfiguration.java
@@ -31,10 +31,13 @@ import com.google.common.base.Preconditions;
 
 public class RecipientRewriteTableConfiguration {
 
-    public static final boolean RECURSIVE_MAPPING_ENABLE = true;
+    public static final boolean RECURSIVE_MAPPING_ENABLED = true;
     public static final int DEFAULT_ENABLED_MAPPING_LIMIT = 10;
     public static final int DISABLED_MAPPING_LIMIT = 0;
 
+    public static final RecipientRewriteTableConfiguration DEFAULT_ENABLED = new RecipientRewriteTableConfiguration(RECURSIVE_MAPPING_ENABLED, DEFAULT_ENABLED_MAPPING_LIMIT);
+    public static final RecipientRewriteTableConfiguration DISABLED = new RecipientRewriteTableConfiguration(!RECURSIVE_MAPPING_ENABLED, DISABLED_MAPPING_LIMIT);
+
     // The maximum mappings which will process before throwing exception
     private final int mappingLimit;
 
@@ -48,7 +51,7 @@ public class RecipientRewriteTableConfiguration {
     }
 
     public static RecipientRewriteTableConfiguration fromConfiguration(HierarchicalConfiguration<ImmutableNode> config) throws ConfigurationException {
-        boolean recursive = config.getBoolean("recursiveMapping", RECURSIVE_MAPPING_ENABLE);
+        boolean recursive = config.getBoolean("recursiveMapping", RECURSIVE_MAPPING_ENABLED);
         int mappingLimit;
         if (recursive) {
             mappingLimit = config.getInt("mappingLimit", DEFAULT_ENABLED_MAPPING_LIMIT);
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java
index 5bec3f7..d231122 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java
@@ -42,12 +42,10 @@ import com.github.steveash.guavate.Guavate;
 
 public class AliasReverseResolverImpl implements AliasReverseResolver {
     private final RecipientRewriteTable recipientRewriteTable;
-    private final int mappingLimit;
 
     @Inject
     public AliasReverseResolverImpl(RecipientRewriteTable recipientRewriteTable) {
         this.recipientRewriteTable = recipientRewriteTable;
-        this.mappingLimit = recipientRewriteTable.getConfiguration().getMappingLimit();
     }
 
     @Override
@@ -66,7 +64,7 @@ public class AliasReverseResolverImpl implements AliasReverseResolver {
     private Stream<Username> relatedAliases(Username user) {
         return StreamUtils.iterate(
             user,
-            (long) mappingLimit,
+            getMappingLimit(),
             Throwing.<Username, Stream<Username>>function(targetUser ->
                 recipientRewriteTable
                     .listSources(Mapping.alias(targetUser.asString()))
@@ -96,7 +94,7 @@ public class AliasReverseResolverImpl implements AliasReverseResolver {
     private Stream<Domain> fetchDomains(Domain domain) {
         return StreamUtils.iterate(
             domain,
-            (long) mappingLimit,
+            getMappingLimit(),
             Throwing.<Domain, Stream<Domain>>function(targetDomain ->
                 recipientRewriteTable
                     .listSources(Mapping.domain(targetDomain))
@@ -104,4 +102,8 @@ public class AliasReverseResolverImpl implements AliasReverseResolver {
                     .flatMap(OptionalUtils::toStream)).sneakyThrow()
         );
     }
+
+    private long getMappingLimit() {
+        return recipientRewriteTable.getConfiguration().getMappingLimit();
+    }
 }
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
index 23d7684..dde65e2 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
@@ -42,7 +42,7 @@ public class RewriteTablesStepdefs {
     public void setUp(Supplier<AbstractRecipientRewriteTable> recipientRewriteTableSupplier) {
         this.recipientRewriteTableSupplier = recipientRewriteTableSupplier;
         this.rewriteTable = this.recipientRewriteTableSupplier.get();
-        this.rewriteTable.setConfiguration(new RecipientRewriteTableConfiguration(true, 10));
+        this.rewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
     }
 
     @Given("store \"([^\"]*)\" regexp mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
@@ -108,7 +108,7 @@ public class RewriteTablesStepdefs {
     @Given("recursive mapping is disable")
     public void disableRecursiveMapping() {
         this.rewriteTable = this.recipientRewriteTableSupplier.get();
-        this.rewriteTable.setConfiguration(new RecipientRewriteTableConfiguration(false, 0));
+        this.rewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DISABLED);
     }
 
     @Given("recursive mapping is enable")
diff --git a/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverImplTest.java b/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverImplTest.java
index 7230ee5..12bf887 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverImplTest.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverImplTest.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.rrt.lib;
 
-import static org.apache.james.rrt.api.RecipientRewriteTableConfiguration.DEFAULT_ENABLED_MAPPING_LIMIT;
-import static org.apache.james.rrt.api.RecipientRewriteTableConfiguration.RECURSIVE_MAPPING_ENABLE;
 import static org.mockito.Mockito.mock;
 
 import org.apache.james.core.Domain;
@@ -50,7 +48,7 @@ public class AliasReverseResolverImplTest implements AliasReverseResolverContrac
         domainList.addDomain(DOMAIN);
         domainList.addDomain(OTHER_DOMAIN);
         recipientRewriteTable.setDomainList(domainList);
-        recipientRewriteTable.setConfiguration(new RecipientRewriteTableConfiguration(RECURSIVE_MAPPING_ENABLE, DEFAULT_ENABLED_MAPPING_LIMIT));
+        recipientRewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
 
         this.aliasReverseResolver = new AliasReverseResolverImpl(recipientRewriteTable);
     }
diff --git a/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java b/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java
index 99265c1..f846f67 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.james.rrt.lib;
 
-import static org.apache.james.rrt.api.RecipientRewriteTableConfiguration.DEFAULT_ENABLED_MAPPING_LIMIT;
-import static org.apache.james.rrt.api.RecipientRewriteTableConfiguration.RECURSIVE_MAPPING_ENABLE;
 import static org.mockito.Mockito.mock;
 
 import org.apache.james.core.Domain;
@@ -50,7 +48,7 @@ public class CanSendFromImplTest implements CanSendFromContract {
         domainList.addDomain(DOMAIN);
         domainList.addDomain(OTHER_DOMAIN);
         recipientRewriteTable.setDomainList(domainList);
-        recipientRewriteTable.setConfiguration(new RecipientRewriteTableConfiguration(RECURSIVE_MAPPING_ENABLE, DEFAULT_ENABLED_MAPPING_LIMIT));
+        recipientRewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
 
         AliasReverseResolver aliasReverseResolver = new AliasReverseResolverImpl(recipientRewriteTable);
         canSendFrom = new CanSendFromImpl(recipientRewriteTable, aliasReverseResolver);
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java
index 64e5475..6eda370 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java
@@ -30,6 +30,7 @@ import java.util.Collection;
 import org.apache.james.core.MailAddress;
 import org.apache.james.domainlist.api.mock.SimpleDomainList;
 import org.apache.james.rrt.api.RecipientRewriteTable;
+import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.lib.MappingSource;
 import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
 import org.apache.mailet.base.test.FakeMail;
@@ -47,6 +48,7 @@ public class IsSenderInRRTLoopTest {
         SimpleDomainList domainList = new SimpleDomainList();
         domainList.addDomain(JAMES_LOCAL_DOMAIN);
         ((MemoryRecipientRewriteTable) recipientRewriteTable).setDomainList(domainList);
+        ((MemoryRecipientRewriteTable) recipientRewriteTable).setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
         testee = new IsSenderInRRTLoop(recipientRewriteTable);
     }
 
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
index a4a25fc..196e5e7 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
@@ -73,6 +73,7 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.TestMessageId;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.apache.james.rrt.api.CanSendFrom;
+import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.api.AliasReverseResolver;
 import org.apache.james.rrt.lib.AliasReverseResolverImpl;
@@ -156,6 +157,7 @@ public class SetMessagesCreationProcessorTest {
         domainList.addDomain(Domain.of("example.com"));
         domainList.addDomain(Domain.of("other.org"));
         recipientRewriteTable.setDomainList(domainList);
+        recipientRewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
         AliasReverseResolver aliasReverseResolver = new AliasReverseResolverImpl(recipientRewriteTable);
         canSendFrom = new CanSendFromImpl(recipientRewriteTable, aliasReverseResolver);
         messageFullViewFactory = new MessageFullViewFactory(blobManager, messageContentExtractor, htmlTextExtractor,
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java
index e3c9bf8..1afbcb1 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java
@@ -66,6 +66,7 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.TestMessageId;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.apache.james.rrt.api.CanSendFrom;
+import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.api.AliasReverseResolver;
 import org.apache.james.rrt.lib.AliasReverseResolverImpl;
@@ -169,6 +170,7 @@ public class SetMessagesUpdateProcessorTest {
         domainList.addDomain(Domain.of("example.com"));
         domainList.addDomain(Domain.of("other.org"));
         recipientRewriteTable.setDomainList(domainList);
+        recipientRewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
         AliasReverseResolver aliasReverseResolver = new AliasReverseResolverImpl(recipientRewriteTable);
         canSendFrom = new CanSendFromImpl(recipientRewriteTable, aliasReverseResolver);
         mockedMailSpool = mock(MailSpool.class);
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
index fbfb0a0..8b4b19d 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
@@ -73,6 +73,7 @@ import org.apache.james.queue.memory.MemoryMailQueueFactory;
 import org.apache.james.rrt.api.AliasReverseResolver;
 import org.apache.james.rrt.api.CanSendFrom;
 import org.apache.james.rrt.api.RecipientRewriteTable;
+import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.lib.AliasReverseResolverImpl;
 import org.apache.james.rrt.lib.CanSendFromImpl;
 import org.apache.james.rrt.lib.MappingSource;
@@ -279,6 +280,7 @@ public class SMTPServerTest {
         dnsServer = new AlterableDNSServer();
 
         rewriteTable = new MemoryRecipientRewriteTable();
+        rewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
         aliasReverseResolver = new AliasReverseResolverImpl(rewriteTable);
         canSendFrom = new CanSendFromImpl(rewriteTable, aliasReverseResolver);
         queueFactory = new MemoryMailQueueFactory(new RawMailQueueItemDecoratorFactory());
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
index 13adf0f..97ee1a1 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
@@ -34,6 +34,7 @@ import org.apache.james.domainlist.memory.MemoryDomainList;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
+import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.lib.MappingSource;
 import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
 import org.apache.james.smtpserver.fastfail.ValidRcptHandler;
@@ -68,7 +69,7 @@ public class ValidRcptHandlerTest {
 
         memoryRecipientRewriteTable = new MemoryRecipientRewriteTable();
         memoryRecipientRewriteTable.setDomainList(memoryDomainList);
-
+        memoryRecipientRewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
         handler = new ValidRcptHandler(users, memoryRecipientRewriteTable, memoryDomainList);
 
         validUserEmail = new MailAddress(VALID_USER.asString() + "@localhost");
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java
index d876ce2..38b1ada 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UserRoutesTest.java
@@ -43,6 +43,7 @@ import org.apache.james.domainlist.api.mock.SimpleDomainList;
 import org.apache.james.rrt.api.AliasReverseResolver;
 import org.apache.james.rrt.api.CanSendFrom;
 import org.apache.james.rrt.api.RecipientRewriteTable;
+import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.CanSendFromImpl;
 import org.apache.james.rrt.lib.MappingSource;
@@ -110,6 +111,7 @@ class UserRoutesTest {
             this.domainList = domainList;
             this.recipientRewriteTable = new MemoryRecipientRewriteTable();
             this.recipientRewriteTable.setDomainList(domainList);
+            this.recipientRewriteTable.setConfiguration(RecipientRewriteTableConfiguration.DEFAULT_ENABLED);
             this.aliasReverseResolver = new AliasReverseResolverImpl(recipientRewriteTable);
             this.canSendFrom = new CanSendFromImpl(recipientRewriteTable, aliasReverseResolver);
         }


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