JAMES-2159 Use strong objects in MailetConfiguration

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1fe32b91
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1fe32b91
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1fe32b91

Branch: refs/heads/master
Commit: 1fe32b9170f1f11e433f0a1f915f216b6c71302e
Parents: 4c3e040
Author: Matthieu Baechler <matth...@apache.org>
Authored: Mon Sep 11 15:22:18 2017 +0200
Committer: Antoine Duprat <adup...@linagora.com>
Committed: Wed Sep 27 16:07:08 2017 +0200

----------------------------------------------------------------------
 .../mailets/configuration/CommonProcessors.java | 161 +++++++++++--------
 .../configuration/MailetConfiguration.java      |  66 +++++---
 .../configuration/MailetConfigurationTest.java  |  70 ++++++++
 .../crypto/SMIMEDecryptIntegrationTest.java     |  26 +--
 .../crypto/SMIMESignIntegrationTest.java        |  54 ++++---
 .../mailets/AmqpForwardAttachmentTest.java      |  41 ++---
 .../transport/mailets/GroupMappingTest.java     |  42 ++---
 .../mailets/ICSAttachmentWorkflowTest.java      |  50 +++---
 .../transport/mailets/StripAttachmentTest.java  |  33 ++--
 9 files changed, 352 insertions(+), 191 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/CommonProcessors.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/CommonProcessors.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/CommonProcessors.java
index 3af7fd0..130dae7 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/CommonProcessors.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/CommonProcessors.java
@@ -20,6 +20,29 @@
 
 package org.apache.james.mailets.configuration;
 
+import org.apache.james.jmap.mailet.VacationMailet;
+import org.apache.james.transport.mailets.AddDeliveredToHeader;
+import org.apache.james.transport.mailets.Bounce;
+import org.apache.james.transport.mailets.DSNBounce;
+import org.apache.james.transport.mailets.LocalDelivery;
+import org.apache.james.transport.mailets.Null;
+import org.apache.james.transport.mailets.PostmasterAlias;
+import org.apache.james.transport.mailets.RecipientRewriteTable;
+import org.apache.james.transport.mailets.RemoteDelivery;
+import org.apache.james.transport.mailets.RemoveMimeHeader;
+import org.apache.james.transport.mailets.SetMailAttribute;
+import org.apache.james.transport.mailets.SetMimeHeader;
+import org.apache.james.transport.mailets.Sieve;
+import org.apache.james.transport.mailets.ToProcessor;
+import org.apache.james.transport.mailets.ToRepository;
+import org.apache.james.transport.mailets.managesieve.ManageSieveMailet;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.HasMailAttribute;
+import org.apache.james.transport.matchers.InSpammerBlacklist;
+import org.apache.james.transport.matchers.RecipientIs;
+import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.transport.matchers.RelayLimit;
+import org.apache.james.transport.matchers.SMTPAuthSuccessful;
 import org.apache.mailet.Mail;
 
 public class CommonProcessors {
@@ -29,47 +52,52 @@ public class CommonProcessors {
                 .state("root")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("PostmasterAlias")
+                        .matcher(All.class)
+                        .mailet(PostmasterAlias.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("RelayLimit=30")
-                        .clazz("Null")
+                        .matcher(RelayLimit.class)
+                        .matcherCondition("30")
+                        .mailet(Null.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("RecipientIs=sievemana...@james.linagora.com")
-                        .clazz("ToProcessor")
+                        .matcher(RecipientIs.class)
+                        .matcherCondition("sievemana...@james.linagora.com")
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "sieve-manager-check")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("HasMailAttribute=spamChecked")
-                        .clazz("ToProcessor")
+                        .matcher(HasMailAttribute.class)
+                        .matcherCondition("spamChecked")
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "transport")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("SetMailAttribute")
+                        .matcher(All.class)
+                        .mailet(SetMailAttribute.class)
                         .addProperty("spamChecked", "true")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("SMTPAuthSuccessful")
-                        .clazz("ToProcessor")
+                        .matcher(SMTPAuthSuccessful.class)
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "transport")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("InSpammerBlacklist=query.bondedsender.org.")
-                        .clazz("ToProcessor")
+                        .matcher(InSpammerBlacklist.class)
+                        .matcherCondition("query.bondedsender.org.")
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "transport")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("InSpammerBlacklist=dnsbl.njabl.org.")
-                        .clazz("ToProcessor")
+                        .matcher(InSpammerBlacklist.class)
+                        .matcherCondition("dnsbl.njabl.org.")
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "spam")
                         .addProperty("notice", "550 Requested action not 
taken: rejected - see http://njabl.org/";)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("ToProcessor")
+                        .matcher(All.class)
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "transport")
                         .build())
                 .build();
