Hi Amila:

Can I ask why these changes are going into the branch? Do you have a JIRA they're targeting? Have you already done these improvements in the trunk? If these are really improvements and not critical fixes, they should be done on the trunk and not the branch....

Thanks,
--Glen

[EMAIL PROTECTED] wrote:
Author: amilas
Date: Wed May 16 08:58:34 2007
New Revision: 538634

URL: http://svn.apache.org/viewvc?view=rev&rev=538634
Log:
1. Improved Simple mail listener logic
2. Improved Sync mail handling 3. Improved email sender logic
Modified:
    
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
    
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
    
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java

Modified: 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java?view=diff&rev=538634&r1=538633&r2=538634
==============================================================================
--- 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
 (original)
+++ 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
 Wed May 16 08:58:34 2007
@@ -17,6 +17,7 @@
package org.apache.axis2.transport.mail; +import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
 import org.apache.axiom.attachments.ByteArrayDataSource;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.soap.SOAP11Constants;
@@ -24,7 +25,9 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
+import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.TransportInDescription;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -98,7 +101,7 @@ EndpointReference epr = null;
-            MailToInfo mailToInfo = null;
+            MailToInfo mailToInfo;
if (messageContext.getTo() != null && !messageContext.getTo().hasAnonymousAddress()) {
                 epr = messageContext.getTo();
@@ -151,6 +154,8 @@
             createMailMimeMessage(msg, mailToInfo, format);
             Transport.send(msg);
+ log.info("Message being send. [Action = ]" + messageContext.getOptions().getAction());
+
             sendReceive(messageContext, msg.getMessageID());
         } catch (AddressException e) {
             throw new AxisFault(e);
@@ -223,11 +228,44 @@
private void sendReceive(MessageContext msgContext, String msgId) throws AxisFault {
         storeMessageContext(msgContext, msgId);
+
+        ConfigurationContext cc = msgContext.getConfigurationContext();
+
+        SimpleMailListener simpleMailListener;
+
         Options options = msgContext.getOptions();
-        if (!options.isUseSeparateListener()) {
-            SynchronousMailListener listener =
-                    new 
SynchronousMailListener(options.getTimeOutInMilliSeconds());
-            listener.sendReceive(msgContext, msgId);
+        if (!options.isUseSeparateListener() && !msgContext.isServerSide()) {
+            Object obj = cc.getProperty(Constants.MAIL_SYNC);
+
+            if (obj == null) {
+                SynchronousMailListener synchronousMailListener =
+                        new 
SynchronousMailListener(options.getTimeOutInMilliSeconds(), new 
LinkedBlockingQueue());
+                cc.setProperty(Constants.MAIL_SYNC, synchronousMailListener);
+
+                simpleMailListener = 
synchronousMailListener.sendReceive(msgContext, msgId);
+
+                TransportInDescription transportIn = 
msgContext.getConfigurationContext()
+                        
.getAxisConfiguration().getTransportIn(org.apache.axis2.Constants.TRANSPORT_MAIL);
+
+                Object mailPOP3Obj= 
msgContext.getProperty(Constants.MAIL_POP3);
+                if (mailPOP3Obj != null) {
+                    simpleMailListener.initFromRuntime((Properties) obj, 
msgContext);
+                } else {
+                    
simpleMailListener.init(msgContext.getConfigurationContext(), transportIn);
+                }
+                
msgContext.getConfigurationContext().getThreadPool().execute(simpleMailListener);
+
+                simpleMailListener.start();
+                log.info("Simple Mail Listener started for the first time and 
response received");
+
+
+            } else {
+               SynchronousMailListener synchronousMailListener = 
(SynchronousMailListener)obj;
+               synchronousMailListener.sendReceive(msgContext,msgId).start();
+                log.info("Simple mail listener started and response received");
+
+            }
+
         }
}
@@ -240,7 +278,9 @@
             mappingTable = new Hashtable();
             msgContext.setProperty(Constants.MAPPING_TABLE, mappingTable);
         }
-        mappingTable.put(msgId, msgContext.getMessageID());
+        if (msgContext.getMessageID() != null) {
+            mappingTable.put(msgId, msgContext.getMessageID());
+        }
}
 }

Modified: 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java?view=diff&rev=538634&r1=538633&r2=538634
==============================================================================
--- 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
 (original)
+++ 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
 Wed May 16 08:58:34 2007
@@ -278,13 +278,14 @@
         }
