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 sa...@apache.org on 2006/09/08 15:38:05 UTC
svn commit: r441493 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail:
EMailSender.java EmailReceiver.java MailTransportSender.java
MailWorker.java SimpleMailListener.java
Author: saminda
Date: Fri Sep 8 06:38:05 2006
New Revision: 441493
URL: http://svn.apache.org/viewvc?view=rev&rev=441493
Log:
1. Fixed SimpleMaillistener and MailTransportSender to work with
soap11/12.
2. Fixed helper classed such as EMailSender/Receriver to cope with
SOAP11/12 spce's smtp binding
3.Fixed mail worker
//TODO Fixing test cases
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java?view=diff&rev=441493&r1=441492&r2=441493
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EMailSender.java Fri Sep 8 06:38:05 2006
@@ -18,7 +18,11 @@
package org.apache.axis2.transport.mail;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
import org.apache.axis2.transport.mail.server.MailSrvConstants;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
import javax.mail.Authenticator;
import javax.mail.Flags;
@@ -37,6 +41,7 @@
private String password;
private String smtpPort;
private String user;
+ private MessageContext messageContext;
public EMailSender(String user, String host, String smtpPort, String password) {
this.user = user;
@@ -45,15 +50,19 @@
this.password = password;
}
+ public void setMessageContext(MessageContext messageContext) {
+ this.messageContext = messageContext;
+ }
+
public static void main(String[] args) throws Exception {
String user = "hemapani";
String host = "127.0.0.1";
String smtpPort = "25";
String password = "hemapani";
EMailSender sender = new EMailSender(user, host, smtpPort, password);
+ OMOutputFormat format = new OMOutputFormat();
- sender.send("Testing mail sending", "hemapani@127.0.0.1", "Hellp, testing",
- MailSrvConstants.DEFAULT_CHAR_SET);
+ sender.send("Testing mail sending", "hemapani@127.0.0.1", "Hellp, testing", format);
EmailReceiver receiver = new EmailReceiver(user, host, "110", password);
@@ -75,11 +84,11 @@
receiver.disconnect();
}
- public void send(String subject, String targetEmail, String message, String charSet)
+ public void send(String subject, String targetEmail, String message, OMOutputFormat format)
throws AxisFault {
try {
- final PasswordAuthentication authentication = new PasswordAuthentication(user,
- password);
+ final PasswordAuthentication authentication =
+ new PasswordAuthentication(user, password);
Properties props = new Properties();
props.put("mail.user", user);
@@ -99,14 +108,24 @@
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(targetEmail));
msg.setSubject(subject);
- if (charSet == null) {
- charSet = MailSrvConstants.DEFAULT_CHAR_SET;
+ String contentType = format.getContentType() != null ? format.getContentType() :
+ MailSrvConstants.DEFAULT_CONTENT_TYPE;
+ if (contentType.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
+ if (messageContext.getSoapAction() != null) {
+ msg.setHeader(MailSrvConstants.HEADER_SOAP_ACTION,
+ messageContext.getSoapAction());
+ msg.setHeader("Content-Transfer-Encoding", "QUOTED-PRINTABLE");
+ }
+ }
+ if (contentType.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) > -1) {
+ if (messageContext.getSoapAction() != null) {
+ msg.setContent(message,
+ contentType + "; charset=" + format.getCharSetEncoding() +
+ " ; action=" + messageContext.getSoapAction());
+ }
+ } else {
+ msg.setContent(message, contentType + "; charset=" + format.getCharSetEncoding());
}
-
- msg.addHeaderLine("Content-Type: " + MailSrvConstants.DEFAULT_CONTENT_TYPE
- + "; charset=" + charSet);
- msg.setText(message);
- msg.setHeader("Content-Transfer-Encoding", MailSrvConstants.DEFAULT_CHAR_SET_ENCODING);
Transport.send(msg);
} catch (AddressException e) {
throw new AxisFault(e);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java?view=diff&rev=441493&r1=441492&r2=441493
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/EmailReceiver.java Fri Sep 8 06:38:05 2006
@@ -72,7 +72,9 @@
props.put("mail.host", host);
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp");
- props.put("mail.pop3.port", popPort);
+ if (Integer.parseInt(popPort) != 110) {
+ props.put("mail.pop3.port", popPort);
+ }
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java?view=diff&rev=441493&r1=441492&r2=441493
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailTransportSender.java Fri Sep 8 06:38:05 2006
@@ -17,10 +17,6 @@
package org.apache.axis2.transport.mail;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMOutputFormat;
import org.apache.axiom.soap.SOAPEnvelope;
@@ -35,6 +31,10 @@
import org.apache.axis2.transport.mail.server.MailSrvConstants;
import org.apache.axis2.util.Utils;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
public class MailTransportSender extends AbstractTransportSender {
private static final long serialVersionUID = -2858556361961169381L;
@@ -44,6 +44,8 @@
private String password;
private String user;
private TransportOutDescription transportOut;
+ // assosiation with OMOutputFormat
+ private OMOutputFormat format = new OMOutputFormat();
public void init(ConfigurationContext confContext, TransportOutDescription transportOut)
throws AxisFault {
@@ -77,7 +79,8 @@
if ((user != null) && (host != null) && (password != null) && (smtpPort != null)) {
- EMailSender sender = new EMailSender(user, host, smtpPort, password);
+ EMailSender sender = new EMailSender(user, host, smtpPort, password);
+ sender.setMessageContext(msgContext);
String eprAddress = msgContext.getTo().getAddress();
@@ -85,8 +88,10 @@
String charSet =
(String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
if (charSet == null) {
- charSet = MailSrvConstants.DEFAULT_CHAR_SET;
+ charSet = MessageContext.DEFAULT_CHAR_SET_ENCODING;// Since we are deleaing only SOAP and XML messages here
}
+ format.setSOAP11(msgContext.isSOAP11());
+ format.setCharSetEncoding(charSet);
int mailNameIndex = eprAddress.indexOf("mail:");
if (mailNameIndex > -1){
@@ -107,8 +112,7 @@
email = email.substring(emailColon + 1);
}
- sender.send(subject, email, new String(byteArrayOutputStream.toByteArray()),
- charSet);
+ sender.send(subject, email, new String(byteArrayOutputStream.toByteArray()),format);
} else {
if (user == null) {
throw new AxisFault(Messages.getMessage("canNotBeNull", "User"));
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java?view=diff&rev=441493&r1=441492&r2=441493
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java Fri Sep 8 06:38:05 2006
@@ -25,6 +25,7 @@
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axis2.AxisFault;
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.TransportInDescription;
@@ -32,6 +33,7 @@
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.i18n.Messages;
import org.apache.axis2.transport.mail.server.MailSrvConstants;
+import org.apache.axis2.transport.TransportUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -42,7 +44,7 @@
import java.io.ByteArrayInputStream;
public class MailWorker implements Runnable {
- private static final Log log = LogFactory.getLog(MailWorker.class);
+ private static final Log log = LogFactory.getLog(MailWorker.class);
private ConfigurationContext configContext = null;
private MimeMessage mimeMessage;
@@ -66,9 +68,11 @@
// create and initialize a message context
try {
TransportInDescription transportIn =
- configContext.getAxisConfiguration().getTransportIn(new QName(Constants.TRANSPORT_MAIL));
+ configContext.getAxisConfiguration()
+ .getTransportIn(new QName(Constants.TRANSPORT_MAIL));
TransportOutDescription transportOut =
- configContext.getAxisConfiguration().getTransportOut(new QName(Constants.TRANSPORT_MAIL));
+ configContext.getAxisConfiguration()
+ .getTransportOut(new QName(Constants.TRANSPORT_MAIL));
if ((transportIn != null) && (transportOut != null)) {
// create Message Context
msgContext = new MessageContext();
@@ -77,40 +81,26 @@
msgContext.setTransportOut(transportOut);
msgContext.setServerSide(true);
msgContext.setProperty(MailSrvConstants.CONTENT_TYPE, mimeMessage.getContentType());
- msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
- mimeMessage.getEncoding());
- String soapAction = getMailHeader(MailSrvConstants.HEADER_SOAP_ACTION);
- if (soapAction == null){
- soapAction = mimeMessage.getSubject();
- }
- //msgContext.setWSAAction(soapAction);
- msgContext.setSoapAction(soapAction);
- msgContext.setIncomingTransportName(Constants.TRANSPORT_MAIL);
-
- // TODO add the transport Headers to the Message Context
- // Create Mail EPR, EPR is constructed using the format, foo@bar/axis2/services/echo and is constructed
- // using the <to-email-address>/<email-subject>
-/* InternetAddress[] recepainets = (InternetAddress[]) mimeMessage.getAllRecipients();
-
- if ((recepainets != null) && (recepainets.length > 0)) {
+ if (TransportUtils.getCharSetEncoding(mimeMessage.getContentType()) != null) {
+ msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+ TransportUtils.getCharSetEncoding(
+ mimeMessage.getContentType()));
} else {
- throw new AxisFault(Messages.getMessage("noRecep4Email"));
+ msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+ MessageContext.DEFAULT_CHAR_SET_ENCODING);
}
- // try to assume the reply to value
- InternetAddress[] replyToAs = (InternetAddress[]) mimeMessage.getAllRecipients();
-
- if ((replyToAs != null) && (replyToAs.length > 0)) {
- String replyTo = replyToAs[0].getAddress();
-
- if (replyTo != null) {
- msgContext.setReplyTo(new EndpointReference(replyTo));
- }
- }*/
+ msgContext.setIncomingTransportName(Constants.TRANSPORT_MAIL);
+ String soapAction = getMailHeader(MailSrvConstants.HEADER_SOAP_ACTION);
+ msgContext.setSoapAction(soapAction);
+ if (mimeMessage.getSubject() != null) {
+ msgContext.setTo(new EndpointReference(mimeMessage.getSubject()));
+ }
// Create the SOAP Message
- // TODO This can we written better way, to use the streams better
+ // SMTP basically a text protocol, thus, following would be the optimal way to build the
+ // SOAP11/12 body from it.
String message = mimeMessage.getContent().toString();
ByteArrayInputStream bais =
new ByteArrayInputStream(message.getBytes());
@@ -118,11 +108,15 @@
StAXUtils.createXMLStreamReader(bais);
String soapNamespaceURI = "";
if (mimeMessage.getContentType().indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE)
- > -1) {
+ > -1) {
soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
} else if (mimeMessage.getContentType().indexOf(
SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1) {
soapNamespaceURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+ } else {
+ log.warn(
+ "MailWorker found a message other than text/xml or application/soap+xml");
+ return;
}
StAXBuilder builder = new StAXSOAPModelBuilder(reader, soapNamespaceURI);
@@ -135,7 +129,7 @@
}
} else {
throw new AxisFault(Messages.getMessage("unknownTransport",
- Constants.TRANSPORT_MAIL));
+ Constants.TRANSPORT_MAIL));
}
} catch (Exception e) {
try {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java?view=diff&rev=441493&r1=441492&r2=441493
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java Fri Sep 8 06:38:05 2006
@@ -176,7 +176,6 @@
if (!stopped) {
String logMessage = "Mail listner is being setup to listen to the address " + user
+ "@" + host + " On port " + port;
-
log.info(logMessage);
}
@@ -206,14 +205,10 @@
// Waiting for 3 seconds.
Thread.sleep(3000);
} catch (Exception e) {
-
- log.debug("An error occured when running the mail listner." + e.getMessage(), e);
-
- break;
+ log.error("Error in SimpleMailListener" + e);
}
}
- log.info("Mail listener has been stoped.");
}
/**
@@ -278,7 +273,7 @@
* @see org.apache.axis2.transport.TransportListener#replyToEPR(java.lang.String)
*/
public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
- return new EndpointReference(Constants.TRANSPORT_MAIL + ":" + replyTo + "/" + configurationContext.getServiceContextPath() + "/" + serviceName);//Constants.TRANSPORT_MAIL +
+ return new EndpointReference(Constants.TRANSPORT_MAIL + ":" + replyTo + configurationContext.getServiceContextPath() + "/" + serviceName);//Constants.TRANSPORT_MAIL +
}
public void setDoThreads(boolean value) {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org