@@ -80,12 +108,12 @@ public class CommonProcessors {
                 .state("error")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("Bounce")
+                        .matcher(All.class)
+                        .mailet(Bounce.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("ToRepository")
+                        .matcher(All.class)
+                        .mailet(ToRepository.class)
                         .addProperty("repositoryPath", 
"file://var/mail/error/")
                         .build())
                 .build();
@@ -96,45 +124,46 @@ public class CommonProcessors {
                 .state("transport")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("SMTPAuthSuccessful")
-                        .clazz("SetMimeHeader")
+                        .matcher(SMTPAuthSuccessful.class)
+                        .mailet(SetMimeHeader.class)
                         .addProperty("name", "X-UserIsAuth")
                         .addProperty("value", "true")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        
.match("HasMailAttribute=org.apache.james.SMIMECheckSignature")
-                        .clazz("SetMimeHeader")
+                        .matcher(HasMailAttribute.class)
+                        
.matcherCondition("org.apache.james.SMIMECheckSignature")
+                        .mailet(SetMimeHeader.class)
                         .addProperty("name", "X-WasSigned")
                         .addProperty("value", "true")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("RemoveMimeHeader")
+                        .matcher(All.class)
+                        .mailet(RemoveMimeHeader.class)
                         .addProperty("name", "bcc")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("RecipientRewriteTable")
+                        .matcher(All.class)
+                        .mailet(RecipientRewriteTable.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("RecipientIsLocal")
-                        .clazz("org.apache.james.jmap.mailet.VacationMailet")
+                        .matcher(RecipientIsLocal.class)
+                        .mailet(VacationMailet.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("RecipientIsLocal")
-                        .clazz("Sieve")
+                        .matcher(RecipientIsLocal.class)
+                        .mailet(Sieve.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("RecipientIsLocal")
-                        .clazz("AddDeliveredToHeader")
+                        .matcher(RecipientIsLocal.class)
+                        .mailet(AddDeliveredToHeader.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("RecipientIsLocal")
-                        .clazz("LocalDelivery")
+                        .matcher(RecipientIsLocal.class)
+                        .mailet(LocalDelivery.class)
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("SMTPAuthSuccessful")
-                        .clazz("RemoteDelivery")
+                        .matcher(SMTPAuthSuccessful.class)
+                        .mailet(RemoteDelivery.class)
                         .addProperty("outgoingQueue", "outgoing")
                         .addProperty("delayTime", "5000, 100000, 500000")
                         .addProperty("maxRetries", "25")
@@ -144,8 +173,8 @@ public class CommonProcessors {
                         .addProperty("bounceProcessor", "bounces")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("ToProcessor")
+                        .matcher(All.class)
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "relay-denied")
                         .build())
                 .build();
@@ -156,8 +185,8 @@ public class CommonProcessors {
                 .state("spam")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("ToRepository")
+                        .matcher(All.class)
+                        .mailet(ToRepository.class)
                         .addProperty("repositoryPath", "file://var/mail/spam/")
                         .build())
                 .build();
@@ -168,13 +197,13 @@ public class CommonProcessors {
                 .state("local-address-error")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("Bounce")
+                        .matcher(All.class)
+                        .mailet(Bounce.class)
                         .addProperty("attachment", "none")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("ToRepository")
+                        .matcher(All.class)
+                        .mailet(ToRepository.class)
                         .addProperty("repositoryPath", 
"file://var/mail/address-error/")
                         .build())
                 .build();
@@ -185,13 +214,13 @@ public class CommonProcessors {
                 .state("replay-denied")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("Bounce")
+                        .matcher(All.class)
+                        .mailet(Bounce.class)
                         .addProperty("attachment", "none")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("ToRepository")
+                        .matcher(All.class)
+                        .mailet(ToRepository.class)
                         .addProperty("repositoryPath", 
"file://var/mail/relay-denied/")
                         .addProperty("notice", "Warning: You are sending an 
e-mail to a remote server. You must be authentified to perform such an 
operation")
                         .build())
@@ -203,8 +232,8 @@ public class CommonProcessors {
                 .state("bounces")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("DSNBounce")
+                        .matcher(All.class)
+                        .mailet(DSNBounce.class)
                         .addProperty("passThrough", "false")
                         .build())
                 .build();
@@ -215,13 +244,13 @@ public class CommonProcessors {
                 .state("sieve-manager-check")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("RecipientIsLocal")
-                        .clazz("ToProcessor")
+                        .matcher(RecipientIsLocal.class)
+                        .mailet(ToProcessor.class)
                         .addProperty("processor", "sieve-manager")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("Bounce")
+                        .matcher(All.class)
+                        .mailet(Bounce.class)
                         .addProperty("inline", "heads")
                         .addProperty("attachment", "none")
                         .addProperty("passThrough", "false")
@@ -229,8 +258,8 @@ public class CommonProcessors {
                         .addProperty("notice", "You can't send messages to 
configure SIEVE on this serveur unless you are the official SIEVE manager.")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("Null")
+                        .matcher(All.class)
+                        .mailet(Null.class)
                         .build())
                 .build();
     }
@@ -240,18 +269,18 @@ public class CommonProcessors {
                 .state("sieve-manager")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("SetMailAttribute")
+                        .matcher(All.class)
+                        .mailet(SetMailAttribute.class)
                         .addProperty(Mail.SMTP_AUTH_USER_ATTRIBUTE_NAME, 
"true")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        
.clazz("org.apache.james.transport.mailets.managesieve.ManageSieveMailet")
+                        .matcher(All.class)
+                        .mailet(ManageSieveMailet.class)
                         .addProperty("helpURL", 
"file:/root/james-server-app-3.0.0-beta5-SNAPSHOT/conf/managesieve.help.txt")
                         .build())
                 .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        .clazz("Null")
+                        .matcher(All.class)
+                        .mailet(Null.class)
                         .build())
                 .build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfiguration.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfiguration.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfiguration.java
index f841bfb..ae91bc4 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfiguration.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfiguration.java
@@ -21,9 +21,13 @@
 package org.apache.james.mailets.configuration;
 
 import java.util.Map;
+import java.util.Optional;
 
+import org.apache.mailet.Mailet;
+import org.apache.mailet.Matcher;
+
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableMap;
 
 public class MailetConfiguration implements SerializableAsXml {
@@ -34,21 +38,28 @@ public class MailetConfiguration implements 
SerializableAsXml {
 
     public static class Builder {
 
-        private String match;
-        private String clazz;
+        private Class<? extends Matcher> matcher;
+        private Optional<String> matcherCondition;
+        private Class<? extends Mailet> mailet;
         private ImmutableMap.Builder<String, String> properties;
 
         private Builder() {
             properties = ImmutableMap.builder();
+            matcherCondition = Optional.empty();
+        }
+
+        public Builder matcher(Class<? extends Matcher> matcher) {
+            this.matcher = matcher;
+            return this;
         }
 
-        public Builder match(String match) {
-            this.match = match;
+        public Builder matcherCondition(String condition) {
+            this.matcherCondition = Optional.ofNullable(condition);
             return this;
         }
 
-        public Builder clazz(String clazz) {
-            this.clazz = clazz;
+        public Builder mailet(Class<? extends Mailet> mailet) {
+            this.mailet = mailet;
             return this;
         }
 
@@ -58,28 +69,34 @@ public class MailetConfiguration implements 
SerializableAsXml {
         }
         
         public MailetConfiguration build() {
-            Preconditions.checkState(!Strings.isNullOrEmpty(match), "'match' 
is mandatory");
-            Preconditions.checkState(!Strings.isNullOrEmpty(clazz), "'class' 
is mandatory");
-            return new MailetConfiguration(match, clazz, properties.build());
+            Preconditions.checkState(matcher != null, "'matcher' is 
mandatory");
+            Preconditions.checkState(mailet != null, "'mailet' is mandatory");
+            return new MailetConfiguration(matcher, matcherCondition, mailet, 
properties.build());
         }
     }
 
-    private final String match;
-    private final String clazz;
+    private final Class<? extends Matcher> matcher;
+    private final Optional<String> matcherCondition;
+    private final Class<? extends Mailet> mailet;
     private final Map<String, String> properties;
 
-    private MailetConfiguration(String match, String clazz, 
ImmutableMap<String, String> properties) {
-        this.match = match;
-        this.clazz = clazz;
+    private MailetConfiguration(Class<? extends Matcher> matcher, 
Optional<String> matcherCondition, Class<? extends Mailet> mailet, 
ImmutableMap<String, String> properties) {
+        this.matcher = matcher;
+        this.matcherCondition = matcherCondition;
+        this.mailet = mailet;
         this.properties = properties;
     }
 
-    public String getMatch() {
-        return match;
+    public Class<? extends Matcher> getMatcher() {
+        return matcher;
     }
 
-    public String getClazz() {
-        return clazz;
+    public Optional<String> getMatcherCondition() {
+        return matcherCondition;
+    }
+
+    public Class<? extends Mailet> getMailet() {
+        return mailet;
     }
 
     public Map<String, String> getProperties() {
@@ -89,11 +106,20 @@ public class MailetConfiguration implements 
SerializableAsXml {
     @Override
     public String serializeAsXml() {
         StringBuilder builder = new StringBuilder();
-        builder.append("<mailet match=\"").append(getMatch()).append("\" 
class=\"").append(getClazz()).append("\">\n");
+        builder
+            .append("<mailet match=\"").append(matcherWithCondition())
+            .append("\" class=\"").append(getMailet().getCanonicalName())
+            .append("\">\n");
         for (Map.Entry<String, String> entry : getProperties().entrySet()) {
             
builder.append("<").append(entry.getKey()).append(">").append(entry.getValue()).append("</").append(entry.getKey()).append(">\n");
         }
         builder.append("</mailet>\n");
         return builder.toString();
     }
+
+    @VisibleForTesting String matcherWithCondition() {
+        StringBuilder match = new 
StringBuilder().append(matcher.getCanonicalName());
+        matcherCondition.ifPresent(condition -> 
match.append("=").append(condition));
+        return match.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfigurationTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfigurationTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfigurationTest.java
new file mode 100644
index 0000000..3144adf
--- /dev/null
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/configuration/MailetConfigurationTest.java
@@ -0,0 +1,70 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.mailets.configuration;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.james.transport.mailets.ToProcessor;
+import org.apache.james.transport.matchers.All;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class MailetConfigurationTest {
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Test
+    public void builderShouldThrowWhenMatcherIsNull() {
+        expectedException.expect(IllegalStateException.class);
+        MailetConfiguration.builder()
+            .mailet(ToProcessor.class)
+            .build();
+    }
+
+    @Test
+    public void builderShouldThrowWhenMailetIsNull() {
+        expectedException.expect(IllegalStateException.class);
+        MailetConfiguration.builder()
+            .matcher(All.class)
+            .build();
+    }
+
+    @Test
+    public void matcherWithConditionShouldReturnMatcherWhenNoCondition() {
+        MailetConfiguration mailetConfiguration = MailetConfiguration.builder()
+            .matcher(All.class)
+            .mailet(ToProcessor.class)
+            .build();
+
+        
assertThat(mailetConfiguration.matcherWithCondition()).isEqualTo("org.apache.james.transport.matchers.All");
+    }
+
+    @Test
+    public void 
matcherWithConditionShouldReturnMatcherWithConditionWhenSomeCondition() {
+        MailetConfiguration mailetConfiguration = MailetConfiguration.builder()
+            .matcher(All.class)
+            .matcherCondition("condition")
+            .mailet(ToProcessor.class)
+            .build();
+
+        
assertThat(mailetConfiguration.matcherWithCondition()).isEqualTo("org.apache.james.transport.matchers.All=condition");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
index 7055506..3d09a73 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
@@ -25,17 +25,23 @@ import java.nio.charset.StandardCharsets;
 import java.time.ZonedDateTime;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
 import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
+import org.apache.james.transport.mailets.LocalDelivery;
+import org.apache.james.transport.mailets.RemoveMimeHeader;
+import org.apache.james.transport.mailets.SMIMEDecrypt;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.util.date.ZonedDateTimeProvider;
-import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -75,25 +81,25 @@ public class SMIMEDecryptIntegrationTest {
                 .state("transport")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("RemoveMimeHeader")
+                    .matcher(All.class)
+                    .mailet(RemoveMimeHeader.class)
                     .addProperty("name", "bcc")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .clazz("SMIMEDecrypt")
-                    .match("All")
+                    .mailet(SMIMEDecrypt.class)
+                    .matcher(All.class)
                     .addProperty("keyStoreFileName", 
temporaryFolder.getRoot().getAbsoluteFile().getAbsolutePath() + 
"/conf/smime.p12")
                     .addProperty("keyStorePassword", "secret")
                     .addProperty("keyStoreType", "PKCS12")
                     .addProperty("debug", "true")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("RecipientIsLocal")
-                    .clazz("org.apache.james.jmap.mailet.VacationMailet")
+                    .matcher(RecipientIsLocal.class)
+                    .mailet(VacationMailet.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("RecipientIsLocal")
-                    .clazz("LocalDelivery")
+                    .matcher(RecipientIsLocal.class)
+                    .mailet(LocalDelivery.class)
                     .build())
                 .build())
             .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
index d84a28d..bee6474 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
@@ -23,18 +23,31 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.ZonedDateTime;
 
+import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
 import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
+import org.apache.james.transport.mailets.LocalDelivery;
+import org.apache.james.transport.mailets.RecipientRewriteTable;
+import org.apache.james.transport.mailets.RemoteDelivery;
+import org.apache.james.transport.mailets.RemoveMimeHeader;
+import org.apache.james.transport.mailets.SMIMESign;
+import org.apache.james.transport.mailets.SetMimeHeader;
+import org.apache.james.transport.mailets.ToProcessor;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.HasMailAttribute;
+import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.transport.matchers.SMTPAuthSuccessful;
+import org.apache.james.transport.matchers.SenderIsLocal;
 import org.apache.james.util.date.ZonedDateTimeProvider;
-import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -74,45 +87,46 @@ public class SMIMESignIntegrationTest {
                 .state("transport")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                    .match("SMTPAuthSuccessful")
-                    .clazz("SetMimeHeader")
+                    .matcher(SMTPAuthSuccessful.class)
+                    .mailet(SetMimeHeader.class)
                     .addProperty("name", "X-UserIsAuth")
                     .addProperty("value", "true")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    
.match("HasMailAttribute=org.apache.james.SMIMECheckSignature")
-                    .clazz("SetMimeHeader")
+                    .matcher(HasMailAttribute.class)
+                    .matcherCondition("org.apache.james.SMIMECheckSignature")
+                    .mailet(SetMimeHeader.class)
                     .addProperty("name", "X-WasSigned")
                     .addProperty("value", "true")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("RemoveMimeHeader")
+                    .matcher(All.class)
+                    .mailet(RemoveMimeHeader.class)
                     .addProperty("name", "bcc")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("RecipientRewriteTable")
+                    .matcher(All.class)
+                    .mailet(RecipientRewriteTable.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("RecipientIsLocal")
-                    .clazz("org.apache.james.jmap.mailet.VacationMailet")
+                    .matcher(RecipientIsLocal.class)
+                    .mailet(VacationMailet.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .clazz("SMIMESign")
-                    .match("SenderIsLocal")
+                    .mailet(SMIMESign.class)
+                    .matcher(SenderIsLocal.class)
                     .addProperty("keyStoreFileName", 
temporaryFolder.getRoot().getAbsoluteFile().getAbsolutePath() + 
"/conf/smime.p12")
                     .addProperty("keyStorePassword", "secret")
                     .addProperty("keyStoreType", "PKCS12")
                     .addProperty("debug", "true")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("RecipientIsLocal")
-                    .clazz("LocalDelivery")
+                    .matcher(RecipientIsLocal.class)
+                    .mailet(LocalDelivery.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("SMTPAuthSuccessful")
-                    .clazz("RemoteDelivery")
+                    .matcher(SMTPAuthSuccessful.class)
+                    .mailet(RemoteDelivery.class)
                     .addProperty("outgoingQueue", "outgoing")
                     .addProperty("delayTime", "5000, 100000, 500000")
                     .addProperty("maxRetries", "25")
@@ -122,8 +136,8 @@ public class SMIMESignIntegrationTest {
                     .addProperty("bounceProcessor", "bounces")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("ToProcessor")
+                    .matcher(All.class)
+                    .mailet(ToProcessor.class)
                     .addProperty("processor", "relay-denied")
                     .build())
                 .build())

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index db43632..fd13da2 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -23,12 +23,15 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
 import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
@@ -93,36 +96,36 @@ public class AmqpForwardAttachmentTest {
                     .state("transport")
                     .enableJmx(true)
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("RemoveMimeHeader")
+                            .matcher(All.class)
+                            .mailet(RemoveMimeHeader.class)
                             .addProperty("name", "bcc")
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("StripAttachment")
-                            .addProperty("attribute", MAIL_ATTRIBUTE)
-                            .addProperty("pattern", ".*\\.txt")
+                            .matcher(All.class)
+                            .mailet(StripAttachment.class)
+                            
.addProperty(StripAttachment.ATTRIBUTE_PARAMETER_NAME, MAIL_ATTRIBUTE)
+                            
.addProperty(StripAttachment.PATTERN_PARAMETER_NAME, ".*\\.txt")
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("MimeDecodingMailet")
-                            .addProperty("attribute", MAIL_ATTRIBUTE)
+                            .matcher(All.class)
+                            .mailet(MimeDecodingMailet.class)
+                            
.addProperty(MimeDecodingMailet.ATTRIBUTE_PARAMETER_NAME, MAIL_ATTRIBUTE)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("AmqpForwardAttribute")
-                            .addProperty("uri", amqpRule.getAmqpUri())
-                            .addProperty("exchange", EXCHANGE_NAME)
-                            .addProperty("attribute", MAIL_ATTRIBUTE)
-                            .addProperty("routing_key", ROUTING_KEY)
+                            .matcher(All.class)
+                            .mailet(AmqpForwardAttribute.class)
+                            
.addProperty(AmqpForwardAttribute.URI_PARAMETER_NAME, amqpRule.getAmqpUri())
+                            
.addProperty(AmqpForwardAttribute.EXCHANGE_PARAMETER_NAME, EXCHANGE_NAME)
+                            
.addProperty(AmqpForwardAttribute.ATTRIBUTE_PARAMETER_NAME, MAIL_ATTRIBUTE)
+                            
.addProperty(AmqpForwardAttribute.ROUTING_KEY_PARAMETER_NAME, ROUTING_KEY)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("RecipientIsLocal")
-                            
.clazz("org.apache.james.jmap.mailet.VacationMailet")
+                            .matcher(RecipientIsLocal.class)
+                            .mailet(VacationMailet.class)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("RecipientIsLocal")
-                            .clazz("LocalDelivery")
+                            .matcher(RecipientIsLocal.class)
+                            .mailet(LocalDelivery.class)
                             .build())
                     .build())
             .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
index cd2e86d..8e773ae 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
@@ -31,6 +31,7 @@ import javax.mail.internet.MimeMessage;
 import org.apache.james.core.MailAddress;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.InMemoryDNSService;
+import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
@@ -39,6 +40,10 @@ import 
org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIsLocal;
+import org.apache.james.transport.matchers.RelayLimit;
+import org.apache.james.transport.matchers.SMTPAuthSuccessful;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
@@ -105,21 +110,22 @@ public class GroupMappingTest {
                 .state("root")
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("PostmasterAlias")
+                    .matcher(All.class)
+                    .mailet(PostmasterAlias.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("RelayLimit=30")
-                    .clazz("Null")
+                    .matcher(RelayLimit.class)
+                    .matcherCondition("30")
+                    .mailet(Null.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("SMTPAuthSuccessful")
-                    .clazz("ToProcessor")
+                    .matcher(SMTPAuthSuccessful.class)
+                    .mailet(ToProcessor.class)
                     .addProperty("processor", "transport")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("ToProcessor")
+                    .matcher(All.class)
+                    .mailet(ToProcessor.class)
                     .addProperty("processor", "transport")
                     .build())
                 .build())
@@ -127,25 +133,25 @@ public class GroupMappingTest {
             .addProcessor(ProcessorConfiguration.transport()
                 .enableJmx(true)
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("RemoveMimeHeader")
+                    .matcher(All.class)
+                    .mailet(RemoveMimeHeader.class)
                     .addProperty("name", "bcc")
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("RecipientRewriteTable")
+                    .matcher(All.class)
+                    .mailet(RecipientRewriteTable.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("RecipientIsLocal")
-                    .clazz("org.apache.james.jmap.mailet.VacationMailet")
+                    .matcher(RecipientIsLocal.class)
+                    .mailet(VacationMailet.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("RecipientIsLocal")
-                    .clazz("LocalDelivery")
+                    .matcher(RecipientIsLocal.class)
+                    .mailet(LocalDelivery.class)
                     .build())
                 .addMailet(MailetConfiguration.builder()
-                    .match("All")
-                    .clazz("RemoteDelivery")
+                    .matcher(All.class)
+                    .mailet(RemoteDelivery.class)
                     .addProperty("outgoingQueue", "outgoing")
                     .addProperty("delayTime", "5000, 100000, 500000")
                     .addProperty("maxRetries", "25")

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index 5c6e777..3a9f664 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -25,21 +25,25 @@ import java.util.Optional;
 
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.MailAddress;
+import org.apache.james.jmap.mailet.TextCalendarBodyToAttachment;
+import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
 import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.transport.mailets.amqp.AmqpRule;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.util.streams.SwarmGenericContainer;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
@@ -457,58 +461,58 @@ public class ICSAttachmentWorkflowTest {
                     .state("transport")
                     .enableJmx(true)
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("RemoveMimeHeader")
+                            .matcher(All.class)
+                            .mailet(RemoveMimeHeader.class)
                             .addProperty("name", "bcc")
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("StripAttachment")
+                            .matcher(All.class)
+                            .mailet(StripAttachment.class)
                             .addProperty("attribute", MAIL_ATTRIBUTE)
                             .addProperty("pattern", ".*")
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("MimeDecodingMailet")
+                            .matcher(All.class)
+                            .mailet(MimeDecodingMailet.class)
                             .addProperty("attribute", MAIL_ATTRIBUTE)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("ICalendarParser")
+                            .matcher(All.class)
+                            .mailet(ICalendarParser.class)
                             .addProperty("sourceAttribute", MAIL_ATTRIBUTE)
                             .addProperty("destinationAttribute", 
PARSED_ICAL_MAIL_ATTRIBUTE)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("ICALToHeader")
+                            .matcher(All.class)
+                            .mailet(ICALToHeader.class)
                             .addProperty("attribute", 
PARSED_ICAL_MAIL_ATTRIBUTE)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("ICALToJsonAttribute")
+                            .matcher(All.class)
+                            .mailet(ICALToJsonAttribute.class)
                             .addProperty("source", PARSED_ICAL_MAIL_ATTRIBUTE)
                             .addProperty("rawSource", MAIL_ATTRIBUTE)
                             .addProperty("destination", JSON_MAIL_ATTRIBUTE)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                        .match("All")
-                        
.clazz("org.apache.james.jmap.mailet.TextCalendarBodyToAttachment")
-                        .build())
+                            .matcher(All.class)
+                            .mailet(TextCalendarBodyToAttachment.class)
+                            .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("AmqpForwardAttribute")
+                            .matcher(All.class)
+                            .mailet(AmqpForwardAttribute.class)
                             .addProperty("uri", amqpRule.getAmqpUri())
                             .addProperty("exchange", EXCHANGE_NAME)
                             .addProperty("attribute", JSON_MAIL_ATTRIBUTE)
                             .addProperty("routing_key", ROUTING_KEY)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("RecipientIsLocal")
-                            
.clazz("org.apache.james.jmap.mailet.VacationMailet")
+                            .matcher(RecipientIsLocal.class)
+                            .mailet(VacationMailet.class)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("RecipientIsLocal")
-                            .clazz("LocalDelivery")
+                            .matcher(RecipientIsLocal.class)
+                            .mailet(LocalDelivery.class)
                             .build())
                     .build())
             .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/1fe32b91/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 24a3ecb..132b661 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -23,19 +23,22 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.MailAddress;
+import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailets.TemporaryJamesServer;
 import org.apache.james.mailets.configuration.CommonProcessors;
 import org.apache.james.mailets.configuration.MailetConfiguration;
 import org.apache.james.mailets.configuration.MailetContainer;
 import org.apache.james.mailets.configuration.ProcessorConfiguration;
-import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
-import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIsLocal;
 import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
@@ -77,33 +80,33 @@ public class StripAttachmentTest {
                     .state("transport")
                     .enableJmx(true)
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("RemoveMimeHeader")
+                            .matcher(All.class)
+                            .mailet(RemoveMimeHeader.class)
                             .addProperty("name", "bcc")
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("StripAttachment")
+                            .matcher(All.class)
+                            .mailet(StripAttachment.class)
                             .addProperty("attribute", "my.attribute")
                             .addProperty("remove", "all")
                             .addProperty("notpattern", ".*.tmp.*")
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("OnlyText")
+                            .matcher(All.class)
+                            .mailet(OnlyText.class)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("All")
-                            .clazz("RecoverAttachment")
+                            .matcher(All.class)
+                            .mailet(RecoverAttachment.class)
                             .addProperty("attribute", "my.attribute")
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("RecipientIsLocal")
-                            
.clazz("org.apache.james.jmap.mailet.VacationMailet")
+                            .matcher(RecipientIsLocal.class)
+                            .mailet(VacationMailet.class)
                             .build())
                     .addMailet(MailetConfiguration.builder()
-                            .match("RecipientIsLocal")
-                            .clazz("LocalDelivery")
+                            .matcher(RecipientIsLocal.class)
+                            .mailet(LocalDelivery.class)
                             .build())
                     .build())
             .build();


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

Reply via email to