Author: veithen Date: Sun Jun 14 16:07:24 2009 New Revision: 784579 URL: http://svn.apache.org/viewvc?rev=784579&view=rev Log: Eliminated some duplicate code and solved WSCOMMONS-475 for all transports based on AbstractTransportListener(Ex).
Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/ProcessPacketTask.java webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java?rev=784579&r1=784578&r2=784579&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java (original) +++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java Sun Jun 14 16:07:24 2009 @@ -18,10 +18,16 @@ */ package org.apache.axis2.transport.base; +import javax.xml.namespace.QName; + import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; +import org.apache.axis2.context.MessageContext; +import org.apache.axis2.description.AxisOperation; import org.apache.axis2.description.AxisService; +import org.apache.axis2.description.Parameter; import org.apache.axis2.description.ParameterInclude; +import org.apache.axis2.description.WSDL2Constants; /** * Describes a protocol specific endpoint. This might be a TCP/UDP port, a mail account, @@ -83,4 +89,28 @@ * @see org.apache.axis2.transport.TransportListener#getEPRsForService(String, String) */ public abstract EndpointReference[] getEndpointReferences(String ip) throws AxisFault; + + public MessageContext createMessageContext() throws AxisFault { + MessageContext msgContext = listener.createMessageContext(); + + if (service != null) { + msgContext.setAxisService(service); + + // find the operation for the message, or default to one + Parameter operationParam = service.getParameter(BaseConstants.OPERATION_PARAM); + QName operationQName = ( + operationParam != null ? + BaseUtils.getQNameFromString(operationParam.getValue()) : + BaseConstants.DEFAULT_OPERATION); + + AxisOperation operation = service.getOperation(operationQName); + if (operation != null) { + msgContext.setAxisOperation(operation); + msgContext.setAxisMessage( + operation.getMessage(WSDL2Constants.MESSAGE_LABEL_IN)); + msgContext.setSoapAction("urn:" + operation.getName().getLocalPart()); + } + } + return msgContext; + } } Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/ProcessPacketTask.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/ProcessPacketTask.java?rev=784579&r1=784578&r2=784579&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/ProcessPacketTask.java (original) +++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/ProcessPacketTask.java Sun Jun 14 16:07:24 2009 @@ -51,8 +51,7 @@ MetricsCollector metrics = endpoint.getMetrics(); try { InputStream inputStream = new ByteArrayInputStream(data, 0, length); - MessageContext msgContext = endpoint.getListener().createMessageContext(); - msgContext.setAxisService(endpoint.getService()); + MessageContext msgContext = endpoint.createMessageContext(); SOAPEnvelope envelope = TransportUtils.createSOAPMessage(msgContext, inputStream, endpoint.getContentType()); msgContext.setEnvelope(envelope); AxisEngine.receive(msgContext); Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java?rev=784579&r1=784578&r2=784579&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java (original) +++ webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java Sun Jun 14 16:07:24 2009 @@ -17,19 +17,16 @@ import org.apache.axis2.AxisFault; import org.apache.axis2.Constants; -import org.apache.axis2.transport.base.BaseUtils; import org.apache.axis2.transport.base.BaseConstants; import org.apache.axis2.transport.base.MetricsCollector; import org.apache.axis2.transport.jms.ctype.ContentTypeInfo; import org.apache.axis2.description.Parameter; import org.apache.axis2.description.AxisService; -import org.apache.axis2.description.AxisOperation; import org.apache.axis2.context.MessageContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.jms.*; -import javax.xml.namespace.QName; import javax.transaction.UserTransaction; /** @@ -155,7 +152,7 @@ private boolean processThoughEngine(Message message, UserTransaction ut) throws JMSException, AxisFault { - MessageContext msgContext = jmsListener.createMessageContext(); + MessageContext msgContext = endpoint.createMessageContext(); // set the JMS Message ID as the Message ID of the MessageContext try { @@ -166,20 +163,6 @@ String soapAction = JMSUtils.getProperty(message, BaseConstants.SOAPACTION); AxisService service = endpoint.getService(); - msgContext.setAxisService(service); - - // find the operation for the message, or default to one - Parameter operationParam = service.getParameter(BaseConstants.OPERATION_PARAM); - QName operationQName = ( - operationParam != null ? - BaseUtils.getQNameFromString(operationParam.getValue()) : - BaseConstants.DEFAULT_OPERATION); - - AxisOperation operation = service.getOperation(operationQName); - if (operation != null) { - msgContext.setAxisOperation(operation); - msgContext.setSoapAction("urn:" + operation.getName().getLocalPart()); - } ContentTypeInfo contentTypeInfo = endpoint.getContentTypeRuleSet().getContentTypeInfo(message); Modified: webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java?rev=784579&r1=784578&r2=784579&view=diff ============================================================================== --- webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java (original) +++ webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java Sun Jun 14 16:07:24 2009 @@ -24,31 +24,23 @@ import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.MessageContext; -import org.apache.axis2.description.AxisOperation; -import org.apache.axis2.description.AxisService; -import org.apache.axis2.description.Parameter; -import org.apache.axis2.description.ParameterInclude; import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.engine.AxisConfiguration; import org.apache.axis2.transport.TransportUtils; import org.apache.axis2.transport.RequestResponseTransport; import org.apache.axis2.transport.base.AbstractPollingTransportListener; import org.apache.axis2.transport.base.BaseConstants; -import org.apache.axis2.transport.base.BaseUtils; import org.apache.axis2.transport.base.ManagementSupport; -import org.apache.axis2.transport.base.ParamUtils; import org.apache.axis2.transport.base.event.TransportErrorListener; import org.apache.axis2.transport.base.event.TransportErrorSource; import org.apache.axis2.transport.base.event.TransportErrorSourceSupport; import javax.mail.*; -import javax.mail.internet.AddressException; import javax.mail.internet.ContentType; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.ParseException; -import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; import java.io.IOException; @@ -483,7 +475,7 @@ log.debug("Processing message as Content-Type : " + contentType); } - MessageContext msgContext = createMessageContext(entry); + MessageContext msgContext = entry.createMessageContext(); // Extract the charset encoding from the configured content type and // set the CHARACTER_SET_ENCODING property as e.g. SOAPBuilder relies on this. @@ -623,30 +615,6 @@ } } - // TODO: the same code is used by other transports; the method should be moved to Abstract(Polling)TransportListener - private MessageContext createMessageContext(PollTableEntry entry) throws AxisFault { - MessageContext msgContext = createMessageContext(); - - AxisService service = entry.getService(); - if (service != null) { - msgContext.setAxisService(service); - - // find the operation for the message, or default to one - Parameter operationParam = service.getParameter(BaseConstants.OPERATION_PARAM); - QName operationQName = ( - operationParam != null ? - BaseUtils.getQNameFromString(operationParam.getValue()) : - BaseConstants.DEFAULT_OPERATION); - - AxisOperation operation = service.getOperation(operationQName); - if (operation != null) { - msgContext.setAxisOperation(operation); - msgContext.setSoapAction("urn:" + operation.getName().getLocalPart()); - } - } - return msgContext; - } - private MailOutTransportInfo buildOutTransportInfo(Message message, PollTableEntry entry) throws MessagingException { MailOutTransportInfo outInfo = new MailOutTransportInfo(entry.getEmailAddress());