You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Andreas Veithen (JIRA)" <ax...@ws.apache.org> on 2012/09/18 23:29:09 UTC

[jira] [Updated] (AXIS-2876) Order of type mappings in generated WSDD depends on Java version

     [ https://issues.apache.org/jira/browse/AXIS-2876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andreas Veithen updated AXIS-2876:
----------------------------------

    Attachment: AXIS-2876.patch

Attached patch with the necessary changes to make WSDD files independent of the Java version. Note that before applying that change, we need to complete the migration of test cases to the Maven build.
                
> Order of type mappings in generated WSDD depends on Java version
> ----------------------------------------------------------------
>
>                 Key: AXIS-2876
>                 URL: https://issues.apache.org/jira/browse/AXIS-2876
>             Project: Axis
>          Issue Type: Bug
>          Components: WSDL processing
>    Affects Versions: 1.4
>            Reporter: Andreas Veithen
>            Priority: Minor
>             Fix For: 1.4.1
>
>         Attachments: AXIS-2876.patch
>
>
> The order of the type mappings in the WSDD generated by wsdl2java depends on the Java version and is not the same with Java 1.5 and 1.6. In principle this should not be a problem, but in some cases, a change in the order of type mappings triggers other issues. The consequence is that builds are not reproducible across different Java versions.
> The issue can be demonstrated with the ComplexEchoServiceTestCase#test2ComplexEchoServiceEcho21 test case. The WSDD file for that test case has two type mappings for the test.wsdl.echo.NamedValue[] Java type:
>       <arrayMapping
>         xmlns:ns="http://types.echo.services"
>         qname="ns:>MyElement2Response"
>         type="java:test.wsdl.echo.NamedValue[]"
>         innerType="cmp-ns:NamedValue" xmlns:cmp-ns="http://types.echo.services"
>         encodingStyle=""
>       />
>       <arrayMapping
>         xmlns:ns="http://types.echo.services"
>         qname="ns:ArrayOfNamedValue"
>         type="java:test.wsdl.echo.NamedValue[]"
>         innerType="cmp-ns:NamedValue" xmlns:cmp-ns="http://types.echo.services"
>         encodingStyle=""
>       />
> The test case attempts to serialize an instance of test.wsdl.echo.NamedValue[] as the value of an element with type xsd:anyType. In that case, Axis needs to identify the XML type in order to generate the xsi:type attribute. The code in TypeMappingImpl determines that XML type by looking at the last registered type mapping with the given Java type, and therefore the order of type mappings is relevant. With Java 1.5, the mapping with ns:ArrayOfNamedValue is registered last and the test case succeeds. With Java 1.6, the mapping with ns:>MyElement2Response is registered last. The test case fails because an anonymous type can't be used with xsi:type.
> Obviously the real problem in this example is that Axis attempts to use an anonymous type where this is not possible. Nevertheless, this kind of issue should not be triggered by a change of the Java version.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org