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 ro...@apache.org on 2017/01/11 09:26:10 UTC
[22/50] [abbrv] james-project git commit: MAILET-115 Move set methods
from AbstractRedirect to MailModifier
MAILET-115 Move set methods from AbstractRedirect to MailModifier
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fe3a35e8
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fe3a35e8
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fe3a35e8
Branch: refs/heads/master
Commit: fe3a35e88c90f3f747a5f59218b3a8e75877d099
Parents: 03b2659
Author: Antoine Duprat <ad...@apache.org>
Authored: Tue Nov 15 15:58:29 2016 +0100
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Jan 11 10:03:30 2017 +0700
----------------------------------------------------------------------
.../org/apache/mailet/base/GenericMailet.java | 2 +-
.../james/transport/mailets/DSNBounce.java | 22 +-
.../mailets/redirect/AbstractRedirect.java | 174 ++-------------
.../mailets/redirect/MailModifier.java | 218 +++++++++++++++++++
.../mailets/redirect/MailModifierTest.java | 68 ++++++
5 files changed, 320 insertions(+), 164 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe3a35e8/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java b/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
index 741f3f7..20f8ca1 100644
--- a/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
+++ b/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
@@ -291,7 +291,7 @@ public abstract class GenericMailet implements Mailet, MailetConfig {
/**
* Utility method for obtaining a string representation of an array of Objects.
*/
- protected final String arrayToString(Object[] array) {
+ public final String arrayToString(Object[] array) {
if (array == null) {
return "null";
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe3a35e8/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
index d505874..617af79 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
@@ -34,6 +34,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.james.core.MailImpl;
import org.apache.james.transport.mailets.redirect.AbstractRedirect;
import org.apache.james.transport.mailets.redirect.InitParameters;
+import org.apache.james.transport.mailets.redirect.MailModifier;
import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters;
import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
import org.apache.james.transport.mailets.redirect.SpecialAddress;
@@ -201,14 +202,21 @@ public class DSNBounce extends AbstractRedirect {
newMail.setMessage(createBounceMessage(originalMail));
// Set additional headers
- setRecipients(newMail, getRecipients(originalMail), originalMail);
- setTo(newMail, getTo(originalMail), originalMail);
- getMimeMessageModifier(newMail, originalMail).replaceSubject(getSubjectPrefix(newMail, getInitParameters().getSubjectPrefix(), originalMail));
+ MailModifier mailModifier = MailModifier.builder()
+ .mailet(this)
+ .mail(newMail)
+ .dns(dns)
+ .build();
+ mailModifier.setRecipients(getRecipients(originalMail));
+ mailModifier.setTo(getTo(originalMail));
+ mailModifier.setSubjectPrefix(originalMail);
+ mailModifier.setReplyTo(getReplyTo(originalMail), originalMail);
+ mailModifier.setReversePath(getReversePath(originalMail), originalMail);
+ mailModifier.setIsReply(getInitParameters().isReply(), originalMail);
+ mailModifier.setSender(getSender(originalMail), originalMail);
+ newMail = mailModifier.getMail();
+
newMail.getMessage().setHeader(RFC2822Headers.DATE, getDateHeader(originalMail));
- setReplyTo(newMail, getReplyTo(originalMail), originalMail);
- setReversePath(newMail, getReversePath(originalMail), originalMail);
- setSender(newMail, getSender(originalMail), originalMail);
- setIsReply(newMail, getInitParameters().isReply(), originalMail);
newMail.getMessage().saveChanges();
getMailetContext().sendMail(newMail);
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe3a35e8/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
index eb44d13..8583685 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
@@ -20,14 +20,11 @@
package org.apache.james.transport.mailets.redirect;
import java.io.ByteArrayOutputStream;
-import java.net.UnknownHostException;
-import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import javax.inject.Inject;
import javax.mail.BodyPart;
-import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
@@ -40,11 +37,9 @@ import org.apache.james.core.MimeMessageUtil;
import org.apache.james.dnsservice.api.DNSService;
import org.apache.james.transport.mailets.Redirect;
import org.apache.james.transport.mailets.utils.MimeMessageModifier;
-import org.apache.james.transport.util.MailAddressUtils;
import org.apache.james.transport.util.SpecialAddressesUtils;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
-import org.apache.mailet.base.DateFormats;
import org.apache.mailet.base.GenericMailet;
import org.apache.mailet.base.RFC2822Headers;
@@ -200,19 +195,6 @@ public abstract class AbstractRedirect extends GenericMailet {
protected abstract List<MailAddress> getRecipients(Mail originalMail) throws MessagingException;
/**
- * Sets the recipients of <i>newMail</i> to <i>recipients</i>. If the
- * requested value is null does nothing. Is a "setX(Mail, Tx, Mail)" method.
- */
- protected void setRecipients(Mail newMail, List<MailAddress> recipients, Mail originalMail) {
- if (!recipients.isEmpty()) {
- newMail.setRecipients(recipients);
- if (getInitParameters().isDebug()) {
- log("recipients set to: " + arrayToString(recipients.toArray()));
- }
- }
- }
-
- /**
* Gets the <code>to</code> property. Returns the "To:" recipients of the
* new message. or null if no change is requested. Is a "getX()" method.
*
@@ -253,20 +235,6 @@ public abstract class AbstractRedirect extends GenericMailet {
}
/**
- * Sets the "To:" header of <i>newMail</i> to <i>to</i>. If the requested
- * value is null does nothing. Is a "setX(Mail, Tx, Mail)" method.
- */
- protected void setTo(Mail newMail, List<MailAddress> mailAddresses, Mail originalMail) throws MessagingException {
- if (mailAddresses != null) {
- InternetAddress[] internetAddresses = MailAddressUtils.toInternetAddressArray(mailAddresses);
- newMail.getMessage().setRecipients(Message.RecipientType.TO, internetAddresses);
- if (getInitParameters().isDebug()) {
- log("apparentlyTo set to: " + internetAddresses);
- }
- }
- }
-
- /**
* Gets the <code>replyto</code> property. Returns the Reply-To address of
* the new message, or null if no change is requested. Is a "getX()" method.
*
@@ -297,30 +265,6 @@ public abstract class AbstractRedirect extends GenericMailet {
}
/**
- * <p>
- * Sets the "Reply-To:" header of <i>newMail</i> to <i>replyTo</i>.
- * </p>
- * If the requested value is <code>SpecialAddress.NULL</code> will remove
- * the "Reply-To:" header. If the requested value is null does nothing.</p>
- * Is a "setX(Mail, Tx, Mail)" method.
- */
- protected void setReplyTo(Mail newMail, MailAddress replyTo, Mail originalMail) throws MessagingException {
- if (replyTo != null) {
- if (replyTo.equals(SpecialAddress.NULL)) {
- newMail.getMessage().setReplyTo(null);
- if (getInitParameters().isDebug()) {
- log("replyTo set to: null");
- }
- } else {
- newMail.getMessage().setReplyTo(new InternetAddress[] { replyTo.toInternetAddress() });
- if (getInitParameters().isDebug()) {
- log("replyTo set to: " + replyTo);
- }
- }
- }
- }
-
- /**
* Gets the <code>reversePath</code> property. Returns the reverse-path of
* the new message, or null if no change is requested. Is a "getX()" method.
*
@@ -346,28 +290,6 @@ public abstract class AbstractRedirect extends GenericMailet {
protected abstract MailAddress getReversePath(Mail originalMail) throws MessagingException;
/**
- * Sets the "reverse-path" of <i>newMail</i> to <i>reversePath</i>. If the
- * requested value is <code>SpecialAddress.NULL</code> sets it to "<>". If
- * the requested value is null does nothing. Is a "setX(Mail, Tx, Mail)"
- * method.
- */
- protected void setReversePath(MailImpl newMail, MailAddress reversePath, Mail originalMail) {
- if (reversePath != null) {
- if (reversePath.equals(SpecialAddress.NULL)) {
- newMail.setSender(null);
- if (getInitParameters().isDebug()) {
- log("reversePath set to: null");
- }
- } else {
- newMail.setSender(reversePath);
- if (getInitParameters().isDebug()) {
- log("reversePath set to: " + reversePath);
- }
- }
- }
- }
-
- /**
* Gets the <code>sender</code> property. Returns the new sender as a
* MailAddress, or null if no change is requested. Is a "getX()" method.
*
@@ -401,20 +323,6 @@ public abstract class AbstractRedirect extends GenericMailet {
}
/**
- * Sets the "From:" header of <i>newMail</i> to <i>sender</i>. If the
- * requested value is null does nothing. Is a "setX(Mail, Tx, Mail)" method.
- */
- protected void setSender(Mail newMail, MailAddress sender, Mail originalMail) throws MessagingException {
- if (sender != null) {
- newMail.getMessage().setFrom(sender.toInternetAddress());
-
- if (getInitParameters().isDebug()) {
- log("sender set to: " + sender);
- }
- }
- }
-
- /**
* Builds the subject of <i>newMail</i> appending the subject of
* <i>originalMail</i> to <i>subjectPrefix</i>. Is a "setX(Mail, Tx, Mail)"
* method.
@@ -422,22 +330,6 @@ public abstract class AbstractRedirect extends GenericMailet {
protected abstract Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException;
/**
- * Sets the "In-Reply-To:" header of <i>newMail</i> to the "Message-Id:" of
- * <i>originalMail</i>, if <i>isReply</i> is true.
- */
- protected void setIsReply(Mail newMail, boolean isReply, Mail originalMail) throws MessagingException {
- if (isReply) {
- String messageId = originalMail.getMessage().getMessageID();
- if (messageId != null) {
- newMail.getMessage().setHeader(RFC2822Headers.IN_REPLY_TO, messageId);
- if (getInitParameters().isDebug()) {
- log("IN_REPLY_TO set to: " + messageId);
- }
- }
- }
- }
-
- /**
* Mailet initialization routine. Will setup static values for each "x"
* initialization parameter in config.xml, using getX(), if
* {@link #isStatic()} returns true.
@@ -475,8 +367,13 @@ public abstract class AbstractRedirect extends GenericMailet {
// the original untouched
MailImpl newMail = new MailImpl(originalMail);
try {
- setRemoteAddr(newMail);
- setRemoteHost(newMail);
+ MailModifier mailModifier = MailModifier.builder()
+ .mailet(this)
+ .mail(newMail)
+ .dns(dns)
+ .build();
+ mailModifier.setRemoteAddr();
+ mailModifier.setRemoteHost();
if (getInitParameters().isDebug()) {
log("New mail - sender: " + newMail.getSender() + ", recipients: " + arrayToString(newMail.getRecipients().toArray()) + ", name: " + newMail.getName() + ", remoteHost: " + newMail.getRemoteHost() + ", remoteAddr: " + newMail.getRemoteAddr() + ", state: " + newMail.getState()
@@ -515,31 +412,22 @@ public abstract class AbstractRedirect extends GenericMailet {
// Set additional headers
- setRecipients(newMail, getRecipients(originalMail), originalMail);
-
- setTo(newMail, getTo(originalMail), originalMail);
-
- getMimeMessageModifier(newMail, originalMail).replaceSubject(getSubjectPrefix(newMail, getInitParameters().getSubjectPrefix(), originalMail));
-
- if (newMail.getMessage().getHeader(RFC2822Headers.DATE) == null) {
- newMail.getMessage().setHeader(RFC2822Headers.DATE, DateFormats.RFC822_DATE_FORMAT.format(new Date()));
+ mailModifier.setRecipients(getRecipients(originalMail));
+ mailModifier.setTo(getTo(originalMail));
+ mailModifier.setSubjectPrefix(originalMail);
+ mailModifier.setReplyTo(getReplyTo(originalMail), originalMail);
+ mailModifier.setReversePath(getReversePath(originalMail), originalMail);
+ mailModifier.setIsReply(getInitParameters().isReply(), originalMail);
+ mailModifier.setSender(getSender(originalMail), originalMail);
+ mailModifier.initializeDateIfNotPresent();
+ if (keepMessageId) {
+ mailModifier.setMessageId(originalMail);
}
-
- setReplyTo(newMail, getReplyTo(originalMail), originalMail);
-
- setReversePath(newMail, getReversePath(originalMail), originalMail);
-
- setSender(newMail, getSender(originalMail), originalMail);
-
- setIsReply(newMail, getInitParameters().isReply(), originalMail);
+ newMail = mailModifier.getMail();
newMail.getMessage().saveChanges();
newMail.removeAllAttributes();
- if (keepMessageId) {
- setMessageId(newMail, originalMail);
- }
-
if (senderDomainIsValid(newMail)) {
// Send it off...
getMailetContext().sendMail(newMail);
@@ -559,22 +447,6 @@ public abstract class AbstractRedirect extends GenericMailet {
protected abstract MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException;
- private void setRemoteAddr(MailImpl newMail) {
- try {
- newMail.setRemoteAddr(dns.getLocalHost().getHostAddress());
- } catch (UnknownHostException e) {
- newMail.setRemoteAddr("127.0.0.1");
- }
- }
-
- private void setRemoteHost(MailImpl newMail) {
- try {
- newMail.setRemoteHost(dns.getLocalHost().getHostName());
- } catch (UnknownHostException e) {
- newMail.setRemoteHost("localhost");
- }
- }
-
/**
* Utility method for obtaining a string representation of a Message's
* headers
@@ -752,16 +624,6 @@ public abstract class AbstractRedirect extends GenericMailet {
}
}
- private void setMessageId(Mail newMail, Mail originalMail) throws MessagingException {
- String messageId = originalMail.getMessage().getMessageID();
- if (messageId != null) {
- newMail.getMessage().setHeader(RFC2822Headers.MESSAGE_ID, messageId);
- if (getInitParameters().isDebug()) {
- log("MESSAGE_ID restored to: " + messageId);
- }
- }
- }
-
/**
* <p>
* Checks if a sender domain of <i>mail</i> is valid.
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe3a35e8/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
new file mode 100644
index 0000000..407836c
--- /dev/null
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
@@ -0,0 +1,218 @@
+/****************************************************************
+ * 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.transport.mailets.redirect;
+
+import java.net.UnknownHostException;
+import java.util.Date;
+import java.util.List;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.internet.InternetAddress;
+
+import org.apache.james.core.MailImpl;
+import org.apache.james.dnsservice.api.DNSService;
+import org.apache.james.transport.util.MailAddressUtils;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.base.DateFormats;
+import org.apache.mailet.base.RFC2822Headers;
+
+import com.google.common.base.Preconditions;
+
+public class MailModifier {
+
+ private static final String LOCAHOST = "127.0.0.1";
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static class Builder {
+
+ private AbstractRedirect mailet;
+ private MailImpl mail;
+ private DNSService dns;
+
+ private Builder() {
+ }
+
+ public Builder mailet(AbstractRedirect mailet) {
+ this.mailet = mailet;
+ return this;
+ }
+
+ public Builder mail(MailImpl mail) {
+ this.mail = mail;
+ return this;
+ }
+
+ public Builder dns(DNSService dns) {
+ this.dns = dns;
+ return this;
+ }
+
+ public MailModifier build() {
+ Preconditions.checkNotNull(mailet, "'mailet' is mandatory");
+ Preconditions.checkNotNull(mail, "'mail' is mandatory");
+ Preconditions.checkNotNull(dns, "'dns' is mandatory");
+ return new MailModifier(mailet, mail, dns);
+ }
+ }
+
+ private final AbstractRedirect mailet;
+ private final MailImpl mail;
+ private final DNSService dns;
+
+ private MailModifier(AbstractRedirect mailet, MailImpl mail, DNSService dns) {
+ this.mailet = mailet;
+ this.mail = mail;
+ this.dns = dns;
+ }
+
+ public void setRemoteAddr() {
+ try {
+ mail.setRemoteAddr(dns.getLocalHost().getHostAddress());
+ } catch (UnknownHostException e) {
+ mail.setRemoteAddr(LOCAHOST);
+ }
+ }
+
+ public void setRemoteHost() {
+ try {
+ mail.setRemoteHost(dns.getLocalHost().getHostName());
+ } catch (UnknownHostException e) {
+ mail.setRemoteHost("localhost");
+ }
+ }
+
+ public void setRecipients(List<MailAddress> recipients) {
+ if (!recipients.isEmpty()) {
+ mail.setRecipients(recipients);
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("recipients set to: " + mailet.arrayToString(recipients.toArray()));
+ }
+ }
+ }
+
+ public void setTo(List<MailAddress> mailAddresses) throws MessagingException {
+ if (mailAddresses != null) {
+ InternetAddress[] internetAddresses = MailAddressUtils.toInternetAddressArray(mailAddresses);
+ mail.getMessage().setRecipients(Message.RecipientType.TO, internetAddresses);
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("apparentlyTo set to: " + internetAddresses);
+ }
+ }
+ }
+
+ public void setSubjectPrefix(Mail originalMail) throws MessagingException {
+ mailet.getMimeMessageModifier(mail, originalMail)
+ .replaceSubject(mailet.getSubjectPrefix(mail, mailet.getInitParameters().getSubjectPrefix(), originalMail));
+ }
+
+ /**
+ * <p>
+ * Sets the "Reply-To:" header of <i>newMail</i> to <i>replyTo</i>.
+ * </p>
+ * If the requested value is <code>SpecialAddress.NULL</code> will remove
+ * the "Reply-To:" header. If the requested value is null does nothing.</p>
+ */
+ public void setReplyTo(MailAddress replyTo, Mail originalMail) throws MessagingException {
+ if (replyTo != null) {
+ if (replyTo.equals(SpecialAddress.NULL)) {
+ mail.getMessage().setReplyTo(null);
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("replyTo set to: null");
+ }
+ } else {
+ mail.getMessage().setReplyTo(new InternetAddress[] { replyTo.toInternetAddress() });
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("replyTo set to: " + replyTo);
+ }
+ }
+ }
+ }
+
+ /**
+ * Sets the "reverse-path" of <i>newMail</i> to <i>reversePath</i>. If the
+ * requested value is <code>SpecialAddress.NULL</code> sets it to "<>". If
+ * the requested value is null does nothing.
+ */
+ public void setReversePath(MailAddress reversePath, Mail originalMail) {
+ if (reversePath != null) {
+ if (reversePath.equals(SpecialAddress.NULL)) {
+ mail.setSender(null);
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("reversePath set to: null");
+ }
+ } else {
+ mail.setSender(reversePath);
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("reversePath set to: " + reversePath);
+ }
+ }
+ }
+ }
+
+ /**
+ * Sets the "In-Reply-To:" header of <i>newMail</i> to the "Message-Id:" of
+ * <i>originalMail</i>, if <i>isReply</i> is true.
+ */
+ public void setIsReply(boolean isReply, Mail originalMail) throws MessagingException {
+ if (isReply) {
+ String messageId = originalMail.getMessage().getMessageID();
+ if (messageId != null) {
+ mail.getMessage().setHeader(RFC2822Headers.IN_REPLY_TO, messageId);
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("IN_REPLY_TO set to: " + messageId);
+ }
+ }
+ }
+ }
+
+ public void setSender(MailAddress sender, Mail originalMail) throws MessagingException {
+ if (sender != null) {
+ mail.getMessage().setFrom(sender.toInternetAddress());
+
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("sender set to: " + sender);
+ }
+ }
+ }
+
+ public void initializeDateIfNotPresent() throws MessagingException {
+ if (mail.getMessage().getHeader(RFC2822Headers.DATE) == null) {
+ mail.getMessage().setHeader(RFC2822Headers.DATE, DateFormats.RFC822_DATE_FORMAT.format(new Date()));
+ }
+ }
+
+ public void setMessageId(Mail originalMail) throws MessagingException {
+ String messageId = originalMail.getMessage().getMessageID();
+ if (messageId != null) {
+ mail.getMessage().setHeader(RFC2822Headers.MESSAGE_ID, messageId);
+ if (mailet.getInitParameters().isDebug()) {
+ mailet.log("MESSAGE_ID restored to: " + messageId);
+ }
+ }
+ }
+
+ public MailImpl getMail() {
+ return mail;
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/fe3a35e8/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/MailModifierTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/MailModifierTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/MailModifierTest.java
new file mode 100644
index 0000000..335e968
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/MailModifierTest.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * 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.transport.mailets.redirect;
+
+import static org.mockito.Mockito.mock;
+
+import org.apache.james.core.MailImpl;
+import org.apache.james.dnsservice.api.DNSService;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class MailModifierTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void buildShouldThrowWhenMailetIsNull() {
+ expectedException.expect(NullPointerException.class);
+ expectedException.expectMessage("'mailet' is mandatory");
+ MailModifier.builder().build();
+ }
+
+ @Test
+ public void buildShouldThrowWhenMailIsNull() {
+ expectedException.expect(NullPointerException.class);
+ expectedException.expectMessage("'mail' is mandatory");
+ MailModifier.builder()
+ .mailet(mock(AbstractRedirect.class))
+ .build();
+ }
+
+ @Test
+ public void buildShouldThrowWhenDNSIsNull() {
+ expectedException.expect(NullPointerException.class);
+ expectedException.expectMessage("'dns' is mandatory");
+ MailModifier.builder()
+ .mailet(mock(AbstractRedirect.class))
+ .mail(mock(MailImpl.class))
+ .build();
+ }
+
+ @Test
+ public void buildShouldWorkWhenEverythingProvided() {
+ MailModifier.builder()
+ .mailet(mock(AbstractRedirect.class))
+ .mail(mock(MailImpl.class))
+ .dns(mock(DNSService.class))
+ .build();
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org