You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by am...@apache.org on 2007/05/16 17:58:37 UTC

svn commit: r538634 - in /webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail: EMailSender.java SimpleMailListener.java SynchronousMailListener.java

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: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org


Re: [axis2] Re: svn commit: r538634 - in /webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail: EMailSender.java SimpleMailListener.java SynchronousMailListener.java

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi Glen,

After release Axis2 we found issues with the SMTP transport , specially
when using RM so we are trying to fix those issues before next RM release.
We have not done enough testing on SMTP transport when we releases 1.2 ,
unfortunately we started to test that after we release 1.2.

In the meantime we have not merge 1.2 and trunk yet , so there are a
number of changes which are only in the branch, and need to merge them soon

Thanks
Deepal

Glen Daniels wrote:
> 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
>
> amilas@apache.org 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: axis-cvs-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-cvs-help@ws.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-dev-help@ws.apache.org
>
>
>

-- 
Thanks,
Deepal
................................................................
"The highest tower is built one brick at a time"



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


[axis2] Re: svn commit: r538634 - in /webservices/axis2/branches/java/1_2/modules/kernel/src/org/apache/axis2/transport/mail: EMailSender.java SimpleMailListener.java SynchronousMailListener.java

Posted by Glen Daniels <gl...@thoughtcraft.com>.
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

amilas@apache.org 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: axis-cvs-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-cvs-help@ws.apache.org
> 

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