Author: barrettj Date: Mon Nov 8 16:16:10 2010 New Revision: 1032619 URL: http://svn.apache.org/viewvc?rev=1032619&view=rev Log: AXIS2-4855. Patch contributed by Phil Adams with some additional comments and test change by Jeff Barrett. Change the JMS namespace to the value defined in the JMS spec.
Modified: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/dispatch/SOAP12DispatchTest.java axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java Modified: axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/dispatch/SOAP12DispatchTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/dispatch/SOAP12DispatchTest.java?rev=1032619&r1=1032618&r2=1032619&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/dispatch/SOAP12DispatchTest.java (original) +++ axis/axis2/java/core/trunk/modules/jaxws-integration/test/org/apache/axis2/jaxws/dispatch/SOAP12DispatchTest.java Mon Nov 8 16:16:10 2010 @@ -149,7 +149,19 @@ public class SOAP12DispatchTest extends /** * Test sending a SOAP 1.2 request in PAYLOAD mode using SOAP/JMS */ - public void testSOAP12JMSDispatchPayloadMode() throws Exception { + /* + * This test was shown to be invalid by the changes made under Jira AXIS2-4855. Basically, this test was passing + * based on a bug in modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java creating the protocol table. + * There is only one JMS namespace defined by the JMS spec, and it is used for both SOAP11 and SOAP12. Therefore, + * when the SOAP12 protocol was registered after the SOAP11 protocol, it overwrote the previous value (since the namespace + * is used as the key). + * + * For a WSDL-based client or service, the SOAP version is determined by the SOAP namespace used on the + * binding. For a WSDL-less client or service, there is no JMS spec-defined way to determine the difference. For now + * JAX-WS will default to SOAP11, and SOAP12 is not registered as a protocol for the JMS namespace. See AXIS2-4855 + * for more information. + */ + public void _testSOAP12JMSDispatchPayloadMode() throws Exception { // Create the JAX-WS client needed to send the request Service service = Service.create(QNAME_SERVICE); service.addPort(QNAME_PORT, MDQConstants.SOAP12JMS_BINDING, URL_ENDPOINT); Modified: axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java?rev=1032619&r1=1032618&r2=1032619&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java (original) +++ axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java Mon Nov 8 16:16:10 2010 @@ -61,8 +61,12 @@ public enum Protocol { protocolMappings.put(SOAPBinding.SOAP12HTTP_BINDING, Protocol.soap12); protocolMappings.put(SOAPBinding.SOAP12HTTP_MTOM_BINDING, Protocol.soap12); protocolMappings.put(HTTPBinding.HTTP_BINDING, Protocol.rest); - protocolMappings.put(MDQConstants.SOAP12JMS_BINDING, Protocol.soap12); - protocolMappings.put(MDQConstants.SOAP12JMS_MTOM_BINDING, Protocol.soap12); + // There is only one binding value declared by the spec; there is no differentiation + // between SOAP11 and SOAP12, unlike HTTP. This may be an issue in the spec. However, + // for now, since the values are the same, we can only register one protocol, so we + // use SOAP11 (above). See Jira AXIS2-4855 for more information. +// protocolMappings.put(MDQConstants.SOAP12JMS_BINDING, Protocol.soap12); +// protocolMappings.put(MDQConstants.SOAP12JMS_MTOM_BINDING, Protocol.soap12); // Add each of the URLs with a "/" at the end for flexibility Map<String, Protocol> updates = new HashMap<String, Protocol>(); Modified: axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java?rev=1032619&r1=1032618&r2=1032619&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java (original) +++ axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java Mon Nov 8 16:16:10 2010 @@ -80,13 +80,16 @@ public class MDQConstants { */ public static final String SERVICE_REF_NAME = "org.apache.axis2.jaxws.description.builder.SERVICE_REF_NAME"; - //Represent SOAP/JMS Bindings - //REVIEW: SOAP-JMS may be using the same NS for SOAP11 and SOAP12, - // if so we could remove some duplicate values below - public static final String SOAP11JMS_BINDING = "http://www.example.org/2006/06/soap/bindings/JMS/"; - public static final String SOAP12JMS_BINDING = "http://www.example.org/2006/06/soap/bindings/JMS/"; - public static final String SOAP11JMS_MTOM_BINDING = "http://http://www.example.org/2006/06/soap/bindings/JMS/?mtom=true"; - public static final String SOAP12JMS_MTOM_BINDING = "http://http://www.example.org/2006/06/soap/bindings/JMS/?mtom=true"; + // Represent SOAP/JMS Bindings + // Note that currently there is only a single namespace defined for the SOAP JMS binding in the JMS spec; there is no + // differentiation between JMS SOAP11 or SOAP12. For a WSDL-based client or service, the SOAP level is + // determine by the SOAP namespace used on the binding. For a WSDL-less client or service, there is currently + // no way to identify SOAP11 vs SOAP12, so we will default to SOAP11. See modules/jaxws/src/org/apache/axis2/jaxws/message/Protocol.java + // and Jira AXIS2-4855 for more information. + public static final String SOAP11JMS_BINDING = "http://www.w3.org/2010/soapjms/"; + public static final String SOAP12JMS_BINDING = SOAP11JMS_BINDING; + public static final String SOAP11JMS_MTOM_BINDING = "http://www.w3.org/2010/soapjms/?mtom=true"; + public static final String SOAP12JMS_MTOM_BINDING = SOAP11JMS_MTOM_BINDING; public static final String SOAP_HTTP_BINDING ="SOAP_HTTP_BINDING"; public static final String USE_LEGACY_WEB_METHOD_RULES_SUN = "com.sun.xml.ws.model.RuntimeModeler.legacyWebMethod"; Modified: axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java?rev=1032619&r1=1032618&r2=1032619&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java (original) +++ axis/axis2/java/core/trunk/modules/metadata/src/org/apache/axis2/jaxws/description/validator/EndpointDescriptionValidator.java Mon Nov 8 16:16:10 2010 @@ -138,7 +138,9 @@ public class EndpointDescriptionValidato // Validate that the WSDL value is valid else if (!SOAPBinding.SOAP11HTTP_BINDING.equals(wsdlBindingType) && !SOAPBinding.SOAP12HTTP_BINDING.equals(wsdlBindingType) - && !javax.xml.ws.http.HTTPBinding.HTTP_BINDING.equals(wsdlBindingType)) { + && !javax.xml.ws.http.HTTPBinding.HTTP_BINDING.equals(wsdlBindingType) + && !MDQConstants.SOAP11JMS_BINDING.equals(wsdlBindingType) + && !MDQConstants.SOAP12JMS_BINDING.equals(wsdlBindingType)) { addValidationFailure(this, "Invalid wsdl binding value specified: " + DescriptionUtils.mapBindingTypeAnnotationToWsdl(wsdlBindingType)); isBindingValid = false; @@ -156,6 +158,12 @@ public class EndpointDescriptionValidato && bindingType.equals(HTTPBinding.HTTP_BINDING)) { isBindingValid = true; } + else if (wsdlBindingType.equals(MDQConstants.SOAP11JMS_BINDING)&& bindingType.startsWith(MDQConstants.SOAP11JMS_BINDING)) { + isBindingValid = true; + } + else if (wsdlBindingType.equals(MDQConstants.SOAP12JMS_BINDING)&& bindingType.startsWith(MDQConstants.SOAP12JMS_BINDING)) { + isBindingValid = true; + } // The HTTP binding is not valid on a Java Bean SEI-based endpoint; only on a Provider based one. else if (wsdlBindingType.equals(HTTPBinding.HTTP_BINDING) && endpointDesc.isEndpointBased()) {