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 no...@apache.org on 2011/01/01 10:40:11 UTC

svn commit: r1054214 - /james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java

Author: norman
Date: Sat Jan  1 09:40:11 2011
New Revision: 1054214

URL: http://svn.apache.org/viewvc?rev=1054214&view=rev
Log:
Make the message outputstream accessable from MailEnvelop

Modified:
    james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java

Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java?rev=1054214&r1=1054213&r2=1054214&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java Sat Jan  1 09:40:11 2011
@@ -21,6 +21,7 @@
 
 package org.apache.james.smtpserver;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -140,12 +141,19 @@ public final class DataLineJamesMessageH
     private void processExtensions(SMTPSession session, Mail mail) {
         if (mail != null && messageHandlers != null) {
             try {
+                MimeMessageInputStreamSource mmiss = (MimeMessageInputStreamSource) session.getState().get(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE);
+                OutputStream out = null;
+                try {
+                    out = mmiss.getWritableOutputStream();
+                } catch (FileNotFoundException e) {
+                    session.getLogger().debug("Unable to obtain OutputStream for Mail " + mail, e);
+                }
                 for (int i = 0; i < mHandlers.size(); i++) {
                     MessageHook rawHandler = mHandlers.get(i);
                     session.getLogger().debug("executing james message handler " + rawHandler);
                     long start = System.currentTimeMillis();
 
-                    HookResult hRes = rawHandler.onMessage(session, new MailToMailEnvelopeWrapper(mail));
+                    HookResult hRes = rawHandler.onMessage(session, new MailToMailEnvelopeWrapper(mail, out));
                     long executionTime = System.currentTimeMillis() - start;
 
                     if (rHooks != null) {
@@ -232,9 +240,11 @@ public final class DataLineJamesMessageH
 
     private class MailToMailEnvelopeWrapper implements MailEnvelope {
         private Mail mail;
+        private OutputStream out;
 
-        public MailToMailEnvelopeWrapper(Mail mail) {
+        public MailToMailEnvelopeWrapper(Mail mail, OutputStream out) {
             this.mail = mail;
+            this.out = out;
         }
 
         /**
@@ -244,11 +254,13 @@ public final class DataLineJamesMessageH
             return mail.getMessage().getInputStream();
         }
 
-        /**
-         * Return just null. Not sure if this is a good idea ..
+
+        /*
+         * (non-Javadoc)
+         * @see org.apache.james.protocols.smtp.MailEnvelope#getMessageOutputStream()
          */
         public OutputStream getMessageOutputStream() {
-            return null;
+           return out;
         }
 
         /**



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