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 ad...@apache.org on 2018/08/30 13:16:01 UTC
[19/26] james-project git commit: JAMES-2529 Factorize code for
Transport checks
JAMES-2529 Factorize code for Transport checks
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8382d619
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8382d619
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8382d619
Branch: refs/heads/master
Commit: 8382d61981e89c6d2387734aacd18aa57a456670
Parents: 472bf31
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 29 12:20:32 2018 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Aug 30 15:11:54 2018 +0200
----------------------------------------------------------------------
.../server/CamelMailetContainerModule.java | 56 +++++++++++++++-----
.../java/org/apache/james/jmap/JMAPModule.java | 19 ++-----
.../james/jmap/MailetPreconditionTest.java | 22 ++++----
3 files changed, 59 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/8382d619/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java b/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
index 0d41d59..92fd1a5 100644
--- a/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
+++ b/server/container/guice/mailet/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
@@ -22,6 +22,7 @@ package org.apache.james.modules.server;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import java.util.function.Predicate;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
@@ -50,7 +51,9 @@ import org.apache.james.utils.GuiceMatcherLoader;
import org.apache.james.utils.GuiceProbe;
import org.apache.james.utils.MailetConfigurationOverride;
import org.apache.james.utils.SpoolerProbe;
+import org.apache.mailet.Mailet;
import org.apache.mailet.MailetContext;
+import org.apache.mailet.Matcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,6 +70,12 @@ public class CamelMailetContainerModule extends AbstractModule {
private static final Logger LOGGER = LoggerFactory.getLogger(CamelMailetContainerModule.class);
+ public static final TransportProcessorCheck.Impl BCC_Check = new TransportProcessorCheck.Impl(
+ All.class,
+ RemoveMimeHeader.class,
+ pair -> pair.getMailet().getMailetConfig().getInitParameter("name").equals("bcc"),
+ "Should be configured to remove Bcc header");
+
@Override
protected void configure() {
bind(CamelCompositeProcessor.class).in(Scopes.SINGLETON);
@@ -85,7 +94,7 @@ public class CamelMailetContainerModule extends AbstractModule {
Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(MailetModuleConfigurationPerformer.class);
Multibinder<CamelMailetContainerModule.TransportProcessorCheck> transportProcessorChecks = Multibinder.newSetBinder(binder(), CamelMailetContainerModule.TransportProcessorCheck.class);
- transportProcessorChecks.addBinding().to(BccMailetCheck.class);
+ transportProcessorChecks.addBinding().toInstance(BCC_Check);
}
@Provides
@@ -215,18 +224,39 @@ public class CamelMailetContainerModule extends AbstractModule {
@FunctionalInterface
public interface TransportProcessorCheck {
void check(List<MatcherMailetPair> pairs) throws ConfigurationException;
- }
-
- public static class BccMailetCheck implements CamelMailetContainerModule.TransportProcessorCheck {
- @Override
- public void check(List<MatcherMailetPair> pairs) throws ConfigurationException {
- Preconditions.checkNotNull(pairs);
- pairs.stream()
- .filter(pair -> pair.getMailet().getClass().equals(RemoveMimeHeader.class))
- .filter(pair -> pair.getMatcher().getClass().equals(All.class))
- .filter(pair -> pair.getMailet().getMailetConfig().getInitParameter("name").equals("bcc"))
- .findAny()
- .orElseThrow(() -> new ConfigurationException("Missing RemoveMimeHeader in mailets configuration (mailetcontainer -> processors -> transport). Should be configured to remove Bcc header"));
+
+ class Impl implements TransportProcessorCheck {
+ private final Class<? extends Matcher> matcherClass;
+ private final Class<? extends Mailet> mailetClass;
+ private final Optional<Predicate<? super MatcherMailetPair>> additionalFilter;
+ private final Optional<String> additionalErrorMessage;
+
+ public Impl(Class<? extends Matcher> matcherClass, Class<? extends Mailet> mailetClass) {
+ this(matcherClass, mailetClass, Optional.empty(), Optional.empty());
+ }
+
+ public Impl(Class<? extends Matcher> matcherClass, Class<? extends Mailet> mailetClass, Predicate<? super MatcherMailetPair> additionalFilter, String additionalErrorMessage) {
+ this(matcherClass, mailetClass, Optional.of(additionalFilter), Optional.of(additionalErrorMessage));
+ }
+
+ private Impl(Class<? extends Matcher> matcherClass, Class<? extends Mailet> mailetClass, Optional<Predicate<? super MatcherMailetPair>> additionalFilter, Optional<String> additionalErrorMessage) {
+ this.matcherClass = matcherClass;
+ this.mailetClass = mailetClass;
+ this.additionalFilter = additionalFilter;
+ this.additionalErrorMessage = additionalErrorMessage;
+ }
+
+ @Override
+ public void check(List<MatcherMailetPair> pairs) throws ConfigurationException {
+ Preconditions.checkNotNull(pairs);
+ pairs.stream()
+ .filter(pair -> pair.getMailet().getClass().equals(mailetClass))
+ .filter(pair -> pair.getMatcher().getClass().equals(matcherClass))
+ .filter(additionalFilter.orElse(any -> true))
+ .findAny()
+ .orElseThrow(() -> new ConfigurationException("Missing " + mailetClass.getName() + " in mailets configuration (mailetcontainer -> processors -> transport). " +
+ additionalErrorMessage.orElse("")));
+ }
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8382d619/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
index b70c953..5158d2f 100644
--- a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
+++ b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
@@ -42,7 +42,6 @@ import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxManager.SearchCapabilities;
-import org.apache.james.mailetcontainer.impl.MatcherMailetPair;
import org.apache.james.modules.server.CamelMailetContainerModule;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
import org.apache.james.server.core.configuration.FileConfigurationProvider;
@@ -73,6 +72,10 @@ public class JMAPModule extends AbstractModule {
throw new RuntimeException(e);
}
};
+ public static final CamelMailetContainerModule.TransportProcessorCheck VACATION_MAILET_CHECK =
+ new CamelMailetContainerModule.TransportProcessorCheck.Impl(
+ RecipientIsLocal.class,
+ VacationMailet.class);
@Override
protected void configure() {
@@ -92,7 +95,7 @@ public class JMAPModule extends AbstractModule {
Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(RequiredCapabilitiesPrecondition.class);
Multibinder<CamelMailetContainerModule.TransportProcessorCheck> transportProcessorChecks = Multibinder.newSetBinder(binder(), CamelMailetContainerModule.TransportProcessorCheck.class);
- transportProcessorChecks.addBinding().to(VacationMailetCheck.class);
+ transportProcessorChecks.addBinding().toInstance(VACATION_MAILET_CHECK);
bind(SystemMailboxesProvider.class).to(SystemMailboxesProviderImpl.class);
bind(MailQueueItemDecoratorFactory.class).to(PostDequeueDecoratorFactory.class).in(Scopes.SINGLETON);
@@ -166,16 +169,4 @@ public class JMAPModule extends AbstractModule {
}
}
- public static class VacationMailetCheck implements CamelMailetContainerModule.TransportProcessorCheck {
- @Override
- public void check(List<MatcherMailetPair> pairs) throws ConfigurationException {
- Preconditions.checkNotNull(pairs);
- pairs.stream()
- .filter(pair -> pair.getMailet().getClass().equals(VacationMailet.class))
- .filter(pair -> pair.getMatcher().getClass().equals(RecipientIsLocal.class))
- .findAny()
- .orElseThrow(() -> new ConfigurationException("Missing " + VacationMailet.class.getName() + " in mailets configuration (mailetcontainer -> processors -> transport)"));
- }
- }
-
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/8382d619/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java b/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java
index 0e1af99..72d74f2 100644
--- a/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java
+++ b/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java
@@ -44,52 +44,52 @@ public class MailetPreconditionTest {
@Test(expected = ConfigurationException.class)
public void vacationMailetCheckShouldThrowOnEmptyList() throws Exception {
- new JMAPModule.VacationMailetCheck().check(Lists.newArrayList());
+ JMAPModule.VACATION_MAILET_CHECK.check(Lists.newArrayList());
}
@Test(expected = NullPointerException.class)
public void vacationMailetCheckShouldThrowOnNullList() throws Exception {
- new JMAPModule.VacationMailetCheck().check(null);
+ JMAPModule.VACATION_MAILET_CHECK.check(null);
}
@Test(expected = ConfigurationException.class)
public void vacationMailetCheckShouldThrowOnWrongMatcher() throws Exception {
List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new All(), new VacationMailet(null, null, null, null, null)));
- new JMAPModule.VacationMailetCheck().check(pairs);
+ JMAPModule.VACATION_MAILET_CHECK.check(pairs);
}
@Test(expected = ConfigurationException.class)
public void vacationMailetCheckShouldThrowOnWrongMailet() throws Exception {
List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new RecipientIsLocal(), new Null()));
- new JMAPModule.VacationMailetCheck().check(pairs);
+ JMAPModule.VACATION_MAILET_CHECK.check(pairs);
}
@Test
public void vacationMailetCheckShouldNotThrowIfValidPairPresent() throws Exception {
List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new RecipientIsLocal(), new VacationMailet(null, null, null, null, null)));
- new JMAPModule.VacationMailetCheck().check(pairs);
+ JMAPModule.VACATION_MAILET_CHECK.check(pairs);
}
@Test(expected = ConfigurationException.class)
public void bccMailetCheckShouldThrowOnEmptyList() throws Exception {
- new CamelMailetContainerModule.BccMailetCheck().check(Lists.newArrayList());
+ CamelMailetContainerModule.BCC_Check.check(Lists.newArrayList());
}
@Test(expected = NullPointerException.class)
public void bccMailetCheckShouldThrowOnNullList() throws Exception {
- new CamelMailetContainerModule.BccMailetCheck().check(null);
+ CamelMailetContainerModule.BCC_Check.check(null);
}
@Test(expected = ConfigurationException.class)
public void bccMailetCheckShouldThrowOnWrongMatcher() throws Exception {
List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new RecipientIsLocal(), new RemoveMimeHeader()));
- new JMAPModule.VacationMailetCheck().check(pairs);
+ JMAPModule.VACATION_MAILET_CHECK.check(pairs);
}
@Test(expected = ConfigurationException.class)
public void bccMailetCheckShouldThrowOnWrongMailet() throws Exception {
List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new All(), new Null()));
- new JMAPModule.VacationMailetCheck().check(pairs);
+ JMAPModule.VACATION_MAILET_CHECK.check(pairs);
}
@Test(expected = ConfigurationException.class)
@@ -104,7 +104,7 @@ public class MailetPreconditionTest {
.build());
List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new All(), removeMimeHeader));
- new JMAPModule.VacationMailetCheck().check(pairs);
+ JMAPModule.VACATION_MAILET_CHECK.check(pairs);
}
@Test(expected = ConfigurationException.class)
@@ -117,6 +117,6 @@ public class MailetPreconditionTest {
.build());
List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new All(), removeMimeHeader));
- new JMAPModule.VacationMailetCheck().check(pairs);
+ JMAPModule.VACATION_MAILET_CHECK.check(pairs);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org