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()) {


Reply via email to