MAILET-122 Error was generated as RRT tried to modify immutable List

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

Branch: refs/heads/master
Commit: aa5c83833ca7ae74a46d67e2a722cfc7a647572b
Parents: 35c2d4b
Author: Benoit Tellier <[email protected]>
Authored: Fri Oct 7 17:39:51 2016 +0200
Committer: Benoit Tellier <[email protected]>
Committed: Mon Oct 10 11:36:00 2016 +0200

----------------------------------------------------------------------
 .../AbstractRecipientRewriteTableMailet.java    | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/aa5c8383/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java
index b673989..ab89250 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java
@@ -31,8 +31,8 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.api.DomainListException;
-import org.apache.james.rrt.lib.Mapping;
-import org.apache.james.rrt.lib.Mappings;
+import org.apache.james.rrt.lib.Mapping;
+import org.apache.james.rrt.lib.Mappings;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.MailetContext.LogLevel;
@@ -56,7 +56,7 @@ public abstract class AbstractRecipientRewriteTableMailet 
extends GenericMailet
      * @see 
org.apache.mailet.base.GenericMailet#service(org.apache.mailet.Mail)
      */
     public void service(Mail mail) throws MessagingException {
-        Collection<MailAddress> recipients = mail.getRecipients();
+        Collection<MailAddress> recipients = new 
ArrayList<MailAddress>(mail.getRecipients());
         Collection<MailAddress> errors = new Vector<MailAddress>();
 
         MimeMessage message = mail.getMessage();
@@ -104,7 +104,7 @@ public abstract class AbstractRecipientRewriteTableMailet 
extends GenericMailet
             // In the future we may wish to address this.
             getMailetContext().sendMail(mail.getSender(), errors, message, 
Mail.ERROR);
         }
-
+        mail.setRecipients(recipients);
         if (recipients.size() == 0) {
             // We always consume this message
             mail.setState(Mail.GHOST);
@@ -126,23 +126,23 @@ public abstract class AbstractRecipientRewriteTableMailet 
extends GenericMailet
      * 
      * @throws MessagingException
      */
-    protected Collection<MailAddress> handleMappings(Mappings mappings, 
MailAddress sender, MailAddress recipient, MimeMessage message) throws 
MessagingException {
-        Iterator<Mapping> i = mappings.iterator();
+    protected Collection<MailAddress> handleMappings(Mappings mappings, 
MailAddress sender, MailAddress recipient, MimeMessage message) throws 
MessagingException {
+        Iterator<Mapping> i = mappings.iterator();
         Collection<MailAddress> remoteRecipients = new 
ArrayList<MailAddress>();
         Collection<MailAddress> localRecipients = new ArrayList<MailAddress>();
         while (i.hasNext()) {
-            Mapping rcpt = i.next();
+            Mapping rcpt = i.next();
 
-            if (!rcpt.hasDomain()) {
+            if (!rcpt.hasDomain()) {
                 // the mapping contains no domain name, use the default domain
                 try {
-                    rcpt = rcpt.appendDomain(domainList.getDefaultDomain());
+                    rcpt = rcpt.appendDomain(domainList.getDefaultDomain());
                 } catch (DomainListException e) {
                     throw new MessagingException("Unable to access 
DomainList", e);
                 }
             }
 
-            MailAddress nextMap = new MailAddress(rcpt.asString());
+            MailAddress nextMap = new MailAddress(rcpt.asString());
             if (getMailetContext().isLocalServer(nextMap.getDomain())) {
                 localRecipients.add(nextMap);
             } else {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to