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]