MAILET-115 Refactor DSNBounce mailet

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

Branch: refs/heads/master
Commit: 70f8c25272962b58f37e6617780ee73efd8b68bd
Parents: f2671b8
Author: Antoine Duprat <[email protected]>
Authored: Wed Dec 7 12:01:57 2016 +0100
Committer: Benoit Tellier <[email protected]>
Committed: Wed Jan 11 10:03:31 2017 +0700

----------------------------------------------------------------------
 .../james/transport/mailets/DSNBounce.java      | 38 +++++++++++---------
 1 file changed, 21 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/70f8c252/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 a293f38..a8ccd72 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
@@ -222,30 +222,29 @@ public class DSNBounce extends GenericMailet implements 
RedirectNotify {
 
     @Override
     public void service(Mail originalMail) throws MessagingException {
-        if (originalMail.getSender() == null) {
-            if (getInitParameters().isDebug()) {
-                log("Processing a bounce request for a message with an empty 
reverse-path.  No bounce will be sent.");
-            }
-            if (!getInitParameters().getPassThrough()) {
-                originalMail.setState(Mail.GHOST);
-            }
-            return;
+        if (hasSender(originalMail)) {
+            trySendBounce(originalMail);
+        }
+
+        if (!getInitParameters().getPassThrough()) {
+            originalMail.setState(Mail.GHOST);
         }
+    }
 
+    private void trySendBounce(Mail originalMail) throws MessagingException {
         MailImpl newMail = new MailImpl(originalMail);
         try {
-
             newMail.setRemoteHost(getRemoteHost());
             newMail.setRemoteAddr(getRemoteAddr());
             newMail.setRecipients(getSenderAsList(originalMail));
-
+       
             if (getInitParameters().isDebug()) {
                 log("New mail - sender: " + newMail.getSender() + ", 
recipients: " + StringUtils.arrayToString(newMail.getRecipients().toArray()) + 
", name: " + newMail.getName() + ", remoteHost: " + newMail.getRemoteHost() + 
", remoteAddr: " + newMail.getRemoteAddr() + ", state: " + newMail.getState()
                         + ", lastUpdated: " + newMail.getLastUpdated() + ", 
errorMessage: " + newMail.getErrorMessage());
             }
-
+       
             newMail.setMessage(createBounceMessage(originalMail));
-
+       
             // Set additional headers
             MailModifier mailModifier = MailModifier.builder()
                     .mailet(this)
@@ -259,19 +258,24 @@ public class DSNBounce extends GenericMailet implements 
RedirectNotify {
             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));
-
+       
             newMail.getMessage().saveChanges();
             getMailetContext().sendMail(newMail);
         } finally {
             newMail.dispose();
         }
+    }
 
-        if (!getInitParameters().getPassThrough()) {
-            originalMail.setState(Mail.GHOST);
+    private boolean hasSender(Mail originalMail) {
+        if (originalMail.getSender() == null) {
+            if (getInitParameters().isDebug()) {
+                log("Processing a bounce request for a message with an empty 
reverse-path.  No bounce will be sent.");
+            }
+            return false;
         }
+        return true;
     }
 
     private String getDateHeader(Mail originalMail) throws MessagingException {


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

Reply via email to