Tuscany
  1. Tuscany
  2. TUSCANY-3824

Incorrect WSDL generated for bare parameter style

    Details

    • Patch Info:
      Patch Available

      Description

      For a method with @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE), the JAX-WS RI generates WSDL with a global element name and message part name that are the same as the operation name. Tuscany generates WSDL with a global element name and message part name of arg0, and it adds soapAction to provide the operation name.

      The JAX-WS specification says that the global element name and message part name must be the same as the operation name, so Tuscany is generating WSDL for bare operations that doesn't conform to the JAX-WS rules. The JAX-WS specification also says that soapAction should be null unless @WebMethod(action=....) is specified. The Tuscany WSDL generator should use the correct JAX-WS mapping for the global element name and message part name, and should remove the nonstandard addition of soapAction.

      1. TUSCANY-3824.patch
        8 kB
        Greg Dritschler

        Activity

        Hide
        Scott Kurz added a comment -

        Fixed in 2.x in r1292896.

        Show
        Scott Kurz added a comment - Fixed in 2.x in r1292896.
        Hide
        Scott Kurz added a comment -

        Thanks Greg,

        That looks good. I think I'm going to apply this to 2.x but not 1.x (and change the fix version), in spite of the fact that this was opened on 1.x.

        It seems conceivable that it could break an app dependent on the current defaulting on soapAction.... and since 1.x has been officially released it seems better to leave that alone.

        Show
        Scott Kurz added a comment - Thanks Greg, That looks good. I think I'm going to apply this to 2.x but not 1.x (and change the fix version), in spite of the fact that this was opened on 1.x. It seems conceivable that it could break an app dependent on the current defaulting on soapAction.... and since 1.x has been officially released it seems better to leave that alone.
        Hide
        Greg Dritschler added a comment -

        I have attached a patch for this issue.

        Interface2WSDLGenerator was already defaulting the global element name to the operation name for doc/lit/bare, but only if the @WebParam annotation was present. I corrected the code to perform the correct defaulting even when the @WebParam annotation is not used.

        I did not change the part name. I could not find anything in the JAX-WS spec that requires a particular part name for doc/lit/bare.

        I removed the non-standard defaulting of the SOAP action in both Interface2WSDLGenerator and WSDLDefinitionGenerator.

        I ran into one issue in the tests. In itest/ws/holder-ws-service-multiple-outputs, Axis2 couldn't figure out how to dispatch OrderServiceBare.bareReviewOrderOutHolder() since it has an empty SOAP body (no input arguments). It turns out there is a fix for this in the Axis2 trunk.
        http://svn.apache.org/viewvc?view=revision&revision=1004667
        The fix is not in Axis2 1.5.3. I decided to work around this by adding a SOAP action to the bareReviewOrderOutHolder() method.

        Show
        Greg Dritschler added a comment - I have attached a patch for this issue. Interface2WSDLGenerator was already defaulting the global element name to the operation name for doc/lit/bare, but only if the @WebParam annotation was present. I corrected the code to perform the correct defaulting even when the @WebParam annotation is not used. I did not change the part name. I could not find anything in the JAX-WS spec that requires a particular part name for doc/lit/bare. I removed the non-standard defaulting of the SOAP action in both Interface2WSDLGenerator and WSDLDefinitionGenerator. I ran into one issue in the tests. In itest/ws/holder-ws-service-multiple-outputs, Axis2 couldn't figure out how to dispatch OrderServiceBare.bareReviewOrderOutHolder() since it has an empty SOAP body (no input arguments). It turns out there is a fix for this in the Axis2 trunk. http://svn.apache.org/viewvc?view=revision&revision=1004667 The fix is not in Axis2 1.5.3. I decided to work around this by adding a SOAP action to the bareReviewOrderOutHolder() method.
        Hide
        Scott Kurz added a comment -

        See also, https://issues.apache.org/jira/browse/TUSCANY-3995
        not that I think it necessarily addresses every aspect of this JIRA

        Show
        Scott Kurz added a comment - See also, https://issues.apache.org/jira/browse/TUSCANY-3995 not that I think it necessarily addresses every aspect of this JIRA

          People

          • Assignee:
            Scott Kurz
            Reporter:
            Simon Nash
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development