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:03 UTC

[15/50] [abbrv] james-project git commit: MAILET-115 Refactor getSender & getReversePath

MAILET-115 Refactor getSender & getReversePath


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

Branch: refs/heads/master
Commit: 6f52c81a1d9d5c149e209bff65ca2fc05c1b4c81
Parents: 734a656
Author: Antoine Duprat <ad...@apache.org>
Authored: Tue Nov 15 10:48:56 2016 +0100
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Jan 11 10:03:29 2017 +0700

----------------------------------------------------------------------
 .../apache/james/transport/mailets/Bounce.java  |   9 +-
 .../james/transport/mailets/DSNBounce.java      |   9 +-
 .../transport/mailets/NotifyPostmaster.java     |   9 +-
 .../james/transport/mailets/NotifySender.java   |   9 +-
 .../james/transport/mailets/Redirect.java       |  16 +--
 .../apache/james/transport/mailets/Resend.java  |   9 +-
 .../mailets/redirect/AbstractRedirect.java      |   4 +
 .../james/transport/util/ReversePathUtils.java  |  57 --------
 .../james/transport/util/SenderUtils.java       |  57 --------
 .../transport/util/SpecialAddressesUtils.java   |  19 +++
 .../transport/util/ReversePathUtilsTest.java    | 129 -------------------
 .../james/transport/util/SenderUtilsTest.java   | 118 -----------------
 .../util/SpecialAddressesUtilsTest.java         |  61 ++++++++-
 13 files changed, 113 insertions(+), 393 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
index 9429bf5..b5e7ca7 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
@@ -30,8 +30,7 @@ import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters;
 import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
-import org.apache.james.transport.util.ReversePathUtils;
-import org.apache.james.transport.util.SenderUtils;
+import org.apache.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
@@ -160,12 +159,14 @@ public class Bounce extends AbstractRedirect {
 
     @Override
     protected MailAddress getReversePath() throws MessagingException {
-        return ReversePathUtils.from(this).getReversePath();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), AbstractRedirect.REVERSE_PATH_ALLOWED_SPECIALS);
     }
 
     @Override
     protected MailAddress getSender() throws MessagingException {
-        return SenderUtils.from(this).getSender();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getSender(), AbstractRedirect.SENDER_ALLOWED_SPECIALS);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/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 0d0b795..6e7197e 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
@@ -40,8 +40,7 @@ import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.james.transport.mailets.redirect.TypeCode;
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
 import org.apache.james.transport.util.Patterns;
-import org.apache.james.transport.util.ReversePathUtils;
-import org.apache.james.transport.util.SenderUtils;
+import org.apache.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.DateFormats;
@@ -147,7 +146,8 @@ public class DSNBounce extends AbstractRedirect {
 
     @Override
     protected MailAddress getReversePath() throws MessagingException {
-        return ReversePathUtils.from(this).getReversePath();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), AbstractRedirect.REVERSE_PATH_ALLOWED_SPECIALS);
     }
 
     @Override
@@ -157,7 +157,8 @@ public class DSNBounce extends AbstractRedirect {
 
     @Override
     protected MailAddress getSender() throws MessagingException {
-        return SenderUtils.from(this).getSender();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getSender(), AbstractRedirect.SENDER_ALLOWED_SPECIALS);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
index 4b90ac8..14144fc 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
@@ -31,8 +31,7 @@ import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters;
 import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
-import org.apache.james.transport.util.ReversePathUtils;
-import org.apache.james.transport.util.SenderUtils;
+import org.apache.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.MailetConfig;
@@ -172,7 +171,8 @@ public class NotifyPostmaster extends AbstractRedirect {
 
     @Override
     protected MailAddress getReversePath() throws MessagingException {
-        return ReversePathUtils.from(this).getReversePath();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), AbstractRedirect.REVERSE_PATH_ALLOWED_SPECIALS);
     }
 
     @Override
@@ -182,7 +182,8 @@ public class NotifyPostmaster extends AbstractRedirect {
 
     @Override
     protected MailAddress getSender() throws MessagingException {
-        return SenderUtils.from(this).getSender();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getSender(), AbstractRedirect.SENDER_ALLOWED_SPECIALS);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
index 0299a06..2d35948 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
@@ -31,8 +31,7 @@ import org.apache.james.transport.mailets.redirect.NotifyMailetInitParameters;
 import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
-import org.apache.james.transport.util.ReversePathUtils;
-import org.apache.james.transport.util.SenderUtils;
+import org.apache.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.MailetConfig;
@@ -172,7 +171,8 @@ public class NotifySender extends AbstractRedirect {
 
     @Override
     protected MailAddress getReversePath() throws MessagingException {
-        return ReversePathUtils.from(this).getReversePath();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), AbstractRedirect.REVERSE_PATH_ALLOWED_SPECIALS);
     }
 
     @Override
