You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by as...@apache.org on 2008/01/23 04:33:39 UTC
svn commit: r614414 [2/2] - in /webservices/synapse/branches/1.1.1:
modules/transports/src/main/java/org/apache/synapse/transport/mail/
modules/transports/src/test/java/org/apache/synapse/transport/mail/
repository/conf/ repository/conf/sample/ reposit...
Added: webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java?rev=614414&view=auto
==============================================================================
--- webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java (added)
+++ webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java Tue Jan 22 19:33:36 2008
@@ -0,0 +1,487 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.synapse.transport.mail;
+
+import org.apache.synapse.transport.AbstractTransportTest;
+import org.apache.synapse.transport.base.BaseConstants;
+import org.apache.synapse.transport.mail.UtilsMailServer;
+import org.apache.synapse.transport.mail.MailTransportSender;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.Constants;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.log4j.Logger;
+import org.apache.log4j.Level;
+import org.apache.log4j.BasicConfigurator;
+import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.axiom.om.util.StAXUtils;
+import org.apache.axiom.om.*;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.mail.*;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.InternetAddress;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.namespace.QName;
+import javax.activation.DataHandler;
+import javax.activation.CommandMap;
+import javax.activation.MailcapCommandMap;
+import java.util.Properties;
+import java.util.Arrays;
+import java.util.Date;
+import java.io.StringReader;
+
+public class MailEchoRawXMLTest extends AbstractTransportTest {
+
+ private static final Log log = LogFactory.getLog(MailEchoRawXMLTest.class);
+
+ private static final String KOREAN_TEXT = "\uc5ec\ubcf4\uc138\uc694 \uc138\uacc4!";
+ private static final String KOREAN_CHARSET = "ISO-2022-KR";
+ private static final String POX_MESSAGE =
+ "<my:echoOMElement xmlns:my=\"http://ws.apache.org/namespaces/axis2\">" +
+ "<my:myValue>omTextValue</my:myValue></my:echoOMElement>";
+
+ private Properties props = new Properties();
+ private String username = "synapse.test.0";
+ private String password = "mailpassword";
+
+ public MailEchoRawXMLTest() {
+ //Logger.getLogger("org.apache.synapse.transport.mail").setLevel(Level.TRACE);
+ server = new UtilsMailServer();
+
+ props.put("mail.pop3.host", "pop.gmail.com");
+ props.put("mail.pop3.port", "995");
+ props.put("mail.pop3.user", "synapse.test.0");
+
+ props.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
+ props.put("mail.pop3.socketFactory.fallback", "false");
+ props.put("mail.pop3.socketFactory.port", "995");
+
+ props.put("mail.smtp.host", "smtp.gmail.com");
+ props.put("mail.smtp.port", "587");
+ props.put("mail.smtp.starttls.enable", "true");
+ props.put("mail.smtp.user", "synapse.test.1");
+ props.put("mail.smtp.password", "mailpassword");
+ props.put("mail.smtp.auth", "true");
+ }
+
+ public void testRoundTripPOX() throws Exception {
+
+ String msgId = UUIDGenerator.getUUID();
+
+ Session session = Session.getInstance(props, new Authenticator() {
+ public PasswordAuthentication getPasswordAuthentication() {
+ return new PasswordAuthentication("synapse.test.1", "mailpassword");
+ }
+ });
+ session.setDebug(log.isTraceEnabled());
+
+ WSMimeMessage msg = new WSMimeMessage(session);
+ msg.setFrom(new InternetAddress("synapse.test.0@gmail.com"));
+ msg.setReplyTo(InternetAddress.parse("synapse.test.0@gmail.com"));
+ InternetAddress[] address = {new InternetAddress("synapse.test.6@gmail.com")};
+ msg.setRecipients(Message.RecipientType.TO, address);
+ msg.setSubject("POX Roundtrip");
+ msg.setHeader(BaseConstants.SOAPACTION, Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
+ msg.setSentDate(new Date());
+ msg.setHeader(MailConstants.MAIL_HEADER_MESSAGE_ID, msgId);
+ msg.setHeader(MailConstants.MAIL_HEADER_X_MESSAGE_ID, msgId);
+ msg.setText(POX_MESSAGE);
+ Transport.send(msg);
+
+ Thread.yield();
+ Thread.sleep(1000 * 10);
+
+ Object reply = null;
+ boolean replyNotFound = true;
+ int retryCount = 3;
+ while (replyNotFound) {
+ log.debug("Checking for response ... with MessageID : " + msgId);
+ reply = getMessage(msgId);
+ if (reply != null) {
+ replyNotFound = false;
+ } else {
+ if (retryCount-- > 0) {
+ Thread.sleep(10000);
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (reply != null && reply instanceof String) {
+ log.debug("Result Body : " + reply);
+ XMLStreamReader reader = StAXUtils.createXMLStreamReader(new StringReader((String) reply));
+ OMElement res = new StAXOMBuilder(reader).getDocumentElement();
+ if (res != null) {
+ AXIOMXPath xpath = new AXIOMXPath("//my:myValue");
+ xpath.addNamespace("my", "http://localhost/axis2/services/EchoXMLService");
+ Object result = xpath.evaluate(res);
+ if (result != null && result instanceof OMElement) {
+ assertEquals("omTextValue", ((OMElement) result).getText());
+ }
+ }
+ } else {
+ fail("Did not receive the reply mail");
+ }
+ }
+
+ public void testRoundTripMultiPart() throws Exception {
+
+ String msgId = UUIDGenerator.getUUID();
+ Options options = new Options();
+ options.setTo(new EndpointReference("mailto:synapse.test.6@gmail.com"));
+ options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+ options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
+ options.setMessageId(msgId);
+
+ options.setProperty(MailConstants.TRANSPORT_MAIL_FORMAT, MailConstants.TRANSPORT_FORMAT_MP);
+
+ ServiceClient sender = new ServiceClient(getClientCfgCtx(), null);
+ sender.setOptions(options);
+ sender.fireAndForget(createPayload());
+
+ Thread.yield();
+ Thread.sleep(1000 * 10);
+
+ Object reply = null;
+ boolean replyNotFound = true;
+ int retryCount = 3;
+ while (replyNotFound) {
+ log.debug("Checking for response ... with MessageID : " + msgId);
+ reply = getMessage(msgId);
+ if (reply != null) {
+ replyNotFound = false;
+ } else {
+ if (retryCount-- > 0) {
+ Thread.sleep(10000);
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (reply != null && reply instanceof String) {
+ log.debug("Result Body : " + reply);
+ XMLStreamReader reader = StAXUtils.createXMLStreamReader(new StringReader((String) reply));
+ SOAPEnvelope env = new StAXSOAPModelBuilder(reader).getSOAPEnvelope();
+ if (env != null) {
+ AXIOMXPath xpath = new AXIOMXPath("//my:myValue");
+ xpath.addNamespace("my", "http://localhost/axis2/services/EchoXMLService");
+ Object result = xpath.evaluate(env);
+ if (result != null && result instanceof OMElement) {
+ assertEquals("omTextValue", ((OMElement) result).getText());
+ }
+ }
+ } else {
+ fail("Did not receive the reply mail");
+ }
+ }
+
+ public void testRoundTripMultiPartKorean() throws Exception {
+
+ String msgId = UUIDGenerator.getUUID();
+ Options options = new Options();
+ options.setTo(new EndpointReference("mailto:synapse.test.6@gmail.com"));
+ options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+ options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
+ options.setMessageId(msgId);
+
+ options.setProperty(MailConstants.TRANSPORT_MAIL_FORMAT, MailConstants.TRANSPORT_FORMAT_MP);
+
+ ServiceClient sender = new ServiceClient(getClientCfgCtx(), null);
+ sender.setOptions(options);
+ sender.fireAndForget(createKoreanPayload());
+
+ Thread.yield();
+ Thread.sleep(1000 * 10);
+
+ Object reply = null;
+ boolean replyNotFound = true;
+ int retryCount = 3;
+ while (replyNotFound) {
+ log.debug("Checking for response ... with MessageID : " + msgId);
+ reply = getMessage(msgId);
+ if (reply != null) {
+ replyNotFound = false;
+ } else {
+ if (retryCount-- > 0) {
+ Thread.sleep(10000);
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (reply != null && reply instanceof String) {
+ log.debug("Result Body : " + reply);
+ XMLStreamReader reader = StAXUtils.createXMLStreamReader(new StringReader((String) reply));
+ SOAPEnvelope env = new StAXSOAPModelBuilder(reader).getSOAPEnvelope();
+ if (env != null) {
+ AXIOMXPath xpath = new AXIOMXPath("//my:myValue");
+ xpath.addNamespace("my", "http://localhost/axis2/services/EchoXMLService");
+ Object result = xpath.evaluate(env);
+ if (result != null && result instanceof OMElement) {
+ assertEquals("omTextValue", ((OMElement) result).getText());
+ }
+ }
+ } else {
+ fail("Did not receive the reply mail");
+ }
+ }
+
+ public void testRoundTripPOPDefaultCharsetSOAP12() throws Exception {
+
+ String msgId = UUIDGenerator.getUUID();
+ Options options = new Options();
+ options.setTo(new EndpointReference("mailto:synapse.test.6@gmail.com"));
+ options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+ options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
+ options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+ options.setMessageId(msgId);
+
+ ServiceClient sender = new ServiceClient(getClientCfgCtx(), null);
+ sender.setOptions(options);
+ sender.fireAndForget(createPayload());
+
+ Thread.yield();
+ Thread.sleep(1000 * 10);
+
+ Object reply = null;
+ boolean replyNotFound = true;
+ int retryCount = 3;
+ while (replyNotFound) {
+ log.debug("Checking for response ... with MessageID : " + msgId);
+ reply = getMessage(msgId);
+ if (reply != null) {
+ replyNotFound = false;
+ } else {
+ if (retryCount-- > 0) {
+ Thread.sleep(10000);
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (reply != null && reply instanceof String) {
+ log.debug("Result Body : " + reply);
+ XMLStreamReader reader = StAXUtils.createXMLStreamReader(new StringReader((String) reply));
+ SOAPEnvelope env = new StAXSOAPModelBuilder(reader).getSOAPEnvelope();
+ if (env != null) {
+ AXIOMXPath xpath = new AXIOMXPath("//my:myValue");
+ xpath.addNamespace("my", "http://localhost/axis2/services/EchoXMLService");
+ Object result = xpath.evaluate(env);
+ if (result != null && result instanceof OMElement) {
+ assertEquals("omTextValue", ((OMElement) result).getText());
+ }
+ }
+ } else {
+ fail("Did not receive the reply mail");
+ }
+ }
+
+ public void testRoundTripIMAPUTF8Charset() throws Exception {
+
+ String msgId = UUIDGenerator.getUUID();
+ Options options = new Options();
+ options.setTo(new EndpointReference("mailto:synapse.test.7@gmail.com"));
+ options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+ options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
+ options.setMessageId(msgId);
+
+ ServiceClient sender = new ServiceClient(getClientCfgCtx(), null);
+ sender.setOptions(options);
+ sender.fireAndForget(createKoreanPayload());
+
+ Thread.yield();
+ Thread.sleep(1000 * 10);
+
+ Object reply = null;
+ boolean replyNotFound = true;
+ int retryCount = 3;
+ while (replyNotFound) {
+ log.debug("Checking for response ... with MessageID : " + msgId);
+ reply = getMessage(msgId);
+ if (reply != null) {
+ replyNotFound = false;
+ } else {
+ if (retryCount-- > 0) {
+ Thread.sleep(10000);
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (reply != null && reply instanceof String) {
+ log.debug("Result Body : " + reply);
+ XMLStreamReader reader = StAXUtils.createXMLStreamReader(new StringReader((String) reply));
+ SOAPEnvelope env = new StAXSOAPModelBuilder(reader).getSOAPEnvelope();
+ if (env != null) {
+ AXIOMXPath xpath = new AXIOMXPath("//my:myValue");
+ xpath.addNamespace("my", "http://localhost/axis2/services/EchoXMLService");
+ Object result = xpath.evaluate(env);
+ if (result != null && result instanceof OMElement) {
+ assertEquals(KOREAN_TEXT, ((OMElement) result).getText());
+ }
+ }
+ } else {
+ fail("Did not receive the reply mail");
+ }
+ }
+
+ public void testRoundTripIMAPKoreanCharset() throws Exception {
+
+ String msgId = UUIDGenerator.getUUID();
+ Options options = new Options();
+ options.setTo(new EndpointReference("mailto:synapse.test.7@gmail.com"));
+ options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+ options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
+ options.setMessageId(msgId);
+ options.setProperty(Constants.Configuration. CHARACTER_SET_ENCODING, KOREAN_CHARSET);
+
+ ServiceClient sender = new ServiceClient(getClientCfgCtx(), null);
+ sender.setOptions(options);
+ sender.fireAndForget(createKoreanPayload());
+
+ Thread.yield();
+ Thread.sleep(1000 * 10);
+
+ Object reply = null;
+ boolean replyNotFound = true;
+ int retryCount = 3;
+ while (replyNotFound) {
+ log.debug("Checking for response ... with MessageID : " + msgId);
+ reply = getMessage(msgId);
+ if (reply != null) {
+ replyNotFound = false;
+ } else {
+ if (retryCount-- > 0) {
+ Thread.sleep(10000);
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (reply != null && reply instanceof String) {
+ log.debug("Result Body : " + reply);
+ XMLStreamReader reader = StAXUtils.createXMLStreamReader(new StringReader((String) reply));
+ SOAPEnvelope env = new StAXSOAPModelBuilder(reader).getSOAPEnvelope();
+ if (env != null) {
+ AXIOMXPath xpath = new AXIOMXPath("//my:myValue");
+ xpath.addNamespace("my", "http://localhost/axis2/services/EchoXMLService");
+ Object result = xpath.evaluate(env);
+ if (result != null && result instanceof OMElement) {
+ assertEquals(KOREAN_TEXT, ((OMElement) result).getText());
+ }
+ }
+ } else {
+ fail("Did not receive the reply mail");
+ }
+ }
+
+ private Object getMessage(String requestMsgId) {
+ Session session = Session.getInstance(props, null);
+ session.setDebug(log.isTraceEnabled());
+ Store store = null;
+
+ try {
+ store = session.getStore("pop3");
+ store.connect(username, password);
+ Folder folder = store.getFolder(MailConstants.DEFAULT_FOLDER);
+ folder.open(Folder.READ_WRITE);
+ Message[] msgs = folder.getMessages();
+ System.out.println(msgs.length + " replies in reply mailbox");
+ for (Message m:msgs) {
+ String[] inReplyTo = m.getHeader(MailConstants.MAIL_HEADER_IN_REPLY_TO);
+ System.out.println("Got reply to : " + Arrays.toString(inReplyTo));
+ if (inReplyTo != null && inReplyTo.length > 0) {
+ for (int j=0; j<inReplyTo.length; j++) {
+ if (requestMsgId.equals(inReplyTo[j])) {
+ m.setFlag(Flags.Flag.DELETED, true);
+ return m.getContent();
+ }
+ }
+ }
+ m.setFlag(Flags.Flag.DELETED, true);
+ }
+ folder.close(true);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (store != null) {
+ try {
+ store.close();
+ } catch (MessagingException ignore) {}
+ store = null;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Create a axis2 configuration context that 'knows' about the Mail transport
+ * @return
+ * @throws Exception
+ */
+ public ConfigurationContext getClientCfgCtx() throws Exception {
+
+ AxisConfiguration axisCfg = new AxisConfiguration();
+ TransportOutDescription trpOutDesc = new TransportOutDescription("mailto");
+
+ trpOutDesc.addParameter(new Parameter("mail.smtp.host", "smtp.gmail.com"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.port", "587"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.starttls.enable", "true"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.user", "synapse.test.1"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.password", "mailpassword"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.auth", "true"));
+
+ MailTransportSender trpSender = new MailTransportSender();
+ trpOutDesc.setSender(trpSender);
+
+ axisCfg.addTransportOut(trpOutDesc);
+ ConfigurationContext cfgCtx = new ConfigurationContext(axisCfg);
+
+ trpSender.init(cfgCtx, trpOutDesc);
+ return cfgCtx;
+ }
+
+ protected OMElement createKoreanPayload() {
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+ OMNamespace omNs = fac.createOMNamespace("http://localhost/axis2/services/EchoXMLService", "my");
+ OMElement method = fac.createOMElement("echoOMElement", omNs);
+ OMElement value = fac.createOMElement("myValue", omNs);
+ value.addChild(fac.createOMText(value, KOREAN_TEXT));
+ method.addChild(value);
+ return method;
+ }
+}
Added: webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java?rev=614414&view=auto
==============================================================================
--- webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java (added)
+++ webservices/synapse/branches/1.1.1/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java Tue Jan 22 19:33:36 2008
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.synapse.transport.mail;
+
+import org.apache.synapse.transport.UtilsTransportServer;
+import org.apache.synapse.transport.mail.MailTransportListener;
+import org.apache.synapse.transport.mail.MailTransportSender;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.Parameter;
+
+import java.util.List;
+import java.util.ArrayList;
+
+
+public class UtilsMailServer extends UtilsTransportServer {
+
+ public void start() throws Exception {
+
+ TransportOutDescription trpOutDesc =
+ new TransportOutDescription(MailConstants.TRANSPORT_NAME);
+ // gmail
+ trpOutDesc.addParameter(new Parameter("mail.smtp.host", "smtp.gmail.com"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.port", "587"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.starttls.enable", "true"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.user", "synapse.test.1"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.from", "synapse.test.1@gmail.com"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.password", "mailpassword"));
+ trpOutDesc.addParameter(new Parameter("mail.smtp.auth", "true"));
+
+ trpOutDesc.setSender(new MailTransportSender());
+
+ TransportInDescription trpInDesc =
+ new TransportInDescription(MailConstants.TRANSPORT_NAME);
+ trpInDesc.setReceiver(new MailTransportListener());
+ super.start(trpInDesc, trpOutDesc);
+
+ // Service1 - polls synapse.test.6@gmail.com using POP3/SSL, and writes the response to
+ // synapse.test.1@gmail.com and deletes request on success. Polls every 5 secs
+ List parameters = new ArrayList();
+ //gmail
+ parameters.add(new Parameter("transport.mail.Address", "synapse.test.6@gmail.com"));
+ // local james
+ parameters.add(new Parameter("transport.mail.Address", "synapse.test.6@localhost"));
+ //parameters.add(new Parameter("transport.mail.ReplyAddress", "synapse.test.1@gmail.com"));
+ parameters.add(new Parameter("transport.mail.Protocol", "pop3"));
+ //parameters.add(new Parameter("transport.mail.ContentType", "text/xml"));
+ parameters.add(new Parameter("transport.mail.ActionAfterProcess", "DELETE"));
+ parameters.add(new Parameter("transport.PollInterval", "5"));
+
+ // gmail
+ parameters.add(new Parameter("mail.pop3.host", "pop.gmail.com"));
+ parameters.add(new Parameter("mail.pop3.port", "995"));
+ parameters.add(new Parameter("mail.pop3.user", "synapse.test.6"));
+ parameters.add(new Parameter("mail.pop3.password", "mailpassword"));
+
+ parameters.add(new Parameter("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"));
+ parameters.add(new Parameter("mail.pop3.socketFactory.fallback", "false"));
+ parameters.add(new Parameter("mail.pop3.socketFactory.port", "995"));
+
+ deployEchoService("Service1", parameters);
+
+ // Service2 - polls synapse.test.7@gmail.com using IMAP/SSL, and writes the response to
+ // synapse.test.1@gmail.com and deletes request on success. Polls every 5 secs
+ parameters = new ArrayList();
+ parameters.add(new Parameter("transport.mail.Address", "synapse.test.7@gmail.com"));
+ //parameters.add(new Parameter("transport.mail.ReplyAddress", "synapse.test.1@gmail.com"));
+ parameters.add(new Parameter("transport.mail.Protocol", "imap"));
+ //parameters.add(new Parameter("transport.mail.ContentType", "text/xml"));
+ //parameters.add(new Parameter("transport.mail.ActionAfterProcess", "DELETE"));
+ parameters.add(new Parameter("transport.PollInterval", "5"));
+
+ parameters.add(new Parameter("mail.imap.host", "imap.gmail.com"));
+ parameters.add(new Parameter("mail.imap.port", "993"));
+ parameters.add(new Parameter("mail.imap.user", "synapse.test.7"));
+ parameters.add(new Parameter("mail.imap.password", "mailpassword"));
+
+ parameters.add(new Parameter("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory"));
+ parameters.add(new Parameter("mail.imap.socketFactory.fallback", "false"));
+ parameters.add(new Parameter("mail.imap.socketFactory.port", "993"));
+
+ deployEchoService("Service2", parameters);
+ }
+
+}
Modified: webservices/synapse/branches/1.1.1/repository/conf/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/repository/conf/axis2.xml?rev=614414&r1=614413&r2=614414&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/repository/conf/axis2.xml (original)
+++ webservices/synapse/branches/1.1.1/repository/conf/axis2.xml Tue Jan 22 19:33:36 2008
@@ -191,23 +191,10 @@
<transportReceiver name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportListener"/>
- <!-- ================================================= -->
- <!-- Mail Transport Listener -->
- <!-- This is a sample configuration. It assumes a mail server running in localhost.
- Listener pops messages that comes to the email address red@localhost. Users
- password is red. Listener connect to the server every 3000 milliseconds.
- Parameters with "transport." prefix is Axis2 specific. Others are all from Java Mail API.
- http://people.apache.org/~pzf/SMTPBase64Binding-0.2.html
- -->
- <!-- ================================================= -->
- <!--<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.SimpleMailListener">
- <parameter name="mail.pop3.host">localhost</parameter>
- <parameter name="mail.pop3.user">red</parameter>
- <parameter name="mail.store.protocol">pop3</parameter>
- <parameter name="transport.mail.pop3.password">red</parameter>
- <parameter name="transport.mail.replyToAddress">red@localhost</parameter>
- <parameter name="transport.listener.interval">3000</parameter>
- </transportReceiver>-->
+ <transportReceiver name="mailto" class="org.apache.synapse.transport.mail.MailTransportListener">
+ <!-- configure any optional POP3/IMAP properties
+ check com.sun.mail.pop3 and com.sun.mail.imap package documentation for more details-->
+ </transportReceiver>
<!-- ================================================= -->
<!-- Transport Outs -->
@@ -240,7 +227,8 @@
</transportSender>
<transportSender name="jms" class="org.apache.synapse.transport.jms.JMSSender">
- <!-- <parameter name="myTopicConnectionFactory">
+ <!-- uncomment this and configure to use connection pools for sending messages
+ <parameter name="myTopicConnectionFactory">
<parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
<parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</parameter>
@@ -261,14 +249,16 @@
<transportSender name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportSender"/>
- <!-- ================================================= -->
- <!-- Mail Transport Sender -->
- <!--Only need to uncomment the sender. Configuration is achieved with every client.
- At any instant mail host should be given. Sample configuration has been given.
- http://people.apache.org/~pzf/SMTPBase64Binding-0.2.html-->
- <!-- ================================================= -->
- <!--<transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
- <parameter name="mail.smtp.host">localhost</parameter>
+ <!-- Uncomment and configure the SMTP server information
+ check com.sun.mail.smtp package documentation for descriptions of properties
+ <transportSender name="mailto" class="org.apache.synapse.transport.mail.MailTransportSender">
+ <parameter name="mail.smtp.host">smtp.gmail.com</parameter>
+ <parameter name="mail.smtp.port">587</parameter>
+ <parameter name="mail.smtp.starttls.enable">true</parameter>
+ <parameter name="mail.smtp.auth">true</parameter>
+ <parameter name="mail.smtp.user">synapse.demo.0</parameter>
+ <parameter name="mail.smtp.password">mailpassword</parameter>
+ <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter>
</transportSender>-->
<!-- ================================================= -->
Modified: webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/client/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/client/axis2.xml?rev=614414&r1=614413&r2=614414&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/client/axis2.xml (original)
+++ webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/client/axis2.xml Tue Jan 22 19:33:36 2008
@@ -187,23 +187,10 @@
</parameter>
</transportReceiver>-->
- <!-- ================================================= -->
- <!-- Mail Transport Listener -->
- <!-- This is a sample configuration. It assumes a mail server running in localhost.
- Listener pops messages that comes to the email address red@localhost. Users
- password is red. Listener connect to the server every 3000 milliseconds.
- Parameters with "transport." prefix is Axis2 specific. Others are all from Java Mail API.
- http://people.apache.org/~pzf/SMTPBase64Binding-0.2.html
- -->
- <!-- ================================================= -->
- <!--<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.SimpleMailListener">
- <parameter name="mail.pop3.host">localhost</parameter>
- <parameter name="mail.pop3.user">red</parameter>
- <parameter name="mail.store.protocol">pop3</parameter>
- <parameter name="transport.mail.pop3.password">red</parameter>
- <parameter name="transport.mail.replyToAddress">red@localhost</parameter>
- <parameter name="transport.listener.interval">3000</parameter>
- </transportReceiver>-->
+ <transportReceiver name="mailto" class="org.apache.synapse.transport.mail.MailTransportListener">
+ <!-- configure any optional POP3/IMAP properties
+ check com.sun.mail.pop3 and com.sun.mail.imap package documentation for more details-->
+ </transportReceiver>
<!--Uncomment if you want to have TCP transport support-->
<!--transportReceiver name="tcp"
@@ -239,16 +226,17 @@
<transportSender name="jms"
class="org.apache.synapse.transport.jms.JMSSender"/>
- <!-- ================================================= -->
- <!-- Mail Transport Sender -->
- <!--Only need to uncomment the sender. Configuration is achieved with every client.
- At any instant mail host should be given. Sample configuration has been given.
- http://people.apache.org/~pzf/SMTPBase64Binding-0.2.html
- -->
- <!-- ================================================= -->
- <!--<transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
- <parameter name="mail.smtp.host">localhost</parameter>
- </transportSender>-->
+ <!-- configure the SMTP server information
+ check com.sun.mail.smtp package documentation for descriptions of properties-->
+ <transportSender name="mailto" class="org.apache.synapse.transport.mail.MailTransportSender">
+ <parameter name="mail.smtp.host">smtp.gmail.com</parameter>
+ <parameter name="mail.smtp.port">587</parameter>
+ <parameter name="mail.smtp.starttls.enable">true</parameter>
+ <parameter name="mail.smtp.auth">true</parameter>
+ <parameter name="mail.smtp.user">synapse.demo.0</parameter>
+ <parameter name="mail.smtp.password">mailpassword</parameter>
+ <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter>
+ </transportSender>
<!-- ================================================= -->
<!-- Global Modules -->
Modified: webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/server/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/server/axis2.xml?rev=614414&r1=614413&r2=614414&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/server/axis2.xml (original)
+++ webservices/synapse/branches/1.1.1/repository/conf/sample/resources/misc/server/axis2.xml Tue Jan 22 19:33:36 2008
@@ -189,23 +189,10 @@
</parameter>
</transportReceiver>-->
- <!-- ================================================= -->
- <!-- Mail Transport Listener -->
- <!-- This is a sample configuration. It assumes a mail server running in localhost.
- Listener pops messages that comes to the email address red@localhost. Users
- password is red. Listener connect to the server every 3000 milliseconds.
- Parameters with "transport." prefix is Axis2 specific. Others are all from Java Mail API.
- http://people.apache.org/~pzf/SMTPBase64Binding-0.2.html
- -->
- <!-- ================================================= -->
- <!--<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.SimpleMailListener">
- <parameter name="mail.pop3.host">localhost</parameter>
- <parameter name="mail.pop3.user">red</parameter>
- <parameter name="mail.store.protocol">pop3</parameter>
- <parameter name="transport.mail.pop3.password">red</parameter>
- <parameter name="transport.mail.replyToAddress">red@localhost</parameter>
- <parameter name="transport.listener.interval">3000</parameter>
- </transportReceiver>-->
+ <transportReceiver name="mailto" class="org.apache.synapse.transport.mail.MailTransportListener">
+ <!-- configure any optional POP3/IMAP properties
+ check com.sun.mail.pop3 and com.sun.mail.imap package documentation for more details-->
+ </transportReceiver>
<!-- ================================================= -->
<!-- Transport Outs -->
@@ -241,14 +228,15 @@
<transportSender name="jms"
class="org.apache.synapse.transport.jms.JMSSender"/>
- <!-- ================================================= -->
- <!-- Mail Transport Sender -->
- <!--Only need to uncomment the sender. Configuration is achieved with every client.
- At any instant mail host should be given. Sample configuration has been given.
- http://people.apache.org/~pzf/SMTPBase64Binding-0.2.html-->
- <!-- ================================================= -->
- <!--<transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
- <parameter name="mail.smtp.host">localhost</parameter>
+ <!-- Uncomment and configure the SMTP server information
+ check com.sun.mail.smtp package documentation for descriptions of properties
+ <transportSender name="mailto" class="org.apache.synapse.transport.mail.MailTransportSender">
+ <parameter name="mail.smtp.host">smtp.gmail.com</parameter>
+ <parameter name="mail.smtp.port">587</parameter>
+ <parameter name="mail.smtp.starttls.enable">true</parameter>
+ <parameter name="mail.smtp.user">synapse.test.0</parameter>
+ <parameter name="mail.smtp.password">mailpassword</parameter>
+ <parameter name="mail.smtp.auth">true</parameter>
</transportSender>-->
<!-- ================================================= -->
Added: webservices/synapse/branches/1.1.1/repository/conf/sample/synapse_sample_256.xml
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/repository/conf/sample/synapse_sample_256.xml?rev=614414&view=auto
==============================================================================
--- webservices/synapse/branches/1.1.1/repository/conf/sample/synapse_sample_256.xml (added)
+++ webservices/synapse/branches/1.1.1/repository/conf/sample/synapse_sample_256.xml Tue Jan 22 19:33:36 2008
@@ -0,0 +1,59 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<!-- Using the mail transport -->
+<definitions xmlns="http://ws.apache.org/ns/synapse">
+ <proxy name="StockQuoteProxy" transports="mailto">
+
+ <parameter name="transport.mail.Address">synapse.demo.1@gmail.com</parameter>
+ <parameter name="transport.mail.Protocol">pop3</parameter>
+ <parameter name="transport.PollInterval">5</parameter>
+ <parameter name="mail.pop3.host">pop.gmail.com</parameter>
+ <parameter name="mail.pop3.port">995</parameter>
+ <parameter name="mail.pop3.user">synapse.demo.1</parameter>
+ <parameter name="mail.pop3.password">mailpassword</parameter>
+ <parameter name="mail.pop3.socketFactory.class">javax.net.ssl.SSLSocketFactory</parameter>
+ <parameter name="mail.pop3.socketFactory.fallback">false</parameter>
+ <parameter name="mail.pop3.socketFactory.port">995</parameter>
+
+ <target>
+ <inSequence>
+ <property name="senderAddress" expression="get-property('transport', 'From')"/>
+ <log level="full">
+ <property name="Sender Address" expression="get-property('senderAddress')"/>
+ </log>
+ <send>
+ <endpoint>
+ <address uri="http://localhost:9000/soap/SimpleStockQuoteService"/>
+ </endpoint>
+ </send>
+ </inSequence>
+ <outSequence>
+ <property name="Subject" value="Custom Subject for Response" scope="transport"/>
+ <header name="To" expression="fn:concat('mailto:', get-property('senderAddress'))"/>
+ <log level="full">
+ <property name="message" value="Response message"/>
+ <property name="Sender Address" expression="get-property('senderAddress')"/>
+ </log>
+ <send/>
+ </outSequence>
+ </target>
+ <publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
+ </proxy>
+</definitions>
\ No newline at end of file
Modified: webservices/synapse/branches/1.1.1/src/main/release/docs/release_notes.txt
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/src/main/release/docs/release_notes.txt?rev=614414&r1=614413&r2=614414&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/src/main/release/docs/release_notes.txt (original)
+++ webservices/synapse/branches/1.1.1/src/main/release/docs/release_notes.txt Tue Jan 22 19:33:36 2008
@@ -68,6 +68,7 @@
The 1.1.1 release
* Clustering support for the Cache/Throttle Mediators
* Maintainance mode support for the HTTP transport
+ * New Mail transport that supports POP3/IMAP/SMTP
* JMX Monitoring support
* Callout Mediator
* Improved JMS/VFS transports
Modified: webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples.html
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples.html?rev=614414&r1=614413&r2=614414&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples.html (original)
+++ webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples.html Tue Jan 22 19:33:36 2008
@@ -215,6 +215,8 @@
medium using VFS transport listener and sender</a></li>
<li><a href="#Sample255">Sample 255: Switching from ftp transport
listener to mail transport sender</a></li>
+ <li><a href="#Sample256">Sample 256: Proxy services with the mail
+ transport</a></li>
</ul>
</li>
<li><a href="#Task">Introduction to synapse tasks</a>
@@ -2971,6 +2973,71 @@
server and send it to the Axis2 service. The file in the ftp directory will
be deleted. The response will be sent to the given email address.</p>
+<h2><a name="Sample256">Sample 256: Proxy services with the mail transport
+</a></h2>
+<pre><!-- Using the mail transport -->
+<definitions xmlns="http://ws.apache.org/ns/synapse">
+ <proxy name="StockQuoteProxy" transports="mailto">
+
+ <parameter name="transport.mail.Address">synapse.demo.1@gmail.com</parameter>
+ <parameter name="transport.mail.Protocol">pop3</parameter>
+ <parameter name="transport.PollInterval">5</parameter>
+ <parameter name="mail.pop3.host">pop.gmail.com</parameter>
+ <parameter name="mail.pop3.port">995</parameter>
+ <parameter name="mail.pop3.user">synapse.demo.1</parameter>
+ <parameter name="mail.pop3.password">mailpassword</parameter>
+ <parameter name="mail.pop3.socketFactory.class">javax.net.ssl.SSLSocketFactory</parameter>
+ <parameter name="mail.pop3.socketFactory.fallback">false</parameter>
+ <parameter name="mail.pop3.socketFactory.port">995</parameter>
+
+ <target>
+ <inSequence>
+ <property name="senderAddress" expression="get-property('transport', 'From')"/>
+ <log level="full">
+ <property name="Sender Address" expression="get-property('senderAddress')"/>
+ </log>
+ <send>
+ <endpoint>
+ <address uri="http://localhost:9000/soap/SimpleStockQuoteService"/>
+ </endpoint>
+ </send>
+ </inSequence>
+ <outSequence>
+ <property name="Subject" value="Custom Subject for Response" scope="transport"/>
+ <header name="To" expression="fn:concat('mailto:', get-property('senderAddress'))"/>
+ <log level="full">
+ <property name="message" value="Response message"/>
+ <property name="Sender Address" expression="get-property('senderAddress')"/>
+ </log>
+ <send/>
+ </outSequence>
+ </target>
+ <publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
+ </proxy>
+</definitions> </pre>
+
+<p><strong>Objective: Using the mail transport with Proxy
+services</strong></p>
+
+<p><strong>Prerequisites:</strong><br>
+You will need access to an email account</p>
+
+<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not
+already done</p>
+
+<p>Enable mail transport sender in the Synapse axis2.xml. See <a
+href="Synapse_Samples_Setup.html#mailsender">Setting up mail transport
+sender</a> </p>
+
+<p>Start the Synapse configuration numbered 256: i.e. synapse -sample 256</p>
+
+<p>Send a plain/text email with the following body and any custom Subject
+from your mail account.</p>
+<pre><m0:getQuote xmlns:m0="http://services.samples/xsd"><m0:request><m0:symbol>IBM</m0:symbol></m0:request></m0:getQuote> </pre>
+
+<p>After a few seconds (e.g. 30s), you should receive a POX response in your email
+account with the stock quote reply.</p>
+
<h1><a name="Task">Introduction to synapse tasks</a></h1>
<h2><a name="Sample300">Sample 300: Introduction to tasks with simple
@@ -3650,8 +3717,7 @@
<p></p>
-<h2><a name="Throttle">Throtteling messages (Throttle Mediator)</a></h2>
-<!-- TODO: any text to go in here??? -->
+<h2><a name="Throttle">Throttling messages (Throttle Mediator)</a></h2>
<h2><a name="Sample370">Sample 370: Introduction to throttle mediator and
concurrency throttling</a></h2>
@@ -4123,7 +4189,6 @@
<h2><a name="XQuery">Evaluating XQuery for mediation (XQuery
Mediator)</a></h2>
-<!-- TODO: what goes in herer -->
<h2><a name="Sample390">Sample 390: Introduction to the XQuery
mediator</a></h2>
@@ -4247,7 +4312,6 @@
<h2><a name="Splitter">Splitting messages in to parts and process in parallel
(Iterate / Clone)</a></h2>
-<!-- TODO: splitter declaration -->
<h2><a name="Sample400">Sample 400: Message splitting and aggregating the
responses</a></h2>
@@ -4383,7 +4447,7 @@
to a local entry. For the target, this key refers to a message context
property only. </p>
-<h2><a name="Sample430" id="Sample430">Sample 430: Simple Callout Mediator
+<h2><a name="Sample430">Sample 430: Simple Callout Mediator
for synchronizing web service invocation</a></h2>
<p> </p>
Modified: webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples_Setup.html
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples_Setup.html?rev=614414&r1=614413&r2=614414&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples_Setup.html (original)
+++ webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Samples_Setup.html Tue Jan 22 19:33:36 2008
@@ -443,17 +443,18 @@
<h2 id="mailsender">Setting up Mail Transport Sender</h2>
-<p>To enable the mail transport, you need to uncomment the mail transport
-sender configuration in the repository/conf/axis2.xml. Change the
-mail.smtp.host parameter value to a working SMTP host.</p>
-<pre> <!-- ================================================= -->
- <!-- Mail Transport Sender -->
- <!--Only need to uncomment the sender. Configuration is achieved with every client.
- At any instant mail host should be given. Sample configuration has been given.
- http://people.apache.org/~pzf/SMTPBase64Binding-0.2.html-->
- <!-- ================================================= -->
- <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
- <parameter name="mail.smtp.host">localhost</parameter>
+<p>To enable the mail transport for samples, you need to uncomment the mail transport
+sender configuration in the repository/conf/axis2.xml. Uncomment the
+MailTransportSender sample configuration and make sure it points to a valid
+SMTP configuration for any actual scenarios.</p>
+<pre> <transportSender name="mailto" class="org.apache.synapse.transport.mail.MailTransportSender">
+ <parameter name="mail.smtp.host">smtp.gmail.com</parameter>
+ <parameter name="mail.smtp.port">587</parameter>
+ <parameter name="mail.smtp.starttls.enable">true</parameter>
+ <parameter name="mail.smtp.auth">true</parameter>
+ <parameter name="mail.smtp.user">synapse.demo.0</parameter>
+ <parameter name="mail.smtp.password">mailpassword</parameter>
+ <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter>
</transportSender></pre>
<p></p>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org