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