@@ -182,7 +182,8 @@ public class NotifySender extends AbstractRedirect {
 
     @Override
     protected MailAddress getSender() throws MessagingException {
-        return SenderUtils.from(this).getSender();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getSender(), AbstractRedirect.SENDER_ALLOWED_SPECIALS);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
index b31f609..22fddc6 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
@@ -31,7 +31,7 @@ import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters;
 import org.apache.james.transport.mailets.redirect.TypeCode;
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
 import org.apache.james.transport.util.MailAddressUtils;
-import org.apache.james.transport.util.SenderUtils;
+import org.apache.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
@@ -377,15 +377,8 @@ public class Redirect extends AbstractRedirect {
 
     @Override
     protected MailAddress getReversePath() throws MessagingException {
-        String addressString = getInitParameter("reversePath");
-        if (addressString == null) {
-            return null;
-        }
-
-        List<MailAddress> mailAddress = AddressExtractor.withContext(getMailetContext())
-                .allowedSpecials(ImmutableList.of("postmaster", "sender", "null"))
-                .extract(addressString);
-        return mailAddress.get(0);
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), ImmutableList.of("postmaster", "sender", "null"));
     }
 
     @Override
@@ -409,7 +402,8 @@ public class Redirect extends AbstractRedirect {
 
     @Override
     protected MailAddress getSender() throws MessagingException {
-        return SenderUtils.from(this).getSender();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getSender(), AbstractRedirect.SENDER_ALLOWED_SPECIALS);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
index d2aa272..9fd24ff 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
@@ -30,8 +30,7 @@ import org.apache.james.transport.mailets.redirect.InitParameters;
 import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters;
 import org.apache.james.transport.mailets.utils.MimeMessageModifier;
 import org.apache.james.transport.util.MailAddressUtils;
-import org.apache.james.transport.util.ReversePathUtils;
-import org.apache.james.transport.util.SenderUtils;
+import org.apache.james.transport.util.SpecialAddressesUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
@@ -348,7 +347,8 @@ public class Resend extends AbstractRedirect {
 
     @Override
     protected MailAddress getReversePath() throws MessagingException {
-        return ReversePathUtils.from(this).getReversePath();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getReversePath(), AbstractRedirect.REVERSE_PATH_ALLOWED_SPECIALS);
     }
 
     @Override
@@ -364,7 +364,8 @@ public class Resend extends AbstractRedirect {
 
     @Override
     protected MailAddress getSender() throws MessagingException {
-        return SenderUtils.from(this).getSender();
+        return SpecialAddressesUtils.from(this)
+                .getFirstSpecialAddressIfMatchingOrGivenAddress(getInitParameters().getSender(), AbstractRedirect.SENDER_ALLOWED_SPECIALS);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/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 faf359f..8a12293 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
@@ -48,6 +48,8 @@ import org.apache.mailet.base.DateFormats;
 import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.base.RFC2822Headers;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * <p>
  * Abstract mailet providing configurable redirection services.<br>
@@ -150,6 +152,8 @@ import org.apache.mailet.base.RFC2822Headers;
 public abstract class AbstractRedirect extends GenericMailet {
 
     private static final char LINE_BREAK = '\n';
+    public static final List<String> REVERSE_PATH_ALLOWED_SPECIALS = ImmutableList.of("postmaster", "sender", "null", "unaltered");
+    public static final List<String> SENDER_ALLOWED_SPECIALS = ImmutableList.of("postmaster", "sender", "unaltered");
 
     public abstract InitParameters getInitParameters();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReversePathUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReversePathUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReversePathUtils.java
deleted file mode 100644
index 651f8e1..0000000
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReversePathUtils.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************
- * 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.util;
-
-import java.util.List;
-
-import javax.mail.MessagingException;
-
-import org.apache.james.transport.mailets.redirect.AbstractRedirect;
-import org.apache.james.transport.mailets.redirect.AddressExtractor;
-import org.apache.mailet.MailAddress;
-
-import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-
-public class ReversePathUtils {
-
-    public static ReversePathUtils from(AbstractRedirect mailet) {
-        return new ReversePathUtils(mailet);
-    }
-
-    private final AbstractRedirect mailet;
-
-    private ReversePathUtils(AbstractRedirect mailet) {
-        this.mailet = mailet;
-    }
-
-    public MailAddress getReversePath() throws MessagingException {
-        String reversePath = mailet.getInitParameters().getReversePath();
-        if (Strings.isNullOrEmpty(reversePath)) {
-            return null;
-        }
-
-        List<MailAddress> extractAddresses = AddressExtractor
-                .withContext(mailet.getMailetContext())
-                .allowedSpecials(ImmutableList.of("postmaster", "sender", "null", "unaltered"))
-                .extract(reversePath);
-        return FluentIterable.from(extractAddresses).first().orNull();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
deleted file mode 100644
index 20c73ea..0000000
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************
- * 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.util;
-
-import java.util.List;
-
-import javax.mail.MessagingException;
-
-import org.apache.james.transport.mailets.redirect.AbstractRedirect;
-import org.apache.james.transport.mailets.redirect.AddressExtractor;
-import org.apache.mailet.MailAddress;
-
-import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-
-public class SenderUtils {
-
-    public static SenderUtils from(AbstractRedirect mailet) {
-        return new SenderUtils(mailet);
-    }
-
-    private final AbstractRedirect mailet;
-
-    private SenderUtils(AbstractRedirect mailet) {
-        this.mailet = mailet;
-    }
-
-    public MailAddress getSender() throws MessagingException {
-        String sender = mailet.getInitParameters().getSender();
-        if (Strings.isNullOrEmpty(sender)) {
-            return null;
-        }
-
-        List<MailAddress> extractAddresses = AddressExtractor
-                .withContext(mailet.getMailetContext())
-                .allowedSpecials(ImmutableList.of("postmaster", "sender", "unaltered"))
-                .extract(sender);
-        return FluentIterable.from(extractAddresses).first().orNull();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
index a6e6dbe..707925d 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
@@ -26,6 +26,7 @@ import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.ParseException;
 
+import org.apache.james.transport.mailets.redirect.AddressExtractor;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.james.transport.mailets.redirect.SpecialAddressKind;
 import org.apache.mailet.Mail;
@@ -33,6 +34,8 @@ import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.base.RFC2822Headers;
 
+import com.google.common.base.Strings;
+import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
@@ -254,4 +257,20 @@ public class SpecialAddressesUtils {
             return ImmutableList.of();
         }
     }
+
+    /**
+     * If the givenAddress matches one of the allowedSpecials SpecialAddresses, then it's returned
+     * else the givenAddress is returned.
+     */
+    public MailAddress getFirstSpecialAddressIfMatchingOrGivenAddress(String givenAddress, List<String> allowedSpecials) throws MessagingException {
+        if (Strings.isNullOrEmpty(givenAddress)) {
+            return null;
+        }
+
+        List<MailAddress> extractAddresses = AddressExtractor
+                .withContext(genericMailet.getMailetContext())
+                .allowedSpecials(allowedSpecials)
+                .extract(givenAddress);
+        return FluentIterable.from(extractAddresses).first().orNull();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReversePathUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReversePathUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReversePathUtilsTest.java
deleted file mode 100644
index 4ceff65..0000000
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReversePathUtilsTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************
- * 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.util;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.apache.james.transport.mailets.redirect.AbstractRedirect;
-import org.apache.james.transport.mailets.redirect.InitParameters;
-import org.apache.james.transport.mailets.redirect.SpecialAddress;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.MailetContext;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ReversePathUtilsTest {
-
-    private InitParameters initParameters;
-    private MailAddress postmaster;
-    private ReversePathUtils testee;
-
-    @Before
-    public void setup() throws Exception {
-        AbstractRedirect mailet = mock(AbstractRedirect.class);
-        initParameters = mock(InitParameters.class);
-        when(mailet.getInitParameters())
-            .thenReturn(initParameters);
-
-        MailetContext mailetContext = mock(MailetContext.class);
-        postmaster = new MailAddress("postmaster@james.org");
-        when(mailetContext.getPostmaster())
-            .thenReturn(postmaster);
-        when(mailet.getMailetContext())
-            .thenReturn(mailetContext);
-
-        testee = ReversePathUtils.from(mailet);
-    }
-
-    @Test
-    public void getReversePathShouldReturnNullWhenReversePathInitParameterIsNull() throws Exception {
-        when(initParameters.getReversePath())
-            .thenReturn(null);
-
-        MailAddress reversePath = testee.getReversePath();
-
-        assertThat(reversePath).isNull();
-    }
-
-    @Test
-    public void getReversePathShouldReturnNullWhenReversePathInitParameterIsEmpty() throws Exception {
-        when(initParameters.getReversePath())
-            .thenReturn("");
-
-        MailAddress reversePath = testee.getReversePath();
-
-        assertThat(reversePath).isNull();
-    }
-
-    @Test
-    public void getReversePathShouldReturnFirstMailAddressWhenMultipleAddresses() throws Exception {
-        when(initParameters.getReversePath())
-            .thenReturn("test@james.org, test2@james.org");
-
-        MailAddress reversePath = testee.getReversePath();
-
-        MailAddress expectedMailAddress = new MailAddress("test", "james.org");
-        assertThat(reversePath).isEqualTo(expectedMailAddress);
-    }
-
-    @Test
-    public void getReversePathShouldReturnPostmasterSpecialAddressWhenFirstAddressIsSpecialPostmaster() throws Exception {
-        when(initParameters.getReversePath())
-            .thenReturn("postmaster, test2@james.org");
-
-        MailAddress reversePath = testee.getReversePath();
-
-        assertThat(reversePath).isEqualTo(postmaster);
-    }
-
-    @Test
-    public void getReversePathShouldReturnSenderSpecialAddressWhenFirstAddressIsSpecialSender() throws Exception {
-        when(initParameters.getReversePath())
-            .thenReturn("sender, test2@james.org");
-
-        MailAddress reversePath = testee.getReversePath();
-
-        MailAddress expectedMailAddress = SpecialAddress.SENDER;
-        assertThat(reversePath).isEqualTo(expectedMailAddress);
-    }
-
-    @Test
-    public void getReversePathShouldReturnNullSpecialAddressWhenFirstAddressIsSpecialNull() throws Exception {
-        when(initParameters.getReversePath())
-            .thenReturn("null, test2@james.org");
-
-        MailAddress reversePath = testee.getReversePath();
-
-        MailAddress expectedMailAddress = SpecialAddress.NULL;
-        assertThat(reversePath).isEqualTo(expectedMailAddress);
-    }
-
-    @Test
-    public void getReversePathShouldReturnUnalteredSpecialAddressWhenFirstAddressIsSpecialUnaltered() throws Exception {
-        when(initParameters.getReversePath())
-            .thenReturn("unaltered, test2@james.org");
-
-        MailAddress reversePath = testee.getReversePath();
-
-        MailAddress expectedMailAddress = SpecialAddress.UNALTERED;
-        assertThat(reversePath).isEqualTo(expectedMailAddress);
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
deleted file mode 100644
index 50af2ce..0000000
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/****************************************************************
- * 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.util;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.apache.james.transport.mailets.redirect.AbstractRedirect;
-import org.apache.james.transport.mailets.redirect.InitParameters;
-import org.apache.james.transport.mailets.redirect.SpecialAddress;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.MailetContext;
-import org.junit.Before;
-import org.junit.Test;
-
-public class SenderUtilsTest {
-
-    private InitParameters initParameters;
-    private MailAddress postmaster;
-    private SenderUtils testee;
-
-    @Before
-    public void setup() throws Exception {
-        AbstractRedirect mailet = mock(AbstractRedirect.class);
-        initParameters = mock(InitParameters.class);
-        when(mailet.getInitParameters())
-            .thenReturn(initParameters);
-
-        MailetContext mailetContext = mock(MailetContext.class);
-        postmaster = new MailAddress("postmaster@james.org");
-        when(mailetContext.getPostmaster())
-            .thenReturn(postmaster);
-        when(mailet.getMailetContext())
-            .thenReturn(mailetContext);
-
-        testee = SenderUtils.from(mailet);
-    }
-
-    @Test
-    public void getSenderShouldReturnNullWhenSenderInitParameterIsNull() throws Exception {
-        when(initParameters.getSender())
-            .thenReturn(null);
-
-        MailAddress sender = testee.getSender();
-
-        assertThat(sender).isNull();
-    }
-
-    @Test
-    public void getSenderShouldReturnNullWhenSenderInitParameterIsEmpty() throws Exception {
-        when(initParameters.getSender())
-            .thenReturn("");
-
-        MailAddress sender = testee.getSender();
-
-        assertThat(sender).isNull();
-    }
-
-    @Test
-    public void getSenderShouldReturnFirstMailAddressWhenMultipleAddresses() throws Exception {
-        when(initParameters.getSender())
-            .thenReturn("test@james.org, test2@james.org");
-
-        MailAddress sender = testee.getSender();
-
-        MailAddress expectedMailAddress = new MailAddress("test", "james.org");
-        assertThat(sender).isEqualTo(expectedMailAddress);
-    }
-
-    @Test
-    public void getSenderShouldReturnPostmasterSpecialAddressWhenFirstAddressIsSpecialPostmaster() throws Exception {
-        when(initParameters.getSender())
-            .thenReturn("postmaster, test2@james.org");
-
-        MailAddress sender = testee.getSender();
-
-        assertThat(sender).isEqualTo(postmaster);
-    }
-
-    @Test
-    public void getSenderShouldReturnSenderSpecialAddressWhenFirstAddressIsSpecialSender() throws Exception {
-        when(initParameters.getSender())
-            .thenReturn("sender, test2@james.org");
-
-        MailAddress sender = testee.getSender();
-
-        MailAddress expectedMailAddress = SpecialAddress.SENDER;
-        assertThat(sender).isEqualTo(expectedMailAddress);
-    }
-
-    @Test
-    public void getSenderShouldReturnUnalteredSpecialAddressWhenFirstAddressIsSpecialUnaltered() throws Exception {
-        when(initParameters.getSender())
-            .thenReturn("unaltered, test2@james.org");
-
-        MailAddress sender = testee.getSender();
-
-        MailAddress expectedMailAddress = SpecialAddress.UNALTERED;
-        assertThat(sender).isEqualTo(expectedMailAddress);
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/6f52c81a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
index 78b724c..5388998 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
@@ -19,6 +19,8 @@
 package org.apache.james.transport.util;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.util.Collection;
 import java.util.List;
@@ -32,6 +34,7 @@ import javax.mail.internet.MimeMessage;
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
+import org.apache.mailet.MailetContext;
 import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.RFC2822Headers;
@@ -43,13 +46,24 @@ import com.google.common.collect.ImmutableList;
 
 public class SpecialAddressesUtilsTest {
 
+    private MailAddress postmaster;
     private SpecialAddressesUtils testee;
 
     @Before
-    public void setup() {
+    public void setup() throws Exception {
+        final MailetContext mailetContext = mock(MailetContext.class);
+        postmaster = new MailAddress("postmaster@james.org");
+        when(mailetContext.getPostmaster())
+            .thenReturn(postmaster);
+
         testee = SpecialAddressesUtils.from(new GenericMailet() {
             
             @Override
+            public MailetContext getMailetContext() {
+                return mailetContext;
+            }
+
+            @Override
             public void service(Mail mail) throws MessagingException {
             }
         });
@@ -440,4 +454,49 @@ public class SpecialAddressesUtilsTest {
         MailAddress expected = new MailAddress("delete@address.marker");
         assertThat(addresses).containsOnly(expected);
     }
+
+    @Test
+    public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnNullWhenSenderInitParameterIsNull() throws Exception {
+        MailAddress sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress(null, ImmutableList.of("postmaster", "sender", "unaltered"));
+
+        assertThat(sender).isNull();
+    }
+
+    @Test
+    public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnNullWhenSenderInitParameterIsEmpty() throws Exception {
+        MailAddress sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress("", ImmutableList.of("postmaster", "sender", "unaltered"));
+
+        assertThat(sender).isNull();
+    }
+
+    @Test
+    public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnGivenAddressWhenNoSpecialAddressMatches() throws Exception {
+        MailAddress sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress("test@james.org", ImmutableList.of("postmaster", "sender", "unaltered"));
+
+        MailAddress expectedMailAddress = new MailAddress("test", "james.org");
+        assertThat(sender).isEqualTo(expectedMailAddress);
+    }
+
+    @Test
+    public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnFirstSpecialAddressWhenMatching() throws Exception {
+        MailAddress sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress("postmaster", ImmutableList.of("postmaster", "sender", "unaltered"));
+
+        assertThat(sender).isEqualTo(postmaster);
+    }
+
+    @Test
+    public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnSecondSpecialAddressWhenMatching() throws Exception {
+        MailAddress sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress("sender", ImmutableList.of("postmaster", "sender", "unaltered"));
+
+        MailAddress expectedMailAddress = SpecialAddress.SENDER;
+        assertThat(sender).isEqualTo(expectedMailAddress);
+    }
+
+    @Test
+    public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnLastSpecialAddressWhenMatching() throws Exception {
+        MailAddress sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress("unaltered", ImmutableList.of("postmaster", "sender", "unaltered"));
+
+        MailAddress expectedMailAddress = SpecialAddress.UNALTERED;
+        assertThat(sender).isEqualTo(expectedMailAddress);
+    }
 }


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