Author: veithen
Date: Sun Oct  5 08:00:36 2008
New Revision: 701805

URL: http://svn.apache.org/viewvc?rev=701805&view=rev
Log:
MailTransportListener: Split the processMail method into several methods to 
improve readability. (No functional changes)

Modified:
    
webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java

Modified: 
webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java?rev=701805&r1=701804&r2=701805&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java
 (original)
+++ 
webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java
 Sun Oct  5 08:00:36 2008
@@ -23,6 +23,7 @@
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.Parameter;
@@ -34,7 +35,14 @@
 import org.apache.axis2.transport.base.ManagementSupport;
 import org.apache.axis2.transport.base.ParamUtils;
 
-import javax.mail.*;
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.Header;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Store;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
@@ -237,36 +245,10 @@
     private void processMail(Message message, PollTableEntry entry)
         throws MessagingException, IOException {
 
-        if (message instanceof MimeMessage) {
-            MimeMessage mimeMessage = (MimeMessage) message;
-            if (mimeMessage.getContent() instanceof Multipart) {
-                Multipart mp = (Multipart) mimeMessage.getContent();
-                for (int i=0; i<mp.getCount(); i++) {
-                    MimeBodyPart mbp = (MimeBodyPart) mp.getBodyPart(i);
-                    int size = mbp.getSize();
-                    if (size != -1) {
-                        metrics.incrementBytesReceived(size);
-                    }
-                }
-            } else {
-                int size = mimeMessage.getSize();
-                if (size != -1) {
-                    metrics.incrementBytesReceived(size);
-                }
-            }
-        }
+        updateMetrics(message);
 
         // populate transport headers using the mail headers
-        Map trpHeaders = new HashMap();
-        try {
-            Enumeration e = message.getAllHeaders();
-            while (e.hasMoreElements()) {
-                Header h = (Header) e.nextElement();
-                if (entry.retainHeader(h.getName())) {
-                    trpHeaders.put(h.getName(), h.getValue());
-                }
-            }
-        } catch (MessagingException ignore) {}
+        Map trpHeaders = getTransportHeaders(message, entry);
 
         // FIXME: we should already skip these messages in the checkMail method
         // some times the mail server sends a special mail message which is 
not relavent
@@ -298,7 +280,86 @@
             log.debug("Processing message as Content-Type : " + contentType);
         }
 
-        org.apache.axis2.context.MessageContext msgContext = 
createMessageContext();
+        MessageContext msgContext = createMessageContext(entry);
+
+        MailOutTransportInfo outInfo = buildOutTransportInfo(message, entry);
+
+        // save out transport information
+        msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, outInfo);
+
+        // set message context From
+        if (outInfo.getFromAddress() != null) {
+            msgContext.setFrom(
+                new EndpointReference(MailConstants.TRANSPORT_PREFIX +
+                    outInfo.getFromAddress().getAddress()));
+        }
+
+        // save original mail message id message context MessageID
+        msgContext.setMessageID(outInfo.getRequestMessageID());
+
+        // set the message payload to the message context
+        MailUtils.getInstace().setSOAPEnvelope(message, msgContext, 
contentType);
+
+        String soapAction = (String) trpHeaders.get(BaseConstants.SOAPACTION);
+        if (soapAction == null && message.getSubject() != null &&
+            message.getSubject().startsWith(BaseConstants.SOAPACTION)) {
+            soapAction = 
message.getSubject().substring(BaseConstants.SOAPACTION.length());
+            if (soapAction.startsWith(":")) {
+                soapAction = soapAction.substring(1).trim();
+            }
+        }
+
+        handleIncomingMessage(
+            msgContext,
+            trpHeaders,
+            soapAction,
+            contentType
+        );
+
+        if (log.isDebugEnabled()) {
+            log.debug("Processed message : " + message.getMessageNumber() +
+                " :: " + message.getSubject());
+        }
+    }
+
+    private void updateMetrics(Message message) throws IOException, 
MessagingException {
+        if (message instanceof MimeMessage) {
+            MimeMessage mimeMessage = (MimeMessage) message;
+            if (mimeMessage.getContent() instanceof Multipart) {
+                Multipart mp = (Multipart) mimeMessage.getContent();
+                for (int i=0; i<mp.getCount(); i++) {
+                    MimeBodyPart mbp = (MimeBodyPart) mp.getBodyPart(i);
+                    int size = mbp.getSize();
+                    if (size != -1) {
+                        metrics.incrementBytesReceived(size);
+                    }
+                }
+            } else {
+                int size = mimeMessage.getSize();
+                if (size != -1) {
+                    metrics.incrementBytesReceived(size);
+                }
+            }
+        }
+    }
+
+    private Map getTransportHeaders(Message message, PollTableEntry entry) {
+        Map trpHeaders = new HashMap();
+        try {
+            Enumeration e = message.getAllHeaders();
+            while (e.hasMoreElements()) {
+                Header h = (Header) e.nextElement();
+                if (entry.retainHeader(h.getName())) {
+                    trpHeaders.put(h.getName(), h.getValue());
+                }
+            }
+        } catch (MessagingException ignore) {}
+        return trpHeaders;
+    }
+
+    // TODO: the same code is used by other transports; the method should be 
moved to Abstract(Polling)TransportListener
+    private MessageContext createMessageContext(PollTableEntry entry) throws 
AxisFault {
+        MessageContext msgContext = createMessageContext();
         
         if (entry.getServiceName() != null) {
             AxisService service = 
cfgCtx.getAxisConfiguration().getService(entry.getServiceName());
@@ -317,7 +378,11 @@
                 msgContext.setSoapAction("urn:" + 
operation.getName().getLocalPart());
             }
         }
+        return msgContext;
+    }
 
+    private MailOutTransportInfo buildOutTransportInfo(Message message,
+            PollTableEntry entry) throws MessagingException {
         MailOutTransportInfo outInfo = new 
MailOutTransportInfo(entry.getEmailAddress());
 
         // determine reply address
@@ -350,43 +415,7 @@
         } else if (message instanceof MimeMessage && ((MimeMessage) 
message).getMessageID() != null) {
             outInfo.setRequestMessageID(((MimeMessage) 
message).getMessageID());
         }
-
-        // save out transport information
-        msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, outInfo);
-
-        // set message context From
-        if (outInfo.getFromAddress() != null) {
-            msgContext.setFrom(
-                new EndpointReference(MailConstants.TRANSPORT_PREFIX +
-                    outInfo.getFromAddress().getAddress()));
-        }
-
-        // save original mail message id message context MessageID
-        msgContext.setMessageID(outInfo.getRequestMessageID());
-
-        // set the message payload to the message context
-        MailUtils.getInstace().setSOAPEnvelope(message, msgContext, 
contentType);
-
-        String soapAction = (String) trpHeaders.get(BaseConstants.SOAPACTION);
-        if (soapAction == null && message.getSubject() != null &&
-            message.getSubject().startsWith(BaseConstants.SOAPACTION)) {
-            soapAction = 
message.getSubject().substring(BaseConstants.SOAPACTION.length());
-            if (soapAction.startsWith(":")) {
-                soapAction = soapAction.substring(1).trim();
-            }
-        }
-
-        handleIncomingMessage(
-            msgContext,
-            trpHeaders,
-            soapAction,
-            contentType
-        );
-
-        if (log.isDebugEnabled()) {
-            log.debug("Processed message : " + message.getMessageNumber() +
-                " :: " + message.getSubject());
-        }
+        return outInfo;
     }
 
     /**


Reply via email to