while (running) {
+            log.info("Info started polling");
             try {
                 receiver.connect();
Message[] msgs = receiver.receiveMessages(); if ((msgs != null) && (msgs.length > 0)) {
-                    log.info(msgs.length + " Message Found");
+                    log.info(msgs.length + " Message(s) Found");
for (int i = 0; i < msgs.length; i++) {
                         MimeMessage msg = (MimeMessage) msgs[i];
@@ -294,7 +295,8 @@
                                 messageQueue.add(mc);
                             }
                         } catch (Exception e) {
-                            log.error("Error in SimpleMailListener - processing 
mail " + e);
+                            e.printStackTrace();
+                            log.error("Error in SimpleMailListener - processing 
mail",e);
                         } finally {
                             // delete mail in any case
                             msg.setFlag(Flags.Flag.DELETED, true);
@@ -305,7 +307,7 @@
                 receiver.disconnect();
} catch (Exception e) {
-                log.error("Error in SimpleMailListener" + e);
+                log.error("Error in SimpleMailListener", e);
             } finally {
                 try {
                     Thread.sleep(listenerWaitInterval);

Modified: 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java?view=diff&rev=538634&r1=538633&r2=538634
==============================================================================
--- 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
 (original)
+++ 
webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail/SynchronousMailListener.java
 Wed May 16 08:58:34 2007
@@ -18,6 +18,7 @@
 import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.commons.logging.Log;
@@ -33,24 +34,25 @@
     private static Log log = LogFactory.getLog(SynchronousMailListener.class);
private long timeoutInMilliseconds = -1;
+    private LinkedBlockingQueue queue;
- public SynchronousMailListener(long timeoutInMilliseconds) {
+    public SynchronousMailListener(long 
timeoutInMilliseconds,LinkedBlockingQueue queue) {
         this.timeoutInMilliseconds = timeoutInMilliseconds;
+        this.queue = queue;
     }
- public void sendReceive(final MessageContext msgContext, final String msgId) throws AxisFault {
+    public SimpleMailListener sendReceive(final MessageContext msgContext, 
final String msgId) throws AxisFault {
         /**
          * This will be bloked invocation
          */
-        SimpleMailListener listener = new SimpleMailListener(new 
LinkedBlockingQueue()) {
+        return new SimpleMailListener(queue) {
             public void start() throws AxisFault {
                 long timeStatus;
-                LinkedBlockingQueue queue = getLinkedBlockingQueue();
                 while (true) {
                     long startTime = System.currentTimeMillis();
                     try {
-                        MessageContext msgCtx = (MessageContext) queue.take();
+                        MessageContext msgCtx = (MessageContext) 
getLinkedBlockingQueue().take();
                         MailBasedOutTransportInfo transportInfo = 
(MailBasedOutTransportInfo) msgCtx
                                 
.getProperty(org.apache.axis2.Constants.OUT_TRANSPORT_INFO);
                         if (transportInfo.getInReplyTo() == null) {
@@ -59,13 +61,21 @@
                             throw new AxisFault(error);
                         }
                         if (transportInfo.getInReplyTo().equals(msgId)) {
-                            //TODO do the correct operation dispatching here
-                            msgContext.getOperationContext()
-                                    
.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)
+                            MessageContext messageContext = 
msgContext.getOperationContext()
+                                    
.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                            if (messageContext == null) {
+                                messageContext = 
ContextFactory.createMessageContext(msgContext.getConfigurationContext());
+                                
messageContext.setOperationContext(msgContext.getOperationContext());
+                                
messageContext.setServiceContext(msgContext.getServiceContext());
+                                
msgContext.getOperationContext().addMessageContext(messageContext);
+                            }
+                            messageContext
                                     .setEnvelope(msgCtx.getEnvelope());
+                            log.info("SOAP Message :: " + 
messageContext.getEnvelope());
                             log.info(SynchronousMailListener.class.getName() + " 
found the required message.");
                             break;
                         }
+                        getLinkedBlockingQueue().put(msgCtx);
} catch (InterruptedException e) {
                         log.warn(e);
@@ -85,17 +95,6 @@
             }
         };
- TransportInDescription transportIn = msgContext.getConfigurationContext()
-                
.getAxisConfiguration().getTransportIn(org.apache.axis2.Constants.TRANSPORT_MAIL);
-
-        Object obj = msgContext.getProperty(Constants.MAIL_POP3);
-        if (obj != null) {
-            listener.initFromRuntime((Properties)obj,msgContext);
-        } else {
-            listener.init(msgContext.getConfigurationContext(), transportIn);
-        }
-        msgContext.getConfigurationContext().getThreadPool().execute(listener);
-        listener.start();
}


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to