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("[EMAIL PROTECTED]")); + msg.setReplyTo(InternetAddress.parse("[EMAIL PROTECTED]")); + InternetAddress[] address = {new InternetAddress("[EMAIL PROTECTED]")}; + 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:[EMAIL PROTECTED]")); + options.setReplyTo(new EndpointReference("mailto:[EMAIL PROTECTED]")); + 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:[EMAIL PROTECTED]")); + options.setReplyTo(new EndpointReference("mailto:[EMAIL PROTECTED]")); + 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:[EMAIL PROTECTED]")); + options.setReplyTo(new EndpointReference("mailto:[EMAIL PROTECTED]")); + 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:[EMAIL PROTECTED]")); + options.setReplyTo(new EndpointReference("mailto:[EMAIL PROTECTED]")); + 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:[EMAIL PROTECTED]")); + options.setReplyTo(new EndpointReference("mailto:[EMAIL PROTECTED]")); + 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", "[EMAIL PROTECTED]")); + 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 [EMAIL PROTECTED] using POP3/SSL, and writes the response to + // [EMAIL PROTECTED] and deletes request on success. Polls every 5 secs + List parameters = new ArrayList(); + //gmail + parameters.add(new Parameter("transport.mail.Address", "[EMAIL PROTECTED]")); + // local james + parameters.add(new Parameter("transport.mail.Address", "[EMAIL PROTECTED]")); + //parameters.add(new Parameter("transport.mail.ReplyAddress", "[EMAIL PROTECTED]")); + 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 [EMAIL PROTECTED] using IMAP/SSL, and writes the response to + // [EMAIL PROTECTED] and deletes request on success. Polls every 5 secs + parameters = new ArrayList(); + parameters.add(new Parameter("transport.mail.Address", "[EMAIL PROTECTED]")); + //parameters.add(new Parameter("transport.mail.ReplyAddress", "[EMAIL PROTECTED]")); + 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 [EMAIL PROTECTED] 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">[EMAIL PROTECTED]</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">[EMAIL PROTECTED]</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 [EMAIL PROTECTED] 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">[EMAIL PROTECTED]</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">[EMAIL PROTECTED]</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 [EMAIL PROTECTED] 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">[EMAIL PROTECTED]</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">[EMAIL PROTECTED]</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">[EMAIL PROTECTED]</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">[EMAIL PROTECTED]</parameter> </transportSender></pre> <p></p> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
